[llvm] b18cdea - [MC][LoongArch] Fix needsRelocateWithSymbol() implementation
Weining Lu via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 15 23:53:03 PST 2022
Author: Youling Tang
Date: 2022-11-16T15:52:30+08:00
New Revision: b18cdeac79d0e084ac735fb1b9bbfd464d3d030c
URL: https://github.com/llvm/llvm-project/commit/b18cdeac79d0e084ac735fb1b9bbfd464d3d030c
DIFF: https://github.com/llvm/llvm-project/commit/b18cdeac79d0e084ac735fb1b9bbfd464d3d030c.diff
LOG: [MC][LoongArch] Fix needsRelocateWithSymbol() implementation
LoongArch should be `section plus offset`, so use the generic implementation
of `llvm/lib/MC/MCELFObjectTargetWriter.cpp` to return `false` directly, like
x86 and aarch64.
```
$ cat test.c
static int __attribute__((section(".text.another"))) test(int a, int b)
{
return a + b;
}
static int a = 1, b = 2;
int foo()
{
test(a, b);
return 0;
}
$ gcc -c test.c
$ readelf -Wr test.o
Relocation section '.rela.text' at offset 0x2a0 contains 5 entries:
Offset Info Type Symbol's Value Symbol's Name + Addend
0000000000000010 0000000300000047 R_LARCH_PCALA_HI20 0000000000000000 .data + 0
0000000000000014 0000000300000048 R_LARCH_PCALA_LO12 0000000000000000 .data + 0
0000000000000018 0000000300000047 R_LARCH_PCALA_HI20 0000000000000000 .data + 4
000000000000001c 0000000300000048 R_LARCH_PCALA_LO12 0000000000000000 .data + 4
0000000000000028 0000000500000042 R_LARCH_B26 0000000000000000 .text.another + 0
Relocation section '.rela.eh_frame' at offset 0x318 contains 2 entries:
Offset Info Type Symbol's Value Symbol's Name + Addend
000000000000001c 0000000500000063 R_LARCH_32_PCREL 0000000000000000 .text.another + 0
000000000000003c 0000000200000063 R_LARCH_32_PCREL 0000000000000000 .text + 0
```
Reviewed By: SixWeining, MaskRay
Differential Revision: https://reviews.llvm.org/D137384
Added:
Modified:
llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchELFObjectWriter.cpp
llvm/test/MC/LoongArch/Relocations/fde-reloc.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchELFObjectWriter.cpp b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchELFObjectWriter.cpp
index ee8774ed792f..57330dd31f71 100644
--- a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchELFObjectWriter.cpp
+++ b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchELFObjectWriter.cpp
@@ -24,13 +24,6 @@ class LoongArchELFObjectWriter : public MCELFObjectTargetWriter {
~LoongArchELFObjectWriter() override;
- // Return true if the given relocation must be with a symbol rather than
- // section plus offset.
- bool needsRelocateWithSymbol(const MCSymbol &Sym,
- unsigned Type) const override {
- return true;
- }
-
protected:
unsigned getRelocType(MCContext &Ctx, const MCValue &Target,
const MCFixup &Fixup, bool IsPCRel) const override;
diff --git a/llvm/test/MC/LoongArch/Relocations/fde-reloc.s b/llvm/test/MC/LoongArch/Relocations/fde-reloc.s
index 6fff459230ea..990e07c7f00b 100644
--- a/llvm/test/MC/LoongArch/Relocations/fde-reloc.s
+++ b/llvm/test/MC/LoongArch/Relocations/fde-reloc.s
@@ -10,5 +10,5 @@ func:
.cfi_endproc
# CHECK: Section (4) .rela.eh_frame {
-# CHECK-NEXT: 0x1C R_LARCH_32_PCREL - 0x0
+# CHECK-NEXT: 0x1C R_LARCH_32_PCREL .text 0x0
# CHECK-NEXT: }
More information about the llvm-commits
mailing list