llvm-objdump: support dumping AUX records for weak externals

This is a support COFF feature.  Ensure that we can display the weak externals
auxiliary symbol.  It contains useful information (such as the default binding
and how to resolve the symbol).

llvm-svn: 270648
This commit is contained in:
Saleem Abdulrasool 2016-05-25 01:59:32 +00:00
parent 655a145e83
commit e7e467aaa9
3 changed files with 37 additions and 0 deletions

View File

@ -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
...

View File

@ -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 tagndx 9 type 2

View File

@ -653,6 +653,12 @@ 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("tagndx %d type %d\n", awe->TagIndex,
awe->Characteristics);
} else {
outs() << "AUX Unknown\n";
}