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" ]
|
deps += [ "//compiler-rt/lib/builtins" ]
|
||||||
}
|
}
|
||||||
if (current_os != "baremetal") {
|
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")
|
import("//compiler-rt/target.gni")
|
||||||
|
|
||||||
if (current_cpu == "x64") {
|
if (current_cpu == "x64") {
|
||||||
|
@ -6,28 +7,16 @@ if (current_cpu == "x64") {
|
||||||
hwasan_name = "hwasan"
|
hwasan_name = "hwasan"
|
||||||
}
|
}
|
||||||
|
|
||||||
action("version_script") {
|
gen_version_script("version_script") {
|
||||||
script = "//compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py"
|
extra = "hwasan.syms.extra"
|
||||||
sources = [ "hwasan.syms.extra" ]
|
output = "$target_gen_dir/hwasan.vers"
|
||||||
deps = [
|
libs = [
|
||||||
":hwasan",
|
":hwasan",
|
||||||
":hwasan_cxx",
|
":hwasan_cxx",
|
||||||
]
|
]
|
||||||
outputs = [ "$target_gen_dir/hwasan.vers" ]
|
lib_names = [
|
||||||
args = [
|
"$hwasan_name",
|
||||||
"--version-list",
|
"${hwasan_name}_cxx",
|
||||||
"--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),
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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") {
|
source_set("sources") {
|
||||||
configs -= [ "//llvm/utils/gn/build:llvm_code" ]
|
configs -= [ "//llvm/utils/gn/build:llvm_code" ]
|
||||||
configs += [ "//llvm/utils/gn/build:crt_code" ]
|
configs += [ "//llvm/utils/gn/build:crt_code" ]
|
||||||
|
@ -46,7 +62,6 @@ source_set("dynamic_runtime_thunk") {
|
||||||
sources = [ "ubsan_win_dynamic_runtime_thunk.cpp" ]
|
sources = [ "ubsan_win_dynamic_runtime_thunk.cpp" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Unreferenced; at the moment exists to make sync_source_lists_from_cmake happy.
|
|
||||||
source_set("standalone_sources") {
|
source_set("standalone_sources") {
|
||||||
configs -= [ "//llvm/utils/gn/build:llvm_code" ]
|
configs -= [ "//llvm/utils/gn/build:llvm_code" ]
|
||||||
configs -= [ "//llvm/utils/gn/build:no_rtti" ]
|
configs -= [ "//llvm/utils/gn/build:no_rtti" ]
|
||||||
|
@ -72,3 +87,48 @@ source_set("cxx_sources") {
|
||||||
"ubsan_type_hash_win.cpp",
|
"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