diff options
| author | Michael J. Spencer <bigcheesegs@gmail.com> | 2016-02-11 04:59:37 +0000 |
|---|---|---|
| committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2016-02-11 04:59:37 +0000 |
| commit | 60d82b269cc544ba88389feb4a53210ea65dc204 (patch) | |
| tree | 0ce7281f0062b0d2ae0ad53170e5d045f9b27ccd | |
| parent | 94f060cea87ec1737768133e34fe4f8e8af785d3 (diff) | |
| download | bcm5719-llvm-60d82b269cc544ba88389feb4a53210ea65dc204.tar.gz bcm5719-llvm-60d82b269cc544ba88389feb4a53210ea65dc204.zip | |
[readobj] Move dynamic table parsing to a new function. NFC.
llvm-svn: 260487
| -rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 00df02643f7..92b92f1fad1 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -112,6 +112,8 @@ private: uintX_t EntSize; }; + void parseDynamicTable(ArrayRef<const Elf_Phdr *> LoadSegments); + void printSymbolsHelper(bool IsDynamic); void printSymbol(const Elf_Sym *Symbol, const Elf_Shdr *SymTab, StringRef StrTable, bool IsDynamic); @@ -1032,8 +1034,19 @@ ELFDumper<ELFT>::ELFDumper(const ELFFile<ELFT> *Obj, StreamWriter &Writer) } } + parseDynamicTable(LoadSegments); + + if (opts::Output == opts::GNU) + ELFDumperStyle.reset(new GNUStyle<ELFT>(Writer)); + else + ELFDumperStyle.reset(new LLVMStyle<ELFT>(Writer)); +} + +template <typename ELFT> +void ELFDumper<ELFT>::parseDynamicTable( + ArrayRef<const Elf_Phdr *> LoadSegments) { auto toMappedAddr = [&](uint64_t VAddr) -> const uint8_t * { - const Elf_Phdr **I = std::upper_bound( + const Elf_Phdr *const *I = std::upper_bound( LoadSegments.begin(), LoadSegments.end(), VAddr, compareAddr<ELFT>); if (I == LoadSegments.begin()) report_fatal_error("Virtual address is not in any segment"); @@ -1095,10 +1108,6 @@ ELFDumper<ELFT>::ELFDumper(const ELFFile<ELFT> *Obj, StreamWriter &Writer) DynamicStringTable = StringRef(StringTableBegin, StringTableSize); if (SONameOffset) SOName = getDynamicString(SONameOffset); - if (opts::Output == opts::GNU) - ELFDumperStyle.reset(new GNUStyle<ELFT>(Writer)); - else - ELFDumperStyle.reset(new LLVMStyle<ELFT>(Writer)); } template <typename ELFT> |

