blob: 50e09f5f11b74b1746868975ae98a4212ae20332 [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 -r -t | FileCheck %s
3
4@ Check whether the section is switched back or not.
5
6@ The assembler should emit the machine code of "func2" in .text section.
7@ It is incorrect if the machine code is emitted in .ARM.exidx or .ARM.extab.
8@ Besides, there should be two entries in .ARM.exidx section.
9
10 .syntax unified
11
12 .text
13 .globl func1
14 .align 2
15 .type func1,%function
16 .fnstart
17func1:
18 bx lr
19 .fnend
20
21 .globl func2
22 .align 2
23 .type func2,%function
24 .fnstart
25func2:
26 bx lr
27 .fnend
28
29
30@-------------------------------------------------------------------------------
31@ Check the .text section. There should be two "bx lr" instructions.
32@-------------------------------------------------------------------------------
33@ CHECK: Sections [
34@ CHECK: Section {
35@ CHECK: Name: .text
36@ CHECK: SectionData (
37@ CHECK: 0000: 1EFF2FE1 1EFF2FE1 |../.../.|
38@ CHECK: )
39@ CHECK: }
40
41
42@-------------------------------------------------------------------------------
43@ Check the .ARM.exidx section.
44@ There should be two entries (two words per entry.)
45@-------------------------------------------------------------------------------
46@ CHECK: Section {
47@ CHECK: Name: .ARM.exidx
Logan Chien4ea23b52013-05-10 16:17:24 +000048@ CHECK: SectionData (
49@-------------------------------------------------------------------------------
50@ The first word should be the offset to .text. The second word should be
51@ 0xB0B0B080, which means compact model 0 is used (0x80) and the rest of the
52@ word is filled with FINISH opcode (0xB0).
53@-------------------------------------------------------------------------------
54@ CHECK: 0000: 00000000 B0B0B080 04000000 B0B0B080 |................|
55@ CHECK: )
56@ CHECK: }
57@ CHECK: ]
58
Rafael Espindola4f60a382013-05-30 03:05:14 +000059@-------------------------------------------------------------------------------
60@ The first word of each entry should be relocated to .text section.
61@-------------------------------------------------------------------------------
62@ CHECK: Relocations [
63@ CHECK: 0x0 R_ARM_PREL31 .text 0x0
64@ CHECK: 0x0 R_ARM_NONE __aeabi_unwind_cpp_pr0 0x0
65@ CHECK: 0x8 R_ARM_PREL31 .text 0x0
66@ CHECK: ]
Logan Chien4ea23b52013-05-10 16:17:24 +000067
68
69@-------------------------------------------------------------------------------
70@ Check the symbols "func1" and "func2". They should belong to .text section.
71@-------------------------------------------------------------------------------
72@ CHECK: Symbols [
73@ CHECK: Symbol {
74@ CHECK: Name: func1
75@ CHECK: Section: .text (0x1)
76@ CHECK: }
77@ CHECK: Symbol {
78@ CHECK: Name: func2
79@ CHECK: Section: .text (0x1)
80@ CHECK: }
81@ CHECK: ]