summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-10-01 20:26:37 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-10-01 20:26:37 +0000
commit3e60379fd923a13a3d15a18924e592b9ba07e00d (patch)
tree916e28c88a50e43cc4704a4dfb3b601cd5c04b7e
parenta602a153de16dfb054261212ecd66c3553682fdd (diff)
downloadbcm5719-llvm-3e60379fd923a13a3d15a18924e592b9ba07e00d.tar.gz
bcm5719-llvm-3e60379fd923a13a3d15a18924e592b9ba07e00d.zip
Don't crash on files with no symbol table.
Thanks to Roman Divacky for the test. llvm-svn: 249066
-rw-r--r--lld/ELF/InputFiles.cpp2
-rw-r--r--lld/test/elf2/Inputs/no-symtab.obin0 -> 416 bytes
-rw-r--r--lld/test/elf2/no-symtab.s4
3 files changed, 6 insertions, 0 deletions
diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp
index 64f688e1a96..7e3e1bbbb8a 100644
--- a/lld/ELF/InputFiles.cpp
+++ b/lld/ELF/InputFiles.cpp
@@ -78,6 +78,8 @@ ELFData<ELFT>::getSymbolsHelper(bool Local) {
}
template <class ELFT> void ELFData<ELFT>::initStringTable() {
+ if (!Symtab)
+ return;
ErrorOr<StringRef> StringTableOrErr = ELFObj.getStringTableForSymtab(*Symtab);
error(StringTableOrErr.getError());
StringTable = *StringTableOrErr;
diff --git a/lld/test/elf2/Inputs/no-symtab.o b/lld/test/elf2/Inputs/no-symtab.o
new file mode 100644
index 00000000000..7368ba280d7
--- /dev/null
+++ b/lld/test/elf2/Inputs/no-symtab.o
Binary files differ
diff --git a/lld/test/elf2/no-symtab.s b/lld/test/elf2/no-symtab.s
new file mode 100644
index 00000000000..47a5f0ad618
--- /dev/null
+++ b/lld/test/elf2/no-symtab.s
@@ -0,0 +1,4 @@
+// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
+// RUN: lld -flavor gnu2 %t.o %p/Inputs/no-symtab.o -o %t
+.global _start
+_start:
OpenPOWER on IntegriCloud