From de6256c93843467da3dfe16d02a92ed66f762c2d Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Mon, 7 Apr 2014 23:12:20 +0000 Subject: obj2yaml: Use the correct relocation type for different machine types The IO normalizer would essentially lump I386 and AMD64 relocations together. Relocation types with the same numeric value would then get mapped in appropriately. For example: IMAGE_REL_AMD64_ADDR64 and IMAGE_REL_I386_DIR16 both have a numeric value of one. We would see IMAGE_REL_I386_DIR16 in obj2yaml conversions of object files with a machine type of IMAGE_FILE_MACHINE_AMD64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205746 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Object/Inputs/COFF/x86-64.yaml | 17 +++++++++++++++++ test/Object/Inputs/trivial-object-test.coff-x86-64 | Bin 347 -> 437 bytes test/Object/obj2yaml.test | 20 ++++++++++++++++++-- 3 files changed, 35 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/Object/Inputs/COFF/x86-64.yaml b/test/Object/Inputs/COFF/x86-64.yaml index 1dc2b10cf4..b8a863a429 100644 --- a/test/Object/Inputs/COFF/x86-64.yaml +++ b/test/Object/Inputs/COFF/x86-64.yaml @@ -30,6 +30,16 @@ sections: Characteristics: [IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE, ] # 0xc0100040 SectionData: !hex "48656C6C6F20576F726C642100" # |Hello World!.| + - !Section + Name: '.CRT$XCU' + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] + Alignment: 8 + SectionData: !hex "0000000000000000" + Relocations: + - VirtualAddress: 0 + SymbolName: '??__Ex@@YAXXZ' + Type: IMAGE_REL_AMD64_ADDR64 + symbols: - !Symbol Name: .text @@ -91,3 +101,10 @@ symbols: ComplexType: IMAGE_SYM_DTYPE_NULL # (0) StorageClass: IMAGE_SYM_CLASS_EXTERNAL # (2) + - !Symbol + Name: '??__Ex@@YAXXZ' + Value: 0 + SectionNumber: 3 + SimpleType: IMAGE_SYM_TYPE_NULL # (0) + ComplexType: IMAGE_SYM_DTYPE_FUNCTION # (2) + StorageClass: IMAGE_SYM_CLASS_STATIC # (3) diff --git a/test/Object/Inputs/trivial-object-test.coff-x86-64 b/test/Object/Inputs/trivial-object-test.coff-x86-64 index 077591482c..ed144d1265 100644 Binary files a/test/Object/Inputs/trivial-object-test.coff-x86-64 and b/test/Object/Inputs/trivial-object-test.coff-x86-64 differ diff --git a/test/Object/obj2yaml.test b/test/Object/obj2yaml.test index d96275fe2c..5ab8a15224 100644 --- a/test/Object/obj2yaml.test +++ b/test/Object/obj2yaml.test @@ -112,6 +112,16 @@ COFF-X86-64-NEXT: Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_S COFF-X86-64-NEXT: Alignment: 1 COFF-X86-64-NEXT: SectionData: 48656C6C6F20576F726C642100 +COFF-X86-64: - Name: '.CRT$XCU' +COFF-X86-64-NEXT: Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] +COFF-X86-64-NEXT: Alignment: 8 +COFF-X86-64-NEXT: SectionData: 0000000000000000 + +COFF-X86-64: Relocations: +COFF-X86-64-NEXT: - VirtualAddress: 0 +COFF-X86-64-NEXT: SymbolName: '??__Ex@@YAXXZ' +COFF-X86-64-NEXT: Type: IMAGE_REL_AMD64_ADDR64 + COFF-X86-64: symbols: COFF-X86-64-NEXT: - Name: .text COFF-X86-64-NEXT: Value: 0 @@ -143,7 +153,7 @@ COFF-X86-64: - Name: main COFF-X86-64-NEXT: Value: 0 COFF-X86-64-NEXT: SectionNumber: 1 COFF-X86-64-NEXT: SimpleType: IMAGE_SYM_TYPE_NULL -COFF-X86-64-NEXT: ComplexType: IMAGE_SYM_DTYPE_NULL +COFF-X86-64-NEXT: ComplexType: IMAGE_SYM_DTYPE_FUNCTION COFF-X86-64-NEXT: StorageClass: IMAGE_SYM_CLASS_EXTERNAL COFF-X86-64: - Name: L.str @@ -166,4 +176,10 @@ COFF-X86-64-NEXT: SectionNumber: 0 COFF-X86-64-NEXT: SimpleType: IMAGE_SYM_TYPE_NULL COFF-X86-64-NEXT: ComplexType: IMAGE_SYM_DTYPE_NULL COFF-X86-64-NEXT: StorageClass: IMAGE_SYM_CLASS_EXTERNAL -COFF-X86-64-NOT: NumberOfAuxSymbols + +COFF-X86-64: - Name: '??__Ex@@YAXXZ' +COFF-X86-64-NEXT: Value: 0 +COFF-X86-64-NEXT: SectionNumber: 3 +COFF-X86-64-NEXT: SimpleType: IMAGE_SYM_TYPE_NULL +COFF-X86-64-NEXT: ComplexType: IMAGE_SYM_DTYPE_FUNCTION +COFF-X86-64-NEXT: StorageClass: IMAGE_SYM_CLASS_STATIC -- cgit v1.2.3