summaryrefslogtreecommitdiffstats
path: root/llvm/tools
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
commitf4dc456eef596bbc7ea281454f34c2dd80ddd2f3 (patch)
treed5bdb87c94ae71d10dfe77e21f6eba062dc9654c /llvm/tools
parent975726345cb4914152fd7d07d92d41dcfd921503 (diff)
downloadbcm5719-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.cpp22
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());
OpenPOWER on IntegriCloud