197 lines · yaml
1# Test reading an ExceptionRecord which is referenced in different ways:2# - Relocation against base of .xdata record, immediate offset in .pdata3# (what LLVM produces)4# - Relocation against symbol in .xdata, no immediate offset in .pdata5# (what MSVC produces)6# - Combination of the two above (unlikely to occur in the wild, but for7# testing the consistency of the code)8 9# RUN: yaml2obj %s -o %t.obj10# RUN: llvm-readobj --unwind %t.obj | FileCheck %s11 12# CHECK: UnwindInformation [13# CHECK-NEXT: RuntimeFunction {14# CHECK-NEXT: Function: func (0x0)15# CHECK-NEXT: ExceptionRecord: .xdata (0x0)16# CHECK-NEXT: ExceptionData {17# CHECK-NEXT: FunctionLength: 418# CHECK-NEXT: Version: 019# CHECK-NEXT: ExceptionData: No20# CHECK-NEXT: EpiloguePacked: No21# CHECK-NEXT: EpilogueScopes: 022# CHECK-NEXT: ByteCodeLength: 423# CHECK-NEXT: Prologue [24# CHECK-NEXT: 0xd400 ; str x19, [sp, #-8]!25# CHECK-NEXT: 0xe4 ; end26# CHECK-NEXT: ]27# CHECK-NEXT: EpilogueScopes [28# CHECK-NEXT: ]29# CHECK-NEXT: }30# CHECK-NEXT: }31# CHECK-NEXT: RuntimeFunction {32# CHECK-NEXT: Function: func2 (0x4)33# CHECK-NEXT: ExceptionRecord: .xdata +0x8 (0x8)34# CHECK-NEXT: ExceptionData {35# CHECK-NEXT: FunctionLength: 436# CHECK-NEXT: Version: 037# CHECK-NEXT: ExceptionData: No38# CHECK-NEXT: EpiloguePacked: No39# CHECK-NEXT: EpilogueScopes: 040# CHECK-NEXT: ByteCodeLength: 441# CHECK-NEXT: Prologue [42# CHECK-NEXT: 0xdc01 ; str d8, [sp, #8]43# CHECK-NEXT: 0xe4 ; end44# CHECK-NEXT: ]45# CHECK-NEXT: EpilogueScopes [46# CHECK-NEXT: ]47# CHECK-NEXT: }48# CHECK-NEXT: }49# CHECK-NEXT: RuntimeFunction {50# CHECK-NEXT: Function: func3 (0x8)51# CHECK-NEXT: ExceptionRecord: func3_xdata (0x10)52# CHECK-NEXT: ExceptionData {53# CHECK-NEXT: FunctionLength: 454# CHECK-NEXT: Version: 055# CHECK-NEXT: ExceptionData: No56# CHECK-NEXT: EpiloguePacked: No57# CHECK-NEXT: EpilogueScopes: 058# CHECK-NEXT: ByteCodeLength: 459# CHECK-NEXT: Prologue [60# CHECK-NEXT: 0xe1 ; mov fp, sp61# CHECK-NEXT: 0xe4 ; end62# CHECK-NEXT: ]63# CHECK-NEXT: EpilogueScopes [64# CHECK-NEXT: ]65# CHECK-NEXT: }66# CHECK-NEXT: }67# CHECK-NEXT: RuntimeFunction {68# CHECK-NEXT: Function: func4 (0xC)69# CHECK-NEXT: ExceptionRecord: func3_xdata +0x8 (0x18)70# CHECK-NEXT: ExceptionData {71# CHECK-NEXT: FunctionLength: 472# CHECK-NEXT: Version: 073# CHECK-NEXT: ExceptionData: No74# CHECK-NEXT: EpiloguePacked: No75# CHECK-NEXT: EpilogueScopes: 076# CHECK-NEXT: ByteCodeLength: 477# CHECK-NEXT: Prologue [78# CHECK-NEXT: 0x81 ; stp x29, x30, [sp, #-16]!79# CHECK-NEXT: 0xe4 ; end80# CHECK-NEXT: ]81# CHECK-NEXT: EpilogueScopes [82# CHECK-NEXT: ]83# CHECK-NEXT: }84# CHECK-NEXT: }85# CHECK-NEXT: ]86 87--- !COFF88header:89 Machine: IMAGE_FILE_MACHINE_ARM6490 Characteristics: [ ]91sections:92 - Name: .text93 Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]94 Alignment: 495 SectionData: F38F1FF8E80700FDFD030091FD7BBFA996 - Name: .xdata97 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]98 Alignment: 499 SectionData: 01000008D400E4E301000008DC01E4E301000008E1E4E3E30100000881E4E3E3100 - Name: .pdata101 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]102 Alignment: 4103 SectionData: '0000000000000000000000000800000000000000000000000000000008000000'104 Relocations:105 - VirtualAddress: 0106 SymbolName: func107 Type: IMAGE_REL_ARM64_ADDR32NB108 - VirtualAddress: 4109 SymbolName: .xdata110 Type: IMAGE_REL_ARM64_ADDR32NB111 - VirtualAddress: 8112 SymbolName: func2113 Type: IMAGE_REL_ARM64_ADDR32NB114 - VirtualAddress: 12115 SymbolName: .xdata116 Type: IMAGE_REL_ARM64_ADDR32NB117 - VirtualAddress: 16118 SymbolName: func3119 Type: IMAGE_REL_ARM64_ADDR32NB120 - VirtualAddress: 20121 SymbolName: func3_xdata122 Type: IMAGE_REL_ARM64_ADDR32NB123 - VirtualAddress: 24124 SymbolName: func4125 Type: IMAGE_REL_ARM64_ADDR32NB126 - VirtualAddress: 28127 SymbolName: func3_xdata128 Type: IMAGE_REL_ARM64_ADDR32NB129symbols:130 - Name: .text131 Value: 0132 SectionNumber: 1133 SimpleType: IMAGE_SYM_TYPE_NULL134 ComplexType: IMAGE_SYM_DTYPE_NULL135 StorageClass: IMAGE_SYM_CLASS_STATIC136 SectionDefinition:137 Length: 16138 NumberOfRelocations: 0139 NumberOfLinenumbers: 0140 CheckSum: 2581817939141 Number: 1142 - Name: .xdata143 Value: 0144 SectionNumber: 2145 SimpleType: IMAGE_SYM_TYPE_NULL146 ComplexType: IMAGE_SYM_DTYPE_NULL147 StorageClass: IMAGE_SYM_CLASS_STATIC148 SectionDefinition:149 Length: 32150 NumberOfRelocations: 0151 NumberOfLinenumbers: 0152 CheckSum: 3086971960153 Number: 2154 - Name: .pdata155 Value: 0156 SectionNumber: 3157 SimpleType: IMAGE_SYM_TYPE_NULL158 ComplexType: IMAGE_SYM_DTYPE_NULL159 StorageClass: IMAGE_SYM_CLASS_STATIC160 SectionDefinition:161 Length: 32162 NumberOfRelocations: 8163 NumberOfLinenumbers: 0164 CheckSum: 0165 Number: 3166 - Name: func167 Value: 0168 SectionNumber: 1169 SimpleType: IMAGE_SYM_TYPE_NULL170 ComplexType: IMAGE_SYM_DTYPE_NULL171 StorageClass: IMAGE_SYM_CLASS_STATIC172 - Name: func2173 Value: 4174 SectionNumber: 1175 SimpleType: IMAGE_SYM_TYPE_NULL176 ComplexType: IMAGE_SYM_DTYPE_NULL177 StorageClass: IMAGE_SYM_CLASS_STATIC178 - Name: func3179 Value: 8180 SectionNumber: 1181 SimpleType: IMAGE_SYM_TYPE_NULL182 ComplexType: IMAGE_SYM_DTYPE_NULL183 StorageClass: IMAGE_SYM_CLASS_STATIC184 - Name: func4185 Value: 12186 SectionNumber: 1187 SimpleType: IMAGE_SYM_TYPE_NULL188 ComplexType: IMAGE_SYM_DTYPE_NULL189 StorageClass: IMAGE_SYM_CLASS_STATIC190 - Name: func3_xdata191 Value: 16192 SectionNumber: 2193 SimpleType: IMAGE_SYM_TYPE_NULL194 ComplexType: IMAGE_SYM_DTYPE_NULL195 StorageClass: IMAGE_SYM_CLASS_STATIC196...197