Skip to content

Commit

Permalink
[ELF] Error on archive with missing index
Browse files Browse the repository at this point in the history
This matches the wasm lld and GNU ld behavior.

The ELF linker has special handling for bitcode archives but if that
doesn't kick in we probably want to error out rather than silently
ignore the library.

Differential Revision: https://reviews.llvm.org/D63781

llvm-svn: 364998
  • Loading branch information
sbc100 committed Jul 3, 2019
1 parent ba5a72f commit 9974589
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
4 changes: 3 additions & 1 deletion lld/ELF/Driver.cpp
Expand Up @@ -223,8 +223,10 @@ void LinkerDriver::addFile(StringRef Path, bool WithLOption) {
// default action without the LTO hack described above.
for (const std::pair<MemoryBufferRef, uint64_t> &P :
getArchiveMembers(MBRef))
if (identify_magic(P.first.getBuffer()) != file_magic::bitcode)
if (identify_magic(P.first.getBuffer()) != file_magic::bitcode) {
error(Path + ": archive has no index; run ranlib to add one");
return;
}

for (const std::pair<MemoryBufferRef, uint64_t> &P :
getArchiveMembers(MBRef))
Expand Down
13 changes: 13 additions & 0 deletions lld/test/ELF/archive-no-index.s
@@ -0,0 +1,13 @@
# REQUIRES: x86
# Tests error on archive file without a symbol table
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux -o %t.o %s
# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux -o %t.archive.o %S/Inputs/archive.s
# RUN: rm -f %t.a
# RUN: llvm-ar crS %t.a %t.archive.o

# RUN: not ld.lld -o out.wasm %t.o %t.a 2>&1 | FileCheck %s

.globl _start
_start:

# CHECK: error: {{.*}}.a: archive has no index; run ranlib to add one
2 changes: 1 addition & 1 deletion lld/test/ELF/lto/archive-no-index.ll
Expand Up @@ -26,7 +26,7 @@ define i32 @main() {
; RUN: rm -f %t3.a
; RUN: llvm-ar crS %t3.a %t3.o
; RUN: not ld.lld -o /dev/null -emain %t1.o %t3.a 2>&1 | FileCheck -check-prefix=ERR1 %s
; ERR1: error: undefined symbol: f
; ERR1: error: {{.*}}.a: archive has no index; run ranlib to add one

; RUN: rm -f %t4.a
; RUN: llvm-ar cr %t4.a
Expand Down

0 comments on commit 9974589

Please sign in to comment.