jhuber6 created this revision. jhuber6 added reviewers: jdoerfert, JonChesterfield, arsenm, yaxunl, MaskRay. Herald added subscribers: kosarev, kerbowa, tpr, dstuttard, jvesely, kzhuravl. Herald added a project: All. jhuber6 requested review of this revision. Herald added subscribers: cfe-commits, wdng. Herald added a project: clang.
AMDGPU uses ELF shared libraries to implement their executable device images. One downside to this method is that it disables regular warnings on undefined symbols. This is because shared libraries expect these to be resolves by later loads. However, the GPU images do not support dynamic linking so any undefined symbol is going to cause a runtime error. This patch adds `-zdefs` to the `ld.lld` invocation to guaruntee that undefined symbols are always caught as linking errors rather than runtime errors. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D145941 Files: clang/lib/Driver/ToolChains/AMDGPU.cpp clang/test/Driver/amdgpu-toolchain.c Index: clang/test/Driver/amdgpu-toolchain.c =================================================================== --- clang/test/Driver/amdgpu-toolchain.c +++ clang/test/Driver/amdgpu-toolchain.c @@ -6,7 +6,7 @@ // RUN: %clang -### -g --target=amdgcn-mesa-mesa3d -mcpu=kaveri %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s // AS_LINK: "-cc1as" -// AS_LINK: ld.lld{{.*}} "-shared" +// AS_LINK: ld.lld{{.*}} "-shared" "-zdefs" // DWARF_VER: "-dwarf-version=5" Index: clang/lib/Driver/ToolChains/AMDGPU.cpp =================================================================== --- clang/lib/Driver/ToolChains/AMDGPU.cpp +++ clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -544,6 +544,7 @@ addLTOOptions(getToolChain(), Args, CmdArgs, Output, Inputs[0], C.getDriver().getLTOMode() == LTOK_Thin); CmdArgs.push_back("-shared"); + CmdArgs.push_back("-zdefs"); CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); C.addCommand(std::make_unique<Command>(
Index: clang/test/Driver/amdgpu-toolchain.c =================================================================== --- clang/test/Driver/amdgpu-toolchain.c +++ clang/test/Driver/amdgpu-toolchain.c @@ -6,7 +6,7 @@ // RUN: %clang -### -g --target=amdgcn-mesa-mesa3d -mcpu=kaveri %s 2>&1 | FileCheck -check-prefix=DWARF_VER %s // AS_LINK: "-cc1as" -// AS_LINK: ld.lld{{.*}} "-shared" +// AS_LINK: ld.lld{{.*}} "-shared" "-zdefs" // DWARF_VER: "-dwarf-version=5" Index: clang/lib/Driver/ToolChains/AMDGPU.cpp =================================================================== --- clang/lib/Driver/ToolChains/AMDGPU.cpp +++ clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -544,6 +544,7 @@ addLTOOptions(getToolChain(), Args, CmdArgs, Output, Inputs[0], C.getDriver().getLTOMode() == LTOK_Thin); CmdArgs.push_back("-shared"); + CmdArgs.push_back("-zdefs"); CmdArgs.push_back("-o"); CmdArgs.push_back(Output.getFilename()); C.addCommand(std::make_unique<Command>(
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits