aboutsummaryrefslogtreecommitdiff
path: root/tools/llvm-readobj
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-09-20 00:25:06 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-09-20 00:25:06 +0000
commitc7210b3f0b95492fe5c12185624eb8b017ab1ded (patch)
treed1c106d266d64aa068aa65539c009803185b17f2 /tools/llvm-readobj
parent87f7e75e58a8b45312512c34f36b4d842d4d11bf (diff)
llvm-readobj: pretty-print special COFF section names
Print IMAGE_SYM_DEBUG and the like instead of (-2). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218172 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-readobj')
-rw-r--r--tools/llvm-readobj/COFFDumper.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/tools/llvm-readobj/COFFDumper.cpp b/tools/llvm-readobj/COFFDumper.cpp
index c08e20e8ed4..99a374d5a6a 100644
--- a/tools/llvm-readobj/COFFDumper.cpp
+++ b/tools/llvm-readobj/COFFDumper.cpp
@@ -715,6 +715,24 @@ void COFFDumper::printSymbols() {
void COFFDumper::printDynamicSymbols() { ListScope Group(W, "DynamicSymbols"); }
+static StringRef getSectionName(const llvm::object::COFFObjectFile *Obj,
+ COFFSymbolRef Symbol,
+ const coff_section *Section) {
+ if (Section) {
+ StringRef SectionName;
+ Obj->getSectionName(Section, SectionName);
+ return SectionName;
+ }
+ int32_t SectionNumber = Symbol.getSectionNumber();
+ if (SectionNumber == llvm::COFF::IMAGE_SYM_DEBUG)
+ return "IMAGE_SYM_DEBUG";
+ if (SectionNumber == llvm::COFF::IMAGE_SYM_ABSOLUTE)
+ return "IMAGE_SYM_ABSOLUTE";
+ if (SectionNumber == llvm::COFF::IMAGE_SYM_UNDEFINED)
+ return "IMAGE_SYM_UNDEFINED";
+ return "";
+}
+
void COFFDumper::printSymbol(const SymbolRef &Sym) {
DictScope D(W, "Symbol");
@@ -730,9 +748,7 @@ void COFFDumper::printSymbol(const SymbolRef &Sym) {
if (Obj->getSymbolName(Symbol, SymbolName))
SymbolName = "";
- StringRef SectionName = "";
- if (Section)
- Obj->getSectionName(Section, SectionName);
+ StringRef SectionName = getSectionName(Obj, Symbol, Section);
W.printString("Name", SymbolName);
W.printNumber("Value", Symbol.getValue());