llvm-objdump/COFF: Print ordinal base number.
authorRui Ueyama <ruiu@google.com>
Fri, 17 Jan 2014 22:02:24 +0000 (22:02 +0000)
committerRui Ueyama <ruiu@google.com>
Fri, 17 Jan 2014 22:02:24 +0000 (22:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199518 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/COFF.h
lib/Object/COFFObjectFile.cpp
test/tools/llvm-objdump/coff-private-headers.test
tools/llvm-objdump/COFFDump.cpp

index b8555370e05fa4b69773c907d2cc24505aed2dcf..1514f279b427e36736e57565914e40ede3ea4c2c 100644 (file)
@@ -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;
index 4709612167ce986d71b0b803258c626347e57808..fca21843b2a38b6c066070817b5b32f14e27fe3d 100644 (file)
@@ -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;
index 7d1bde72a0050d00d60f3dadacf50686198d66b2..de3de9001db15aea5ded4384ebbfca7c12234377 100644 (file)
@@ -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
index bb997e0e621ac7db39b879b54dfc8703b46842f6..106dcba37aa1db9a7b6140bd59c19da55ee21052 100644 (file)
@@ -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)) {