OSDN Git Service

7c1f32ee39d4e202c80cc0d613801dd3f6c4b5e5
[android-x86/external-llvm.git] / test / MC / ARM / eh-directive-section.s
1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \
2 @ RUN:   | llvm-readobj -s -sd -sr -t | FileCheck %s
3
4 @ Check the combination of .section, .fnstart, and .fnend directives.
5
6 @ For the functions in .text section, the exception handling index (EXIDX)
7 @ should be generated in .ARM.exidx, and the exception handling table (EXTAB)
8 @ should be generated in .ARM.extab.
9
10 @ For the functions in custom section specified by .section directives,
11 @ the EXIDX should be generated in ".ARM.exidx[[SECTION_NAME]]", and the EXTAB
12 @ should be generated in ".ARM.extab[[SECTION_NAME]]".
13
14         .syntax unified
15
16 @-------------------------------------------------------------------------------
17 @ .TEST1 section
18 @-------------------------------------------------------------------------------
19         .section        .TEST1
20         .globl  func1
21         .align  2
22         .type   func1,%function
23         .fnstart
24 func1:
25         bx      lr
26         .personality    __gxx_personality_v0
27         .handlerdata
28         .fnend
29
30
31 @-------------------------------------------------------------------------------
32 @ TEST2 section (without the dot in the beginning)
33 @-------------------------------------------------------------------------------
34         .section        TEST2
35         .globl  func2
36         .align  2
37         .type   func2,%function
38         .fnstart
39 func2:
40         bx      lr
41         .personality    __gxx_personality_v0
42         .handlerdata
43         .fnend
44
45
46 @-------------------------------------------------------------------------------
47 @ Check the .TEST1 section.
48 @-------------------------------------------------------------------------------
49 @ CHECK: Sections [
50 @ CHECK:   Section {
51 @ CHECK:     Index: 4
52 @ CHECK:     Name: .TEST1
53 @ CHECK:     SectionData (
54 @ CHECK:       0000: 1EFF2FE1                             |../.|
55 @ CHECK:     )
56 @ CHECK:   }
57
58 @-------------------------------------------------------------------------------
59 @ Check the .ARM.extab.TEST1 section, the EXTAB of .TEST1 section.
60 @-------------------------------------------------------------------------------
61 @ CHECK:   Section {
62 @ CHECK:     Name: .ARM.extab.TEST1
63 @ CHECK:     SectionData (
64 @ CHECK:       0000: 00000000 B0B0B000                    |........|
65 @ CHECK:     )
66 @ CHECK:   }
67 @ CHECK:     Relocations [
68 @ CHECK:       0x0 R_ARM_PREL31 __gxx_personality_v0 0x0
69 @ CHECK:     ]
70
71
72 @-------------------------------------------------------------------------------
73 @ Check the.ARM.exidx.TEST1 section, the EXIDX of .TEST1 section.
74 @-------------------------------------------------------------------------------
75 @ CHECK:   Section {
76 @ CHECK:     Name: .ARM.exidx.TEST1
77
78 @-------------------------------------------------------------------------------
79 @ This section should linked with .TEST1 section.
80 @-------------------------------------------------------------------------------
81 @ CHECK:     Link: 4
82
83 @-------------------------------------------------------------------------------
84 @ The first word should be relocated to the code address in .TEST1 section.
85 @ The second word should be relocated to the EHTAB entry in .ARM.extab.TEST1
86 @ section.
87 @-------------------------------------------------------------------------------
88 @ CHECK:     SectionData (
89 @ CHECK:       0000: 00000000 00000000                    |........|
90 @ CHECK:     )
91 @ CHECK:   }
92 @ CHECK:     Relocations [
93 @ CHECK:       0x0 R_ARM_PREL31 .TEST1 0x0
94 @ CHECK:       0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0
95 @ CHECK:     ]
96
97
98 @-------------------------------------------------------------------------------
99 @ Check the TEST2 section (without the dot in the beginning)
100 @-------------------------------------------------------------------------------
101 @ CHECK:   Section {
102 @ CHECK:     Index: 9
103 @ CHECK:     Name: TEST2
104 @ CHECK:     SectionData (
105 @ CHECK:       0000: 1EFF2FE1                             |../.|
106 @ CHECK:     )
107 @ CHECK:   }
108
109 @-------------------------------------------------------------------------------
110 @ Check the .ARM.extabTEST2 section, the EXTAB of TEST2 section.
111 @-------------------------------------------------------------------------------
112 @ CHECK:   Section {
113 @ CHECK:     Name: .ARM.extabTEST2
114 @ CHECK:     SectionData (
115 @ CHECK:       0000: 00000000 B0B0B000                    |........|
116 @ CHECK:     )
117 @ CHECK:   }
118 @ CHECK:     Relocations [
119 @ CHECK:       0x0 R_ARM_PREL31 __gxx_personality_v0 0x0
120 @ CHECK:     ]
121
122
123 @-------------------------------------------------------------------------------
124 @ Check the .ARM.exidxTEST2 section, the EXIDX of TEST2 section.
125 @-------------------------------------------------------------------------------
126 @ CHECK:   Section {
127 @ CHECK:     Name: .ARM.exidxTEST2
128
129 @-------------------------------------------------------------------------------
130 @ This section should linked with TEST2 section.
131 @-------------------------------------------------------------------------------
132 @ CHECK:     Link: 9
133
134 @-------------------------------------------------------------------------------
135 @ The first word should be relocated to the code address in TEST2 section.
136 @ The second word should be relocated to the EHTAB entry in .ARM.extabTEST2
137 @ section.
138 @-------------------------------------------------------------------------------
139 @ CHECK:     SectionData (
140 @ CHECK:       0000: 00000000 00000000                    |........|
141 @ CHECK:     )
142 @ CHECK:   }
143 @ CHECK: ]
144 @ CHECK:     Relocations [
145 @ CHECK:       0x0 R_ARM_PREL31 TEST2 0x0
146 @ CHECK:       0x4 R_ARM_PREL31 .ARM.extabTEST2 0x0
147 @ CHECK:     ]
148
149
150
151 @-------------------------------------------------------------------------------
152 @ Check the symbols and the sections they belong to
153 @-------------------------------------------------------------------------------
154 @ CHECK: Symbols [
155 @ CHECK:   Symbol {
156 @ CHECK:     Name: func1
157 @ CHECK:     Section: .TEST1 (0x4)
158 @ CHECK:   }
159 @ CHECK:   Symbol {
160 @ CHECK:     Name: func2
161 @ CHECK:     Section: TEST2 (0x9)
162 @ CHECK:   }
163 @ CHECK: ]