Fix relocation selection for foo-. on mips.

This handles only the 32 bit case.

llvm-svn: 238751
This commit is contained in:
Rafael Espindola 2015-06-01 15:10:51 +00:00
parent 90c2b96b93
commit 2945c6afc6
2 changed files with 11 additions and 1 deletions

View File

@ -70,7 +70,7 @@ unsigned MipsELFObjectWriter::GetRelocType(const MCValue &Target,
switch (Kind) {
case Mips::fixup_Mips_32:
case FK_Data_4:
return ELF::R_MIPS_32;
return IsPCRel ? ELF::R_MIPS_PC32 : ELF::R_MIPS_32;
case Mips::fixup_Mips_64:
case FK_Data_8:
return ELF::R_MIPS_64;

10
test/MC/Mips/relocation.s Normal file
View File

@ -0,0 +1,10 @@
// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux < %s | llvm-readobj -r | FileCheck %s
// Test that we produce the correct relocation.
// FIXME: move more relocation only tests here.
.long foo
// CHECK: R_MIPS_32 foo
.long foo-.
// CHECK: R_MIPS_PC32 foo