xref: /aosp_15_r20/external/llvm/test/MC/ARM/eh-directive-unwind_raw.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc -triple armv7-linux-eabi -filetype obj -o - %s | llvm-readobj -u \
2*9880d681SAndroid Build Coastguard Worker@ RUN:   | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker	.syntax unified
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker	.type save,%function
7*9880d681SAndroid Build Coastguard Worker	.thumb_func
8*9880d681SAndroid Build Coastguard Workersave:
9*9880d681SAndroid Build Coastguard Worker	.fnstart
10*9880d681SAndroid Build Coastguard Worker	.unwind_raw 4, 0xb1, 0x01
11*9880d681SAndroid Build Coastguard Worker	push {r0}
12*9880d681SAndroid Build Coastguard Worker	pop {r0}
13*9880d681SAndroid Build Coastguard Worker	bx lr
14*9880d681SAndroid Build Coastguard Worker	.fnend
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker	.type empty,%function
17*9880d681SAndroid Build Coastguard Worker	.thumb_func
18*9880d681SAndroid Build Coastguard Workerempty:
19*9880d681SAndroid Build Coastguard Worker	.fnstart
20*9880d681SAndroid Build Coastguard Worker	.unwind_raw 0, 0xb0
21*9880d681SAndroid Build Coastguard Worker	bx lr
22*9880d681SAndroid Build Coastguard Worker	.fnend
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker	.type extended,%function
25*9880d681SAndroid Build Coastguard Worker	.thumb_func
26*9880d681SAndroid Build Coastguard Workerextended:
27*9880d681SAndroid Build Coastguard Worker	.fnstart
28*9880d681SAndroid Build Coastguard Worker	.unwind_raw 12, 0x9b, 0x40, 0x84, 0x80, 0xb0, 0xb0
29*9880d681SAndroid Build Coastguard Worker	@ .save {fp, lr}
30*9880d681SAndroid Build Coastguard Worker	stmfd sp!, {fp, lr}
31*9880d681SAndroid Build Coastguard Worker	@ .setfp fp, sp, #4
32*9880d681SAndroid Build Coastguard Worker	add fp, sp, #4
33*9880d681SAndroid Build Coastguard Worker	@ .pad #8
34*9880d681SAndroid Build Coastguard Worker	sub sp, sp, #8
35*9880d681SAndroid Build Coastguard Worker	add sp, sp, #8
36*9880d681SAndroid Build Coastguard Worker	sub fp, sp, #4
37*9880d681SAndroid Build Coastguard Worker	ldmfd sp!, {fp, lr}
38*9880d681SAndroid Build Coastguard Worker	bx lr
39*9880d681SAndroid Build Coastguard Worker	.fnend
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Worker	.type refuse,%function
42*9880d681SAndroid Build Coastguard Worker	.thumb_func
43*9880d681SAndroid Build Coastguard Workerrefuse:
44*9880d681SAndroid Build Coastguard Worker	.fnstart
45*9880d681SAndroid Build Coastguard Worker	.unwind_raw 0, 0x80, 0x00
46*9880d681SAndroid Build Coastguard Worker	bx lr
47*9880d681SAndroid Build Coastguard Worker	.fnend
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Worker	.type stack_adjust,%function
50*9880d681SAndroid Build Coastguard Worker	.thumb_func
51*9880d681SAndroid Build Coastguard Workerstack_adjust:
52*9880d681SAndroid Build Coastguard Worker	.fnstart
53*9880d681SAndroid Build Coastguard Worker	.setfp fp, sp, #32
54*9880d681SAndroid Build Coastguard Worker	.unwind_raw 24, 0xc2
55*9880d681SAndroid Build Coastguard Worker	.fnend
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker@ CHECK: UnwindInformation {
58*9880d681SAndroid Build Coastguard Worker@ CHECK:   UnwindIndexTable {
59*9880d681SAndroid Build Coastguard Worker@ CHECK:     SectionName: .ARM.exidx
60*9880d681SAndroid Build Coastguard Worker@ CHECK:     Entries [
61*9880d681SAndroid Build Coastguard Worker@ CHECK:       Entry {
62*9880d681SAndroid Build Coastguard Worker@ CHECK:         Model: Compact (Inline)
63*9880d681SAndroid Build Coastguard Worker@ CHECK:         PersonalityIndex: 0
64*9880d681SAndroid Build Coastguard Worker@ CHECK:         Opcodes [
65*9880d681SAndroid Build Coastguard Worker@ CHECK:           0xB1 0x01 ; pop {r0}
66*9880d681SAndroid Build Coastguard Worker@ CHECK:           0xB0      ; finish
67*9880d681SAndroid Build Coastguard Worker@ CHECK:         ]
68*9880d681SAndroid Build Coastguard Worker@ CHECK:       }
69*9880d681SAndroid Build Coastguard Worker@ CHECK:       Entry {
70*9880d681SAndroid Build Coastguard Worker@ CHECK:         Model: Compact (Inline)
71*9880d681SAndroid Build Coastguard Worker@ CHECK:         PersonalityIndex: 0
72*9880d681SAndroid Build Coastguard Worker@ CHECK:         Opcodes [
73*9880d681SAndroid Build Coastguard Worker@ CHECK:           0xB0      ; finish
74*9880d681SAndroid Build Coastguard Worker@ CHECK:           0xB0      ; finish
75*9880d681SAndroid Build Coastguard Worker@ CHECK:           0xB0      ; finish
76*9880d681SAndroid Build Coastguard Worker@ CHECK:         ]
77*9880d681SAndroid Build Coastguard Worker@ CHECK:       }
78*9880d681SAndroid Build Coastguard Worker@ CHECK:       Entry {
79*9880d681SAndroid Build Coastguard Worker@ CHECK:         ExceptionHandlingTable: .ARM.extab
80*9880d681SAndroid Build Coastguard Worker@ CHECK:         Model: Compact
81*9880d681SAndroid Build Coastguard Worker@ CHECK:         PersonalityIndex: 1
82*9880d681SAndroid Build Coastguard Worker@ CHECK:         Opcodes [
83*9880d681SAndroid Build Coastguard Worker@ CHECK:           0x9B      ; vsp = r11
84*9880d681SAndroid Build Coastguard Worker@ CHECK:           0x40      ; vsp = vsp - 4
85*9880d681SAndroid Build Coastguard Worker@ CHECK:           0x84 0x80 ; pop {fp, lr}
86*9880d681SAndroid Build Coastguard Worker@ CHECK:           0xB0      ; finish
87*9880d681SAndroid Build Coastguard Worker@ CHECK:           0xB0      ; finish
88*9880d681SAndroid Build Coastguard Worker@ CHECK:         ]
89*9880d681SAndroid Build Coastguard Worker@ CHECK:       }
90*9880d681SAndroid Build Coastguard Worker@ CHECK:       Entry {
91*9880d681SAndroid Build Coastguard Worker@ CHECK:         Model: Compact (Inline)
92*9880d681SAndroid Build Coastguard Worker@ CHECK:         PersonalityIndex: 0
93*9880d681SAndroid Build Coastguard Worker@ CHECK:         Opcodes [
94*9880d681SAndroid Build Coastguard Worker@ CHECK:           0x80 0x00 ; refuse to unwind
95*9880d681SAndroid Build Coastguard Worker@ CHECK:           0xB0      ; finish
96*9880d681SAndroid Build Coastguard Worker@ CHECK:         ]
97*9880d681SAndroid Build Coastguard Worker@ CHECK:       }
98*9880d681SAndroid Build Coastguard Worker@ CHECK:       Entry {
99*9880d681SAndroid Build Coastguard Worker@ CHECK:         Model: Compact (Inline)
100*9880d681SAndroid Build Coastguard Worker@ CHECK:         PersonalityIndex: 0
101*9880d681SAndroid Build Coastguard Worker@ CHECK:         Opcodes [
102*9880d681SAndroid Build Coastguard Worker@ CHECK:           0x9B      ; vsp = r11
103*9880d681SAndroid Build Coastguard Worker@ CHECK:           0x4D      ; vsp = vsp - 56
104*9880d681SAndroid Build Coastguard Worker@ CHECK:           0xC2      ; pop {wR10, wR11, wR12}
105*9880d681SAndroid Build Coastguard Worker@ CHECK:         ]
106*9880d681SAndroid Build Coastguard Worker@ CHECK:       }
107*9880d681SAndroid Build Coastguard Worker@ CHECK:     ]
108*9880d681SAndroid Build Coastguard Worker@ CHECK:   }
109*9880d681SAndroid Build Coastguard Worker@ CHECK: }
110*9880d681SAndroid Build Coastguard Worker
111