summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2016-02-11 04:59:37 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2016-02-11 04:59:37 +0000
commit60d82b269cc544ba88389feb4a53210ea65dc204 (patch)
tree0ce7281f0062b0d2ae0ad53170e5d045f9b27ccd
parent94f060cea87ec1737768133e34fe4f8e8af785d3 (diff)
downloadbcm5719-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.cpp19
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>
OpenPOWER on IntegriCloud