From: Rui Ueyama Date: Fri, 17 Jan 2014 22:02:24 +0000 (+0000) Subject: llvm-objdump/COFF: Print ordinal base number. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9106d365f5577c579c383766405e2aa9b9e9ae38;p=oota-llvm.git llvm-objdump/COFF: Print ordinal base number. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199518 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Object/COFF.h b/include/llvm/Object/COFF.h index b8555370e05..1514f279b42 100644 --- a/include/llvm/Object/COFF.h +++ b/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/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 4709612167c..fca21843b2a 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/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/test/tools/llvm-objdump/coff-private-headers.test b/test/tools/llvm-objdump/coff-private-headers.test index 7d1bde72a00..de3de9001db 100644 --- a/test/tools/llvm-objdump/coff-private-headers.test +++ b/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/tools/llvm-objdump/COFFDump.cpp b/tools/llvm-objdump/COFFDump.cpp index bb997e0e621..106dcba37aa 100644 --- a/tools/llvm-objdump/COFFDump.cpp +++ b/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)) {