blob: 444099f8f648c2adb004575ce7af0477f74f532e [file] [log] [blame]
Logan Chien4ea23b52013-05-10 16:17:24 +00001@ 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 whether the section is switched back properly.
5
6@ The assembler should switch the section back to the corresponding section
7@ after it have emitted the exception handling indices and tables. In this
8@ test case, we are checking whether the section is correct when .section
9@ directives is used.
10
11@ In this example, func1 and func2 should be defined in .TEST1 section.
12@ It is incorrect if the func2 is in .text, .ARM.extab.TEST1, or
13@ .ARM.exidx.TEST1 sections.
14
15 .syntax unified
16
17 .section .TEST1
18
19 .globl func1
20 .align 2
21 .type func1,%function
22 .fnstart
23func1:
24 bx lr
25 .personality __gxx_personality_v0
26 .handlerdata
27 .fnend
28
29 .globl func2
30 .align 2
31 .type func2,%function
32 .fnstart
33func2:
34 bx lr
35 .personality __gxx_personality_v0
36 .handlerdata
37 .fnend
38
39
40@-------------------------------------------------------------------------------
41@ Check the .text section. This should be empty.
42@-------------------------------------------------------------------------------
43@ CHECK: Sections [
44@ CHECK: Section {
45@ CHECK: Name: .text
46@ CHECK: SectionData (
47@ CHECK: )
48@ CHECK: }
49
50
51@-------------------------------------------------------------------------------
52@ Check the .TEST1 section. There should be two "bx lr" instructions.
53@-------------------------------------------------------------------------------
54@ CHECK: Section {
55@ CHECK: Name: .TEST1
56@ CHECK: SectionData (
57@ CHECK: 0000: 1EFF2FE1 1EFF2FE1 |../.../.|
58@ CHECK: )
59@ CHECK: }
60
61
62
63@-------------------------------------------------------------------------------
64@ Check the .ARM.extab.TEST1 section.
65@-------------------------------------------------------------------------------
66@ CHECK: Section {
67@ CHECK: Name: .ARM.extab.TEST1
68@ CHECK: Relocations [
69@ CHECK: 0x0 R_ARM_PREL31 __gxx_personality_v0 0x0
70@ CHECK: 0x8 R_ARM_PREL31 __gxx_personality_v0 0x0
71@ CHECK: ]
72@ CHECK: SectionData (
73@ CHECK: 0000: 00000000 B0B0B000 00000000 B0B0B000 |................|
74@ CHECK: )
75@ CHECK: }
76
77
78@-------------------------------------------------------------------------------
79@ Check the .ARM.exidx.TEST1 section.
80@-------------------------------------------------------------------------------
81@ CHECK: Section {
82@ CHECK: Name: .ARM.exidx.TEST1
83@ CHECK: Link: 4
84@-------------------------------------------------------------------------------
85@ The first word of each entry should be relocated to .TEST1 section.
86@ The second word of each entry should be relocated to
87@ .ARM.extab.TESET1 section.
88@-------------------------------------------------------------------------------
89@ CHECK: Relocations [
90@ CHECK: 0x0 R_ARM_PREL31 .TEST1 0x0
91@ CHECK: 0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0
92@ CHECK: 0x8 R_ARM_PREL31 .TEST1 0x0
93@ CHECK: 0xC R_ARM_PREL31 .ARM.extab.TEST1 0x0
94@ CHECK: ]
95@-------------------------------------------------------------------------------
96@ The first word should be the offset to .TEST1.
97@ The second word should be the offset to .ARM.extab.TEST1
98@-------------------------------------------------------------------------------
99@ CHECK: SectionData (
100@ CHECK: 0000: 00000000 00000000 04000000 08000000 |................|
101@ CHECK: )
102@ CHECK: }
103@ CHECK: ]
104
105
106
107@-------------------------------------------------------------------------------
108@ Check the symbols "func1" and "func2". They should belong to .TEST1 section.
109@-------------------------------------------------------------------------------
110@ CHECK: Symbols [
111@ CHECK: Symbol {
112@ CHECK: Name: func1
113@ CHECK: Value: 0x0
114@ CHECK: Size: 0
115@ CHECK: Binding: Global (0x1)
116@ CHECK: Type: Function (0x2)
117@ CHECK: Other: 0
118@ CHECK: Section: .TEST1 (0x4)
119@ CHECK: }
120@ CHECK: Symbol {
121@ CHECK: Name: func2
122@ CHECK: Value: 0x4
123@ CHECK: Size: 0
124@ CHECK: Binding: Global (0x1)
125@ CHECK: Type: Function (0x2)
126@ CHECK: Other: 0
127@ CHECK: Section: .TEST1 (0x4)
128@ CHECK: }
129@ CHECK: ]