xref: /llvm-project/lld/test/MachO/invalid/undef-debug.s (revision 5792797c5b1316e19a7487fc016847f9a55a8f68)
1*5792797cSDaniel Bertalan# REQUIRES: aarch64
2*5792797cSDaniel Bertalan# RUN: llvm-mc -filetype=obj -triple=arm64-apple-macos %s -o %t.o
3*5792797cSDaniel Bertalan# RUN: not %lld -arch arm64 %t.o -o /dev/null 2>&1 | FileCheck %s
4*5792797cSDaniel Bertalan
5*5792797cSDaniel Bertalan# CHECK: undefined symbol: _undef
6*5792797cSDaniel Bertalan# CHECK-NEXT: >>> referenced by test.c:3
7*5792797cSDaniel Bertalan# CHECK-NEXT: >>>               {{.*}}.o:(symbol _main+0x0)
8*5792797cSDaniel Bertalan# CHECK-NEXT: >>> referenced by test.c:2
9*5792797cSDaniel Bertalan# CHECK-NEXT  >>>               {{.*}}.o:(symbol _ptr+0x0)
10*5792797cSDaniel Bertalan
11*5792797cSDaniel Bertalan## This is the output of `clang -g2 -O2 -fdebug-compilation-dir=. -fno-ident` called on the following file, with the
12*5792797cSDaniel Bertalan## Apple DWARF tables removed:
13*5792797cSDaniel Bertalan##
14*5792797cSDaniel Bertalan## int undef();
15*5792797cSDaniel Bertalan## int (*ptr)() = &undef;
16*5792797cSDaniel Bertalan## int main() { return undef(); };
17*5792797cSDaniel Bertalan
18*5792797cSDaniel Bertalan
19*5792797cSDaniel Bertalan	.section	__TEXT,__text,regular,pure_instructions
20*5792797cSDaniel Bertalan	.build_version macos, 12, 0	sdk_version 13, 0
21*5792797cSDaniel Bertalan	.file	1 "." "test.c"
22*5792797cSDaniel Bertalan	.globl	_main                           ; -- Begin function main
23*5792797cSDaniel Bertalan	.p2align	2
24*5792797cSDaniel Bertalan_main:                                  ; @main
25*5792797cSDaniel BertalanLfunc_begin0:
26*5792797cSDaniel Bertalan	.loc	1 3 0                           ; test.c:3:0
27*5792797cSDaniel Bertalan	.cfi_startproc
28*5792797cSDaniel Bertalan; %bb.0:
29*5792797cSDaniel Bertalan	.loc	1 3 21 prologue_end             ; test.c:3:21
30*5792797cSDaniel Bertalan	b	_undef
31*5792797cSDaniel BertalanLtmp0:
32*5792797cSDaniel BertalanLfunc_end0:
33*5792797cSDaniel Bertalan	.cfi_endproc
34*5792797cSDaniel Bertalan                                        ; -- End function
35*5792797cSDaniel Bertalan	.section	__DATA,__data
36*5792797cSDaniel Bertalan	.globl	_ptr                            ; @ptr
37*5792797cSDaniel Bertalan	.p2align	3
38*5792797cSDaniel Bertalan_ptr:
39*5792797cSDaniel Bertalan	.quad	_undef
40*5792797cSDaniel Bertalan
41*5792797cSDaniel Bertalan	.section	__DWARF,__debug_abbrev,regular,debug
42*5792797cSDaniel BertalanLsection_abbrev:
43*5792797cSDaniel Bertalan	.byte	1                               ; Abbreviation Code
44*5792797cSDaniel Bertalan	.byte	17                              ; DW_TAG_compile_unit
45*5792797cSDaniel Bertalan	.byte	1                               ; DW_CHILDREN_yes
46*5792797cSDaniel Bertalan	.byte	37                              ; DW_AT_producer
47*5792797cSDaniel Bertalan	.byte	14                              ; DW_FORM_strp
48*5792797cSDaniel Bertalan	.byte	19                              ; DW_AT_language
49*5792797cSDaniel Bertalan	.byte	5                               ; DW_FORM_data2
50*5792797cSDaniel Bertalan	.byte	3                               ; DW_AT_name
51*5792797cSDaniel Bertalan	.byte	14                              ; DW_FORM_strp
52*5792797cSDaniel Bertalan	.ascii	"\202|"                         ; DW_AT_LLVM_sysroot
53*5792797cSDaniel Bertalan	.byte	14                              ; DW_FORM_strp
54*5792797cSDaniel Bertalan	.ascii	"\357\177"                      ; DW_AT_APPLE_sdk
55*5792797cSDaniel Bertalan	.byte	14                              ; DW_FORM_strp
56*5792797cSDaniel Bertalan	.byte	16                              ; DW_AT_stmt_list
57*5792797cSDaniel Bertalan	.byte	23                              ; DW_FORM_sec_offset
58*5792797cSDaniel Bertalan	.byte	27                              ; DW_AT_comp_dir
59*5792797cSDaniel Bertalan	.byte	14                              ; DW_FORM_strp
60*5792797cSDaniel Bertalan	.ascii	"\341\177"                      ; DW_AT_APPLE_optimized
61*5792797cSDaniel Bertalan	.byte	25                              ; DW_FORM_flag_present
62*5792797cSDaniel Bertalan	.byte	17                              ; DW_AT_low_pc
63*5792797cSDaniel Bertalan	.byte	1                               ; DW_FORM_addr
64*5792797cSDaniel Bertalan	.byte	18                              ; DW_AT_high_pc
65*5792797cSDaniel Bertalan	.byte	6                               ; DW_FORM_data4
66*5792797cSDaniel Bertalan	.byte	0                               ; EOM(1)
67*5792797cSDaniel Bertalan	.byte	0                               ; EOM(2)
68*5792797cSDaniel Bertalan	.byte	2                               ; Abbreviation Code
69*5792797cSDaniel Bertalan	.byte	52                              ; DW_TAG_variable
70*5792797cSDaniel Bertalan	.byte	0                               ; DW_CHILDREN_no
71*5792797cSDaniel Bertalan	.byte	3                               ; DW_AT_name
72*5792797cSDaniel Bertalan	.byte	14                              ; DW_FORM_strp
73*5792797cSDaniel Bertalan	.byte	73                              ; DW_AT_type
74*5792797cSDaniel Bertalan	.byte	19                              ; DW_FORM_ref4
75*5792797cSDaniel Bertalan	.byte	63                              ; DW_AT_external
76*5792797cSDaniel Bertalan	.byte	25                              ; DW_FORM_flag_present
77*5792797cSDaniel Bertalan	.byte	58                              ; DW_AT_decl_file
78*5792797cSDaniel Bertalan	.byte	11                              ; DW_FORM_data1
79*5792797cSDaniel Bertalan	.byte	59                              ; DW_AT_decl_line
80*5792797cSDaniel Bertalan	.byte	11                              ; DW_FORM_data1
81*5792797cSDaniel Bertalan	.byte	2                               ; DW_AT_location
82*5792797cSDaniel Bertalan	.byte	24                              ; DW_FORM_exprloc
83*5792797cSDaniel Bertalan	.byte	0                               ; EOM(1)
84*5792797cSDaniel Bertalan	.byte	0                               ; EOM(2)
85*5792797cSDaniel Bertalan	.byte	3                               ; Abbreviation Code
86*5792797cSDaniel Bertalan	.byte	15                              ; DW_TAG_pointer_type
87*5792797cSDaniel Bertalan	.byte	0                               ; DW_CHILDREN_no
88*5792797cSDaniel Bertalan	.byte	73                              ; DW_AT_type
89*5792797cSDaniel Bertalan	.byte	19                              ; DW_FORM_ref4
90*5792797cSDaniel Bertalan	.byte	0                               ; EOM(1)
91*5792797cSDaniel Bertalan	.byte	0                               ; EOM(2)
92*5792797cSDaniel Bertalan	.byte	4                               ; Abbreviation Code
93*5792797cSDaniel Bertalan	.byte	21                              ; DW_TAG_subroutine_type
94*5792797cSDaniel Bertalan	.byte	1                               ; DW_CHILDREN_yes
95*5792797cSDaniel Bertalan	.byte	73                              ; DW_AT_type
96*5792797cSDaniel Bertalan	.byte	19                              ; DW_FORM_ref4
97*5792797cSDaniel Bertalan	.byte	0                               ; EOM(1)
98*5792797cSDaniel Bertalan	.byte	0                               ; EOM(2)
99*5792797cSDaniel Bertalan	.byte	5                               ; Abbreviation Code
100*5792797cSDaniel Bertalan	.byte	24                              ; DW_TAG_unspecified_parameters
101*5792797cSDaniel Bertalan	.byte	0                               ; DW_CHILDREN_no
102*5792797cSDaniel Bertalan	.byte	0                               ; EOM(1)
103*5792797cSDaniel Bertalan	.byte	0                               ; EOM(2)
104*5792797cSDaniel Bertalan	.byte	6                               ; Abbreviation Code
105*5792797cSDaniel Bertalan	.byte	36                              ; DW_TAG_base_type
106*5792797cSDaniel Bertalan	.byte	0                               ; DW_CHILDREN_no
107*5792797cSDaniel Bertalan	.byte	3                               ; DW_AT_name
108*5792797cSDaniel Bertalan	.byte	14                              ; DW_FORM_strp
109*5792797cSDaniel Bertalan	.byte	62                              ; DW_AT_encoding
110*5792797cSDaniel Bertalan	.byte	11                              ; DW_FORM_data1
111*5792797cSDaniel Bertalan	.byte	11                              ; DW_AT_byte_size
112*5792797cSDaniel Bertalan	.byte	11                              ; DW_FORM_data1
113*5792797cSDaniel Bertalan	.byte	0                               ; EOM(1)
114*5792797cSDaniel Bertalan	.byte	0                               ; EOM(2)
115*5792797cSDaniel Bertalan	.byte	7                               ; Abbreviation Code
116*5792797cSDaniel Bertalan	.byte	46                              ; DW_TAG_subprogram
117*5792797cSDaniel Bertalan	.byte	0                               ; DW_CHILDREN_no
118*5792797cSDaniel Bertalan	.byte	17                              ; DW_AT_low_pc
119*5792797cSDaniel Bertalan	.byte	1                               ; DW_FORM_addr
120*5792797cSDaniel Bertalan	.byte	18                              ; DW_AT_high_pc
121*5792797cSDaniel Bertalan	.byte	6                               ; DW_FORM_data4
122*5792797cSDaniel Bertalan	.ascii	"\347\177"                      ; DW_AT_APPLE_omit_frame_ptr
123*5792797cSDaniel Bertalan	.byte	25                              ; DW_FORM_flag_present
124*5792797cSDaniel Bertalan	.byte	64                              ; DW_AT_frame_base
125*5792797cSDaniel Bertalan	.byte	24                              ; DW_FORM_exprloc
126*5792797cSDaniel Bertalan	.byte	3                               ; DW_AT_name
127*5792797cSDaniel Bertalan	.byte	14                              ; DW_FORM_strp
128*5792797cSDaniel Bertalan	.byte	58                              ; DW_AT_decl_file
129*5792797cSDaniel Bertalan	.byte	11                              ; DW_FORM_data1
130*5792797cSDaniel Bertalan	.byte	59                              ; DW_AT_decl_line
131*5792797cSDaniel Bertalan	.byte	11                              ; DW_FORM_data1
132*5792797cSDaniel Bertalan	.byte	73                              ; DW_AT_type
133*5792797cSDaniel Bertalan	.byte	19                              ; DW_FORM_ref4
134*5792797cSDaniel Bertalan	.byte	63                              ; DW_AT_external
135*5792797cSDaniel Bertalan	.byte	25                              ; DW_FORM_flag_present
136*5792797cSDaniel Bertalan	.ascii	"\341\177"                      ; DW_AT_APPLE_optimized
137*5792797cSDaniel Bertalan	.byte	25                              ; DW_FORM_flag_present
138*5792797cSDaniel Bertalan	.byte	0                               ; EOM(1)
139*5792797cSDaniel Bertalan	.byte	0                               ; EOM(2)
140*5792797cSDaniel Bertalan	.byte	0                               ; EOM(3)
141*5792797cSDaniel Bertalan	.section	__DWARF,__debug_info,regular,debug
142*5792797cSDaniel BertalanLsection_info:
143*5792797cSDaniel BertalanLcu_begin0:
144*5792797cSDaniel Bertalan.set Lset0, Ldebug_info_end0-Ldebug_info_start0 ; Length of Unit
145*5792797cSDaniel Bertalan	.long	Lset0
146*5792797cSDaniel BertalanLdebug_info_start0:
147*5792797cSDaniel Bertalan	.short	4                               ; DWARF version number
148*5792797cSDaniel Bertalan.set Lset1, Lsection_abbrev-Lsection_abbrev ; Offset Into Abbrev. Section
149*5792797cSDaniel Bertalan	.long	Lset1
150*5792797cSDaniel Bertalan	.byte	8                               ; Address Size (in bytes)
151*5792797cSDaniel Bertalan	.byte	1                               ; Abbrev [1] 0xb:0x69 DW_TAG_compile_unit
152*5792797cSDaniel Bertalan	.long	0                               ; DW_AT_producer
153*5792797cSDaniel Bertalan	.short	12                              ; DW_AT_language
154*5792797cSDaniel Bertalan	.long	1                               ; DW_AT_name
155*5792797cSDaniel Bertalan	.long	8                               ; DW_AT_LLVM_sysroot
156*5792797cSDaniel Bertalan	.long	60                              ; DW_AT_APPLE_sdk
157*5792797cSDaniel Bertalan.set Lset2, Lline_table_start0-Lsection_line ; DW_AT_stmt_list
158*5792797cSDaniel Bertalan	.long	Lset2
159*5792797cSDaniel Bertalan	.long	71                              ; DW_AT_comp_dir
160*5792797cSDaniel Bertalan                                        ; DW_AT_APPLE_optimized
161*5792797cSDaniel Bertalan	.quad	Lfunc_begin0                    ; DW_AT_low_pc
162*5792797cSDaniel Bertalan.set Lset3, Lfunc_end0-Lfunc_begin0     ; DW_AT_high_pc
163*5792797cSDaniel Bertalan	.long	Lset3
164*5792797cSDaniel Bertalan	.byte	2                               ; Abbrev [2] 0x32:0x15 DW_TAG_variable
165*5792797cSDaniel Bertalan	.long	73                              ; DW_AT_name
166*5792797cSDaniel Bertalan	.long	71                              ; DW_AT_type
167*5792797cSDaniel Bertalan                                        ; DW_AT_external
168*5792797cSDaniel Bertalan	.byte	1                               ; DW_AT_decl_file
169*5792797cSDaniel Bertalan	.byte	2                               ; DW_AT_decl_line
170*5792797cSDaniel Bertalan	.byte	9                               ; DW_AT_location
171*5792797cSDaniel Bertalan	.byte	3
172*5792797cSDaniel Bertalan	.quad	_ptr
173*5792797cSDaniel Bertalan	.byte	3                               ; Abbrev [3] 0x47:0x5 DW_TAG_pointer_type
174*5792797cSDaniel Bertalan	.long	76                              ; DW_AT_type
175*5792797cSDaniel Bertalan	.byte	4                               ; Abbrev [4] 0x4c:0x7 DW_TAG_subroutine_type
176*5792797cSDaniel Bertalan	.long	83                              ; DW_AT_type
177*5792797cSDaniel Bertalan	.byte	5                               ; Abbrev [5] 0x51:0x1 DW_TAG_unspecified_parameters
178*5792797cSDaniel Bertalan	.byte	0                               ; End Of Children Mark
179*5792797cSDaniel Bertalan	.byte	6                               ; Abbrev [6] 0x53:0x7 DW_TAG_base_type
180*5792797cSDaniel Bertalan	.long	77                              ; DW_AT_name
181*5792797cSDaniel Bertalan	.byte	5                               ; DW_AT_encoding
182*5792797cSDaniel Bertalan	.byte	4                               ; DW_AT_byte_size
183*5792797cSDaniel Bertalan	.byte	7                               ; Abbrev [7] 0x5a:0x19 DW_TAG_subprogram
184*5792797cSDaniel Bertalan	.quad	Lfunc_begin0                    ; DW_AT_low_pc
185*5792797cSDaniel Bertalan.set Lset4, Lfunc_end0-Lfunc_begin0     ; DW_AT_high_pc
186*5792797cSDaniel Bertalan	.long	Lset4
187*5792797cSDaniel Bertalan                                        ; DW_AT_APPLE_omit_frame_ptr
188*5792797cSDaniel Bertalan	.byte	1                               ; DW_AT_frame_base
189*5792797cSDaniel Bertalan	.byte	111
190*5792797cSDaniel Bertalan	.long	81                              ; DW_AT_name
191*5792797cSDaniel Bertalan	.byte	1                               ; DW_AT_decl_file
192*5792797cSDaniel Bertalan	.byte	3                               ; DW_AT_decl_line
193*5792797cSDaniel Bertalan	.long	83                              ; DW_AT_type
194*5792797cSDaniel Bertalan                                        ; DW_AT_external
195*5792797cSDaniel Bertalan                                        ; DW_AT_APPLE_optimized
196*5792797cSDaniel Bertalan	.byte	0                               ; End Of Children Mark
197*5792797cSDaniel BertalanLdebug_info_end0:
198*5792797cSDaniel Bertalan	.section	__DWARF,__debug_str,regular,debug
199*5792797cSDaniel BertalanLinfo_string:
200*5792797cSDaniel Bertalan	.byte	0                               ; string offset=0
201*5792797cSDaniel Bertalan	.asciz	"test.c"                        ; string offset=1
202*5792797cSDaniel Bertalan	.asciz	"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk" ; string offset=8
203*5792797cSDaniel Bertalan	.asciz	"MacOSX.sdk"                    ; string offset=60
204*5792797cSDaniel Bertalan	.asciz	"."                             ; string offset=71
205*5792797cSDaniel Bertalan	.asciz	"ptr"                           ; string offset=73
206*5792797cSDaniel Bertalan	.asciz	"int"                           ; string offset=77
207*5792797cSDaniel Bertalan	.asciz	"main"                          ; string offset=81
208*5792797cSDaniel Bertalan	.section	__DWARF,__debug_line,regular,debug
209*5792797cSDaniel BertalanLsection_line:
210*5792797cSDaniel BertalanLline_table_start0:
211