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 &TC, ArgStringList &CmdArgs) { + 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 &Args) { 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; }