[llvm] r270648 - llvm-objdump: support dumping AUX records for weak externals

Saleem Abdulrasool via llvm-commits llvm-commits at lists.llvm.org
Tue May 24 18:59:33 PDT 2016


Author: compnerd
Date: Tue May 24 20:59:32 2016
New Revision: 270648

URL: http://llvm.org/viewvc/llvm-project?rev=270648&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).

Added:
    llvm/trunk/test/Object/Inputs/COFF/weak-externals.yaml
    llvm/trunk/test/Object/coff-weak-externals.test
Modified:
    llvm/trunk/tools/llvm-objdump/COFFDump.cpp

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=270648&view=auto
==============================================================================
--- llvm/trunk/test/Object/Inputs/COFF/weak-externals.yaml (added)
+++ llvm/trunk/test/Object/Inputs/COFF/weak-externals.yaml Tue May 24 20:59:32 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=270648&view=auto
==============================================================================
--- llvm/trunk/test/Object/coff-weak-externals.test (added)
+++ llvm/trunk/test/Object/coff-weak-externals.test Tue May 24 20:59:32 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 tagndx 9 type 2
+

Modified: llvm/trunk/tools/llvm-objdump/COFFDump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/COFFDump.cpp?rev=270648&r1=270647&r2=270648&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/COFFDump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/COFFDump.cpp Tue May 24 20:59:32 2016
@@ -653,6 +653,12 @@ 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("tagndx %d type %d\n", awe->TagIndex,
+                                   awe->Characteristics);
       } else {
         outs() << "AUX Unknown\n";
       }




More information about the llvm-commits mailing list