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