summaryrefslogtreecommitdiffstats
path: root/third_party/instrumented_libraries
diff options
context:
space:
mode:
authorearthdok <earthdok@chromium.org>2015-03-23 10:50:09 -0700
committerCommit bot <commit-bot@chromium.org>2015-03-23 17:50:58 +0000
commit744256e2f3933feaa05c967541afac36825056fa (patch)
tree2c5952f73ecfa43a0b87979081694fb4235efc9e /third_party/instrumented_libraries
parent88f4fa3f1874945019604aa1e88af6ebe61c1c1f (diff)
downloadchromium_src-744256e2f3933feaa05c967541afac36825056fa.zip
chromium_src-744256e2f3933feaa05c967541afac36825056fa.tar.gz
chromium_src-744256e2f3933feaa05c967541afac36825056fa.tar.bz2
Instrumented libraries: add a target for pre-built libraries.
With use_prebuilt_instrumented_libraries=1 in GYP_DEFINES, binaries are now unpacked from archive and placed into output dir. BUG=462636 R=glider@chromium.org TBR=thakis@chromium.org NOTRY=true Review URL: https://codereview.chromium.org/1017053003 Cr-Commit-Position: refs/heads/master@{#321804}
Diffstat (limited to 'third_party/instrumented_libraries')
-rw-r--r--third_party/instrumented_libraries/instrumented_libraries.gyp55
-rwxr-xr-xthird_party/instrumented_libraries/scripts/unpack_binaries.sh15
2 files changed, 69 insertions, 1 deletions
diff --git a/third_party/instrumented_libraries/instrumented_libraries.gyp b/third_party/instrumented_libraries/instrumented_libraries.gyp
index 28fa65f..2d61a3b 100644
--- a/third_party/instrumented_libraries/instrumented_libraries.gyp
+++ b/third_party/instrumented_libraries/instrumented_libraries.gyp
@@ -82,6 +82,57 @@
'targets': [
{
+ 'target_name': 'prebuilt_instrumented_libraries',
+ 'type': 'none',
+ 'variables': {
+ 'prune_self_dependency': 1,
+ # Don't add this target to the dependencies of targets with type=none.
+ 'link_dependency': 1,
+ 'conditions': [
+ ['msan==1', {
+ 'conditions': [
+ ['msan_track_origins==2', {
+ 'archive_name': 'msan-chained-origins-<(_ubuntu_release)',
+ }, {
+ 'archive_name': 'UNSUPPORTED_CONFIGURATION'
+ }],
+ ]}, {
+ 'archive_name': 'UNSUPPORTED_CONFIGURATION'
+ }],
+ ],
+ },
+ 'actions': [
+ {
+ 'action_name': 'unpack_<(archive_name).tgz',
+ 'inputs': [
+ 'binaries/<(archive_name).tgz',
+ ],
+ 'outputs': [
+ '<(PRODUCT_DIR)/instrumented_libraries_prebuilt/<(archive_name).txt',
+ ],
+ 'action': [
+ 'scripts/unpack_binaries.sh',
+ 'binaries/<(archive_name).tgz',
+ '<(PRODUCT_DIR)/instrumented_libraries_prebuilt/',
+ '<(PRODUCT_DIR)/instrumented_libraries_prebuilt/<(archive_name).txt',
+ ],
+ },
+ ],
+ 'direct_dependent_settings': {
+ 'target_conditions': [
+ ['_toolset=="target"', {
+ '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)/<(_libdir)/',
+ '-Wl,-z,origin',
+ ],
+ }],
+ ],
+ },
+ },
+ {
'target_name': 'instrumented_libraries',
'type': 'none',
'variables': {
@@ -174,7 +225,9 @@
'target_conditions': [
['_toolset=="target"', {
'ldflags': [
- # Add RPATH to result binary to make it linking instrumented libraries ($ORIGIN means relative RPATH)
+ # 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/<(_sanitizer_type)/<(_libdir)/',
'-Wl,-z,origin',
],
diff --git a/third_party/instrumented_libraries/scripts/unpack_binaries.sh b/third_party/instrumented_libraries/scripts/unpack_binaries.sh
new file mode 100755
index 0000000..12af6ad
--- /dev/null
+++ b/third_party/instrumented_libraries/scripts/unpack_binaries.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# 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.
+
+# Unpacks an archive containing prebuilt instrumented libraries into output dir.
+
+archive_file=$1
+target_dir=$2
+stamp_file=$3
+
+rm ${target_dir}/* -rf
+tar -zxf ${archive_file} -C ${target_dir}
+
+touch ${stamp_file}