[llvm] r270813 - llvm-objdump: support dumping AUX records for weak externals
Saleem Abdulrasool via llvm-commits
llvm-commits at lists.llvm.org
Wed May 25 18:45:13 PDT 2016
Author: compnerd
Date: Wed May 25 20:45:12 2016
New Revision: 270813
URL: http://llvm.org/viewvc/llvm-project?rev=270813&view=rev
Log:
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).
This reapplies the previous patch with a modification which hopefully should fix
the endianness issues. The variadic call would promote the ulittle32_t to a
uint32_t which would lose the byte-swapping behaviour desired.
Added:
llvm/trunk/test/Object/Inputs/COFF/weak-externals.yaml
llvm/trunk/test/Object/coff-weak-externals.test
Removed:
llvm/trunk/test/Object/Inputs/COFF/weak-externals.obj
Modified:
llvm/trunk/tools/llvm-objdump/COFFDump.cpp
Removed: llvm/trunk/test/Object/Inputs/COFF/weak-externals.obj
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/Inputs/COFF/weak-externals.obj?rev=270812&view=auto
==============================================================================
Binary files llvm/trunk/test/Object/Inputs/COFF/weak-externals.obj (original) and llvm/trunk/test/Object/Inputs/COFF/weak-externals.obj (removed) differ
Added: llvm/trunk/test/Object/Inputs/COFF/weak-externals.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/Inputs/COFF/weak-externals.yaml?rev=270813&view=auto
==============================================================================
--- llvm/trunk/test/Object/Inputs/COFF/weak-externals.yaml (added)
+++ llvm/trunk/test/Object/Inputs/COFF/weak-externals.yaml Wed May 25 20:45:12 2016
@@ -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
+...
Added: llvm/trunk/test/Object/coff-weak-externals.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/coff-weak-externals.test?rev=270813&view=auto
==============================================================================
--- llvm/trunk/test/Object/coff-weak-externals.test (added)
+++ llvm/trunk/test/Object/coff-weak-externals.test Wed May 25 20:45:12 2016
@@ -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
+
Modified: llvm/trunk/tools/llvm-objdump/COFFDump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/COFFDump.cpp?rev=270813&r1=270812&r2=270813&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/COFFDump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/COFFDump.cpp Wed May 25 20:45:12 2016
@@ -653,6 +653,13 @@ void llvm::printCOFFSymbolTable(const CO
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";
}
More information about the llvm-commits
mailing list