xref: /aosp_15_r20/external/llvm/test/MC/MachO/debug_frame.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple i386-apple-darwin %s -filetype=obj -o - | llvm-readobj -s -sd -r | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker// Make sure MC can handle file level .cfi_startproc and .cfi_endproc that creates
4*9880d681SAndroid Build Coastguard Worker// an empty frame.
5*9880d681SAndroid Build Coastguard Worker// rdar://10017184
6*9880d681SAndroid Build Coastguard Worker_proc:
7*9880d681SAndroid Build Coastguard Worker.cfi_startproc
8*9880d681SAndroid Build Coastguard Worker.cfi_endproc
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker// Check that we don't produce a relocation for the CIE pointer and therefore
11*9880d681SAndroid Build Coastguard Worker// we have only one relocation in __debug_frame.
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker	.section	__TEXT,__text,regular,pure_instructions
14*9880d681SAndroid Build Coastguard Worker	.globl	_f
15*9880d681SAndroid Build Coastguard Worker	.align	4, 0x90
16*9880d681SAndroid Build Coastguard Worker_f:                                     ## @f
17*9880d681SAndroid Build Coastguard WorkerLtmp0:
18*9880d681SAndroid Build Coastguard Worker	.cfi_startproc
19*9880d681SAndroid Build Coastguard Worker## BB#0:                                ## %entry
20*9880d681SAndroid Build Coastguard Worker	movl	$42, %eax
21*9880d681SAndroid Build Coastguard Worker	ret
22*9880d681SAndroid Build Coastguard WorkerLtmp1:
23*9880d681SAndroid Build Coastguard Worker	.cfi_endproc
24*9880d681SAndroid Build Coastguard WorkerLeh_func_end0:
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker	.cfi_sections .debug_frame
27*9880d681SAndroid Build Coastguard WorkerLtext_end:
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Worker// CHECK: Section {
30*9880d681SAndroid Build Coastguard Worker// CHECK:     Index: 1
31*9880d681SAndroid Build Coastguard Worker// CHECK:     Name: __debug_frame (5F 5F 64 65 62 75 67 5F 66 72 61 6D 65 00 00 00)
32*9880d681SAndroid Build Coastguard Worker// CHECK:     Segment: __DWARF (5F 5F 44 57 41 52 46 00 00 00 00 00 00 00 00 00)
33*9880d681SAndroid Build Coastguard Worker// CHECK:     Address: 0x8
34*9880d681SAndroid Build Coastguard Worker// CHECK:     Size: 0x34
35*9880d681SAndroid Build Coastguard Worker// CHECK:     Offset: 332
36*9880d681SAndroid Build Coastguard Worker// CHECK:     Alignment: 2
37*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationOffset: 0x180
38*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationCount: 2
39*9880d681SAndroid Build Coastguard Worker// CHECK:     Type: 0x0
40*9880d681SAndroid Build Coastguard Worker// CHECK:     Attributes [ (0x20000)
41*9880d681SAndroid Build Coastguard Worker// CHECK:       Debug (0x20000)
42*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
43*9880d681SAndroid Build Coastguard Worker// CHECK:     Reserved1: 0x0
44*9880d681SAndroid Build Coastguard Worker// CHECK:     Reserved2: 0x0
45*9880d681SAndroid Build Coastguard Worker// CHECK:     SectionData (
46*9880d681SAndroid Build Coastguard Worker// CHECK:       0000: 10000000 FFFFFFFF 04000400 017C080C  |.............|..|
47*9880d681SAndroid Build Coastguard Worker// CHECK:       0010: 04048801 0C000000 00000000 00000000  |................|
48*9880d681SAndroid Build Coastguard Worker// CHECK:       0020: 00000000 0C000000 00000000 00000000  |................|
49*9880d681SAndroid Build Coastguard Worker// CHECK:       0030: 06000000                             |....|
50*9880d681SAndroid Build Coastguard Worker// CHECK:     )
51*9880d681SAndroid Build Coastguard Worker// CHECK:   }
52*9880d681SAndroid Build Coastguard Worker// CHECK: ]
53*9880d681SAndroid Build Coastguard Worker// CHECK: Relocations [
54*9880d681SAndroid Build Coastguard Worker// CHECK:   Section __debug_frame {
55*9880d681SAndroid Build Coastguard Worker// CHECK:     0x2C 0 2 0 GENERIC_RELOC_VANILLA 0 __text
56*9880d681SAndroid Build Coastguard Worker// CHECK:     0x1C 0 2 0 GENERIC_RELOC_VANILLA 0 __text
57*9880d681SAndroid Build Coastguard Worker// CHECK:   }
58*9880d681SAndroid Build Coastguard Worker// CHECK: ]
59