diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-10-01 20:26:37 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-10-01 20:26:37 +0000 |
commit | 3e60379fd923a13a3d15a18924e592b9ba07e00d (patch) | |
tree | 916e28c88a50e43cc4704a4dfb3b601cd5c04b7e | |
parent | a602a153de16dfb054261212ecd66c3553682fdd (diff) | |
download | bcm5719-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.cpp | 2 | ||||
-rw-r--r-- | lld/test/elf2/Inputs/no-symtab.o | bin | 0 -> 416 bytes | |||
-rw-r--r-- | lld/test/elf2/no-symtab.s | 4 |
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 Binary files differnew file mode 100644 index 00000000000..7368ba280d7 --- /dev/null +++ b/lld/test/elf2/Inputs/no-symtab.o 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: |