コード例 #1
0
ファイル: kernel.go プロジェクト: lunixbochs/usercorn
func StackInit(u models.Usercorn, args, env []string) error {
	auxv, err := SetupElfAuxv(u)
	if err != nil {
		return err
	}
	return posix.StackInit(u, args, env, auxv)
}
コード例 #2
0
ファイル: kernel.go プロジェクト: lunixbochs/usercorn
func StackInit(u models.Usercorn, args, env []string) error {
	exe := u.Exe()
	addr, err := u.PushBytes([]byte(exe + "\x00"))
	if err != nil {
		return err
	}
	var tmp [8]byte
	auxv, err := u.PackAddr(tmp[:], addr)
	if err != nil {
		return err
	}
	err = posix.StackInit(u, args, env, auxv)
	if err != nil {
		return err
	}
	// offset to mach_header at exe[0:] in guest memory
	textOffset, _, _ := u.Loader().Header()
	offset := u.Base() + textOffset
	_, err = u.Push(offset)
	return err
}
コード例 #3
0
ファイル: cgc.go プロジェクト: lunixbochs/usercorn
func CgcInit(u models.Usercorn, args, env []string) error {
	// TODO: does CGC even specify argv?
	// TODO: also, I seem to remember something about mapping in 16kb of random data
	return posix.StackInit(u, args, env, nil)
}
コード例 #4
0
ファイル: kernel.go プロジェクト: lunixbochs/usercorn
func StackInit(u models.Usercorn, args, env []string) error {
	return posix.StackInit(u, args, env, nil)
}