| # RUN: ld64.lld -arch arm64 -r %s -o %t | 
 | # RUN: ld64.lld -arch arm64 -r %t -o %t2 | 
 | # RUN: llvm-objdump -s -section="__eh_frame" %t | FileCheck %s | 
 | # RUN: llvm-objdump -s -section="__eh_frame" %t2 | FileCheck %s | 
 |  | 
 | # The reference from FDE->CIE is implicitly created as a negDelta32. | 
 | # We don't emit these in to the binary as relocations, so we need to | 
 | # make sure that the offset in the FDE to the CIE is the correct value. | 
 | # CHECK: {{[0-9abcdef]*}} 10000000 00000000 017a5200 01781e01 | 
 | # CHECK: {{[0-9abcdef]*}} 100c1f00 20000000 18000000 b8ffffff | 
 | # Note, this one that matters               ^~~~~~~~ | 
 | # It needs to be 0x18 as that is the offset back to 0 where the CIE is. | 
 | # CHECK: {{[0-9abcdef]*}} ffffffff 20000000 00000000 00480e10 | 
 | # CHECK: {{[0-9abcdef]*}} 9e019d02 00000000 | 
 |  | 
 | ---  !mach-o | 
 | arch:            arm64 | 
 | file-type:       MH_OBJECT | 
 | flags:           [ MH_SUBSECTIONS_VIA_SYMBOLS ] | 
 | compat-version:  0.0 | 
 | current-version: 0.0 | 
 | has-UUID:        false | 
 | OS:              unknown | 
 | sections: | 
 |   - segment:         __TEXT | 
 |     section:         __text | 
 |     type:            S_REGULAR | 
 |     attributes:      [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ] | 
 |     alignment:       4 | 
 |     address:         0x0000000000000000 | 
 |     content:         [ 0xFD, 0x7B, 0xBF, 0xA9, 0xFD, 0x03, 0x00, 0x91, | 
 |                        0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, | 
 |                        0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x80, 0x52, | 
 |                        0xFD, 0x7B, 0xC1, 0xA8, 0xC0, 0x03, 0x5F, 0xD6 ] | 
 |     relocations: | 
 |       - offset:          0x00000010 | 
 |         type:            ARM64_RELOC_BRANCH26 | 
 |         length:          2 | 
 |         pc-rel:          true | 
 |         extern:          true | 
 |         symbol:          6 | 
 |       - offset:          0x0000000C | 
 |         type:            ARM64_RELOC_PAGEOFF12 | 
 |         length:          2 | 
 |         pc-rel:          false | 
 |         extern:          true | 
 |         symbol:          1 | 
 |       - offset:          0x00000008 | 
 |         type:            ARM64_RELOC_PAGE21 | 
 |         length:          2 | 
 |         pc-rel:          true | 
 |         extern:          true | 
 |         symbol:          1 | 
 |   - segment:         __TEXT | 
 |     section:         __cstring | 
 |     type:            S_CSTRING_LITERALS | 
 |     attributes:      [  ] | 
 |     address:         0x0000000000000020 | 
 |     content:         [ 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x77, 0x6F, | 
 |                        0x72, 0x6C, 0x64, 0x00 ] | 
 |   - segment:         __LD | 
 |     section:         __compact_unwind | 
 |     type:            S_REGULAR | 
 |     attributes:      [  ] | 
 |     alignment:       8 | 
 |     address:         0x0000000000000030 | 
 |     content:         [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                        0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, | 
 |                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ] | 
 |     relocations: | 
 |       - offset:          0x00000000 | 
 |         type:            ARM64_RELOC_UNSIGNED | 
 |         length:          3 | 
 |         pc-rel:          false | 
 |         extern:          false | 
 |         symbol:          1 | 
 |   - segment:         __TEXT | 
 |     section:         __eh_frame | 
 |     type:            S_COALESCED | 
 |     attributes:      [  ] | 
 |     alignment:       8 | 
 |     address:         0x0000000000000050 | 
 |     content:         [ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 
 |                        0x01, 0x7A, 0x52, 0x00, 0x01, 0x78, 0x1E, 0x01, | 
 |                        0x10, 0x0C, 0x1F, 0x00, 0x20, 0x00, 0x00, 0x00, | 
 |                        0x18, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, | 
 |                        0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0x00, | 
 |                        0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x0E, 0x10, | 
 |                        0x9E, 0x01, 0x9D, 0x02, 0x00, 0x00, 0x00, 0x00 ] | 
 | local-symbols: | 
 |   - name:            ltmp0 | 
 |     type:            N_SECT | 
 |     sect:            1 | 
 |     value:           0x0000000000000000 | 
 |   - name:            L_str | 
 |     type:            N_SECT | 
 |     sect:            2 | 
 |     value:           0x0000000000000020 | 
 |   - name:            ltmp1 | 
 |     type:            N_SECT | 
 |     sect:            2 | 
 |     value:           0x0000000000000020 | 
 |   - name:            ltmp2 | 
 |     type:            N_SECT | 
 |     sect:            3 | 
 |     value:           0x0000000000000030 | 
 |   - name:            ltmp3 | 
 |     type:            N_SECT | 
 |     sect:            4 | 
 |     value:           0x0000000000000050 | 
 | global-symbols: | 
 |   - name:            __Z3fooi | 
 |     type:            N_SECT | 
 |     scope:           [ N_EXT ] | 
 |     sect:            1 | 
 |     value:           0x0000000000000000 | 
 | undefined-symbols: | 
 |   - name:            _puts | 
 |     type:            N_UNDF | 
 |     scope:           [ N_EXT ] | 
 |     value:           0x0000000000000000 | 
 | page-size:       0x00000000 | 
 | ... |