summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj/COFFDumper.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/COFFDumper.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/COFFDumper.cpp')
-rw-r--r--llvm/tools/llvm-readobj/COFFDumper.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp
index 0ed4ccd09f6..c840d7efb84 100644
--- a/llvm/tools/llvm-readobj/COFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/COFFDumper.cpp
@@ -83,6 +83,7 @@ public:
void printSymbols() override;
void printDynamicSymbols() override;
void printUnwindInfo() override;
+ void printSectionAsHex(StringRef StringName) override;
void printNeededLibraries() override;
@@ -654,6 +655,28 @@ void COFFDumper::printFileHeaders() {
printDOSHeader(DH);
}
+void COFFDumper::printSectionAsHex(StringRef SectionName) {
+ char *StrPtr;
+ long SectionIndex = strtol(SectionName.data(), &StrPtr, 10);
+ const coff_section *Sec;
+ if (*StrPtr)
+ error(Obj->getSection(SectionName, Sec));
+ else {
+ error(Obj->getSection((int)SectionIndex, Sec));
+ if (!Sec)
+ return error(object_error::parse_failed);
+ }
+
+ StringRef SecName;
+ error(Obj->getSectionName(Sec, SecName));
+
+ ArrayRef<uint8_t> Content;
+ error(Obj->getSectionContents(Sec, Content));
+ const uint8_t *SecContent = Content.data();
+
+ SectionHexDump(SecName, SecContent, Content.size());
+}
+
void COFFDumper::printDOSHeader(const dos_header *DH) {
DictScope D(W, "DOSHeader");
W.printString("Magic", StringRef(DH->Magic, sizeof(DH->Magic)));
OpenPOWER on IntegriCloud