diff options
| author | George Rimar <grimar@accesssoftek.com> | 2019-06-10 14:23:46 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2019-06-10 14:23:46 +0000 |
| commit | dd4f253c4d8f6debb91c04d3b3965b133169f0e2 (patch) | |
| tree | 161c48f1138140444424ff17d90ff150475fdc77 /llvm/tools/llvm-readobj/ELFDumper.cpp | |
| parent | 8cd8c5784b813d6e1b58c57d61a06ff5686d3473 (diff) | |
| download | bcm5719-llvm-dd4f253c4d8f6debb91c04d3b3965b133169f0e2.tar.gz bcm5719-llvm-dd4f253c4d8f6debb91c04d3b3965b133169f0e2.zip | |
[llvm-readobj/llvm-readelf] - Don't fail to dump the object if .dynsym has broken sh_link field.
This is https://bugs.llvm.org/show_bug.cgi?id=42215.
GNU readelf allows to dump the objects in that case,
but llvm-readobj/llvm-readelf reports an error and stops.
The patch fixes that.
Differential revision: https://reviews.llvm.org/D63074
llvm-svn: 362938
Diffstat (limited to 'llvm/tools/llvm-readobj/ELFDumper.cpp')
| -rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index f41adaeaed6..295763f8791 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1423,7 +1423,11 @@ ELFDumper<ELFT>::ELFDumper(const object::ELFObjectFile<ELFT> *ObjF, // This is only used (if Elf_Shdr present)for naming section in GNU // style DynSymtabName = unwrapOrError(Obj->getSectionName(&Sec)); - DynamicStringTable = unwrapOrError(Obj->getStringTableForSymtab(Sec)); + + if (Expected<StringRef> E = Obj->getStringTableForSymtab(Sec)) + DynamicStringTable = *E; + else + warn(E.takeError()); } break; case ELF::SHT_SYMTAB_SHNDX: |

