targets

package
v0.0.0-...-f6f6578 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 28, 2021 License: MIT, Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var List = map[string]map[string]*Target{
	"test": {
		"64": {
			PtrSize:  8,
			PageSize: 4 << 10,

			CFlags: []string{"-m64", "-fsanitize=address", "-no-pie"},
			// contains filtered or unexported fields
		},
		"64_fork": {
			PtrSize:  8,
			PageSize: 8 << 10,

			CFlags: []string{"-m64", "-fsanitize=address", "-no-pie"},
			// contains filtered or unexported fields
		},
		"32_shmem": {
			PtrSize:        4,
			PageSize:       8 << 10,
			Int64Alignment: 4,
			CFlags:         []string{"-m32", "-static"},
			// contains filtered or unexported fields
		},
		"32_fork_shmem": {
			PtrSize:  4,
			PageSize: 4 << 10,
			CFlags:   []string{"-m32", "-static"},
			// contains filtered or unexported fields
		},
	},
	"linux": {
		"amd64": {
			PtrSize:          8,
			PageSize:         4 << 10,
			CFlags:           []string{"-m64"},
			Triple:           "x86_64-linux-gnu",
			KernelArch:       "x86_64",
			KernelHeaderArch: "x86",
			NeedSyscallDefine: func(nr uint64) bool {

				return nr >= 313
			},
		},
		"386": {
			VMArch:           "amd64",
			PtrSize:          4,
			PageSize:         4 << 10,
			Int64Alignment:   4,
			CFlags:           []string{"-m32"},
			Triple:           "x86_64-linux-gnu",
			KernelArch:       "i386",
			KernelHeaderArch: "x86",
		},
		"arm64": {
			PtrSize:          8,
			PageSize:         4 << 10,
			Triple:           "aarch64-linux-gnu",
			KernelArch:       "arm64",
			KernelHeaderArch: "arm64",
		},
		"arm": {
			VMArch:           "arm64",
			PtrSize:          4,
			PageSize:         4 << 10,
			CFlags:           []string{"-D__LINUX_ARM_ARCH__=6", "-march=armv6"},
			Triple:           "arm-linux-gnueabi",
			KernelArch:       "arm",
			KernelHeaderArch: "arm",
		},
		"mips64le": {
			VMArch:           "mips64le",
			PtrSize:          8,
			PageSize:         4 << 10,
			CFlags:           []string{"-march=mips64r2", "-mabi=64", "-EL"},
			Triple:           "mips64el-linux-gnuabi64",
			KernelArch:       "mips",
			KernelHeaderArch: "mips",
		},
		"ppc64le": {
			PtrSize:          8,
			PageSize:         4 << 10,
			CFlags:           []string{"-D__powerpc64__"},
			Triple:           "powerpc64le-linux-gnu",
			KernelArch:       "powerpc",
			KernelHeaderArch: "powerpc",
		},
	},
	"freebsd": {
		"amd64": {
			PtrSize:           8,
			PageSize:          4 << 10,
			CCompiler:         "clang",
			CFlags:            []string{"-m64"},
			NeedSyscallDefine: dontNeedSyscallDefine,
		},
		"386": {
			VMArch:            "amd64",
			PtrSize:           4,
			PageSize:          4 << 10,
			Int64Alignment:    4,
			CCompiler:         "clang",
			CFlags:            []string{"-m32"},
			NeedSyscallDefine: dontNeedSyscallDefine,
		},
	},
	"netbsd": {
		"amd64": {
			PtrSize:  8,
			PageSize: 4 << 10,
			CFlags: []string{
				"-m64",
				"-static",
				"--sysroot", sourceDirVar + "/dest/",
			},
			CCompiler: sourceDirVar + "/tools/bin/x86_64--netbsd-g++",
		},
	},
	"openbsd": {
		"amd64": {
			PtrSize:   8,
			PageSize:  4 << 10,
			CCompiler: "c++",
			CFlags:    []string{"-m64", "-static", "-lutil"},
			NeedSyscallDefine: func(nr uint64) bool {
				switch nr {
				case 8:
					return true
				case 94:
					return true
				case 198:
					return true
				case 295:
					return true
				case 301:
					return true
				case 302:
					return true
				case 303:
					return true
				case 304:
					return true
				case 329:
					return true
				case 330:
					return true
				}
				return false
			},
		},
	},
	"fuchsia": {
		"amd64": {
			PtrSize:          8,
			PageSize:         4 << 10,
			KernelHeaderArch: "x64",
			CCompiler:        sourceDirVar + "/prebuilt/third_party/clang/linux-x64/bin/clang",
			Objdump:          sourceDirVar + "/prebuilt/third_party/clang/linux-x64/bin/llvm-objdump",
			CFlags: []string{
				"-Wno-deprecated",
				"--target=x86_64-fuchsia",
				"-ldriver",
				"-lfdio",
				"-lzircon",
				"--sysroot", sourceDirVar + "/out/x64/zircon_toolchain/obj/zircon/public/sysroot/sysroot",
				"-I", sourceDirVar + "/zircon/system/ulib/fdio/include",
				"-I", sourceDirVar + "/zircon/system/ulib/fidl/include",
				"-I", sourceDirVar + "/src/lib/ddk/include",
				"-I", sourceDirVar + "/out/x64/fidling/gen/sdk/fidl/fuchsia.device",
				"-I", sourceDirVar + "/out/x64/fidling/gen/sdk/fidl/fuchsia.device.manager",
				"-I", sourceDirVar + "/out/x64/fidling/gen/sdk/fidl/fuchsia.hardware.nand",
				"-I", sourceDirVar + "/out/x64/fidling/gen/sdk/fidl/fuchsia.hardware.usb.peripheral",
				"-I", sourceDirVar + "/out/x64/fidling/gen/zircon/vdso/zx",
				"-L", sourceDirVar + "/out/x64/x64-shared",
			},
		},
		"arm64": {
			PtrSize:          8,
			PageSize:         4 << 10,
			KernelHeaderArch: "arm64",
			CCompiler:        sourceDirVar + "/prebuilt/third_party/clang/linux-x64/bin/clang",
			Objdump:          sourceDirVar + "/prebuilt/third_party/clang/linux-x64/bin/llvm-objdump",
			CFlags: []string{
				"-Wno-deprecated",
				"--target=aarch64-fuchsia",
				"-ldriver",
				"-lfdio",
				"-lzircon",
				"--sysroot", sourceDirVar + "/out/arm64/zircon_toolchain/obj/zircon/public/sysroot/sysroot",
				"-I", sourceDirVar + "/zircon/system/ulib/fdio/include",
				"-I", sourceDirVar + "/zircon/system/ulib/fidl/include",
				"-I", sourceDirVar + "/src/lib/ddk/include",
				"-I", sourceDirVar + "/out/arm64/fidling/gen/sdk/fidl/fuchsia.device",
				"-I", sourceDirVar + "/out/arm64/fidling/gen/sdk/fidl/fuchsia.device.manager",
				"-I", sourceDirVar + "/out/arm64/fidling/gen/sdk/fidl/fuchsia.hardware.nand",
				"-I", sourceDirVar + "/out/arm64/fidling/gen/sdk/fidl/fuchsia.hardware.usb.peripheral",
				"-I", sourceDirVar + "/out/arm64/fidling/gen/zircon/vdso/zx",
				"-L", sourceDirVar + "/out/arm64/arm64-shared",
			},
		},
	},
	"windows": {
		"amd64": {
			PtrSize: 8,

			PageSize: 4 << 10,
		},
	},
	"akaros": {
		"amd64": {
			PtrSize:           8,
			PageSize:          4 << 10,
			KernelHeaderArch:  "x86",
			NeedSyscallDefine: dontNeedSyscallDefine,
			CCompiler:         sourceDirVar + "/toolchain/x86_64-ucb-akaros-gcc/bin/x86_64-ucb-akaros-g++",
			CFlags: []string{
				"-static",
			},
		},
	},
	"trusty": {
		"arm": {
			PtrSize:           4,
			PageSize:          4 << 10,
			NeedSyscallDefine: dontNeedSyscallDefine,
		},
	},
	"darwin": {
		"amd64": {
			PtrSize:           8,
			PageSize:          4 << 10,
			CCompiler:         "clang",
			CFlags:            []string{"-m64", "-framework", "IOKit"},
			NeedSyscallDefine: dontNeedSyscallDefine,
		},
	},
}

nolint: lll

Functions

func MakePosixMmap

func MakePosixMmap(target *prog.Target, exec, contain bool) func() []*prog.Call

MakePosixMmap creates a "normal" posix mmap call that maps the target data range. If exec is set, the mapping is mapped as PROT_EXEC. If contain is set, the mapping is surrounded by PROT_NONE pages. These flags should be in sync with what executor.

func MakeSyzMmap

func MakeSyzMmap(target *prog.Target) func() []*prog.Call

Types

type Target

type Target struct {
	OS               string
	Arch             string
	VMArch           string // e.g. amd64 for 386, or arm64 for arm
	PtrSize          uint64
	PageSize         uint64
	NumPages         uint64
	DataOffset       uint64
	Int64Alignment   uint64
	CFlags           []string
	Triple           string
	CCompiler        string
	Objdump          string // name of objdump executable
	KernelCompiler   string // override CC when running kernel make
	KernelLinker     string // override LD when running kernel make
	KernelArch       string
	KernelHeaderArch string
	BrokenCompiler   string
	// NeedSyscallDefine is used by csource package to decide when to emit __NR_* defines.
	NeedSyscallDefine func(nr uint64) bool
	// contains filtered or unexported fields
}

func Get

func Get(OS, arch string) *Target

type UnixNeutralizer

type UnixNeutralizer struct {
	MAP_FIXED uint64
	S_IFREG   uint64
	S_IFCHR   uint64
	S_IFBLK   uint64
	S_IFIFO   uint64
	S_IFSOCK  uint64
}

func MakeUnixNeutralizer

func MakeUnixNeutralizer(target *prog.Target) *UnixNeutralizer

func (*UnixNeutralizer) Neutralize

func (arch *UnixNeutralizer) Neutralize(c *prog.Call)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL