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 | f4dc456eef596bbc7ea281454f34c2dd80ddd2f3 (patch) | |
| tree | d5bdb87c94ae71d10dfe77e21f6eba062dc9654c /llvm/tools | |
| parent | 975726345cb4914152fd7d07d92d41dcfd921503 (diff) | |
| download | bcm5719-llvm-f4dc456eef596bbc7ea281454f34c2dd80ddd2f3.tar.gz bcm5719-llvm-f4dc456eef596bbc7ea281454f34c2dd80ddd2f3.zip | |
llvm-readobj: pretty-print special COFF section names
Print IMAGE_SYM_DEBUG and the like instead of (-2).
llvm-svn: 218172
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/llvm-readobj/COFFDumper.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp index c08e20e8ed4..99a374d5a6a 100644 --- a/llvm/tools/llvm-readobj/COFFDumper.cpp +++ b/llvm/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()); |

