summaryrefslogtreecommitdiffhomepage
path: root/vdso/BUILD
diff options
context:
space:
mode:
Diffstat (limited to 'vdso/BUILD')
-rw-r--r--vdso/BUILD81
1 files changed, 81 insertions, 0 deletions
diff --git a/vdso/BUILD b/vdso/BUILD
new file mode 100644
index 000000000..c70bb8218
--- /dev/null
+++ b/vdso/BUILD
@@ -0,0 +1,81 @@
+# Description:
+# This VDSO is a shared library that provides the same interfaces as the
+# normal system VDSO (time, gettimeofday, clock_gettimeofday) but which uses
+# timekeeping parameters managed by the sandbox kernel.
+
+load("//tools:defs.bzl", "cc_flags_supplier", "cc_toolchain", "select_arch", "vdso_linker_option")
+
+package(licenses = ["notice"])
+
+genrule(
+ name = "vdso",
+ srcs = [
+ "barrier.h",
+ "compiler.h",
+ "cycle_clock.h",
+ "seqlock.h",
+ "syscalls.h",
+ "vdso.cc",
+ "vdso_amd64.lds",
+ "vdso_arm64.lds",
+ "vdso_time.h",
+ "vdso_time.cc",
+ ],
+ outs = [
+ "vdso.so",
+ ],
+ cmd = "$(CC) $(CC_FLAGS) " +
+ "-I. " +
+ "-O2 " +
+ "-std=c++11 " +
+ "-fPIC " +
+ "-fno-sanitize=all " +
+ # Some toolchains enable stack protector by default. Disable it, the
+ # VDSO has no hooks to handle failures.
+ "-fno-stack-protector " +
+ vdso_linker_option +
+ select_arch(
+ amd64 = "-m64 ",
+ arm64 = "",
+ ) +
+ "-shared " +
+ "-nostdlib " +
+ "-Wl,-soname=linux-vdso.so.1 " +
+ "-Wl,--hash-style=sysv " +
+ "-Wl,--no-undefined " +
+ "-Wl,-Bsymbolic " +
+ "-Wl,-z,max-page-size=4096 " +
+ "-Wl,-z,common-page-size=4096 " +
+ select_arch(
+ amd64 = "-Wl,-T$(location vdso_amd64.lds) ",
+ arm64 = "-Wl,-T$(location vdso_arm64.lds) ",
+ no_match_error = "unsupported architecture",
+ ) +
+ "-o $(location vdso.so) " +
+ "$(location vdso.cc) " +
+ "$(location vdso_time.cc) " +
+ "&& $(location :check_vdso) " +
+ "--check-data " +
+ "--vdso $(location vdso.so) ",
+ exec_tools = [
+ ":check_vdso",
+ ],
+ features = ["-pie"],
+ toolchains = [
+ cc_toolchain,
+ ":no_pie_cc_flags",
+ ],
+ visibility = ["//:sandbox"],
+)
+
+cc_flags_supplier(
+ name = "no_pie_cc_flags",
+ features = ["-pie"],
+)
+
+py_binary(
+ name = "check_vdso",
+ srcs = ["check_vdso.py"],
+ python_version = "PY3",
+ visibility = ["//:sandbox"],
+)