summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/Driver.cpp4
-rw-r--r--lld/test/ELF/archive-no-index.s13
-rw-r--r--lld/test/ELF/lto/archive-no-index.ll2
3 files changed, 17 insertions, 2 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 008a6cd7954..af5bd241bb8 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -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))
diff --git a/lld/test/ELF/archive-no-index.s b/lld/test/ELF/archive-no-index.s
new file mode 100644
index 00000000000..adaeaf92697
--- /dev/null
+++ b/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
diff --git a/lld/test/ELF/lto/archive-no-index.ll b/lld/test/ELF/lto/archive-no-index.ll
index c4dd89a5435..f7a2cf81c4f 100644
--- a/lld/test/ELF/lto/archive-no-index.ll
+++ b/lld/test/ELF/lto/archive-no-index.ll
@@ -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
OpenPOWER on IntegriCloud