forked from OSchip/llvm-project
[RuntimeDyld] Add support for R_X86_64_PC8 relocation.
llvm-svn: 252423
This commit is contained in:
parent
a768624f14
commit
87ef57148a
|
@ -249,6 +249,14 @@ void RuntimeDyldELF::resolveX86_64Relocation(const SectionEntry &Section,
|
||||||
<< format("%p\n", Section.Address + Offset));
|
<< format("%p\n", Section.Address + Offset));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ELF::R_X86_64_PC8: {
|
||||||
|
uint64_t FinalAddress = Section.LoadAddress + Offset;
|
||||||
|
int64_t RealOffset = Value + Addend - FinalAddress;
|
||||||
|
assert(isInt<8>(RealOffset));
|
||||||
|
int8_t TruncOffset = (RealOffset & 0xFF);
|
||||||
|
Section.Address[Offset] = TruncOffset;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case ELF::R_X86_64_PC32: {
|
case ELF::R_X86_64_PC32: {
|
||||||
uint64_t FinalAddress = Section.LoadAddress + Offset;
|
uint64_t FinalAddress = Section.LoadAddress + Offset;
|
||||||
int64_t RealOffset = Value + Addend - FinalAddress;
|
int64_t RealOffset = Value + Addend - FinalAddress;
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# RUN: llvm-mc -triple=x86_64-pc-linux -relocation-model=pic -filetype=obj -o %T/test_ELF_x86-64_PC8.o %s
|
||||||
|
# RUN: llvm-rtdyld -triple=x86_64-pc-linux -verify -map-section test_ELF_x86-64_PC8.o,.text.bar=0x10000 -map-section test_ELF_x86-64_PC8.o,.text.baz=0x10040 %T/test_ELF_x86-64_PC8.o
|
||||||
|
# RUN: llvm-rtdyld -triple=x86_64-pc-linux -verify -map-section test_ELF_x86-64_PC8.o,.text.baz=0x10000 -map-section test_ELF_x86-64_PC8.o,.text.bar=0x10040 %T/test_ELF_x86-64_PC8.o
|
||||||
|
|
||||||
|
# Test that R_X86_64_PC8 relocation works.
|
||||||
|
|
||||||
|
.section .text.bar,"ax"
|
||||||
|
.align 16, 0x90
|
||||||
|
.type bar,@function
|
||||||
|
bar:
|
||||||
|
retq
|
||||||
|
.Ltmp1:
|
||||||
|
.size bar, .Ltmp1-bar
|
||||||
|
|
||||||
|
.section .text.baz,"ax"
|
||||||
|
.align 16, 0x90
|
||||||
|
.type baz,@function
|
||||||
|
baz:
|
||||||
|
movq %rdi, %rcx
|
||||||
|
jrcxz bar
|
||||||
|
retq
|
||||||
|
.Ltmp2:
|
||||||
|
.size baz, .Ltmp2-baz
|
||||||
|
|
||||||
|
|
||||||
|
.section ".note.GNU-stack","",@progbits
|
Loading…
Reference in New Issue