<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - linker segfaults when using -shared on AMDGPU kernel"
href="https://bugs.llvm.org/show_bug.cgi?id=48346">48346</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>linker segfaults when using -shared on AMDGPU kernel
</td>
</tr>
<tr>
<th>Product</th>
<td>libraries
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>release blocker
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>Backend: AMDGPU
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>fwinter@jlab.org
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>When linking a module containing a really trivial function with ld.lld I get:
$ ld.lld -shared module.o -o module.so
ld.lld: /home/users/coe0193/llvm-project/lld/ELF/Arch/AMDGPU.cpp:48: virtual
uint32_t {anonymous}::AMDGPU::calcEFlags() const: Assertion
`!objectFiles.empty()' failed.
PLEASE submit a bug report to <a href="https://bugs.llvm.org/">https://bugs.llvm.org/</a> and include the crash
backtrace.
Stack dump:
0. Program arguments:
/home/users/coe0193/install/llvm-trunk-x86-amdgpu-debug/bin/ld.lld -shared
module_empty.o -o module_empty.so
#0 0x0000155552e30eed llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
/home/users/coe0193/llvm-project/llvm/lib/Support/Unix/Signals.inc:563:22
#1 0x0000155552e30fa4 PrintStackTraceSignalHandler(void*)
/home/users/coe0193/llvm-project/llvm/lib/Support/Unix/Signals.inc:630:1
#2 0x0000155552e2efa6 llvm::sys::RunSignalHandlers()
/home/users/coe0193/llvm-project/llvm/lib/Support/Signals.cpp:71:20
#3 0x0000155552e30934 SignalHandler(int)
/home/users/coe0193/llvm-project/llvm/lib/Support/Unix/Signals.inc:405:1
#4 0x000015555511ddd0 __restore_rt (/lib64/libpthread.so.0+0x12dd0)
#5 0x0000155551d6170f raise (/lib64/libc.so.6+0x3770f)
#6 0x0000155551d4bb25 abort (/lib64/libc.so.6+0x21b25)
#7 0x0000155551d4b9f9 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x219f9)
#8 0x0000155551d59cc6 (/lib64/libc.so.6+0x2fcc6)
#9 0x000015555476b887 (anonymous namespace)::AMDGPU::calcEFlags() const
/home/users/coe0193/llvm-project/lld/ELF/Arch/AMDGPU.cpp:49:41
#10 0x00001555547cc335 void
lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1,
true> >(llvm::opt::InputArgList&)
/home/users/coe0193/llvm-project/lld/ELF/Driver.cpp:2209:3
#11 0x00001555547b1ed2 lld::elf::LinkerDriver::main(llvm::ArrayRef<char
const*>) /home/users/coe0193/llvm-project/lld/ELF/Driver.cpp:558:7
#12 0x00001555547ae1ad lld::elf::link(llvm::ArrayRef<char const*>, bool,
llvm::raw_ostream&, llvm::raw_ostream&)
/home/users/coe0193/llvm-project/lld/ELF/Driver.cpp:125:3
#13 0x000000000040810a lldMain(int, char const**, llvm::raw_ostream&,
llvm::raw_ostream&, bool)
/home/users/coe0193/llvm-project/lld/tools/lld/lld.cpp:153:12
#14 0x0000000000408581 main
/home/users/coe0193/llvm-project/lld/tools/lld/lld.cpp:211:19
#15 0x0000155551d4d6a3 __libc_start_main (/lib64/libc.so.6+0x236a3)
#16 0x00000000004073ee _start
(/home/users/coe0193/install/llvm-trunk-x86-amdgpu-debug/bin/ld.lld+0x4073ee)
Aborted (core dumped)
This bug is present in LLVM 11 release as well as in LLVM 12 current trunk (as
of Nov. 30th 2020).
On Linux I built llvm-project with
cmake ../llvm-project/llvm \
-DCMAKE_INSTALL_PREFIX="$HOME/install/llvm-trunk-x86-amdgpu-debug" \
-DLLVM_ENABLE_PROJECTS="clang;lld" \
-DCMAKE_BUILD_TYPE="Debug" \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_C_COMPILER=gcc \
-DLLVM_TARGETS_TO_BUILD="X86;AMDGPU"
To provoke the bug I created a small module written in LLVM IR containing a
simple AMDGPU kernel function, like
module.ll:
define amdgpu_kernel void @test() {
entry:
ret void
}
Then I compile this module with
$ clang -target amdgcn-amd-amdhsa -mcpu=gfx908 module.ll -o module.o
And try to link a shared library for it:
$ ld.lld -shared module.o -o module.so
This crashes the linker with the above back trace.
Please help!
Frank</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>