summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/test/Object/Inputs/COFF/weak-externals.objbin141 -> 0 bytes
-rw-r--r--llvm/test/Object/Inputs/COFF/weak-externals.yaml26
-rw-r--r--llvm/test/Object/coff-weak-externals.test5
-rw-r--r--llvm/tools/llvm-objdump/COFFDump.cpp7
4 files changed, 38 insertions, 0 deletions
diff --git a/llvm/test/Object/Inputs/COFF/weak-externals.obj b/llvm/test/Object/Inputs/COFF/weak-externals.obj
deleted file mode 100644
index b2eb399a394..00000000000
--- a/llvm/test/Object/Inputs/COFF/weak-externals.obj
+++ /dev/null
Binary files differ
diff --git a/llvm/test/Object/Inputs/COFF/weak-externals.yaml b/llvm/test/Object/Inputs/COFF/weak-externals.yaml
new file mode 100644
index 00000000000..44364186b52
--- /dev/null
+++ b/llvm/test/Object/Inputs/COFF/weak-externals.yaml
@@ -0,0 +1,26 @@
+---
+header:
+ Machine: IMAGE_FILE_MACHINE_ARMNT
+ Characteristics: [ ]
+sections:
+ - Name: .rdata
+ Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+ Alignment: 1
+ SectionData: ''
+symbols:
+ - Name: Function
+ Value: 0
+ SectionNumber: 0
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_NULL
+ StorageClass: IMAGE_SYM_CLASS_WEAK_EXTERNAL
+ WeakExternal:
+ TagIndex: 9
+ Characteristics: IMAGE_WEAK_EXTERN_SEARCH_LIBRARY
+ - Name: .weak.Function.default
+ Value: 0
+ SectionNumber: -1
+ SimpleType: IMAGE_SYM_TYPE_NULL
+ ComplexType: IMAGE_SYM_DTYPE_NULL
+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
+...
diff --git a/llvm/test/Object/coff-weak-externals.test b/llvm/test/Object/coff-weak-externals.test
new file mode 100644
index 00000000000..62005ad46b9
--- /dev/null
+++ b/llvm/test/Object/coff-weak-externals.test
@@ -0,0 +1,5 @@
+RUN: yaml2obj %p/Inputs/COFF/weak-externals.yaml | llvm-objdump -t - | FileCheck %s
+
+CHECK: [ 0](sec 0)(fl 0x00)(ty 0)(scl 69) (nx 1) 0x00000000 Function
+CHECK: AUX indx 9 srch 2
+
diff --git a/llvm/tools/llvm-objdump/COFFDump.cpp b/llvm/tools/llvm-objdump/COFFDump.cpp
index 6b98b72b5c1..62c9edcbe93 100644
--- a/llvm/tools/llvm-objdump/COFFDump.cpp
+++ b/llvm/tools/llvm-objdump/COFFDump.cpp
@@ -653,6 +653,13 @@ void llvm::printCOFFSymbolTable(const COFFObjectFile *coff) {
SI = SI + Symbol->getNumberOfAuxSymbols();
break;
+ } else if (Symbol->isWeakExternal()) {
+ const coff_aux_weak_external *awe;
+ error(coff->getAuxSymbol<coff_aux_weak_external>(SI + 1, awe));
+
+ outs() << "AUX " << format("indx %d srch %d\n",
+ static_cast<uint32_t>(awe->TagIndex),
+ static_cast<uint32_t>(awe->Characteristics));
} else {
outs() << "AUX Unknown\n";
}
OpenPOWER on IntegriCloud