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
24func1:
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
39func2:
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: ]
164