[llvm-bugs] [Bug 32281] New: lld doesn't give error about missing archive symbol table
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed Mar 15 07:50:12 PDT 2017
http://bugs.llvm.org/show_bug.cgi?id=32281
Bug ID: 32281
Summary: lld doesn't give error about missing archive symbol
table
Product: lld
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: ELF
Assignee: unassignedbugs at nondot.org
Reporter: tejohnson at google.com
CC: llvm-bugs at lists.llvm.org
When bootstrapping clang with ThinLTO or LTO, ranlib must know how to create an
archive symbol table in the archives of bitcode files. This requires either
setting up the system ranlib to know where to find the LLVM gold plugin, or
just use llvm-ranlib via -DCMAKE_RANLIB=$BUILD_COMPILER/bin/llvm-ranlib.
Otherwise the link step can't read the symbols and there are many undefined
references.
When gold is used, it immediately emits a meaningful error:
ld.gold: error: lib/libLLVMSupport.a: no archive symbol table (run ranlib)
ld.gold: error: lib/libLLVMDemangle.a: no archive symbol table (run ranlib)
However, when lld is used, no such error is emitted and the user just gets
undefined references, making it harder to identify the issue.
Reproducer:
$ cat main.c
extern void foo();
int main() {
foo();
return 1;
}
$ cat foo.c
void foo() {
}
$ clang -c main.c
$ clang -c foo.c -flto <- produce bitcode
$ ar qc foo.a foo.o
(skip running ranlib, which would be the same as using a system ranlib without
the LLVM gold plugin)
$ ld.gold -o a.out main.o foo.a
ld.gold: error: foo.a: no archive symbol table (run ranlib)
main.o:main.c:function main: error: undefined reference to 'foo'
vs
$ ld.lld -o a.out main.o foo.a
ld.lld: error: main.c:(function main): undefined symbol 'foo'
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170315/7cf70c4c/attachment.html>
More information about the llvm-bugs
mailing list