Author: Joseph Huber Date: 2022-02-04T15:13:32-05:00 New Revision: eeb29c8477d96ad821b3283dad8ed060a3426118
URL: https://github.com/llvm/llvm-project/commit/eeb29c8477d96ad821b3283dad8ed060a3426118 DIFF: https://github.com/llvm/llvm-project/commit/eeb29c8477d96ad821b3283dad8ed060a3426118.diff LOG: [OpenMP] Add -Bsymbolic to arguments for GNU linker This patch adds the '-Bsymbolic' flag when we perform linking for the offloading device. We already pass '-fvisibility=protected' but this is not properly handled when using the bfd linker as is described in https://maskray.me/blog/2021-05-16-elf-interposition-and-bsymbolic. Previously this caused linker errors when creating the shared library. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D119018 Added: Modified: clang/lib/Driver/ToolChains/Gnu.cpp Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 12eaf1fb8b514..d0808d061c827 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -572,6 +572,14 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, } CmdArgs.push_back("-lm"); } + + // If we are linking for the device all symbols should be bound locally. The + // symbols are already protected which makes this redundant. This is only + // necessary to work around a problem in bfd. + // TODO: Remove this once 'lld' becomes the only linker for offloading. + if (JA.isDeviceOffloading(Action::OFK_OpenMP)) + CmdArgs.push_back("-Bsymbolic"); + // Silence warnings when linking C code with a C++ '-stdlib' argument. Args.ClaimAllArgs(options::OPT_stdlib_EQ); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits