# 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 ...