diff options
-rw-r--r-- | llvm/test/Object/Inputs/COFF/weak-externals.obj | bin | 141 -> 0 bytes | |||
-rw-r--r-- | llvm/test/Object/Inputs/COFF/weak-externals.yaml | 26 | ||||
-rw-r--r-- | llvm/test/Object/coff-weak-externals.test | 5 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/COFFDump.cpp | 7 |
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 Binary files differdeleted file mode 100644 index b2eb399a394..00000000000 --- a/llvm/test/Object/Inputs/COFF/weak-externals.obj +++ /dev/null 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"; } |