mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
139 lines
2.9 KiB
Python
139 lines
2.9 KiB
Python
load("//tools:arch.bzl", "arch_genrule", "select_arch")
|
|
load("//tools:defs.bzl", "cc_flags_supplier", "cc_toolchain", "go_library")
|
|
load("build.bzl", "cc_pie_obj")
|
|
|
|
package(
|
|
default_applicable_licenses = ["//:license"],
|
|
licenses = ["notice"],
|
|
)
|
|
|
|
cc_flags_supplier(
|
|
name = "no_pie_cc_flags",
|
|
features = ["-pie"],
|
|
)
|
|
|
|
cc_pie_obj(
|
|
name = "sighandler",
|
|
srcs = select_arch(
|
|
amd64 = [
|
|
"sighandler_amd64.c",
|
|
"sysmsg_offsets_amd64.h",
|
|
],
|
|
arm64 = ["sighandler_arm64.c"],
|
|
) + [
|
|
"atomic.h",
|
|
"sysmsg.h",
|
|
"sysmsg_offsets.h",
|
|
],
|
|
outs = ["sighandler.o"],
|
|
)
|
|
|
|
cc_pie_obj(
|
|
name = "sysmsg_lib",
|
|
srcs = [
|
|
"atomic.h",
|
|
"sysmsg.h",
|
|
"sysmsg_lib.c",
|
|
"sysmsg_offsets.h",
|
|
],
|
|
outs = ["sysmsg_lib.o"],
|
|
)
|
|
|
|
cc_pie_obj(
|
|
name = "sysrestorer",
|
|
srcs = select_arch(
|
|
amd64 = ["sigrestorer_amd64.S"],
|
|
arm64 = ["sigrestorer_arm64.S"],
|
|
),
|
|
outs = ["sysrestorer.o"],
|
|
)
|
|
|
|
cc_pie_obj(
|
|
name = "syshandler",
|
|
srcs = select_arch(
|
|
amd64 = [
|
|
"syshandler_amd64.S",
|
|
"sysmsg_offsets_amd64.h",
|
|
],
|
|
arm64 = ["syshandler_arm64.S"],
|
|
) + [
|
|
"sysmsg_offsets.h",
|
|
],
|
|
outs = ["syshandler.o"],
|
|
)
|
|
|
|
genrule(
|
|
name = "sighandler_object",
|
|
srcs = [
|
|
"pie.lds.S",
|
|
":sighandler",
|
|
":syshandler",
|
|
":sysrestorer",
|
|
":sysmsg_lib",
|
|
],
|
|
outs = ["sighandler.built-in.bin.o"],
|
|
cmd = "$(LD) " +
|
|
"-pie -z noexecstack -T $(location pie.lds.S) " +
|
|
"$(location :sysrestorer) $(location :sighandler) " +
|
|
"$(location :syshandler) $(location :sysmsg_lib) " +
|
|
"-o $@",
|
|
features = ["-pie"],
|
|
toolchains = [
|
|
cc_toolchain,
|
|
],
|
|
)
|
|
|
|
genrule(
|
|
name = "sighandler_binary",
|
|
srcs = [":sighandler_object"],
|
|
outs = ["sighandler.built-in.bin"],
|
|
cmd = "$(OBJCOPY) -O binary $(SRCS) $@",
|
|
toolchains = [
|
|
cc_toolchain,
|
|
],
|
|
)
|
|
|
|
arch_genrule(
|
|
name = "sighandler_binary_arch",
|
|
src = ":sighandler_binary",
|
|
template = "sighandler.built-in.%s.bin",
|
|
)
|
|
|
|
genrule(
|
|
name = "sighandler_go",
|
|
srcs = [":sighandler_object"],
|
|
outs = ["sighandler.go.arch"],
|
|
cmd = "bash -x $(location gen_offsets_go.sh) sighandler Sighandler " +
|
|
"$(SRCS) > $@",
|
|
tools = ["gen_offsets_go.sh"],
|
|
)
|
|
|
|
arch_genrule(
|
|
name = "sighandler_go_arch",
|
|
src = ":sighandler_go",
|
|
template = "sighandler_%s.go",
|
|
)
|
|
|
|
go_library(
|
|
name = "sysmsg",
|
|
srcs = [
|
|
"sysmsg.go",
|
|
"sysmsg_amd64.go",
|
|
"sysmsg_arm64.go",
|
|
"sysmsg_unsafe.go",
|
|
":sighandler_go_arch",
|
|
],
|
|
embedsrcs = [
|
|
":sighandler_binary_arch", # keep
|
|
],
|
|
visibility = ["//:sandbox"],
|
|
deps = [
|
|
"//pkg/abi/linux",
|
|
"//pkg/cpuid",
|
|
"//pkg/hostarch",
|
|
"//pkg/hostsyscall",
|
|
"//pkg/sentry/platform",
|
|
"@org_golang_x_sys//unix:go_default_library",
|
|
],
|
|
)
|