Implement R_PPC_ADDR32.

Patch from Jack Andersen.

llvm-svn: 285720
This commit is contained in:
Rui Ueyama 2016-11-01 18:30:28 +00:00
parent 7fd5c84f46
commit 035c4f14e0
2 changed files with 15 additions and 3 deletions

View File

@ -966,12 +966,13 @@ void PPCTargetInfo::relocateOne(uint8_t *Loc, uint32_t Type,
case R_PPC_ADDR16_LO:
write16be(Loc, applyPPCLo(Val));
break;
case R_PPC_REL24:
or32be(Loc, Val & 0x3FFFFFC);
break;
case R_PPC_ADDR32:
case R_PPC_REL32:
write32be(Loc, Val);
break;
case R_PPC_REL24:
or32be(Loc, Val & 0x3FFFFFC);
break;
default:
fatal("unrecognized reloc " + Twine(Type));
}

View File

@ -51,3 +51,14 @@ mystr:
# CHECK: Disassembly of section .R_PPC_REL32:
# CHECK: .FR_PPC_REL32:
# CHECK: 11018: 00 00 00 04
.section .R_PPC_ADDR32,"ax",@progbits
.globl .FR_PPC_ADDR32
.FR_PPC_ADDR32:
.long .Lfoox2
.section .R_PPC_ADDR32_2,"ax",@progbits
.Lfoox2:
# CHECK: Disassembly of section .R_PPC_ADDR32:
# CHECK: .FR_PPC_ADDR32:
# CHECK: 1101c: 00 01 10 20