diff options
author | Rui Ueyama <ruiu@google.com> | 2016-01-12 23:28:42 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2016-01-12 23:28:42 +0000 |
commit | 6161b38dbc3ea873de87743c536a379031bdef89 (patch) | |
tree | 16ab786d4923f98474a341c193b607ec6f8af68a /llvm/tools/llvm-objdump | |
parent | 21d73d2e0af7a4b91bdda5f2286b97f7f71d647d (diff) | |
download | bcm5719-llvm-6161b38dbc3ea873de87743c536a379031bdef89.tar.gz bcm5719-llvm-6161b38dbc3ea873de87743c536a379031bdef89.zip |
COFF: Teach llvm-objdump how to dump DLL forwarder symbols.
llvm-svn: 257539
Diffstat (limited to 'llvm/tools/llvm-objdump')
-rw-r--r-- | llvm/tools/llvm-objdump/COFFDump.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/llvm/tools/llvm-objdump/COFFDump.cpp b/llvm/tools/llvm-objdump/COFFDump.cpp index f286351614a..5d21b3320e7 100644 --- a/llvm/tools/llvm-objdump/COFFDump.cpp +++ b/llvm/tools/llvm-objdump/COFFDump.cpp @@ -358,13 +358,30 @@ static void printExportTable(const COFFObjectFile *Obj) { uint32_t RVA; if (I->getExportRVA(RVA)) return; - outs() << format(" % 4d %# 8x", Ordinal, RVA); + bool IsForwarder; + if (I->isForwarder(IsForwarder)) + return; + + if (IsForwarder) { + // Export table entries can be used to re-export symbols that + // this COFF file is imported from some DLLs. This is rare. + // In most cases IsForwarder is false. + outs() << format(" % 4d ", Ordinal); + } else { + outs() << format(" % 4d %# 8x", Ordinal, RVA); + } StringRef Name; if (I->getSymbolName(Name)) continue; if (!Name.empty()) outs() << " " << Name; + if (IsForwarder) { + StringRef S; + if (I->getForwardTo(S)) + return; + outs() << " (forwarded to " << S << ")"; + } outs() << "\n"; } } |