diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-09-20 00:25:06 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-09-20 00:25:06 +0000 |
commit | c7210b3f0b95492fe5c12185624eb8b017ab1ded (patch) | |
tree | d1c106d266d64aa068aa65539c009803185b17f2 /tools/llvm-readobj | |
parent | 87f7e75e58a8b45312512c34f36b4d842d4d11bf (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.cpp | 22 |
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()); |