1# RUN: ld64.lld -arch x86_64 %s -o %t -e _main %p/Inputs/x86_64/libSystem.yaml
2# RUN: llvm-objdump --unwind-info %t | FileCheck %s
3
4# CHECK: Contents of __unwind_info section:
5# CHECK:   Version:                                   0x1
6# CHECK:   Common encodings array section offset:     0x1c
7# CHECK:   Number of common encodings in array:       0x0
8# CHECK:   Personality function array section offset: 0x1c
9# CHECK:   Number of personality functions in array:  0x1
10# CHECK:   Index array section offset:                0x20
11# CHECK:   Number of indices in array:                0x2
12# CHECK:   Common encodings: (count = 0)
13# CHECK:   Personality functions: (count = 1)
14# CHECK:     personality[1]: 0x00001000
15# CHECK:   Top level indices: (count = 2)
16# CHECK:     [0]: function offset=0x00000efb, 2nd level page offset=0x00000040, LSDA offset=0x00000038
17# CHECK:     [1]: function offset=0x00000f00, 2nd level page offset=0x00000000, LSDA offset=0x00000040
18# CHECK:   LSDA descriptors:
19# CHECK:     [0]: function offset=0x00000efb, LSDA offset=0x00000f00
20# CHECK:   Second level indices:
21# CHECK:     Second level index[0]: offset in section=0x00000040, base function offset=0x00000efb
22# CHECK:       [0]: function offset=0x00000efb, encoding=0x51000000
23# CHECK:       [1]: function offset=0x00000efc, encoding=0x01000000
24# CHECK:       [2]: function offset=0x00000efd, encoding=0x04000018
25# CHECK:       [3]: function offset=0x00000efe, encoding=0x04000040
26# CHECK:       [4]: function offset=0x00000eff, encoding=0x00000000
27# CHECK-NOT: Contents of __compact_unwind section
28
29--- !native
30path:            '<linker-internal>'
31defined-atoms:
32  - name:            GCC_except_table1
33    type:            unwind-lsda
34    content:         [ FF, 9B, A2, 80, 80, 00, 03, 1A, 08, 00, 00, 00,
35                       05, 00, 00, 00, 1A, 00, 00, 00, 01, 0D, 00, 00,
36                       00, 64, 00, 00, 00, 00, 00, 00, 00, 00, 01, 00,
37                       04, 00, 00, 00 ]
38  - type:            compact-unwind
39    content:         [ 40, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00,
40                       00, 00, 00, 41, 00, 00, 00, 00, 00, 00, 00, 00,
41                       E0, 00, 00, 00, 00, 00, 00, 00 ]
42    references:
43      - kind:            pointer64Anon
44        offset:          0
45        target:          __Z3barv
46      - kind:            pointer64
47        offset:          16
48        target:          ___gxx_personality_v0
49      - kind:            pointer64Anon
50        offset:          24
51        target:          GCC_except_table1
52  - type:            compact-unwind
53    content:         [ C0, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00,
54                       00, 00, 00, 01, 00, 00, 00, 00, 00, 00, 00, 00,
55                       00, 00, 00, 00, 00, 00, 00, 00 ]
56    references:
57      - kind:            pointer64Anon
58        offset:          0
59        target:          _main
60  - type:            compact-unwind
61    content:         [ C1, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00,
62                       00, 00, 00, 04, 00, 00, 00, 00, 00, 00, 00, 00,
63                       00, 00, 00, 00, 00, 00, 00, 00 ]
64    references:
65      - kind:            pointer64Anon
66        offset:          0
67        target:          _needsDwarfButNoCompactUnwind
68
69# Generic x86_64 CIE:
70  - name:            LCIE
71    type:            unwind-cfi
72    content:         [ 14, 00, 00, 00, 00, 00, 00, 00, 01, 7A, 52, 00,
73                       01, 78, 10, 01, 10, 0C, 07, 08, 90, 01, 00, 00 ]
74
75  - type:            unwind-cfi
76    content:         [ 24, 00, 00, 00, 1C, 00, 00, 00, C8, FE, FF, FF,
77                       FF, FF, FF, FF, 01, 00, 00, 00, 00, 00, 00, 00,
78                       00, 41, 0E, 10, 86, 02, 43, 0D, 06, 00, 00, 00,
79                       00, 00, 00, 00 ]
80    references:
81      - kind:            unwindFDEToFunction
82        offset:          8
83        target:          _needsDwarfButNoCompactUnwind
84      - kind:            negDelta32
85        offset:          4
86        target:          LCIE
87
88  - type:            unwind-cfi
89    content:         [ 24, 00, 00, 00, 44, 00, 00, 00, C8, FE, FF, FF,
90                       FF, FF, FF, FF, 01, 00, 00, 00, 00, 00, 00, 00,
91                       00, 41, 0E, 10, 86, 02, 43, 0D, 06, 00, 00, 00,
92                       00, 00, 00, 00 ]
93    references:
94      - kind:            unwindFDEToFunction
95        offset:          8
96        target:          _needsDwarfSaysCompactUnwind
97      - kind:            negDelta32
98        offset:          4
99        target:          LCIE
100
101  - type:            unwind-cfi
102    content:         [ 24, 00, 00, 00, 6C, 00, 00, 00, C8, FE, FF, FF,
103                       FF, FF, FF, FF, 01, 00, 00, 00, 00, 00, 00, 00,
104                       00, 41, 0E, 10, 86, 02, 43, 0D, 06, 00, 00, 00,
105                       00, 00, 00, 00 ]
106    references:
107      - kind:            unwindFDEToFunction
108        offset:          8
109        target:          _main
110      - kind:            negDelta32
111        offset:          4
112        target:          LCIE
113
114  - name:            __Z3barv
115    scope:           global
116    content:         [ C3 ]
117  - name:            _main
118    scope:           global
119    content:         [ C3 ]
120  - name:            _needsDwarfButNoCompactUnwind
121    scope:           global
122    content:         [ C3 ]
123  - name:            _needsDwarfSaysCompactUnwind
124    scope:           global
125    content:         [ C3 ]
126  - name:            _noUnwindData
127    scope:           global
128    content:         [ C3 ]
129
130shared-library-atoms:
131  - name:            ___gxx_personality_v0
132    load-name:       '/usr/lib/libc++abi.dylib'
133    type:            unknown
134