summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2014-01-17 22:02:24 +0000
committerRui Ueyama <ruiu@google.com>2014-01-17 22:02:24 +0000
commite5df6095b1d382374f6958835f0a3c89ceae8767 (patch)
tree3ab753f9193e60308da1e571408ccfe02d58f634 /llvm
parent9ab3b8db84997a4beddfeb5636d785ed8202d523 (diff)
downloadbcm5719-llvm-e5df6095b1d382374f6958835f0a3c89ceae8767.tar.gz
bcm5719-llvm-e5df6095b1d382374f6958835f0a3c89ceae8767.zip
llvm-objdump/COFF: Print ordinal base number.
llvm-svn: 199518
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/Object/COFF.h1
-rw-r--r--llvm/lib/Object/COFFObjectFile.cpp6
-rw-r--r--llvm/test/tools/llvm-objdump/coff-private-headers.test1
-rw-r--r--llvm/tools/llvm-objdump/COFFDump.cpp4
4 files changed, 12 insertions, 0 deletions
diff --git a/llvm/include/llvm/Object/COFF.h b/llvm/include/llvm/Object/COFF.h
index b8555370e05..1514f279b42 100644
--- a/llvm/include/llvm/Object/COFF.h
+++ b/llvm/include/llvm/Object/COFF.h
@@ -408,6 +408,7 @@ public:
error_code getNext(ExportDirectoryEntryRef &Result) const;
error_code getDllName(StringRef &Result) const;
+ error_code getOrdinalBase(uint32_t &Result) const;
error_code getOrdinal(uint32_t &Result) const;
error_code getExportRVA(uint32_t &Result) const;
error_code getSymbolName(StringRef &Result) const;
diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp
index 4709612167c..fca21843b2a 100644
--- a/llvm/lib/Object/COFFObjectFile.cpp
+++ b/llvm/lib/Object/COFFObjectFile.cpp
@@ -959,6 +959,12 @@ error_code ExportDirectoryEntryRef::getDllName(StringRef &Result) const {
return object_error::success;
}
+// Returns the starting ordinal number.
+error_code ExportDirectoryEntryRef::getOrdinalBase(uint32_t &Result) const {
+ Result = ExportTable->OrdinalBase;
+ return object_error::success;
+}
+
// Returns the export ordinal of the current export symbol.
error_code ExportDirectoryEntryRef::getOrdinal(uint32_t &Result) const {
Result = ExportTable->OrdinalBase + Index;
diff --git a/llvm/test/tools/llvm-objdump/coff-private-headers.test b/llvm/test/tools/llvm-objdump/coff-private-headers.test
index 7d1bde72a00..de3de9001db 100644
--- a/llvm/test/tools/llvm-objdump/coff-private-headers.test
+++ b/llvm/test/tools/llvm-objdump/coff-private-headers.test
@@ -12,6 +12,7 @@ IMPORT-NEXT: 365 ExitProcess
EXPORT: Export Table:
EXPORT-NEXT: DLL name: export.test.tmp3.dll
+EXPORT-NEXT: Ordinal base: 5
EXPORT-NEXT: Ordinal RVA Name
EXPORT-NEXT: 5 0x2008
EXPORT-NEXT: 6 0x2010 exportfn2
diff --git a/llvm/tools/llvm-objdump/COFFDump.cpp b/llvm/tools/llvm-objdump/COFFDump.cpp
index bb997e0e621..106dcba37aa 100644
--- a/llvm/tools/llvm-objdump/COFFDump.cpp
+++ b/llvm/tools/llvm-objdump/COFFDump.cpp
@@ -286,9 +286,13 @@ static void printExportTable(const COFFObjectFile *Obj) {
if (I == E)
return;
StringRef DllName;
+ uint32_t OrdinalBase;
if (I->getDllName(DllName))
return;
+ if (I->getOrdinalBase(OrdinalBase))
+ return;
outs() << " DLL name: " << DllName << "\n";
+ outs() << " Ordinal base: " << OrdinalBase << "\n";
outs() << " Ordinal RVA Name\n";
error_code EC;
for (; I != E; I = I.increment(EC)) {
OpenPOWER on IntegriCloud