From a6cc36b31d3aa362bd296f086563f3f2e3f874df Mon Sep 17 00:00:00 2001 From: Ben Barham Date: Wed, 25 Sep 2024 13:20:59 -0700 Subject: [PATCH] Revert "Partially revert "[llvm][lld] Support R_AARCH64_GOTPCREL32 (#72584)"" This reverts commit f1cbfe97d4c15163b0590e1d903659fd805a4a74, which ended up causing other failures. --- .../Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp | 5 ++++- llvm/test/MC/AArch64/elf-reloc-gotpcrel32.s | 2 -- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp index b0e2c81fc7900..b4c5cde5fd888 100644 --- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp +++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp @@ -206,7 +206,10 @@ unsigned AArch64ELFObjectWriter::getRelocType(MCContext &Ctx, case FK_Data_2: return R_CLS(ABS16); case FK_Data_4: - return R_CLS(ABS32); + return (!IsILP32 && + Target.getAccessVariant() == MCSymbolRefExpr::VK_GOTPCREL) + ? ELF::R_AARCH64_GOTPCREL32 + : R_CLS(ABS32); case FK_Data_8: { bool IsAuth = (RefKind == AArch64MCExpr::VK_AUTH || RefKind == AArch64MCExpr::VK_AUTHADDR); diff --git a/llvm/test/MC/AArch64/elf-reloc-gotpcrel32.s b/llvm/test/MC/AArch64/elf-reloc-gotpcrel32.s index 4115717fc1a57..afbcaad9e1dfd 100644 --- a/llvm/test/MC/AArch64/elf-reloc-gotpcrel32.s +++ b/llvm/test/MC/AArch64/elf-reloc-gotpcrel32.s @@ -1,5 +1,3 @@ -// XFAIL: !rdar135050296 - // RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | \ // RUN: llvm-readobj -r - | FileCheck %s