xref: /aosp_15_r20/external/llvm/test/MC/ARM/eh-directive-personalityindex-diagnostics.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker@ RUN: not llvm-mc -triple armv7-linux-eabi -filetype asm -o /dev/null %s 2>&1  \
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	.thumb
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker	.global function
8*9880d681SAndroid Build Coastguard Worker	.type function,%function
9*9880d681SAndroid Build Coastguard Worker	.thumb_func
10*9880d681SAndroid Build Coastguard Workerfunction:
11*9880d681SAndroid Build Coastguard Worker	.personalityindex 0
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker@ CHECK: error: .fnstart must precede .personalityindex directive
14*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex 0
15*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker	.global ununwindable
18*9880d681SAndroid Build Coastguard Worker	.type ununwindable,%function
19*9880d681SAndroid Build Coastguard Worker	.thumb_func
20*9880d681SAndroid Build Coastguard Workerununwindable:
21*9880d681SAndroid Build Coastguard Worker	.fnstart
22*9880d681SAndroid Build Coastguard Worker	.cantunwind
23*9880d681SAndroid Build Coastguard Worker	.personalityindex 0
24*9880d681SAndroid Build Coastguard Worker	.fnend
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker@ CHECK: error: .personalityindex cannot be used with .cantunwind
27*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex 0
28*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
29*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .cantunwind was specified here
30*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.cantunwind
31*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker	.global nodata
34*9880d681SAndroid Build Coastguard Worker	.type nodata,%function
35*9880d681SAndroid Build Coastguard Worker	.thumb_func
36*9880d681SAndroid Build Coastguard Workernodata:
37*9880d681SAndroid Build Coastguard Worker	.fnstart
38*9880d681SAndroid Build Coastguard Worker	.handlerdata
39*9880d681SAndroid Build Coastguard Worker	.personalityindex 0
40*9880d681SAndroid Build Coastguard Worker	.fnend
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker@ CHECK: error: .personalityindex must precede .handlerdata directive
43*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex 0
44*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
45*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .handlerdata was specified here
46*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.handlerdata
47*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Worker	.global multiple_personality
50*9880d681SAndroid Build Coastguard Worker	.type multiple_personality,%function
51*9880d681SAndroid Build Coastguard Worker	.thumb_func
52*9880d681SAndroid Build Coastguard Workermultiple_personality:
53*9880d681SAndroid Build Coastguard Worker	.fnstart
54*9880d681SAndroid Build Coastguard Worker	.personality __aeabi_personality_pr0
55*9880d681SAndroid Build Coastguard Worker	.personalityindex 0
56*9880d681SAndroid Build Coastguard Worker	.fnend
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Worker@ CHECK: error: multiple personality directives
59*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex 0
60*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
61*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .personality was specified here
62*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personality __aeabi_personality_pr0
63*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
64*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .personalityindex was specified here
65*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex 0
66*9880d681SAndroid Build Coastguard Worker@ CHECK:       ^
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker	.global multiple_personality_indicies
69*9880d681SAndroid Build Coastguard Worker	.type multiple_personality_indicies,%function
70*9880d681SAndroid Build Coastguard Worker	.thumb_func
71*9880d681SAndroid Build Coastguard Workermultiple_personality_indicies:
72*9880d681SAndroid Build Coastguard Worker	.fnstart
73*9880d681SAndroid Build Coastguard Worker	.personalityindex 0
74*9880d681SAndroid Build Coastguard Worker	.personalityindex 1
75*9880d681SAndroid Build Coastguard Worker	.fnend
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Worker@ CHECK: error: multiple personality directives
78*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex 1
79*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
80*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .personalityindex was specified here
81*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex 0
82*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
83*9880d681SAndroid Build Coastguard Worker@ CHECK: note: .personalityindex was specified here
84*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex 1
85*9880d681SAndroid Build Coastguard Worker@ CHECK:        ^
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Worker	.global invalid_expression
88*9880d681SAndroid Build Coastguard Worker	.type invalid_expression,%function
89*9880d681SAndroid Build Coastguard Worker	.thumb_func
90*9880d681SAndroid Build Coastguard Workerinvalid_expression:
91*9880d681SAndroid Build Coastguard Worker	.fnstart
92*9880d681SAndroid Build Coastguard Worker	.personalityindex <expression>
93*9880d681SAndroid Build Coastguard Worker	.fnend
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Worker@ CHECK: error: unknown token in expression
96*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex <expression>
97*9880d681SAndroid Build Coastguard Worker@ CHECK:                          ^
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard Worker	.global nonconstant_expression
100*9880d681SAndroid Build Coastguard Worker	.type nonconstant_expression,%function
101*9880d681SAndroid Build Coastguard Worker	.thumb_func
102*9880d681SAndroid Build Coastguard Workernonconstant_expression:
103*9880d681SAndroid Build Coastguard Worker	.fnstart
104*9880d681SAndroid Build Coastguard Worker	.personalityindex nonconstant_expression
105*9880d681SAndroid Build Coastguard Worker	.fnend
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Worker@ CHECK: error: index must be a constant number
108*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex nonconstant_expression
109*9880d681SAndroid Build Coastguard Worker@ CHECK:                          ^
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard Worker	.global bad_index
112*9880d681SAndroid Build Coastguard Worker	.type bad_index,%function
113*9880d681SAndroid Build Coastguard Worker	.thumb_func
114*9880d681SAndroid Build Coastguard Workerbad_index:
115*9880d681SAndroid Build Coastguard Worker	.fnstart
116*9880d681SAndroid Build Coastguard Worker	.personalityindex 42
117*9880d681SAndroid Build Coastguard Worker	.fnend
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Worker@ CHECK: error: personality routine index should be in range [0-3]
120*9880d681SAndroid Build Coastguard Worker@ CHECK: 	.personalityindex 42
121*9880d681SAndroid Build Coastguard Worker@ CHECK:                          ^
122*9880d681SAndroid Build Coastguard Worker
123