197 lines
6.7 KiB
YAML
197 lines
6.7 KiB
YAML
|
# Test reading an ExceptionRecord which is referenced in different ways:
|
||
|
# - Relocation against base of .xdata record, immediate offset in .pdata
|
||
|
# (what LLVM produces)
|
||
|
# - Relocation against symbol in .xdata, no immediate offset in .pdata
|
||
|
# (what MSVC produces)
|
||
|
# - Combination of the two above (unlikely to occur in the wild, but for
|
||
|
# testing the consistency of the code)
|
||
|
|
||
|
# RUN: yaml2obj %s -o %t.obj
|
||
|
# RUN: llvm-readobj --unwind %t.obj | FileCheck %s
|
||
|
|
||
|
# CHECK: UnwindInformation [
|
||
|
# CHECK-NEXT: RuntimeFunction {
|
||
|
# CHECK-NEXT: Function: func (0x0)
|
||
|
# CHECK-NEXT: ExceptionRecord: .xdata (0x0)
|
||
|
# CHECK-NEXT: ExceptionData {
|
||
|
# CHECK-NEXT: FunctionLength: 4
|
||
|
# CHECK-NEXT: Version: 0
|
||
|
# CHECK-NEXT: ExceptionData: No
|
||
|
# CHECK-NEXT: EpiloguePacked: No
|
||
|
# CHECK-NEXT: EpilogueScopes: 0
|
||
|
# CHECK-NEXT: ByteCodeLength: 4
|
||
|
# CHECK-NEXT: Prologue [
|
||
|
# CHECK-NEXT: 0xd400 ; str x19, [sp, #-8]!
|
||
|
# CHECK-NEXT: 0xe4 ; end
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: EpilogueScopes [
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: RuntimeFunction {
|
||
|
# CHECK-NEXT: Function: func2 (0x4)
|
||
|
# CHECK-NEXT: ExceptionRecord: .xdata +0x8 (0x8)
|
||
|
# CHECK-NEXT: ExceptionData {
|
||
|
# CHECK-NEXT: FunctionLength: 4
|
||
|
# CHECK-NEXT: Version: 0
|
||
|
# CHECK-NEXT: ExceptionData: No
|
||
|
# CHECK-NEXT: EpiloguePacked: No
|
||
|
# CHECK-NEXT: EpilogueScopes: 0
|
||
|
# CHECK-NEXT: ByteCodeLength: 4
|
||
|
# CHECK-NEXT: Prologue [
|
||
|
# CHECK-NEXT: 0xdc01 ; str d8, [sp, #8]
|
||
|
# CHECK-NEXT: 0xe4 ; end
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: EpilogueScopes [
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: RuntimeFunction {
|
||
|
# CHECK-NEXT: Function: func3 (0x8)
|
||
|
# CHECK-NEXT: ExceptionRecord: func3_xdata (0x10)
|
||
|
# CHECK-NEXT: ExceptionData {
|
||
|
# CHECK-NEXT: FunctionLength: 4
|
||
|
# CHECK-NEXT: Version: 0
|
||
|
# CHECK-NEXT: ExceptionData: No
|
||
|
# CHECK-NEXT: EpiloguePacked: No
|
||
|
# CHECK-NEXT: EpilogueScopes: 0
|
||
|
# CHECK-NEXT: ByteCodeLength: 4
|
||
|
# CHECK-NEXT: Prologue [
|
||
|
# CHECK-NEXT: 0xe1 ; mov fp, sp
|
||
|
# CHECK-NEXT: 0xe4 ; end
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: EpilogueScopes [
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: RuntimeFunction {
|
||
|
# CHECK-NEXT: Function: func4 (0xC)
|
||
|
# CHECK-NEXT: ExceptionRecord: func3_xdata +0x8 (0x18)
|
||
|
# CHECK-NEXT: ExceptionData {
|
||
|
# CHECK-NEXT: FunctionLength: 4
|
||
|
# CHECK-NEXT: Version: 0
|
||
|
# CHECK-NEXT: ExceptionData: No
|
||
|
# CHECK-NEXT: EpiloguePacked: No
|
||
|
# CHECK-NEXT: EpilogueScopes: 0
|
||
|
# CHECK-NEXT: ByteCodeLength: 4
|
||
|
# CHECK-NEXT: Prologue [
|
||
|
# CHECK-NEXT: 0x81 ; stp x29, x30, [sp, #-16]!
|
||
|
# CHECK-NEXT: 0xe4 ; end
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: EpilogueScopes [
|
||
|
# CHECK-NEXT: ]
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: }
|
||
|
# CHECK-NEXT: ]
|
||
|
|
||
|
--- !COFF
|
||
|
header:
|
||
|
Machine: IMAGE_FILE_MACHINE_ARM64
|
||
|
Characteristics: [ ]
|
||
|
sections:
|
||
|
- Name: .text
|
||
|
Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
|
||
|
Alignment: 4
|
||
|
SectionData: F38F1FF8E80700FDFD030091FD7BBFA9
|
||
|
- Name: .xdata
|
||
|
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
|
||
|
Alignment: 4
|
||
|
SectionData: 01000008D400E4E301000008DC01E4E301000008E1E4E3E30100000881E4E3E3
|
||
|
- Name: .pdata
|
||
|
Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
|
||
|
Alignment: 4
|
||
|
SectionData: '0000000000000000000000000800000000000000000000000000000008000000'
|
||
|
Relocations:
|
||
|
- VirtualAddress: 0
|
||
|
SymbolName: func
|
||
|
Type: IMAGE_REL_ARM64_ADDR32NB
|
||
|
- VirtualAddress: 4
|
||
|
SymbolName: .xdata
|
||
|
Type: IMAGE_REL_ARM64_ADDR32NB
|
||
|
- VirtualAddress: 8
|
||
|
SymbolName: func2
|
||
|
Type: IMAGE_REL_ARM64_ADDR32NB
|
||
|
- VirtualAddress: 12
|
||
|
SymbolName: .xdata
|
||
|
Type: IMAGE_REL_ARM64_ADDR32NB
|
||
|
- VirtualAddress: 16
|
||
|
SymbolName: func3
|
||
|
Type: IMAGE_REL_ARM64_ADDR32NB
|
||
|
- VirtualAddress: 20
|
||
|
SymbolName: func3_xdata
|
||
|
Type: IMAGE_REL_ARM64_ADDR32NB
|
||
|
- VirtualAddress: 24
|
||
|
SymbolName: func4
|
||
|
Type: IMAGE_REL_ARM64_ADDR32NB
|
||
|
- VirtualAddress: 28
|
||
|
SymbolName: func3_xdata
|
||
|
Type: IMAGE_REL_ARM64_ADDR32NB
|
||
|
symbols:
|
||
|
- Name: .text
|
||
|
Value: 0
|
||
|
SectionNumber: 1
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
SectionDefinition:
|
||
|
Length: 16
|
||
|
NumberOfRelocations: 0
|
||
|
NumberOfLinenumbers: 0
|
||
|
CheckSum: 2581817939
|
||
|
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: 32
|
||
|
NumberOfRelocations: 0
|
||
|
NumberOfLinenumbers: 0
|
||
|
CheckSum: 3086971960
|
||
|
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: 32
|
||
|
NumberOfRelocations: 8
|
||
|
NumberOfLinenumbers: 0
|
||
|
CheckSum: 0
|
||
|
Number: 3
|
||
|
- Name: func
|
||
|
Value: 0
|
||
|
SectionNumber: 1
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
- Name: func2
|
||
|
Value: 4
|
||
|
SectionNumber: 1
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
- Name: func3
|
||
|
Value: 8
|
||
|
SectionNumber: 1
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
- Name: func4
|
||
|
Value: 12
|
||
|
SectionNumber: 1
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
- Name: func3_xdata
|
||
|
Value: 16
|
||
|
SectionNumber: 2
|
||
|
SimpleType: IMAGE_SYM_TYPE_NULL
|
||
|
ComplexType: IMAGE_SYM_DTYPE_NULL
|
||
|
StorageClass: IMAGE_SYM_CLASS_STATIC
|
||
|
...
|