forked from OSchip/llvm-project
gn build: Add support for building the standalone ubsan runtime.
Differential Revision: https://reviews.llvm.org/D127556
This commit is contained in:
parent
bfcfd53b92
commit
b49bd8e07f
|
@ -0,0 +1,28 @@
|
|||
import("//compiler-rt/target.gni")
|
||||
|
||||
template("gen_version_script") {
|
||||
action(target_name) {
|
||||
script = "//compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py"
|
||||
sources = [ invoker.extra ]
|
||||
deps = invoker.libs
|
||||
outputs = [ invoker.output ]
|
||||
args = [
|
||||
"--version-list",
|
||||
"--extra",
|
||||
rebase_path(invoker.extra, root_build_dir),
|
||||
]
|
||||
foreach (lib_name, invoker.lib_names) {
|
||||
args += [
|
||||
rebase_path(
|
||||
"$crt_current_out_dir/libclang_rt.$lib_name$crt_current_target_suffix.a",
|
||||
root_build_dir)
|
||||
]
|
||||
}
|
||||
args += [
|
||||
"--nm-executable",
|
||||
"nm",
|
||||
"-o",
|
||||
rebase_path(invoker.output, root_build_dir),
|
||||
]
|
||||
}
|
||||
}
|
|
@ -19,6 +19,9 @@ group("lib") {
|
|||
deps += [ "//compiler-rt/lib/builtins" ]
|
||||
}
|
||||
if (current_os != "baremetal") {
|
||||
deps += [ "//compiler-rt/lib/profile" ]
|
||||
deps += [
|
||||
"//compiler-rt/lib/profile",
|
||||
"//compiler-rt/lib/ubsan:ubsan_shared",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import("//compiler-rt/gen_version_script.gni")
|
||||
import("//compiler-rt/target.gni")
|
||||
|
||||
if (current_cpu == "x64") {
|
||||
|
@ -6,28 +7,16 @@ if (current_cpu == "x64") {
|
|||
hwasan_name = "hwasan"
|
||||
}
|
||||
|
||||
action("version_script") {
|
||||
script = "//compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py"
|
||||
sources = [ "hwasan.syms.extra" ]
|
||||
deps = [
|
||||
gen_version_script("version_script") {
|
||||
extra = "hwasan.syms.extra"
|
||||
output = "$target_gen_dir/hwasan.vers"
|
||||
libs = [
|
||||
":hwasan",
|
||||
":hwasan_cxx",
|
||||
]
|
||||
outputs = [ "$target_gen_dir/hwasan.vers" ]
|
||||
args = [
|
||||
"--version-list",
|
||||
"--extra",
|
||||
rebase_path(sources[0], root_build_dir),
|
||||
rebase_path(
|
||||
"$crt_current_out_dir/libclang_rt.$hwasan_name$crt_current_target_suffix.a",
|
||||
root_build_dir),
|
||||
rebase_path(
|
||||
"$crt_current_out_dir/libclang_rt.${hwasan_name}_cxx$crt_current_target_suffix.a",
|
||||
root_build_dir),
|
||||
"--nm-executable",
|
||||
"nm",
|
||||
"-o",
|
||||
rebase_path(outputs[0], root_build_dir),
|
||||
lib_names = [
|
||||
"$hwasan_name",
|
||||
"${hwasan_name}_cxx",
|
||||
]
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
import("//compiler-rt/gen_version_script.gni")
|
||||
import("//compiler-rt/target.gni")
|
||||
|
||||
gen_version_script("version_script") {
|
||||
extra = "ubsan.syms.extra"
|
||||
output = "$target_gen_dir/ubsan.vers"
|
||||
libs = [
|
||||
":ubsan",
|
||||
":ubsan_cxx",
|
||||
]
|
||||
lib_names = [
|
||||
"ubsan_standalone",
|
||||
"ubsan_standalone_cxx",
|
||||
]
|
||||
}
|
||||
|
||||
source_set("sources") {
|
||||
configs -= [ "//llvm/utils/gn/build:llvm_code" ]
|
||||
configs += [ "//llvm/utils/gn/build:crt_code" ]
|
||||
|
@ -46,7 +62,6 @@ source_set("dynamic_runtime_thunk") {
|
|||
sources = [ "ubsan_win_dynamic_runtime_thunk.cpp" ]
|
||||
}
|
||||
|
||||
# Unreferenced; at the moment exists to make sync_source_lists_from_cmake happy.
|
||||
source_set("standalone_sources") {
|
||||
configs -= [ "//llvm/utils/gn/build:llvm_code" ]
|
||||
configs -= [ "//llvm/utils/gn/build:no_rtti" ]
|
||||
|
@ -72,3 +87,48 @@ source_set("cxx_sources") {
|
|||
"ubsan_type_hash_win.cpp",
|
||||
]
|
||||
}
|
||||
|
||||
static_library("ubsan") {
|
||||
output_dir = crt_current_out_dir
|
||||
output_name = "clang_rt.ubsan_standalone$crt_current_target_suffix"
|
||||
complete_static_lib = true
|
||||
configs -= [
|
||||
"//llvm/utils/gn/build:llvm_code",
|
||||
"//llvm/utils/gn/build:thin_archive",
|
||||
]
|
||||
configs += [ "//llvm/utils/gn/build:crt_code" ]
|
||||
deps = [
|
||||
":sources",
|
||||
":standalone_sources",
|
||||
]
|
||||
}
|
||||
|
||||
static_library("ubsan_cxx") {
|
||||
output_dir = crt_current_out_dir
|
||||
output_name = "clang_rt.ubsan_standalone_cxx$crt_current_target_suffix"
|
||||
complete_static_lib = true
|
||||
configs -= [
|
||||
"//llvm/utils/gn/build:llvm_code",
|
||||
"//llvm/utils/gn/build:thin_archive",
|
||||
]
|
||||
configs += [ "//llvm/utils/gn/build:crt_code" ]
|
||||
deps = [ ":cxx_sources" ]
|
||||
}
|
||||
|
||||
shared_library("ubsan_shared") {
|
||||
output_dir = crt_current_out_dir
|
||||
output_name = "clang_rt.ubsan_standalone$crt_current_target_suffix"
|
||||
configs -= [ "//llvm/utils/gn/build:llvm_code" ]
|
||||
configs += [ "//llvm/utils/gn/build:crt_code" ]
|
||||
deps = [
|
||||
":cxx_sources",
|
||||
":sources",
|
||||
":standalone_sources",
|
||||
]
|
||||
if (current_os != "mac" && current_os != "win") {
|
||||
deps += [ ":version_script" ]
|
||||
inputs = [ "$target_gen_dir/ubsan.vers" ]
|
||||
ldflags =
|
||||
[ "-Wl,--version-script," + rebase_path(inputs[0], root_build_dir) ]
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue