Skip to content

Commit

Permalink
[LoongArch] Emit R_LARCH_64_PCREL relocation for FK_Data_8 when IsPCR…
Browse files Browse the repository at this point in the history
…el is true

Reviewed By: xen0n, MaskRay, hev

Differential Revision: https://reviews.llvm.org/D153872
  • Loading branch information
SixWeining committed Jun 29, 2023
1 parent 02f94a6 commit 42cb3c6
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ unsigned LoongArchELFObjectWriter::getRelocType(MCContext &Ctx,
case FK_Data_4:
return IsPCRel ? ELF::R_LARCH_32_PCREL : ELF::R_LARCH_32;
case FK_Data_8:
return ELF::R_LARCH_64;
return IsPCRel ? ELF::R_LARCH_64_PCREL : ELF::R_LARCH_64;
case LoongArch::fixup_loongarch_b16:
return ELF::R_LARCH_B16;
case LoongArch::fixup_loongarch_b21:
Expand Down
28 changes: 28 additions & 0 deletions llvm/test/MC/LoongArch/Relocations/sub-expr.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# RUN: llvm-mc --filetype=obj --triple=loongarch64 %s -o %t
# RUN: llvm-readobj -r %t | FileCheck %s

## Check that subtraction expressions emit R_LARCH_32_PCREL and R_LARCH_64_PCREL relocations.

## TODO: 1- or 2-byte data relocations are not supported for now.

# CHECK: Relocations [
# CHECK-NEXT: Section ({{.*}}) .rela.data {
# CHECK-NEXT: 0x0 R_LARCH_64_PCREL sx 0x0
# CHECK-NEXT: 0x8 R_LARCH_64_PCREL sy 0x0
# CHECK-NEXT: 0x10 R_LARCH_32_PCREL sx 0x0
# CHECK-NEXT: 0x14 R_LARCH_32_PCREL sy 0x0
# CHECK-NEXT: }

.section sx,"a"
x:
nop

.data
.8byte x-.
.8byte y-.
.4byte x-.
.4byte y-.

.section sy,"a"
y:
nop

0 comments on commit 42cb3c6

Please sign in to comment.