xref: /aosp_15_r20/external/llvm/test/MC/ARM/eh-compact-pr1.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
2*9880d681SAndroid Build Coastguard Worker@ RUN:   | llvm-readobj -s -sd -sr | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker@ Check the compact pr1 model
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker	.syntax unified
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker	.section .TEST1
9*9880d681SAndroid Build Coastguard Worker	.globl	func1
10*9880d681SAndroid Build Coastguard Worker	.align	2
11*9880d681SAndroid Build Coastguard Worker	.type	func1,%function
12*9880d681SAndroid Build Coastguard Workerfunc1:
13*9880d681SAndroid Build Coastguard Worker	.fnstart
14*9880d681SAndroid Build Coastguard Worker	.save	{r4, r5, r11, lr}
15*9880d681SAndroid Build Coastguard Worker	push	{r4, r5, r11, lr}
16*9880d681SAndroid Build Coastguard Worker	add	r0, r1, r0
17*9880d681SAndroid Build Coastguard Worker	.setfp	r11, sp, #8
18*9880d681SAndroid Build Coastguard Worker	add	r11, sp, #8
19*9880d681SAndroid Build Coastguard Worker	pop	{r4, r5, r11, pc}
20*9880d681SAndroid Build Coastguard Worker	.fnend
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
25*9880d681SAndroid Build Coastguard Worker@ Check .TEST1 section
26*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
27*9880d681SAndroid Build Coastguard Worker@ CHECK: Sections [
28*9880d681SAndroid Build Coastguard Worker@ CHECK:   Section {
29*9880d681SAndroid Build Coastguard Worker@ CHECK:     Name: .TEST1
30*9880d681SAndroid Build Coastguard Worker@ CHECK:     SectionData (
31*9880d681SAndroid Build Coastguard Worker@ CHECK:       0000: 30482DE9 000081E0 08B08DE2 3088BDE8  |0H-.........0...|
32*9880d681SAndroid Build Coastguard Worker@ CHECK:     )
33*9880d681SAndroid Build Coastguard Worker@ CHECK:   }
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
37*9880d681SAndroid Build Coastguard Worker@ Check .ARM.extab.TEST1 section
38*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
39*9880d681SAndroid Build Coastguard Worker@ CHECK:   Section {
40*9880d681SAndroid Build Coastguard Worker@ CHECK:     Name: .ARM.extab.TEST1
41*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
42*9880d681SAndroid Build Coastguard Worker@ 0x81   = Compact model 1, personality routine: __aeabi_unwind_cpp_pr1
43*9880d681SAndroid Build Coastguard Worker@ 0x9B   = $sp can be found in $r11
44*9880d681SAndroid Build Coastguard Worker@ 0x41   = $sp = $sp - 8
45*9880d681SAndroid Build Coastguard Worker@ 0x8483 = pop {r4, r5, r11, r14}
46*9880d681SAndroid Build Coastguard Worker@ 0xB0   = finish
47*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
48*9880d681SAndroid Build Coastguard Worker@ CHECK:     SectionData (
49*9880d681SAndroid Build Coastguard Worker@ CHECK:       0000: 419B0181 B0B08384 00000000           |A...........|
50*9880d681SAndroid Build Coastguard Worker@ CHECK:     )
51*9880d681SAndroid Build Coastguard Worker@ CHECK:   }
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
55*9880d681SAndroid Build Coastguard Worker@ Check .ARM.exidx.TEST1 section
56*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
57*9880d681SAndroid Build Coastguard Worker@ CHECK:   Section {
58*9880d681SAndroid Build Coastguard Worker@ CHECK:     Name: .ARM.exidx.TEST1
59*9880d681SAndroid Build Coastguard Worker@ CHECK:     SectionData (
60*9880d681SAndroid Build Coastguard Worker@ CHECK:       0000: 00000000 00000000                    |........|
61*9880d681SAndroid Build Coastguard Worker@ CHECK:     )
62*9880d681SAndroid Build Coastguard Worker@ CHECK:   }
63*9880d681SAndroid Build Coastguard Worker@ CHECK: ]
64*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
65*9880d681SAndroid Build Coastguard Worker@ The first word should be relocated to .TEST1 section, and the second word
66*9880d681SAndroid Build Coastguard Worker@ should be relocated to .ARM.extab.TEST1 section.  Besides, there is
67*9880d681SAndroid Build Coastguard Worker@ another relocation entry for __aeabi_unwind_cpp_pr1, so that the linker
68*9880d681SAndroid Build Coastguard Worker@ will keep __aeabi_unwind_cpp_pr1.
69*9880d681SAndroid Build Coastguard Worker@-------------------------------------------------------------------------------
70*9880d681SAndroid Build Coastguard Worker@ CHECK:     Relocations [
71*9880d681SAndroid Build Coastguard Worker@ CHECK:       0x0 R_ARM_NONE __aeabi_unwind_cpp_pr1 0x0
72*9880d681SAndroid Build Coastguard Worker@ CHECK:       0x0 R_ARM_PREL31 .TEST1 0x0
73*9880d681SAndroid Build Coastguard Worker@ CHECK:       0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0
74*9880d681SAndroid Build Coastguard Worker@ CHECK:     ]
75