[Clang] Always use --no-undefined when linking AMDGPU images
authorJoseph Huber <jhuber6@vols.utk.edu>
Mon, 13 Mar 2023 14:33:08 +0000 (09:33 -0500)
committerJoseph Huber <jhuber6@vols.utk.edu>
Tue, 14 Mar 2023 18:11:33 +0000 (13:11 -0500)
commit55f38495e38e2a3aeb4f2dac852644eb4937bd74
treeff02d16af9841693c0b3696aec4eed04cbe9ead2
parent1f884ef7697c9c94b0c9101d64b99bb5954138ec
[Clang] Always use --no-undefined when linking AMDGPU images

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 `--no-undefined` to the `ld.lld` invocation to guarantee
that undefined symbols are always caught as linking errors rather than
runtime errors.

Reviewed By: arsenm, MaskRay, #amdgpu

Differential Revision: https://reviews.llvm.org/D145941
clang/docs/ReleaseNotes.rst
clang/lib/Driver/ToolChains/AMDGPU.cpp
clang/test/Driver/amdgpu-toolchain-opencl.cl
clang/test/Driver/amdgpu-toolchain.c