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