~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/MC/Mips/relocation.s

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// RUN: llvm-mc -triple mips-unknown-linux < %s -show-encoding \
 
2
// RUN:     | FileCheck -check-prefix=ENCBE -check-prefix=FIXUP %s
 
3
// RUN: llvm-mc -triple mipsel-unknown-linux < %s -show-encoding \
 
4
// RUN:     | FileCheck -check-prefix=ENCLE -check-prefix=FIXUP %s
 
5
// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux < %s \
 
6
// RUN:     | llvm-readobj -r | FileCheck -check-prefix=RELOC %s
 
7
 
 
8
// Test that we produce the correct relocation.
 
9
// FIXME: move more relocation only tests here.
 
10
 
 
11
// Check prefixes:
 
12
// RELOC - Check the relocation in the object.
 
13
// FIXUP - Check the fixup on the instruction.
 
14
// ENCBE - Check the big-endian encoding on the instruction.
 
15
// ENCLE - Check the little-endian encoding on the instruction.
 
16
// ????? - Placeholder. Relocation is defined but the way of generating it is
 
17
//         unknown.
 
18
// FIXME - Placeholder. Generation method is known but doesn't work.
 
19
 
 
20
        .short foo                         // RELOC: R_MIPS_16 foo
 
21
 
 
22
        .long foo                          // RELOC: R_MIPS_32 foo
 
23
 
 
24
                                           // ?????: R_MIPS_REL32 foo
 
25
 
 
26
        jal foo                            // RELOC: R_MIPS_26 foo
 
27
                                           // ENCBE: jal foo # encoding: [0b000011AA,A,A,A]
 
28
                                           // ENCLE: jal foo # encoding: [A,A,A,0b000011AA]
 
29
                                           // FIXUP: # fixup A - offset: 0, value: foo, kind: fixup_Mips_26
 
30
 
 
31
        addiu $2, $3, %hi(foo)             // RELOC: R_MIPS_HI16 foo
 
32
                                           // ENCBE: addiu $2, $3, %hi(foo) # encoding: [0x24,0x62,A,A]
 
33
                                           // ENCLE: addiu $2, $3, %hi(foo) # encoding: [A,A,0x62,0x24]
 
34
                                           // FIXUP: # fixup A - offset: 0, value: foo@ABS_HI, kind: fixup_Mips_HI16
 
35
 
 
36
        addiu $2, $3, %lo(foo)             // RELOC: R_MIPS_LO16 foo
 
37
                                           // ENCBE: addiu $2, $3, %lo(foo) # encoding: [0x24,0x62,A,A]
 
38
                                           // ENCLE: addiu $2, $3, %lo(foo) # encoding: [A,A,0x62,0x24]
 
39
                                           // FIXUP: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16
 
40
 
 
41
        addiu $2, $3, %gp_rel(foo)         // RELOC: R_MIPS_GPREL16 foo
 
42
                                           // ENCBE: addiu $2, $3, %gp_rel(foo) # encoding: [0x24,0x62,A,A]
 
43
                                           // ENCLE: addiu $2, $3, %gp_rel(foo) # encoding: [A,A,0x62,0x24]
 
44
                                           // FIXUP: # fixup A - offset: 0, value: foo@GPREL, kind: fixup_Mips_GPREL
 
45
 
 
46
                                           // ?????: R_MIPS_LITERAL foo
 
47
 
 
48
        addiu $2, $3, %got(foo)            // RELOC: R_MIPS_GOT16 foo
 
49
                                           // ENCBE: addiu $2, $3, %got(foo) # encoding: [0x24,0x62,A,A]
 
50
                                           // ENCLE: addiu $2, $3, %got(foo) # encoding: [A,A,0x62,0x24]
 
51
                                           // FIXUP: # fixup A - offset: 0, value: foo@GOT, kind: fixup_Mips_GOT_Local
 
52
 
 
53
        .short foo-.                       // RELOC: R_MIPS_PC16 foo
 
54
 
 
55
        addiu $2, $3, %call16(foo)         // RELOC: R_MIPS_CALL16 foo
 
56
                                           // ENCBE: addiu $2, $3, %call16(foo) # encoding: [0x24,0x62,A,A]
 
57
                                           // ENCLE: addiu $2, $3, %call16(foo) # encoding: [A,A,0x62,0x24]
 
58
                                           // FIXUP: # fixup A - offset: 0, value: foo@GOT_CALL, kind: fixup_Mips_CALL16
 
59
 
 
60
        .quad foo                          // RELOC: R_MIPS_64 foo
 
61
 
 
62
                                           // ?????: R_MIPS_GPREL32 foo
 
63
                                           // ?????: R_MIPS_UNUSED1 foo
 
64
                                           // ?????: R_MIPS_UNUSED2 foo
 
65
                                           // ?????: R_MIPS_UNUSED3 foo
 
66
                                           // ?????: R_MIPS_SHIFT5 foo
 
67
                                           // ?????: R_MIPS_SHIFT6 foo
 
68
 
 
69
        addiu $2, $3, %got_disp(foo)       // RELOC: R_MIPS_GOT_DISP foo
 
70
                                           // ENCBE: addiu $2, $3, %got_disp(foo) # encoding: [0x24,0x62,A,A]
 
71
                                           // ENCLE: addiu $2, $3, %got_disp(foo) # encoding: [A,A,0x62,0x24]
 
72
                                           // FIXUP: # fixup A - offset: 0, value: foo@GOT_DISP, kind: fixup_Mips_GOT_DISP
 
73
 
 
74
        addiu $2, $3, %got_page(foo)       // RELOC: R_MIPS_GOT_PAGE foo
 
75
                                           // ENCBE: addiu $2, $3, %got_page(foo) # encoding: [0x24,0x62,A,A]
 
76
                                           // ENCLE: addiu $2, $3, %got_page(foo) # encoding: [A,A,0x62,0x24]
 
77
                                           // FIXUP: # fixup A - offset: 0, value: foo@GOT_PAGE, kind: fixup_Mips_GOT_PAGE
 
78
 
 
79
        addiu $2, $3, %got_ofst(foo)       // RELOC: R_MIPS_GOT_OFST foo
 
80
                                           // ENCBE: addiu $2, $3, %got_ofst(foo) # encoding: [0x24,0x62,A,A]
 
81
                                           // ENCLE: addiu $2, $3, %got_ofst(foo) # encoding: [A,A,0x62,0x24]
 
82
                                           // FIXUP: # fixup A - offset: 0, value: foo@GOT_OFST, kind: fixup_Mips_GOT_OFST
 
83
 
 
84
        addiu $2, $3, %got_hi(foo)         // RELOC: R_MIPS_GOT_HI16 foo
 
85
                                           // ENCBE: addiu $2, $3, %got_hi(foo) # encoding: [0x24,0x62,A,A]
 
86
                                           // ENCLE: addiu $2, $3, %got_hi(foo) # encoding: [A,A,0x62,0x24]
 
87
                                           // FIXUP: # fixup A - offset: 0, value: foo@GOT_HI16, kind: fixup_Mips_GOT_HI16
 
88
 
 
89
        addiu $2, $3, %got_lo(foo)         // RELOC: R_MIPS_GOT_LO16 foo
 
90
                                           // ENCBE: addiu $2, $3, %got_lo(foo) # encoding: [0x24,0x62,A,A]
 
91
                                           // ENCLE: addiu $2, $3, %got_lo(foo) # encoding: [A,A,0x62,0x24]
 
92
                                           // FIXUP: # fixup A - offset: 0, value: foo@GOT_LO16, kind: fixup_Mips_GOT_LO16
 
93
 
 
94
//      addiu $2, $3, %neg(foo)            // FIXME: R_MIPS_SUB foo
 
95
                                           // ?????: R_MIPS_INSERT_A
 
96
                                           // ?????: R_MIPS_INSERT_B
 
97
                                           // ?????: R_MIPS_DELETE
 
98
 
 
99
        .set mips64
 
100
        daddiu $2, $3, %higher(foo)        // RELOC: R_MIPS_HIGHER foo
 
101
                                           // ENCBE: daddiu $2, $3, %higher(foo) # encoding: [0x64,0x62,A,A]
 
102
                                           // ENCLE: daddiu $2, $3, %higher(foo) # encoding: [A,A,0x62,0x64]
 
103
                                           // FIXUP: # fixup A - offset: 0, value: foo@HIGHER, kind: fixup_Mips_HIGHER
 
104
 
 
105
        daddiu $2, $3, %highest(foo)       // RELOC: R_MIPS_HIGHEST foo
 
106
                                           // ENCBE: daddiu $2, $3, %highest(foo) # encoding: [0x64,0x62,A,A]
 
107
                                           // ENCLE: daddiu $2, $3, %highest(foo) # encoding: [A,A,0x62,0x64]
 
108
                                           // FIXUP: # fixup A - offset: 0, value: foo@HIGHEST, kind: fixup_Mips_HIGHEST
 
109
 
 
110
        .set mips0
 
111
        addiu $2, $3, %call_hi(foo)        // RELOC: R_MIPS_CALL_HI16 foo
 
112
                                           // ENCBE: addiu $2, $3, %call_hi(foo) # encoding: [0x24,0x62,A,A]
 
113
                                           // ENCLE: addiu $2, $3, %call_hi(foo) # encoding: [A,A,0x62,0x24]
 
114
                                           // FIXUP: # fixup A - offset: 0, value: foo@CALL_HI16, kind: fixup_Mips_CALL_HI16
 
115
 
 
116
        addiu $2, $3, %call_lo(foo)        // RELOC: R_MIPS_CALL_LO16 foo
 
117
                                           // ENCBE: addiu $2, $3, %call_lo(foo) # encoding: [0x24,0x62,A,A]
 
118
                                           // ENCLE: addiu $2, $3, %call_lo(foo) # encoding: [A,A,0x62,0x24]
 
119
                                           // FIXUP: # fixup A - offset: 0, value: foo@CALL_LO16, kind: fixup_Mips_CALL_LO16
 
120
 
 
121
                                           // ?????: R_MIPS_SCN_DISP foo
 
122
                                           // ?????: R_MIPS_REL16 foo
 
123
                                           // ?????: R_MIPS_ADD_IMMEDIATE foo
 
124
                                           // ?????: R_MIPS_PJUMP foo
 
125
                                           // ?????: R_MIPS_RELGOT foo
 
126
//      jalr $25                           // ?????: R_MIPS_JALR foo
 
127
 
 
128
                                           // ?????: R_MIPS_TLS_DTPMOD32 foo
 
129
//      .dtprelword foo                    // FIXME: R_MIPS_TLS_DTPREL32 foo
 
130
                                           // ?????: R_MIPS_TLS_DTPMOD64 foo
 
131
//      .dtpreldword foo                   // FIXME: R_MIPS_TLS_DTPREL64 foo
 
132
        addiu $2, $3, %tlsgd(foo)          // RELOC: R_MIPS_TLS_GD foo
 
133
                                           // ENCBE: addiu $2, $3, %tlsgd(foo) # encoding: [0x24,0x62,A,A]
 
134
                                           // ENCLE: addiu $2, $3, %tlsgd(foo) # encoding: [A,A,0x62,0x24]
 
135
                                           // FIXUP: # fixup A - offset: 0, value: foo@TLSGD, kind: fixup_Mips_TLSGD
 
136
 
 
137
        addiu $2, $3, %tlsldm(foo)         // RELOC: R_MIPS_TLS_LDM foo
 
138
                                           // ENCBE: addiu $2, $3, %tlsldm(foo) # encoding: [0x24,0x62,A,A]
 
139
                                           // ENCLE: addiu $2, $3, %tlsldm(foo) # encoding: [A,A,0x62,0x24]
 
140
                                           // FIXUP: # fixup A - offset: 0, value: foo@TLSLDM, kind: fixup_Mips_TLSLDM
 
141
 
 
142
        addiu $2, $3, %dtprel_hi(foo)      // RELOC: R_MIPS_TLS_DTPREL_HI16 foo
 
143
                                           // ENCBE: addiu $2, $3, %dtprel_hi(foo) # encoding: [0x24,0x62,A,A]
 
144
                                           // ENCLE: addiu $2, $3, %dtprel_hi(foo) # encoding: [A,A,0x62,0x24]
 
145
                                           // FIXUP: # fixup A - offset: 0, value: foo@DTPREL_HI, kind: fixup_Mips_DTPREL_HI
 
146
 
 
147
        addiu $2, $3, %dtprel_lo(foo)      // RELOC: R_MIPS_TLS_DTPREL_LO16 foo
 
148
                                           // ENCBE: addiu $2, $3, %dtprel_lo(foo) # encoding: [0x24,0x62,A,A]
 
149
                                           // ENCLE: addiu $2, $3, %dtprel_lo(foo) # encoding: [A,A,0x62,0x24]
 
150
                                           // FIXUP: # fixup A - offset: 0, value: foo@DTPREL_LO, kind: fixup_Mips_DTPREL_LO
 
151
 
 
152
        addiu $2, $3, %gottprel(foo)       // RELOC: R_MIPS_TLS_GOTTPREL foo
 
153
                                           // ENCBE: addiu $2, $3, %gottprel(foo) # encoding: [0x24,0x62,A,A]
 
154
                                           // ENCLE: addiu $2, $3, %gottprel(foo) # encoding: [A,A,0x62,0x24]
 
155
                                           // FIXUP: # fixup A - offset: 0, value: foo@GOTTPREL, kind: fixup_Mips_GOTTPREL
 
156
 
 
157
//      .tprelword foo                     // FIXME: R_MIPS_TLS_TPREL32 foo
 
158
//      .tpreldword foo                    // FIXME: R_MIPS_TLS_TPREL64 foo
 
159
        addiu $2, $3, %tprel_hi(foo)       // RELOC: R_MIPS_TLS_TPREL_HI16 foo
 
160
                                           // ENCBE: addiu $2, $3, %tprel_hi(foo) # encoding: [0x24,0x62,A,A]
 
161
                                           // ENCLE: addiu $2, $3, %tprel_hi(foo) # encoding: [A,A,0x62,0x24]
 
162
                                           // FIXUP: # fixup A - offset: 0, value: foo@TPREL_HI, kind: fixup_Mips_TPREL_HI
 
163
 
 
164
        addiu $2, $3, %tprel_lo(foo)       // RELOC: R_MIPS_TLS_TPREL_LO16 foo
 
165
                                           // ENCBE: addiu $2, $3, %tprel_lo(foo) # encoding: [0x24,0x62,A,A]
 
166
                                           // ENCLE: addiu $2, $3, %tprel_lo(foo) # encoding: [A,A,0x62,0x24]
 
167
                                           // FIXUP: # fixup A - offset: 0, value: foo@TPREL_LO, kind: fixup_Mips_TPREL_LO
 
168
 
 
169
                                           // ?????: R_MIPS_GLOB_DAT foo
 
170
        .set mips32r6
 
171
        beqzc $2, foo                      // RELOC: R_MIPS_PC21_S2 foo
 
172
                                           // ENCBE: beqzc $2, foo # encoding: [0xd8,0b010AAAAA,A,A]
 
173
                                           // ENCLE: beqzc $2, foo # encoding: [A,A,0b010AAAAA,0xd8]
 
174
                                           // FIXUP: # fixup A - offset: 0, value: foo-4, kind: fixup_MIPS_PC21_S2
 
175
 
 
176
        bc foo                             // RELOC: R_MIPS_PC26_S2 foo
 
177
                                           // ENCBE: bc foo # encoding: [0b110010AA,A,A,A]
 
178
                                           // ENCLE: bc foo # encoding: [A,A,A,0b110010AA]
 
179
                                           // FIXUP: # fixup A - offset: 0, value: foo-4, kind: fixup_MIPS_PC26_S2
 
180
 
 
181
        .set mips64r6
 
182
        ldpc $2, foo                       // RELOC: R_MIPS_PC18_S3 foo
 
183
                                           // ENCBE: ldpc $2, foo # encoding: [0xec,0b010110AA,A,A]
 
184
                                           // ENCLE: ldpc $2, foo # encoding: [A,A,0b010110AA,0xec]
 
185
                                           // FIXUP: # fixup A - offset: 0, value: foo, kind: fixup_Mips_PC18_S3
 
186
 
 
187
        .set mips32r6
 
188
        lwpc $2, foo                       // RELOC: R_MIPS_PC19_S2 foo
 
189
                                           // ENCBE: lwpc $2, foo # encoding: [0xec,0b01001AAA,A,A]
 
190
                                           // ENCLE: lwpc $2, foo # encoding: [A,A,0b01001AAA,0xec]
 
191
                                           // FIXUP: # fixup A - offset: 0, value: foo, kind: fixup_MIPS_PC19_S2
 
192
 
 
193
        addiu $2, $3, %pcrel_hi(foo)       // RELOC: R_MIPS_PCHI16 foo
 
194
                                           // ENCBE: addiu $2, $3, %pcrel_hi(foo) # encoding: [0x24,0x62,A,A]
 
195
                                           // ENCLE: addiu $2, $3, %pcrel_hi(foo) # encoding: [A,A,0x62,0x24]
 
196
                                           // FIXUP: # fixup A - offset: 0, value: foo@PCREL_HI16, kind: fixup_MIPS_PCHI16
 
197
 
 
198
        addiu $2, $3, %pcrel_lo(foo)       // RELOC: R_MIPS_PCLO16 foo
 
199
                                           // ENCBE: addiu $2, $3, %pcrel_lo(foo) # encoding: [0x24,0x62,A,A]
 
200
                                           // ENCLE: addiu $2, $3, %pcrel_lo(foo) # encoding: [A,A,0x62,0x24]
 
201
                                           // FIXUP: # fixup A - offset: 0, value: foo@PCREL_LO16, kind: fixup_MIPS_PCLO16
 
202
 
 
203
        .set mips0
 
204
                                           // FIXME: R_MIPS16_*
 
205
                                           // ?????: R_MIPS_COPY foo
 
206
                                           // ?????: R_MIPS_JUMP_SLOT foo
 
207
                                           // FIXME: R_MICROMIPS_*
 
208
        .long foo-.                        // RELOC: R_MIPS_PC32 foo
 
209
//      .ehword foo                        // FIXME: R_MIPS_EH foo