1# RUN: yaml2obj < %s > %t.obj 2# 3# RUN: lld-link /out:%t.exe /entry:main %t.obj 4# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=HEADER %s 5# RUN: llvm-objdump --unwind-info %t.exe | FileCheck --check-prefix=UNWIND %s 6# 7# RUN: lld-link /merge:.pdata=.rdata /out:%t.exe /entry:main %t.obj 8# RUN: llvm-readobj --file-headers --sections %t.exe | FileCheck -check-prefix=HEADER-MERGE %s 9# 10# HEADER: ExceptionTableRVA: 0x3000 11# 12# FIXME: llvm-readobj currently does not understand files with .pdata merged 13# into .rdata. But we can at least check that the section headers look correct. 14# 15# HEADER-MERGE: ExceptionTableRVA: 0x2004 16# HEADER-MERGE-NEXT: ExceptionTableSize: 0x30 17# HEADER-MERGE: Name: .rdata 18# HEADER-MERGE-NEXT: VirtualSize: 0x78 19# HEADER-MERGE-NEXT: VirtualAddress: 0x2000 20# 21# UNWIND: Function Table: 22# UNWIND: Start Address: 0x1000 23# UNWIND: End Address: 0x101b 24# UNWIND: Unwind Info Address: 0x2004 25# UNWIND: Version: 1 26# UNWIND: Flags: 1 UNW_ExceptionHandler 27# UNWIND: Size of prolog: 18 28# UNWIND: Number of Codes: 8 29# UNWIND: Frame register: RBX 30# UNWIND: Frame offset: 0 31# UNWIND: Unwind Codes: 32# UNWIND: 0x12: UOP_SetFPReg 33# UNWIND: 0x0f: UOP_PushNonVol RBX 34# UNWIND: 0x0e: UOP_SaveXMM128 XMM8 [0x0000] 35# UNWIND: 0x09: UOP_SaveNonVol RSI [0x0010] 36# UNWIND: 0x04: UOP_AllocSmall 24 37# UNWIND: 0x00: UOP_PushMachFrame w/o error code 38# UNWIND: Function Table: 39# UNWIND: Start Address: 0x1012 40# UNWIND: End Address: 0x1012 41# UNWIND: Unwind Info Address: 0x2020 42# UNWIND: Version: 1 43# UNWIND: Flags: 4 UNW_ChainInfo 44# UNWIND: Size of prolog: 0 45# UNWIND: Number of Codes: 0 46# UNWIND: No frame pointer used 47# UNWIND: Function Table: 48# UNWIND: Start Address: 0x101b 49# UNWIND: End Address: 0x101c 50# UNWIND: Unwind Info Address: 0x2030 51# UNWIND: Version: 1 52# UNWIND: Flags: 0 53# UNWIND: Size of prolog: 0 54# UNWIND: Number of Codes: 0 55# UNWIND: No frame pointer used 56# UNWIND: Function Table: 57# UNWIND: Start Address: 0x101c 58# UNWIND: End Address: 0x1039 59# UNWIND: Unwind Info Address: 0x2038 60# UNWIND: Version: 1 61# UNWIND: Flags: 0 62# UNWIND: Size of prolog: 14 63# UNWIND: Number of Codes: 6 64# UNWIND: No frame pointer used 65# UNWIND: Unwind Codes: 66# UNWIND: 0x0e: UOP_AllocLarge 8454128 67# UNWIND: 0x07: UOP_AllocLarge 8190 68# UNWIND: 0x00: UOP_PushMachFrame w/o error code 69 70--- !COFF 71header: 72 Machine: IMAGE_FILE_MACHINE_AMD64 73 Characteristics: [ ] 74sections: 75 - Name: .text 76 Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] 77 Alignment: 4 78 SectionData: 4883EC184889742410440F110424534889E3488D235B4883C418C3C34881ECF0FF00004881ECF0FF80004881C4F0FF80004881C4F0FF0000C3 79 - Name: .xdata 80 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] 81 Alignment: 4 82 SectionData: 0912080312030F300E880000096402000422001A000000000000000021000000000000001B000000000000000100000000000000010E06000E11F0FF80000701FE1F001A 83 Relocations: 84 - VirtualAddress: 20 85 SymbolName: __C_specific_handler 86 Type: IMAGE_REL_AMD64_ADDR32NB 87 - VirtualAddress: 32 88 SymbolName: func 89 Type: IMAGE_REL_AMD64_ADDR32NB 90 - VirtualAddress: 36 91 SymbolName: func 92 Type: IMAGE_REL_AMD64_ADDR32NB 93 - VirtualAddress: 40 94 SymbolName: .xdata 95 Type: IMAGE_REL_AMD64_ADDR32NB 96 - Name: .pdata 97 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] 98 Alignment: 4 99 SectionData: 000000001B0000000000000012000000120000001C00000000000000010000002C000000000000001D00000034000000 100 Relocations: 101 - VirtualAddress: 0 102 SymbolName: func 103 Type: IMAGE_REL_AMD64_ADDR32NB 104 - VirtualAddress: 4 105 SymbolName: func 106 Type: IMAGE_REL_AMD64_ADDR32NB 107 - VirtualAddress: 8 108 SymbolName: .xdata 109 Type: IMAGE_REL_AMD64_ADDR32NB 110 - VirtualAddress: 12 111 SymbolName: func 112 Type: IMAGE_REL_AMD64_ADDR32NB 113 - VirtualAddress: 16 114 SymbolName: func 115 Type: IMAGE_REL_AMD64_ADDR32NB 116 - VirtualAddress: 20 117 SymbolName: .xdata 118 Type: IMAGE_REL_AMD64_ADDR32NB 119 - VirtualAddress: 24 120 SymbolName: smallFunc 121 Type: IMAGE_REL_AMD64_ADDR32NB 122 - VirtualAddress: 28 123 SymbolName: smallFunc 124 Type: IMAGE_REL_AMD64_ADDR32NB 125 - VirtualAddress: 32 126 SymbolName: .xdata 127 Type: IMAGE_REL_AMD64_ADDR32NB 128 - VirtualAddress: 36 129 SymbolName: allocFunc 130 Type: IMAGE_REL_AMD64_ADDR32NB 131 - VirtualAddress: 40 132 SymbolName: allocFunc 133 Type: IMAGE_REL_AMD64_ADDR32NB 134 - VirtualAddress: 44 135 SymbolName: .xdata 136 Type: IMAGE_REL_AMD64_ADDR32NB 137 - Name: .rdata 138 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] 139 Alignment: 4 140 SectionData: 00000000 141symbols: 142 - Name: .text 143 Value: 0 144 SectionNumber: 1 145 SimpleType: IMAGE_SYM_TYPE_NULL 146 ComplexType: IMAGE_SYM_DTYPE_NULL 147 StorageClass: IMAGE_SYM_CLASS_STATIC 148 SectionDefinition: 149 Length: 57 150 NumberOfRelocations: 0 151 NumberOfLinenumbers: 0 152 CheckSum: 0 153 Number: 1 154 - Name: .xdata 155 Value: 0 156 SectionNumber: 2 157 SimpleType: IMAGE_SYM_TYPE_NULL 158 ComplexType: IMAGE_SYM_DTYPE_NULL 159 StorageClass: IMAGE_SYM_CLASS_STATIC 160 SectionDefinition: 161 Length: 68 162 NumberOfRelocations: 4 163 NumberOfLinenumbers: 0 164 CheckSum: 0 165 Number: 2 166 - Name: .pdata 167 Value: 0 168 SectionNumber: 3 169 SimpleType: IMAGE_SYM_TYPE_NULL 170 ComplexType: IMAGE_SYM_DTYPE_NULL 171 StorageClass: IMAGE_SYM_CLASS_STATIC 172 SectionDefinition: 173 Length: 48 174 NumberOfRelocations: 12 175 NumberOfLinenumbers: 0 176 CheckSum: 0 177 Number: 3 178 - Name: func 179 Value: 0 180 SectionNumber: 1 181 SimpleType: IMAGE_SYM_TYPE_NULL 182 ComplexType: IMAGE_SYM_DTYPE_FUNCTION 183 StorageClass: IMAGE_SYM_CLASS_EXTERNAL 184 - Name: __C_specific_handler 185 Value: 0 186 SectionNumber: 0 187 SimpleType: IMAGE_SYM_TYPE_NULL 188 ComplexType: IMAGE_SYM_DTYPE_NULL 189 StorageClass: IMAGE_SYM_CLASS_EXTERNAL 190 - Name: smallFunc 191 Value: 27 192 SectionNumber: 1 193 SimpleType: IMAGE_SYM_TYPE_NULL 194 ComplexType: IMAGE_SYM_DTYPE_FUNCTION 195 StorageClass: IMAGE_SYM_CLASS_EXTERNAL 196 - Name: allocFunc 197 Value: 28 198 SectionNumber: 1 199 SimpleType: IMAGE_SYM_TYPE_NULL 200 ComplexType: IMAGE_SYM_DTYPE_FUNCTION 201 StorageClass: IMAGE_SYM_CLASS_EXTERNAL 202 - Name: main 203 Value: 0 204 SectionNumber: 1 205 SimpleType: IMAGE_SYM_TYPE_NULL 206 ComplexType: IMAGE_SYM_DTYPE_NULL 207 StorageClass: IMAGE_SYM_CLASS_EXTERNAL 208 - Name: __C_specific_handler 209 Value: 0 210 SectionNumber: 1 211 SimpleType: IMAGE_SYM_TYPE_NULL 212 ComplexType: IMAGE_SYM_DTYPE_NULL 213 StorageClass: IMAGE_SYM_CLASS_EXTERNAL 214... 215