Files

139 lines
2.9 KiB
Python
Raw Permalink Normal View History

2023-02-27 18:15:50 -08:00
load("//tools:arch.bzl", "arch_genrule", "select_arch")
2023-02-22 18:18:47 -08:00
load("//tools:defs.bzl", "cc_flags_supplier", "cc_toolchain", "go_library")
load("build.bzl", "cc_pie_obj")
package(
default_applicable_licenses = ["//:license"],
licenses = ["notice"],
)
2023-02-22 18:18:47 -08:00
2023-02-27 18:15:50 -08:00
cc_flags_supplier(
name = "no_pie_cc_flags",
features = ["-pie"],
)
2023-02-22 18:18:47 -08:00
cc_pie_obj(
name = "sighandler",
srcs = select_arch(
2023-02-27 18:15:50 -08:00
amd64 = [
"sighandler_amd64.c",
"sysmsg_offsets_amd64.h",
2023-02-27 18:15:50 -08:00
],
arm64 = ["sighandler_arm64.c"],
) + [
"atomic.h",
"sysmsg.h",
"sysmsg_offsets.h",
],
2023-02-27 18:15:50 -08:00
outs = ["sighandler.o"],
2023-02-22 18:18:47 -08:00
)
cc_pie_obj(
name = "sysmsg_lib",
srcs = [
"atomic.h",
2023-02-22 18:18:47 -08:00
"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(
2023-02-27 18:15:50 -08:00
amd64 = [
"syshandler_amd64.S",
"sysmsg_offsets_amd64.h",
2023-02-27 18:15:50 -08:00
],
arm64 = ["syshandler_arm64.S"],
) + [
"sysmsg_offsets.h",
],
2023-02-27 18:15:50 -08:00
outs = ["syshandler.o"],
2023-02-22 18:18:47 -08:00
)
genrule(
2023-02-27 18:15:50 -08:00
name = "sighandler_object",
2023-02-22 18:18:47 -08:00
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) " +
2023-02-27 18:15:50 -08:00
"$(location :syshandler) $(location :sysmsg_lib) " +
"-o $@",
2023-02-22 18:18:47 -08:00
features = ["-pie"],
toolchains = [
cc_toolchain,
],
)
genrule(
2023-02-27 18:15:50 -08:00
name = "sighandler_binary",
srcs = [":sighandler_object"],
2023-02-22 18:18:47 -08:00
outs = ["sighandler.built-in.bin"],
2023-02-27 18:15:50 -08:00
cmd = "$(OBJCOPY) -O binary $(SRCS) $@",
2023-02-22 18:18:47 -08:00
toolchains = [
cc_toolchain,
],
)
2023-02-27 18:15:50 -08:00
arch_genrule(
name = "sighandler_binary_arch",
src = ":sighandler_binary",
template = "sighandler.built-in.%s.bin",
2023-02-22 18:18:47 -08:00
)
2023-02-27 18:15:50 -08:00
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",
2023-02-22 18:18:47 -08:00
)
go_library(
name = "sysmsg",
srcs = [
"sysmsg.go",
"sysmsg_amd64.go",
"sysmsg_arm64.go",
2023-03-14 17:45:21 -07:00
"sysmsg_unsafe.go",
2023-02-27 18:15:50 -08:00
":sighandler_go_arch",
],
embedsrcs = [
":sighandler_binary_arch", # keep
2023-02-22 18:18:47 -08:00
],
visibility = ["//:sandbox"],
deps = [
"//pkg/abi/linux",
"//pkg/cpuid",
"//pkg/hostarch",
"//pkg/hostsyscall",
"//pkg/sentry/platform",
2023-03-14 17:45:21 -07:00
"@org_golang_x_sys//unix:go_default_library",
2023-02-22 18:18:47 -08:00
],
)