xref: /llvm-project/libcxxabi/test/native/arm-linux-eabi/ttype-encoding-00.pass.sh.s (revision 8c61114c53dcd6139a4a750925b91ed9bcf4178c)
1@ RUN: %{cxx} %{flags} %{link_flags} %s -o %t.exe
2@ RUN: %t.exe
3@ UNSUPPORTED: no-exceptions
4
5@ PURPOSE: Check that 0x00 is a valid value for ttype encoding.  LLVM and
6@ GCC 4.6 are generating 0x00 as ttype encoding.  libc++abi should provide
7@ legacy support.
8
9@ NOTE:
10@
11@ This file is generated from the following C++ source code:
12@
13@ ```
14@ int main() {
15@   try {
16@     throw 5;
17@   } catch (int i) {
18@     if (i != 5)
19@       abort();
20@     return 0;
21@   }
22@ }
23@ ```
24
25	.syntax unified
26
27	.text
28	.globl	main
29	.p2align	2
30	.type	main,%function
31main:                                   @ @main
32.Lfunc_begin0:
33	.fnstart
34@ BB#0:                                 @ %entry
35	.save	{r11, lr}
36	push	{r11, lr}
37	.setfp	r11, sp
38	mov	r11, sp
39	mov	r0, #4
40	bl	__cxa_allocate_exception
41	mov	r1, #5
42	str	r1, [r0]
43.Ltmp0:
44	ldr	r1, .LCPI0_0
45	mov	r2, #0
46	bl	__cxa_throw
47.Ltmp1:
48
49@ BB#2:                                 @ %lpad
50.Ltmp2:
51	bl	__cxa_begin_catch
52	ldr	r0, [r0]
53	cmp	r0, #5
54	bne	.LBB0_4
55@ BB#3:                                 @ %if.end
56	bl	__cxa_end_catch
57	mov	r0, #0
58	pop	{r11, lr}
59	bx	lr
60.LBB0_4:                                @ %if.then
61	bl	abort
62	.p2align	2
63@ BB#5:
64.LCPI0_0:
65	.long	_ZTIi
66.Lfunc_end0:
67
68	.size	main, .Lfunc_end0-main
69	.globl	__gxx_personality_v0
70	.personality __gxx_personality_v0
71	.handlerdata
72	.p2align	2
73GCC_except_table0:
74.Lexception0:
75	.byte	255                     @ @LPStart Encoding = omit
76	.byte	0                       @ @TType Encoding = absptr
77	.asciz	"\257\200"              @ @TType base offset
78	.byte	3                       @ Call site Encoding = udata4
79	.byte	39                      @ Call site table length
80	.long	.Lfunc_begin0-.Lfunc_begin0 @ >> Call Site 1 <<
81	.long	.Ltmp0-.Lfunc_begin0    @   Call between .Lfunc_begin0 and .Ltmp0
82	.long	0                       @     has no landing pad
83	.byte	0                       @   On action: cleanup
84	.long	.Ltmp0-.Lfunc_begin0    @ >> Call Site 2 <<
85	.long	.Ltmp1-.Ltmp0           @   Call between .Ltmp0 and .Ltmp1
86	.long	.Ltmp2-.Lfunc_begin0    @     jumps to .Ltmp2
87	.byte	1                       @   On action: 1
88	.long	.Ltmp1-.Lfunc_begin0    @ >> Call Site 3 <<
89	.long	.Lfunc_end0-.Ltmp1      @   Call between .Ltmp1 and .Lfunc_end0
90	.long	0                       @     has no landing pad
91	.byte	0                       @   On action: cleanup
92	.byte	1                       @ >> Action Record 1 <<
93                                        @   Catch TypeInfo 1
94	.byte	0                       @   No further actions
95                                        @ >> Catch TypeInfos <<
96	.long	_ZTIi(target2)          @ TypeInfo 1
97	.p2align	2
98	.fnend
99