diff options
| author | Daniel Sanders <daniel.sanders@imgtec.com> | 2016-05-12 13:39:13 +0000 |
|---|---|---|
| committer | Daniel Sanders <daniel.sanders@imgtec.com> | 2016-05-12 13:39:13 +0000 |
| commit | 5fb391c893073547f546a88f461a0de15924c55b (patch) | |
| tree | 0bcd281964c87cba887f2148c7c813a2b1aa2925 /llvm/test/MC/Mips | |
| parent | 3a0736e279bbcde85c2d7ed026861600469a9eb7 (diff) | |
| download | bcm5719-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.s | 9 |
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 |

