diff options
author | Paul Semel <semelpaul@gmail.com> | 2018-07-11 10:00:29 +0000 |
---|---|---|
committer | Paul Semel <semelpaul@gmail.com> | 2018-07-11 10:00:29 +0000 |
commit | b98f504850123e345d0470cb0bfec67eb6e7a679 (patch) | |
tree | fe343e53812af6f8103ff323528460228556ae26 /llvm/tools/llvm-readobj/MachODumper.cpp | |
parent | 5260c9efc87ea62bd40c47cc65d8e9648a649d42 (diff) | |
download | bcm5719-llvm-b98f504850123e345d0470cb0bfec67eb6e7a679.tar.gz bcm5719-llvm-b98f504850123e345d0470cb0bfec67eb6e7a679.zip |
[llvm-readobj] Add -hex-dump (-x) option
Differential Revision: https://reviews.llvm.org/D48281
llvm-svn: 336782
Diffstat (limited to 'llvm/tools/llvm-readobj/MachODumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/MachODumper.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/tools/llvm-readobj/MachODumper.cpp b/llvm/tools/llvm-readobj/MachODumper.cpp index 69ef1556f78..c97f598bdd7 100644 --- a/llvm/tools/llvm-readobj/MachODumper.cpp +++ b/llvm/tools/llvm-readobj/MachODumper.cpp @@ -38,6 +38,7 @@ public: void printDynamicSymbols() override; void printUnwindInfo() override; void printStackMap() const override; + void printSectionAsHex(StringRef SectionName) override; void printNeededLibraries() override; @@ -676,6 +677,26 @@ void MachODumper::printStackMap() const { StackMapV2Parser<support::big>(StackMapContentsArray)); } +void MachODumper::printSectionAsHex(StringRef SectionName) { + char *StrPtr; + long SectionIndex = strtol(SectionName.data(), &StrPtr, 10); + SectionRef SecTmp; + const SectionRef *Sec = &SecTmp; + if (*StrPtr) + SecTmp = unwrapOrError(Obj->getSection(SectionName)); + else + SecTmp = unwrapOrError(Obj->getSection((unsigned int)SectionIndex)); + + StringRef SecName; + error(Sec->getName(SecName)); + + StringRef Data; + error(Sec->getContents(Data)); + const uint8_t *SecContent = reinterpret_cast<const uint8_t *>(Data.data()); + + SectionHexDump(SecName, SecContent, Data.size()); +} + void MachODumper::printNeededLibraries() { ListScope D(W, "NeededLibraries"); |