Chromium Code Reviews| Index: third_party/instrumented_libraries/BUILD.gn |
| diff --git a/third_party/instrumented_libraries/BUILD.gn b/third_party/instrumented_libraries/BUILD.gn |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..70b25d67949ac09340361c2adedaceecdb8f5fa0 |
| --- /dev/null |
| +++ b/third_party/instrumented_libraries/BUILD.gn |
| @@ -0,0 +1,63 @@ |
| +# Copyright 2015 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +import("//build/config/sanitizers/sanitizers.gni") |
| + |
| +prebuilt_available = |
| + is_msan && (msan_track_origins == 0 || msan_track_origins == 2) |
| + |
| +group("deps") { |
| + if (use_prebuilt_instrumented_libraries) { |
| + assert(prebuilt_available, |
| + "Prebuilt instrumented libraries are only available when " + |
| + "is_msan = true and msan_track_origins = {0, 2}") |
| + deps = [ |
| + ":prebuilt", |
| + ] |
| + } |
| +} |
| + |
| +if (prebuilt_available) { |
| + group("prebuilt") { |
| + visibility = [ ":deps" ] |
| + public_configs = [ ":prebuilt_link_helper" ] |
| + deps = [ |
| + ":extract_prebuilt_instrumented_libraries", |
|
earthdok
2015/05/28 18:27:46
You have to download the archive before you can ex
Sam McNally
2015/05/29 08:33:00
This assumes that hook would still download the ar
earthdok
2015/05/29 15:28:03
You're probably aware of this, but just in case, I
|
| + ] |
| + } |
| + |
| + if (is_msan) { |
| + sanitizer_type = "msan" |
| + if (msan_track_origins == 0) { |
| + archive_name = "msan-no-origins" |
| + } else if (msan_track_origins == 2) { |
| + archive_name = "msan-chained-origins" |
| + } |
| + } |
| + |
| + action("extract_prebuilt_instrumented_libraries") { |
| + visibility = [ ":prebuilt" ] |
| + script = "scripts/unpack_binaries.py" |
| + depfile = "$target_out_dir/$archive_name.d" |
| + args = [ |
| + archive_name, |
| + rebase_path("binaries"), |
| + rebase_path(root_build_dir + "/instrumented_libraries_prebuilt"), |
| + rebase_path(target_out_dir, root_build_dir), |
| + ] |
| + outputs = [ |
| + "$target_out_dir/$archive_name.txt", |
|
earthdok
2015/05/28 18:27:46
The stamp file no longer references the Ubuntu rel
Sam McNally
2015/05/29 08:33:00
I don't think we can detect this unless ninja can
earthdok
2015/05/29 15:28:03
Ninja doesn't rerun GYP either, but GYP would at l
Sam McNally
2015/06/01 01:05:15
Done.
|
| + ] |
| + } |
| + |
| + config("prebuilt_link_helper") { |
| + visibility = [ ":prebuilt" ] |
| + ldflags = [ |
| + # Add a relative RPATH entry to Chromium binaries. This puts instrumented |
| + # DSOs before system-installed versions in library search path. |
| + "-Wl,-R,\$ORIGIN/instrumented_libraries_prebuilt/$sanitizer_type/lib", |
| + "-Wl,-z,origin", |
| + ] |
| + } |
| +} |