[PATCH] D54784: Use --push/pop-state with XRay link deps

2019-05-03 Thread Petr Hosek via Phabricator via cfe-commits
phosek abandoned this revision.
phosek added a comment.
Herald added a project: clang.

Turned out this is not the right approach because not every linker supports 
`--push-state`/`--pop-state` but I'm hoping to instead rely on ELF autolinking 
once D60274  lands.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D54784/new/

https://reviews.llvm.org/D54784



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D54784: Use --push/pop-state with XRay link deps

2018-11-21 Thread Dean Michael Berris via Phabricator via cfe-commits
dberris accepted this revision.
dberris added a comment.
This revision is now accepted and ready to land.

LGTM


Repository:
  rC Clang

https://reviews.llvm.org/D54784



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D54784: Use --push/pop-state with XRay link deps

2018-11-21 Thread Petr Hosek via Phabricator via cfe-commits
phosek created this revision.
phosek added a reviewer: dberris.
Herald added a subscriber: cfe-commits.

XRay runtime link deps handling passes --no-as-needed, but it never
undoes it and this flag may affect other libraries that come later on
the link line. To avoid this, wrap XRay link deps in --push/pop-state.


Repository:
  rC Clang

https://reviews.llvm.org/D54784

Files:
  clang/lib/Driver/ToolChains/CommonArgs.cpp
  clang/test/Driver/XRay/xray-shared-noxray.cpp


Index: clang/test/Driver/XRay/xray-shared-noxray.cpp
===
--- clang/test/Driver/XRay/xray-shared-noxray.cpp
+++ clang/test/Driver/XRay/xray-shared-noxray.cpp
@@ -7,6 +7,9 @@
 //
 // SHARED-NOT: {{clang_rt\.xray-}}
 // STATIC: {{clang_rt\.xray-}}
+// STATIC: "--push-state"
+// STATIC: "--no-as-needed"
+// STATIC: "--pop-state"
 //
 // REQUIRES: linux, enable_shared
 int foo() { return 42; }
Index: clang/lib/Driver/ToolChains/CommonArgs.cpp
===
--- clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -788,6 +788,7 @@
 }
 
 void tools::linkXRayRuntimeDeps(const ToolChain , ArgStringList ) {
+  CmdArgs.push_back("--push-state");
   CmdArgs.push_back("--no-as-needed");
   CmdArgs.push_back("-lpthread");
   if (TC.getTriple().getOS() != llvm::Triple::OpenBSD)
@@ -798,6 +799,7 @@
   TC.getTriple().getOS() != llvm::Triple::NetBSD &&
   TC.getTriple().getOS() != llvm::Triple::OpenBSD)
 CmdArgs.push_back("-ldl");
+  CmdArgs.push_back("--pop-state");
 }
 
 bool tools::areOptimizationsEnabled(const ArgList ) {


Index: clang/test/Driver/XRay/xray-shared-noxray.cpp
===
--- clang/test/Driver/XRay/xray-shared-noxray.cpp
+++ clang/test/Driver/XRay/xray-shared-noxray.cpp
@@ -7,6 +7,9 @@
 //
 // SHARED-NOT: {{clang_rt\.xray-}}
 // STATIC: {{clang_rt\.xray-}}
+// STATIC: "--push-state"
+// STATIC: "--no-as-needed"
+// STATIC: "--pop-state"
 //
 // REQUIRES: linux, enable_shared
 int foo() { return 42; }
Index: clang/lib/Driver/ToolChains/CommonArgs.cpp
===
--- clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -788,6 +788,7 @@
 }
 
 void tools::linkXRayRuntimeDeps(const ToolChain , ArgStringList ) {
+  CmdArgs.push_back("--push-state");
   CmdArgs.push_back("--no-as-needed");
   CmdArgs.push_back("-lpthread");
   if (TC.getTriple().getOS() != llvm::Triple::OpenBSD)
@@ -798,6 +799,7 @@
   TC.getTriple().getOS() != llvm::Triple::NetBSD &&
   TC.getTriple().getOS() != llvm::Triple::OpenBSD)
 CmdArgs.push_back("-ldl");
+  CmdArgs.push_back("--pop-state");
 }
 
 bool tools::areOptimizationsEnabled(const ArgList ) {
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits