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