2018-02-17 05:16:57 +08:00
|
|
|
# RUN: ld64.lld -arch arm64 -o %t %s \
|
2016-08-12 02:08:59 +08:00
|
|
|
# RUN: %p/Inputs/unwind-info-simple-arm64.yaml -e _main %p/Inputs/arm64/libSystem.yaml
|
2014-12-02 09:50:38 +08:00
|
|
|
# RUN: llvm-objdump -unwind-info %t | FileCheck %s
|
|
|
|
|
|
|
|
--- !mach-o
|
|
|
|
arch: arm64
|
|
|
|
file-type: MH_OBJECT
|
|
|
|
flags: [ MH_SUBSECTIONS_VIA_SYMBOLS ]
|
|
|
|
sections:
|
|
|
|
- segment: __TEXT
|
|
|
|
section: __text
|
|
|
|
type: S_REGULAR
|
|
|
|
attributes: [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ]
|
|
|
|
alignment: 2
|
|
|
|
address: 0x0000000000000000
|
2015-04-28 01:18:04 +08:00
|
|
|
content: [ 0xFD, 0x7B, 0xBF, 0xA9, 0xFD, 0x03, 0x00, 0x91,
|
|
|
|
0xE0, 0x03, 0x1E, 0x32, 0x00, 0x00, 0x00, 0x94,
|
|
|
|
0x48, 0x01, 0x80, 0x52, 0x08, 0x00, 0x00, 0xB9,
|
|
|
|
0x02, 0x00, 0x80, 0xD2, 0x01, 0x00, 0x00, 0x90,
|
|
|
|
0x21, 0x00, 0x40, 0xF9, 0x00, 0x00, 0x00, 0x94,
|
|
|
|
0xFD, 0x7B, 0xBF, 0xA9, 0xFD, 0x03, 0x00, 0x91,
|
|
|
|
0xE0, 0x03, 0x1E, 0x32, 0x00, 0x00, 0x00, 0x94,
|
|
|
|
0x48, 0x01, 0x80, 0x52, 0x08, 0x00, 0x00, 0xB9,
|
|
|
|
0x02, 0x00, 0x80, 0xD2, 0x01, 0x00, 0x00, 0x90,
|
|
|
|
0x21, 0x00, 0x40, 0xF9, 0x00, 0x00, 0x00, 0x94,
|
|
|
|
0x3F, 0x04, 0x00, 0x71, 0x81, 0x00, 0x00, 0x54,
|
|
|
|
0x00, 0x00, 0x00, 0x94, 0xFD, 0x7B, 0xC1, 0xA8,
|
|
|
|
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x94,
|
|
|
|
0xFD, 0x7B, 0xBF, 0xA9, 0xFD, 0x03, 0x00, 0x91,
|
2014-12-02 09:50:38 +08:00
|
|
|
0x00, 0x00, 0x00, 0x94 ]
|
|
|
|
relocations:
|
|
|
|
- offset: 0x00000070
|
|
|
|
type: ARM64_RELOC_BRANCH26
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 5
|
|
|
|
- offset: 0x00000064
|
|
|
|
type: ARM64_RELOC_BRANCH26
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 7
|
|
|
|
- offset: 0x00000060
|
|
|
|
type: ARM64_RELOC_BRANCH26
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 12
|
|
|
|
- offset: 0x00000058
|
|
|
|
type: ARM64_RELOC_BRANCH26
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 11
|
|
|
|
- offset: 0x0000004C
|
|
|
|
type: ARM64_RELOC_BRANCH26
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 13
|
|
|
|
- offset: 0x00000048
|
|
|
|
type: ARM64_RELOC_GOT_LOAD_PAGEOFF12
|
|
|
|
length: 2
|
|
|
|
pc-rel: false
|
|
|
|
extern: true
|
|
|
|
symbol: 8
|
|
|
|
- offset: 0x00000044
|
|
|
|
type: ARM64_RELOC_GOT_LOAD_PAGE21
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 8
|
|
|
|
- offset: 0x00000034
|
|
|
|
type: ARM64_RELOC_BRANCH26
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 10
|
|
|
|
- offset: 0x00000024
|
|
|
|
type: ARM64_RELOC_BRANCH26
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 13
|
|
|
|
- offset: 0x00000020
|
|
|
|
type: ARM64_RELOC_GOT_LOAD_PAGEOFF12
|
|
|
|
length: 2
|
|
|
|
pc-rel: false
|
|
|
|
extern: true
|
|
|
|
symbol: 8
|
|
|
|
- offset: 0x0000001C
|
|
|
|
type: ARM64_RELOC_GOT_LOAD_PAGE21
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 8
|
|
|
|
- offset: 0x0000000C
|
|
|
|
type: ARM64_RELOC_BRANCH26
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 10
|
|
|
|
- segment: __TEXT
|
|
|
|
section: __gcc_except_tab
|
|
|
|
type: S_REGULAR
|
|
|
|
attributes: [ ]
|
|
|
|
alignment: 2
|
|
|
|
address: 0x0000000000000074
|
2015-04-28 01:18:04 +08:00
|
|
|
content: [ 0xFF, 0x9B, 0xAF, 0x80, 0x00, 0x03, 0x27, 0x00,
|
|
|
|
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
|
|
|
|
0x10, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
|
|
|
0x01, 0x28, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
|
2014-12-02 09:50:38 +08:00
|
|
|
0xD0, 0xFF, 0xFF, 0xFF ]
|
2015-04-28 01:18:04 +08:00
|
|
|
relocations:
|
2014-12-02 09:50:38 +08:00
|
|
|
- offset: 0x00000030
|
|
|
|
type: ARM64_RELOC_POINTER_TO_GOT
|
|
|
|
length: 2
|
|
|
|
pc-rel: true
|
|
|
|
extern: true
|
|
|
|
symbol: 9
|
|
|
|
- segment: __LD
|
|
|
|
section: __compact_unwind
|
|
|
|
type: S_REGULAR
|
|
|
|
attributes: [ ]
|
2016-03-24 08:36:37 +08:00
|
|
|
alignment: 8
|
2014-12-02 09:50:38 +08:00
|
|
|
address: 0x00000000000000A8
|
2015-04-28 01:18:04 +08:00
|
|
|
content: [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
|
|
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
|
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
2014-12-02 09:50:38 +08:00
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]
|
2015-04-28 01:18:04 +08:00
|
|
|
relocations:
|
2014-12-02 09:50:38 +08:00
|
|
|
- offset: 0x00000040
|
|
|
|
type: ARM64_RELOC_UNSIGNED
|
|
|
|
length: 3
|
|
|
|
pc-rel: false
|
|
|
|
extern: false
|
|
|
|
symbol: 1
|
|
|
|
- offset: 0x00000038
|
|
|
|
type: ARM64_RELOC_UNSIGNED
|
|
|
|
length: 3
|
|
|
|
pc-rel: false
|
|
|
|
extern: false
|
|
|
|
symbol: 2
|
|
|
|
- offset: 0x00000030
|
|
|
|
type: ARM64_RELOC_UNSIGNED
|
|
|
|
length: 3
|
|
|
|
pc-rel: false
|
|
|
|
extern: true
|
|
|
|
symbol: 14
|
|
|
|
- offset: 0x00000020
|
|
|
|
type: ARM64_RELOC_UNSIGNED
|
|
|
|
length: 3
|
|
|
|
pc-rel: false
|
|
|
|
extern: false
|
|
|
|
symbol: 1
|
|
|
|
- offset: 0x00000000
|
|
|
|
type: ARM64_RELOC_UNSIGNED
|
|
|
|
length: 3
|
|
|
|
pc-rel: false
|
|
|
|
extern: false
|
|
|
|
symbol: 1
|
|
|
|
local-symbols:
|
|
|
|
- name: ltmp0
|
|
|
|
type: N_SECT
|
|
|
|
sect: 1
|
|
|
|
value: 0x0000000000000000
|
|
|
|
- name: ltmp14
|
|
|
|
type: N_SECT
|
|
|
|
sect: 2
|
|
|
|
value: 0x0000000000000074
|
|
|
|
- name: GCC_except_table1
|
|
|
|
type: N_SECT
|
|
|
|
sect: 2
|
|
|
|
value: 0x0000000000000074
|
|
|
|
- name: ltmp21
|
|
|
|
type: N_SECT
|
|
|
|
sect: 3
|
|
|
|
value: 0x00000000000000A8
|
2015-04-28 01:18:04 +08:00
|
|
|
global-symbols:
|
2014-12-02 09:50:38 +08:00
|
|
|
- name: __Z3barv
|
|
|
|
type: N_SECT
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
sect: 1
|
|
|
|
value: 0x0000000000000028
|
|
|
|
- name: __Z3foov
|
|
|
|
type: N_SECT
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
sect: 1
|
|
|
|
value: 0x0000000000000000
|
|
|
|
- name: _main
|
|
|
|
type: N_SECT
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
sect: 1
|
|
|
|
value: 0x0000000000000068
|
2015-04-28 01:18:04 +08:00
|
|
|
undefined-symbols:
|
2014-12-02 09:50:38 +08:00
|
|
|
- name: __Unwind_Resume
|
|
|
|
type: N_UNDF
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
value: 0x0000000000000000
|
|
|
|
- name: __ZTIi
|
|
|
|
type: N_UNDF
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
value: 0x0000000000000000
|
|
|
|
- name: __ZTIl
|
|
|
|
type: N_UNDF
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
value: 0x0000000000000000
|
|
|
|
- name: ___cxa_allocate_exception
|
|
|
|
type: N_UNDF
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
value: 0x0000000000000000
|
|
|
|
- name: ___cxa_begin_catch
|
|
|
|
type: N_UNDF
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
value: 0x0000000000000000
|
|
|
|
- name: ___cxa_end_catch
|
|
|
|
type: N_UNDF
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
value: 0x0000000000000000
|
|
|
|
- name: ___cxa_throw
|
|
|
|
type: N_UNDF
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
value: 0x0000000000000000
|
|
|
|
- name: ___gxx_personality_v0
|
|
|
|
type: N_UNDF
|
|
|
|
scope: [ N_EXT ]
|
|
|
|
value: 0x0000000000000000
|
|
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
|
|
# CHECK: Contents of __unwind_info section:
|
|
|
|
# CHECK: Version: 0x1
|
|
|
|
# CHECK: Common encodings array section offset: 0x1c
|
|
|
|
# CHECK: Number of common encodings in array: 0x0
|
|
|
|
# CHECK: Personality function array section offset: 0x1c
|
|
|
|
# CHECK: Number of personality functions in array: 0x1
|
|
|
|
# CHECK: Index array section offset: 0x20
|
|
|
|
# CHECK: Number of indices in array: 0x2
|
|
|
|
# CHECK: Common encodings: (count = 0)
|
|
|
|
# CHECK: Personality functions: (count = 1)
|
2015-12-09 08:46:02 +08:00
|
|
|
# CHECK: personality[1]: 0x00004020
|
2014-12-02 09:50:38 +08:00
|
|
|
# CHECK: Top level indices: (count = 2)
|
|
|
|
# CHECK: [0]: function offset=0x00003e68, 2nd level page offset=0x00000040, LSDA offset=0x00000038
|
|
|
|
# CHECK: [1]: function offset=0x00003edc, 2nd level page offset=0x00000000, LSDA offset=0x00000040
|
|
|
|
# CHECK: LSDA descriptors:
|
|
|
|
# CHECK: [0]: function offset=0x00003e90, LSDA offset=0x00003f6c
|
|
|
|
# CHECK: Second level indices:
|
|
|
|
# CHECK: Second level index[0]: offset in section=0x00000040, base function offset=0x00003e68
|
|
|
|
# CHECK: [0]: function offset=0x00003e68, encoding=0x04000000
|
|
|
|
# CHECK: [1]: function offset=0x00003e90, encoding=0x54000000
|
|
|
|
# CHECK: [2]: function offset=0x00003ed0, encoding=0x04000000
|
|
|
|
# CHECK-NOT: Contents of __compact_unwind section
|
|
|
|
|
|
|
|
|
|
|
|
|