summaryrefslogtreecommitdiffstats
path: root/llvm/test/MC/Mips
diff options
context:
space:
mode:
authorDaniel Sanders <daniel.sanders@imgtec.com>2016-05-12 13:39:13 +0000
committerDaniel Sanders <daniel.sanders@imgtec.com>2016-05-12 13:39:13 +0000
commit5fb391c893073547f546a88f461a0de15924c55b (patch)
tree0bcd281964c87cba887f2148c7c813a2b1aa2925 /llvm/test/MC/Mips
parent3a0736e279bbcde85c2d7ed026861600469a9eb7 (diff)
downloadbcm5719-llvm-5fb391c893073547f546a88f461a0de15924c55b.tar.gz
bcm5719-llvm-5fb391c893073547f546a88f461a0de15924c55b.zip
[mips][ias] Work around incorrect another microMIPS relocation evaluation exposed by r268900
As explained in r269196, microMIPS has a special case that is not correctly implemented in LLVM. If we have a symbol 'foo' which is equivalent to '.text+0x10'. The value of an R_MICROMIPS_LO16 relocation using 'foo' is 'foo+0x11' and not 'foo+0x10'. The in-place addend should therefore be 0x11. This commit reverts a little more of the effect of r268900 by keeping the symbol when the STO_MIPS_MICROMIPS flag is set for R_MIPS_GPREL32 relocations. This fixes SingleSource/UnitTests/2003-08-11-VaListArg, and SingleSource/UnitTests/2003-05-07-VarArgs for microMIPS. I believe there are additional relocations that have the same issue (e.g. R_MIPS_64, and R_MIPS_GPREL16) but for now I'm focusing on restoring our internal buildbots back to the green state we had in r268899. llvm-svn: 269294
Diffstat (limited to 'llvm/test/MC/Mips')
-rw-r--r--llvm/test/MC/Mips/relocation-xfail.s9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/test/MC/Mips/relocation-xfail.s b/llvm/test/MC/Mips/relocation-xfail.s
index 0b64378c37a..2db2c469855 100644
--- a/llvm/test/MC/Mips/relocation-xfail.s
+++ b/llvm/test/MC/Mips/relocation-xfail.s
@@ -9,12 +9,21 @@
// baz is equivalent to .text+0x8 and is recorded in the symbol table as such
// but it refers to microMIPS code so the addend must indicate this in the LSB.
// The addend must therefore be 0x9.
+// DATA-LABEL: Name: .text
+// DATA: SectionData (
// DATA: 0000: 30430000 30420009
addiu $2, $3, %got(baz)
addiu $2, $2, %lo(baz)
baz:
+// DATA-LABEL: Name: .data
+// DATA: SectionData (
.data
.word 0
bar:
.word 1
+// baz is equivalent to .text+0x8 and is recorded in the symbol table as such
+// but it refers to microMIPS code so the addend must indicate this in the LSB.
+// The addend must therefore be 0x9.
+// DATA: 0000: 00000000 00000001 00000009
+ .gpword baz
OpenPOWER on IntegriCloud