f0e0fca54f7c4142adb2962451fcd3ff4e18320b
[oota-llvm.git] / test / MC / ARM / eh-directive-handlerdata.s
1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
2 @ RUN:   | llvm-readobj -s -sd -sr | FileCheck %s
3
4 @ Check the .handlerdata directive (without .personality directive)
5
6         .syntax unified
7
8 @-------------------------------------------------------------------------------
9 @ TEST1
10 @-------------------------------------------------------------------------------
11         .section        .TEST1
12         .globl  func1
13         .align  2
14         .type   func1,%function
15         .fnstart
16 func1:
17         bx      lr
18         .handlerdata
19         .fnend
20
21
22 @ CHECK:Section {
23 @ CHECK:  Name: .TEST1
24 @ CHECK:  SectionData (
25 @ CHECK:    0000: 1EFF2FE1                             |../.|
26 @ CHECK:  )
27 @ CHECK:}
28
29 @ CHECK:Section {
30 @ CHECK:  Name: .ARM.extab.TEST1
31 @ CHECK:  SectionData (
32 @ CHECK:    0000: B0B0B080                             |....|
33 @ CHECK:  )
34 @ CHECK:}
35
36 @ CHECK:Section {
37 @ CHECK:  Name: .ARM.exidx.TEST1
38 @ CHECK:  SectionData (
39 @ CHECK:    0000: 00000000 00000000                    |........|
40 @ CHECK:  )
41 @ CHECK:}
42 @-------------------------------------------------------------------------------
43 @ We should see a relocation entry to __aeabi_unwind_cpp_pr0, so that the
44 @ linker can keep __aeabi_unwind_cpp_pr0.
45 @-------------------------------------------------------------------------------
46 @ CHECK: Section {
47 @ CHECK:  Name: .rel.ARM.exidx.TEST1
48 @ CHECK:  Relocations [
49 @ CHECK:    0x0 R_ARM_PREL31 .TEST1 0x0
50 @ CHECK:    0x0 R_ARM_NONE __aeabi_unwind_cpp_pr0 0x0
51 @ CHECK:    0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0
52 @ CHECK:  ]
53 @ CHECK: }
54
55
56
57 @-------------------------------------------------------------------------------
58 @ TEST2
59 @-------------------------------------------------------------------------------
60         .section        .TEST2
61         .globl  func2
62         .align  2
63         .type   func2,%function
64         .fnstart
65 func2:
66 @-------------------------------------------------------------------------------
67 @ Use a lot of unwind opcdes to get __aeabi_unwind_cpp_pr1.
68 @-------------------------------------------------------------------------------
69         .save   {r4, r5, r6, r7, r8, r9, r10, r11, r12}
70         push    {r4, r5, r6, r7, r8, r9, r10, r11, r12}
71         pop     {r4, r5, r6, r7, r8, r9, r10, r11, r12}
72         .pad    #0x240
73         sub     sp, sp, #0x240
74         add     sp, sp, #0x240
75         bx      lr
76         .handlerdata
77         .fnend
78
79
80
81 @ CHECK:Section {
82 @ CHECK:  Name: .TEST2
83 @ CHECK:  SectionData (
84 @ CHECK:    0000: F01F2DE9 F01FBDE8 09DD4DE2 09DD8DE2  |..-.......M.....|
85 @ CHECK:    0010: 1EFF2FE1                             |../.|
86 @ CHECK:  )
87 @ CHECK:}
88
89 @ CHECK:Section {
90 @ CHECK:  Name: .ARM.extab.TEST2
91 @ CHECK:  SectionData (
92 @ CHECK:    0000: 0FB20181 B0B0FF81                    |........|
93 @ CHECK:  )
94 @ CHECK:}
95
96 @ CHECK:Section {
97 @ CHECK:  Name: .ARM.exidx.TEST2
98 @ CHECK:  SectionData (
99 @ CHECK:    0000: 00000000 00000000                    |........|
100 @ CHECK:  )
101 @ CHECK:}
102 @-------------------------------------------------------------------------------
103 @ We should see a relocation entry to __aeabi_unwind_cpp_pr0, so that the
104 @ linker can keep __aeabi_unwind_cpp_pr0.
105 @-------------------------------------------------------------------------------
106 @ CHECK: Section {
107 @ CHECK:  Name: .rel.ARM.exidx.TEST2
108 @ CHECK:  Relocations [
109 @ CHECK:    0x0 R_ARM_PREL31 .TEST2 0x0
110 @ CHECK:    0x0 R_ARM_NONE __aeabi_unwind_cpp_pr1 0x0
111 @ CHECK:    0x4 R_ARM_PREL31 .ARM.extab.TEST2 0x0
112 @ CHECK:  ]
113 @ CHECK: }