blob: 9f632b8b89a6d36dab14be4ae8e7ec58bda85e0d [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
Logan Chien4ea23b52013-05-10 16:17:24 +000068@ CHECK: SectionData (
69@ CHECK: 0000: 00000000 B0B0B000 00000000 B0B0B000 |................|
70@ CHECK: )
71@ CHECK: }
Rafael Espindola4f60a382013-05-30 03:05:14 +000072@ CHECK: Relocations [
73@ CHECK: 0x0 R_ARM_PREL31 __gxx_personality_v0 0x0
74@ CHECK: 0x8 R_ARM_PREL31 __gxx_personality_v0 0x0
75@ CHECK: ]
Logan Chien4ea23b52013-05-10 16:17:24 +000076
77
78@-------------------------------------------------------------------------------
79@ Check the .ARM.exidx.TEST1 section.
80@-------------------------------------------------------------------------------
81@ CHECK: Section {
82@ CHECK: Name: .ARM.exidx.TEST1
83@ CHECK: Link: 4
84@-------------------------------------------------------------------------------
Rafael Espindola4f60a382013-05-30 03:05:14 +000085@ The first word should be the offset to .TEST1.
86@ The second word should be the offset to .ARM.extab.TEST1
87@-------------------------------------------------------------------------------
88@ CHECK: SectionData (
89@ CHECK: 0000: 00000000 00000000 04000000 08000000 |................|
90@ CHECK: )
91@ CHECK: }
92@ CHECK: ]
93@-------------------------------------------------------------------------------
Logan Chien4ea23b52013-05-10 16:17:24 +000094@ The first word of each entry should be relocated to .TEST1 section.
95@ The second word of each entry should be relocated to
96@ .ARM.extab.TESET1 section.
97@-------------------------------------------------------------------------------
98@ CHECK: Relocations [
99@ CHECK: 0x0 R_ARM_PREL31 .TEST1 0x0
100@ CHECK: 0x4 R_ARM_PREL31 .ARM.extab.TEST1 0x0
101@ CHECK: 0x8 R_ARM_PREL31 .TEST1 0x0
102@ CHECK: 0xC R_ARM_PREL31 .ARM.extab.TEST1 0x0
103@ CHECK: ]
Logan Chien4ea23b52013-05-10 16:17:24 +0000104
105
106@-------------------------------------------------------------------------------
107@ Check the symbols "func1" and "func2". They should belong to .TEST1 section.
108@-------------------------------------------------------------------------------
109@ CHECK: Symbols [
110@ CHECK: Symbol {
111@ CHECK: Name: func1
112@ CHECK: Value: 0x0
113@ CHECK: Size: 0
114@ CHECK: Binding: Global (0x1)
115@ CHECK: Type: Function (0x2)
116@ CHECK: Other: 0
117@ CHECK: Section: .TEST1 (0x4)
118@ CHECK: }
119@ CHECK: Symbol {
120@ CHECK: Name: func2
121@ CHECK: Value: 0x4
122@ CHECK: Size: 0
123@ CHECK: Binding: Global (0x1)
124@ CHECK: Type: Function (0x2)
125@ CHECK: Other: 0
126@ CHECK: Section: .TEST1 (0x4)
127@ CHECK: }
128@ CHECK: ]