| # RUN: yaml2obj %s -o %t.obj |
| # |
| # RUN: lld-link /out:%t.exe /entry:main %t.obj |
| # RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=HEADER %s |
| # RUN: llvm-objdump --unwind-info %t.exe | FileCheck --check-prefix=UNWIND %s |
| # |
| # RUN: lld-link /merge:.pdata=.rdata /out:%t.exe /entry:main %t.obj |
| # RUN: llvm-readobj --file-headers --sections %t.exe | FileCheck -check-prefix=HEADER-MERGE %s |
| # |
| # HEADER: ExceptionTableRVA: 0x3000 |
| # |
| # FIXME: llvm-readobj currently does not understand files with .pdata merged |
| # into .rdata. But we can at least check that the section headers look correct. |
| # |
| # HEADER-MERGE: ExceptionTableRVA: 0x2004 |
| # HEADER-MERGE-NEXT: ExceptionTableSize: 0x30 |
| # HEADER-MERGE: Name: .rdata |
| # HEADER-MERGE-NEXT: VirtualSize: 0x78 |
| # HEADER-MERGE-NEXT: VirtualAddress: 0x2000 |
| # |
| # UNWIND: Function Table: |
| # UNWIND: Start Address: 0x1000 |
| # UNWIND: End Address: 0x101b |
| # UNWIND: Unwind Info Address: 0x2004 |
| # UNWIND: Version: 1 |
| # UNWIND: Flags: 1 UNW_ExceptionHandler |
| # UNWIND: Size of prolog: 18 |
| # UNWIND: Number of Codes: 8 |
| # UNWIND: Frame register: RBX |
| # UNWIND: Frame offset: 0 |
| # UNWIND: Unwind Codes: |
| # UNWIND: 0x12: UOP_SetFPReg |
| # UNWIND: 0x0f: UOP_PushNonVol RBX |
| # UNWIND: 0x0e: UOP_SaveXMM128 XMM8 [0x0000] |
| # UNWIND: 0x09: UOP_SaveNonVol RSI [0x0010] |
| # UNWIND: 0x04: UOP_AllocSmall 24 |
| # UNWIND: 0x00: UOP_PushMachFrame w/o error code |
| # UNWIND: Function Table: |
| # UNWIND: Start Address: 0x1012 |
| # UNWIND: End Address: 0x1012 |
| # UNWIND: Unwind Info Address: 0x2020 |
| # UNWIND: Version: 1 |
| # UNWIND: Flags: 4 UNW_ChainInfo |
| # UNWIND: Size of prolog: 0 |
| # UNWIND: Number of Codes: 0 |
| # UNWIND: No frame pointer used |
| # UNWIND: Function Table: |
| # UNWIND: Start Address: 0x101b |
| # UNWIND: End Address: 0x101c |
| # UNWIND: Unwind Info Address: 0x2030 |
| # UNWIND: Version: 1 |
| # UNWIND: Flags: 0 |
| # UNWIND: Size of prolog: 0 |
| # UNWIND: Number of Codes: 0 |
| # UNWIND: No frame pointer used |
| # UNWIND: Function Table: |
| # UNWIND: Start Address: 0x101c |
| # UNWIND: End Address: 0x1039 |
| # UNWIND: Unwind Info Address: 0x2038 |
| # UNWIND: Version: 1 |
| # UNWIND: Flags: 0 |
| # UNWIND: Size of prolog: 14 |
| # UNWIND: Number of Codes: 6 |
| # UNWIND: No frame pointer used |
| # UNWIND: Unwind Codes: |
| # UNWIND: 0x0e: UOP_AllocLarge 8454128 |
| # UNWIND: 0x07: UOP_AllocLarge 8190 |
| # UNWIND: 0x00: UOP_PushMachFrame w/o error code |
| |
| --- !COFF |
| header: |
| Machine: IMAGE_FILE_MACHINE_AMD64 |
| Characteristics: [ ] |
| sections: |
| - Name: .text |
| Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] |
| Alignment: 4 |
| SectionData: 4883EC184889742410440F110424534889E3488D235B4883C418C3C34881ECF0FF00004881ECF0FF80004881C4F0FF80004881C4F0FF0000C3 |
| - Name: .xdata |
| Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] |
| Alignment: 4 |
| SectionData: 0912080312030F300E880000096402000422001A000000000000000021000000000000001B000000000000000100000000000000010E06000E11F0FF80000701FE1F001A |
| Relocations: |
| - VirtualAddress: 20 |
| SymbolName: __C_specific_handler |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 32 |
| SymbolName: func |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 36 |
| SymbolName: func |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 40 |
| SymbolName: .xdata |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - Name: .pdata |
| Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] |
| Alignment: 4 |
| SectionData: 000000001B0000000000000012000000120000001C00000000000000010000002C000000000000001D00000034000000 |
| Relocations: |
| - VirtualAddress: 0 |
| SymbolName: func |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 4 |
| SymbolName: func |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 8 |
| SymbolName: .xdata |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 12 |
| SymbolName: func |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 16 |
| SymbolName: func |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 20 |
| SymbolName: .xdata |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 24 |
| SymbolName: smallFunc |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 28 |
| SymbolName: smallFunc |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 32 |
| SymbolName: .xdata |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 36 |
| SymbolName: allocFunc |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 40 |
| SymbolName: allocFunc |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - VirtualAddress: 44 |
| SymbolName: .xdata |
| Type: IMAGE_REL_AMD64_ADDR32NB |
| - Name: .rdata |
| Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] |
| Alignment: 4 |
| SectionData: 00000000 |
| symbols: |
| - Name: .text |
| Value: 0 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_STATIC |
| SectionDefinition: |
| Length: 57 |
| NumberOfRelocations: 0 |
| NumberOfLinenumbers: 0 |
| CheckSum: 0 |
| Number: 1 |
| - Name: .xdata |
| Value: 0 |
| SectionNumber: 2 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_STATIC |
| SectionDefinition: |
| Length: 68 |
| NumberOfRelocations: 4 |
| NumberOfLinenumbers: 0 |
| CheckSum: 0 |
| Number: 2 |
| - Name: .pdata |
| Value: 0 |
| SectionNumber: 3 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_STATIC |
| SectionDefinition: |
| Length: 48 |
| NumberOfRelocations: 12 |
| NumberOfLinenumbers: 0 |
| CheckSum: 0 |
| Number: 3 |
| - Name: func |
| Value: 0 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_FUNCTION |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: __C_specific_handler |
| Value: 0 |
| SectionNumber: 0 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: smallFunc |
| Value: 27 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_FUNCTION |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: allocFunc |
| Value: 28 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_FUNCTION |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: main |
| Value: 0 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| - Name: __C_specific_handler |
| Value: 0 |
| SectionNumber: 1 |
| SimpleType: IMAGE_SYM_TYPE_NULL |
| ComplexType: IMAGE_SYM_DTYPE_NULL |
| StorageClass: IMAGE_SYM_CLASS_EXTERNAL |
| ... |