diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-06-01 15:10:51 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-06-01 15:10:51 +0000 |
commit | 7f7caf91673320a1b45ec2e8e8bd8e1ddfc5ab6f (patch) | |
tree | b79b03ec9a52356a6db4813d1b8146d6054be697 | |
parent | ccb8d1a114584db41ac1a8be58d362c7a7f5c4d9 (diff) | |
download | bcm5719-llvm-7f7caf91673320a1b45ec2e8e8bd8e1ddfc5ab6f.tar.gz bcm5719-llvm-7f7caf91673320a1b45ec2e8e8bd8e1ddfc5ab6f.zip |
Fix relocation selection for foo-. on mips.
This handles only the 32 bit case.
llvm-svn: 238751
-rw-r--r-- | llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp | 2 | ||||
-rw-r--r-- | llvm/test/MC/Mips/relocation.s | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp index 1c0a5ebdcff..4df92d067ea 100644 --- a/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp +++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp @@ -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; diff --git a/llvm/test/MC/Mips/relocation.s b/llvm/test/MC/Mips/relocation.s new file mode 100644 index 00000000000..642b40960a6 --- /dev/null +++ b/llvm/test/MC/Mips/relocation.s @@ -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 |