summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj/MachODumper.cpp
diff options
context:
space:
mode:
authorPaul Semel <semelpaul@gmail.com>2018-07-11 10:00:29 +0000
committerPaul Semel <semelpaul@gmail.com>2018-07-11 10:00:29 +0000
commitb98f504850123e345d0470cb0bfec67eb6e7a679 (patch)
treefe343e53812af6f8103ff323528460228556ae26 /llvm/tools/llvm-readobj/MachODumper.cpp
parent5260c9efc87ea62bd40c47cc65d8e9648a649d42 (diff)
downloadbcm5719-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.cpp21
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");
OpenPOWER on IntegriCloud