[PATCH] D38226: [XRay][Driver] Do not link in XRay runtime in shared libs
Dean Michael Berris via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 26 15:30:41 PDT 2017
dberris updated this revision to Diff 116631.
dberris added a comment.
- fixup: limit tests to run on supported platforms and oses
https://reviews.llvm.org/D38226
Files:
lib/Driver/ToolChains/Gnu.cpp
test/Driver/XRay/lit.local.cfg
test/Driver/XRay/xray-shared-noxray.cpp
Index: test/Driver/XRay/xray-shared-noxray.cpp
===================================================================
--- /dev/null
+++ test/Driver/XRay/xray-shared-noxray.cpp
@@ -0,0 +1,16 @@
+// RUN: %clangxx -shared -fPIC -o /dev/null -v -fxray-instrument %s 2>&1 | \
+// RUN: FileCheck %s --check-prefix=SHARED
+// RUN: %clangxx -static -o /dev/null -v -fxray-instrument %s 2>&1 -DMAIN | \
+// RUN: FileCheck %s --check-prefix=STATIC
+// RUN: %clangxx -static -fPIE -o /dev/null -v -fxray-instrument %s 2>&1 \
+// RUN: -DMAIN | FileCheck %s --check-prefix=STATIC
+//
+// SHARED-NOT: {{clang_rt\.xray-}}
+// STATIC: {{clang_rt\.xray-}}
+//
+// REQUIRES: linux
+int foo() { return 42; }
+
+#ifdef MAIN
+int main() { return foo(); }
+#endif
Index: test/Driver/XRay/lit.local.cfg
===================================================================
--- test/Driver/XRay/lit.local.cfg
+++ test/Driver/XRay/lit.local.cfg
@@ -1,2 +1,20 @@
target_triple_components = config.target_triple.split('-')
config.available_features.update(target_triple_components)
+
+# Only run the tests in platforms where XRay instrumentation is supported.
+supported_targets = [
+ 'amd64', 'x86_64', 'x86_64h', 'arm7', 'arm8', 'aarch64', 'arm64',
+ 'powerpc64le', 'mips', 'mipsel', 'mips64', 'mips64el'
+]
+
+# Only on platforms we support.
+supported_oses = [
+ 'linux'
+]
+
+triple_set = set(target_triple_components)
+if len(triple_set.intersection(supported_targets)) == 0:
+ config.unsupported = True
+
+if len(triple_set.intersection(supported_oses)) == 0:
+ config.unsupported = True
Index: lib/Driver/ToolChains/Gnu.cpp
===================================================================
--- lib/Driver/ToolChains/Gnu.cpp
+++ lib/Driver/ToolChains/Gnu.cpp
@@ -206,13 +206,18 @@
static bool addXRayRuntime(const ToolChain &TC, const ArgList &Args,
ArgStringList &CmdArgs) {
+ // Do not add the XRay runtime to shared libraries.
+ if (Args.hasArg(options::OPT_shared))
+ return false;
+
if (Args.hasFlag(options::OPT_fxray_instrument,
options::OPT_fnoxray_instrument, false)) {
CmdArgs.push_back("-whole-archive");
CmdArgs.push_back(TC.getCompilerRTArgString(Args, "xray", false));
CmdArgs.push_back("-no-whole-archive");
return true;
}
+
return false;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D38226.116631.patch
Type: text/x-patch
Size: 2346 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170926/54a4c49b/attachment-0001.bin>
More information about the cfe-commits
mailing list