summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/include/llvm/Object/COFF.h2
-rw-r--r--llvm/lib/Object/COFFObjectFile.cpp6
-rw-r--r--llvm/test/tools/llvm-readobj/imports.test12
-rw-r--r--llvm/tools/llvm-readobj/COFFDumper.cpp8
4 files changed, 28 insertions, 0 deletions
diff --git a/llvm/include/llvm/Object/COFF.h b/llvm/include/llvm/Object/COFF.h
index c7fe2926bfa..8b8ebbb3fcd 100644
--- a/llvm/include/llvm/Object/COFF.h
+++ b/llvm/include/llvm/Object/COFF.h
@@ -712,6 +712,8 @@ public:
imported_symbol_iterator imported_symbol_end() const;
std::error_code getName(StringRef &Result) const;
+ std::error_code getDelayImportTable(
+ const delay_import_directory_table_entry *&Result) const;
private:
const delay_import_directory_table_entry *Table;
diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp
index e4ff074945d..bd7015713f9 100644
--- a/llvm/lib/Object/COFFObjectFile.cpp
+++ b/llvm/lib/Object/COFFObjectFile.cpp
@@ -1179,6 +1179,12 @@ std::error_code DelayImportDirectoryEntryRef::getName(StringRef &Result) const {
return object_error::success;
}
+std::error_code DelayImportDirectoryEntryRef::
+getDelayImportTable(const delay_import_directory_table_entry *&Result) const {
+ Result = Table;
+ return object_error::success;
+}
+
bool ExportDirectoryEntryRef::
operator==(const ExportDirectoryEntryRef &Other) const {
return ExportTable == Other.ExportTable && Index == Other.Index;
diff --git a/llvm/test/tools/llvm-readobj/imports.test b/llvm/test/tools/llvm-readobj/imports.test
index 531fb32561a..82b7dc711c8 100644
--- a/llvm/test/tools/llvm-readobj/imports.test
+++ b/llvm/test/tools/llvm-readobj/imports.test
@@ -28,6 +28,12 @@ X86-NEXT: Symbol: (3)
X86-NEXT: }
X86-NEXT: DelayImport {
X86-NEXT: Name: lazyload.dll
+X86-NEXT: Attributes: 0x1
+X86-NEXT: ModuleHandle: 0x301C
+X86-NEXT: ImportAddressTable: 0x3010
+X86-NEXT: ImportNameTable: 0x2090
+X86-NEXT: BoundDelayImportTable: 0x20AC
+X86-NEXT: UnloadDelayImportTable: 0x0
X86-NEXT: Symbol: Func5 (0)
X86-NEXT: Symbol: Func4 (0)
X86-NEXT: }
@@ -59,6 +65,12 @@ X64-NEXT: Symbol: (3)
X64-NEXT: }
X64-NEXT: DelayImport {
X64-NEXT: Name: lazyload.dll
+X64-NEXT: Attributes: 0x1
+X64-NEXT: ModuleHandle: 0x3028
+X64-NEXT: ImportAddressTable: 0x3010
+X64-NEXT: ImportNameTable: 0x20E0
+X64-NEXT: BoundDelayImportTable: 0x2108
+X64-NEXT: UnloadDelayImportTable: 0x0
X64-NEXT: Symbol: Func5 (0)
X64-NEXT: Symbol: Func4 (0)
X64-NEXT: }
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp
index 1697a55b718..53fba14a36e 100644
--- a/llvm/tools/llvm-readobj/COFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/COFFDumper.cpp
@@ -921,6 +921,14 @@ void COFFDumper::printCOFFImports() {
StringRef Name;
if (error(I->getName(Name))) return;
W.printString("Name", Name);
+ const delay_import_directory_table_entry *Table;
+ if (error(I->getDelayImportTable(Table))) return;
+ W.printHex("Attributes", Table->Attributes);
+ W.printHex("ModuleHandle", Table->ModuleHandle);
+ W.printHex("ImportAddressTable", Table->DelayImportAddressTable);
+ W.printHex("ImportNameTable", Table->DelayImportNameTable);
+ W.printHex("BoundDelayImportTable", Table->BoundDelayImportTable);
+ W.printHex("UnloadDelayImportTable", Table->UnloadDelayImportTable);
printImportedSymbols(I->imported_symbol_begin(), I->imported_symbol_end());
}
}
OpenPOWER on IntegriCloud