| ## This test checks that yaml2obj correctly handles COFF sections with |
| ## extended relocation tables (IMAGE_SCN_LNK_NRELOC_OVFL). |
| # RUN: yaml2obj %s -o %t |
| # RUN: llvm-readobj --sections --relocations %t | FileCheck %s --check-prefix=CHECK-OBJ |
| # RUN: obj2yaml %t | FileCheck %s --check-prefix=CHECK-YAML |
| |
| # CHECK-OBJ: Sections [ |
| # CHECK-OBJ-NEXT: Section { |
| # CHECK-OBJ-NEXT: Number: 1 |
| # CHECK-OBJ-NEXT: Name: .data |
| # CHECK-OBJ: RawDataSize: 16 |
| # CHECK-OBJ: RelocationCount: 65535 |
| # CHECK-OBJ: Characteristics [ |
| # CHECK-OBJ-NEXT: IMAGE_SCN_ALIGN_16BYTES |
| # CHECK-OBJ-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA |
| # CHECK-OBJ-NEXT: IMAGE_SCN_LNK_NRELOC_OVFL |
| # CHECK-OBJ-NEXT: IMAGE_SCN_MEM_READ |
| # CHECK-OBJ-NEXT: ] |
| # CHECK-OBJ-NEXT: } |
| # CHECK-OBJ-NEXT: ] |
| # CHECK-OBJ-NEXT: Relocations [ |
| # CHECK-OBJ-NEXT: Section (1) .data { |
| # CHECK-OBJ-NEXT: 0x0 IMAGE_REL_AMD64_ADDR64 foo (0) |
| # CHECK-OBJ-NEXT: 0x8 IMAGE_REL_AMD64_ADDR64 bar (1) |
| # CHECK-OBJ-NEXT: } |
| # CHECK-OBJ-NEXT: ] |
| |
| # CHECK-YAML: sections: |
| # CHECK-YAML-NEXT: - Name: .data |
| # CHECK-YAML-NEXT: Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_NRELOC_OVFL, IMAGE_SCN_MEM_READ ] |
| # CHECK-YAML-NEXT: Alignment: 16 |
| # CHECK-YAML-NEXT: SectionData: '00000000000000000000000000000000' |
| # CHECK-YAML-NEXT: Relocations: |
| # CHECK-YAML-NEXT: - VirtualAddress: 0 |
| # CHECK-YAML-NEXT: SymbolName: foo |
| # CHECK-YAML-NEXT: Type: IMAGE_REL_AMD64_ADDR64 |
| # CHECK-YAML-NEXT: - VirtualAddress: 8 |
| # CHECK-YAML-NEXT: SymbolName: bar |
| # CHECK-YAML-NEXT: Type: IMAGE_REL_AMD64_ADDR64 |
| # CHECK-YAML-NEXT: symbols: |
| |
| --- !COFF |
| header: |
| Machine: IMAGE_FILE_MACHINE_AMD64 |
| Characteristics: [ ] |
| sections: |
| - Name: .data |
| Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_LNK_NRELOC_OVFL, IMAGE_SCN_MEM_READ ] |
| Alignment: 16 |
| SectionData: '00000000000000000000000000000000' |
| Relocations: |
| - VirtualAddress: 0 |
| SymbolName: foo |
| Type: IMAGE_REL_AMD64_ADDR64 |
| - VirtualAddress: 8 |
| SymbolName: bar |
| Type: IMAGE_REL_AMD64_ADDR64 |
| symbols: |
| - Name: foo |
| Value: 0 |
| SectionNumber: 0 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: bar |
| Value: 0 |
| SectionNumber: 0 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| ... |