Skip to content

Commit eb4ac64

Browse files
authored
Revert "[PAC][CodeGen][ELF][AArch64] Support signed GOT" (#102434)
Reverts #96164 See buildbot failure https://lab.llvm.org/buildbot/#/builders/153/builds/5329
1 parent 0766a59 commit eb4ac64

21 files changed

+34
-482
lines changed

llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp

+8-46
Original file line numberDiff line numberDiff line change
@@ -2161,10 +2161,6 @@ void AArch64AsmPrinter::LowerMOVaddrPAC(const MachineInstr &MI) {
21612161
};
21622162

21632163
const bool IsGOTLoad = MI.getOpcode() == AArch64::LOADgotPAC;
2164-
const bool IsELFSignedGOT = MI.getParent()
2165-
->getParent()
2166-
->getInfo<AArch64FunctionInfo>()
2167-
->hasELFSignedGOT();
21682164
MachineOperand GAOp = MI.getOperand(0);
21692165
const uint64_t KeyC = MI.getOperand(1).getImm();
21702166
assert(KeyC <= AArch64PACKey::LAST &&
@@ -2181,16 +2177,9 @@ void AArch64AsmPrinter::LowerMOVaddrPAC(const MachineInstr &MI) {
21812177
// Emit:
21822178
// target materialization:
21832179
// - via GOT:
2184-
// - unsigned GOT:
2185-
// adrp x16, :got:target
2186-
// ldr x16, [x16, :got_lo12:target]
2187-
// add offset to x16 if offset != 0
2188-
// - ELF signed GOT:
2189-
// adrp x17, :got:target
2190-
// add x17, x17, :got_auth_lo12:target
2191-
// ldr x16, [x17]
2192-
// aut{i|d}a x16, x17
2193-
// add offset to x16 if offset != 0
2180+
// adrp x16, :got:target
2181+
// ldr x16, [x16, :got_lo12:target]
2182+
// add offset to x16 if offset != 0
21942183
//
21952184
// - direct:
21962185
// adrp x16, target
@@ -2233,40 +2222,13 @@ void AArch64AsmPrinter::LowerMOVaddrPAC(const MachineInstr &MI) {
22332222
MCInstLowering.lowerOperand(GAMOLo, GAMCLo);
22342223

22352224
EmitAndIncrement(
2236-
MCInstBuilder(AArch64::ADRP)
2237-
.addReg(IsGOTLoad && IsELFSignedGOT ? AArch64::X17 : AArch64::X16)
2238-
.addOperand(GAMCHi));
2225+
MCInstBuilder(AArch64::ADRP).addReg(AArch64::X16).addOperand(GAMCHi));
22392226

22402227
if (IsGOTLoad) {
2241-
if (IsELFSignedGOT) {
2242-
EmitAndIncrement(MCInstBuilder(AArch64::ADDXri)
2243-
.addReg(AArch64::X17)
2244-
.addReg(AArch64::X17)
2245-
.addOperand(GAMCLo)
2246-
.addImm(0));
2247-
2248-
EmitAndIncrement(MCInstBuilder(AArch64::LDRXui)
2249-
.addReg(AArch64::X16)
2250-
.addReg(AArch64::X17)
2251-
.addImm(0));
2252-
2253-
assert(GAOp.isGlobal());
2254-
assert(GAOp.getGlobal()->getValueType() != nullptr);
2255-
unsigned AuthOpcode = GAOp.getGlobal()->getValueType()->isFunctionTy()
2256-
? AArch64::AUTIA
2257-
: AArch64::AUTDA;
2258-
2259-
EmitAndIncrement(MCInstBuilder(AuthOpcode)
2260-
.addReg(AArch64::X16)
2261-
.addReg(AArch64::X16)
2262-
.addReg(AArch64::X17));
2263-
2264-
} else {
2265-
EmitAndIncrement(MCInstBuilder(AArch64::LDRXui)
2266-
.addReg(AArch64::X16)
2267-
.addReg(AArch64::X16)
2268-
.addOperand(GAMCLo));
2269-
}
2228+
EmitAndIncrement(MCInstBuilder(AArch64::LDRXui)
2229+
.addReg(AArch64::X16)
2230+
.addReg(AArch64::X16)
2231+
.addOperand(GAMCLo));
22702232
} else {
22712233
EmitAndIncrement(MCInstBuilder(AArch64::ADDXri)
22722234
.addReg(AArch64::X16)

llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp

-33
Original file line numberDiff line numberDiff line change
@@ -1291,40 +1291,7 @@ bool AArch64ExpandPseudo::expandMI(MachineBasicBlock &MBB,
12911291
MI.eraseFromParent();
12921292
return true;
12931293
}
1294-
case AArch64::LOADgotAUTH: {
1295-
Register DstReg = MI.getOperand(0).getReg();
1296-
const MachineOperand &MO1 = MI.getOperand(1);
1297-
1298-
MachineOperand GAHiOp(MO1);
1299-
MachineOperand GALoOp(MO1);
1300-
GAHiOp.addTargetFlag(AArch64II::MO_PAGE);
1301-
GALoOp.addTargetFlag(AArch64II::MO_PAGEOFF | AArch64II::MO_NC);
1302-
1303-
DebugLoc DL = MI.getDebugLoc();
1304-
BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(AArch64::ADRP), AArch64::X16)
1305-
.add(GAHiOp);
13061294

1307-
BuildMI(MBB, MBBI, DL, TII->get(AArch64::ADDXri), AArch64::X16)
1308-
.addReg(AArch64::X16)
1309-
.add(GALoOp)
1310-
.addImm(0);
1311-
1312-
BuildMI(MBB, MBBI, DL, TII->get(AArch64::LDRXui), DstReg)
1313-
.addReg(AArch64::X16)
1314-
.addImm(0);
1315-
1316-
assert(MO1.isGlobal());
1317-
assert(MO1.getGlobal()->getValueType() != nullptr);
1318-
unsigned AuthOpcode = MO1.getGlobal()->getValueType()->isFunctionTy()
1319-
? AArch64::AUTIA
1320-
: AArch64::AUTDA;
1321-
BuildMI(MBB, MBBI, DL, TII->get(AuthOpcode), DstReg)
1322-
.addReg(DstReg)
1323-
.addReg(AArch64::X16);
1324-
1325-
MI.eraseFromParent();
1326-
return true;
1327-
}
13281295
case AArch64::LOADgot: {
13291296
MachineFunction *MF = MBB.getParent();
13301297
Register DstReg = MI.getOperand(0).getReg();

llvm/lib/Target/AArch64/AArch64FastISel.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -453,9 +453,6 @@ unsigned AArch64FastISel::materializeGV(const GlobalValue *GV) {
453453
if (!Subtarget->useSmallAddressing() && !Subtarget->isTargetMachO())
454454
return 0;
455455

456-
if (FuncInfo.MF->getInfo<AArch64FunctionInfo>()->hasELFSignedGOT())
457-
return 0;
458-
459456
unsigned OpFlags = Subtarget->ClassifyGlobalReference(GV, TM);
460457

461458
EVT DestEVT = TLI.getValueType(DL, GV->getType(), true);

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -9225,11 +9225,6 @@ SDValue AArch64TargetLowering::getGOT(NodeTy *N, SelectionDAG &DAG,
92259225
SDValue GotAddr = getTargetNode(N, Ty, DAG, AArch64II::MO_GOT | Flags);
92269226
// FIXME: Once remat is capable of dealing with instructions with register
92279227
// operands, expand this into two nodes instead of using a wrapper node.
9228-
if (DAG.getMachineFunction()
9229-
.getInfo<AArch64FunctionInfo>()
9230-
->hasELFSignedGOT())
9231-
return SDValue(DAG.getMachineNode(AArch64::LOADgotAUTH, DL, Ty, GotAddr),
9232-
0);
92339228
return DAG.getNode(AArch64ISD::LOADgot, DL, Ty, GotAddr);
92349229
}
92359230

llvm/lib/Target/AArch64/AArch64InstrInfo.td

+1-6
Original file line numberDiff line numberDiff line change
@@ -1874,7 +1874,7 @@ let Predicates = [HasPAuth] in {
18741874
Sched<[WriteI, ReadI]> {
18751875
let isReMaterializable = 1;
18761876
let isCodeGenOnly = 1;
1877-
let Size = 48; // 12 fixed + 36 variable, for pointer offset, and discriminator
1877+
let Size = 40; // 12 fixed + 28 variable, for pointer offset, and discriminator
18781878
let Defs = [X16,X17];
18791879
}
18801880

@@ -1913,11 +1913,6 @@ let Predicates = [HasPAuth] in {
19131913
tcGPR64:$AddrDisc),
19141914
(AUTH_TCRETURN_BTI tcGPRx16x17:$dst, imm:$FPDiff, imm:$Key,
19151915
imm:$Disc, tcGPR64:$AddrDisc)>;
1916-
1917-
def LOADgotAUTH : Pseudo<(outs GPR64common:$dst), (ins i64imm:$addr), []>,
1918-
Sched<[WriteI, ReadI]> {
1919-
let Defs = [X16];
1920-
}
19211916
}
19221917

19231918
// v9.5-A pointer authentication extensions

llvm/lib/Target/AArch64/AArch64MCInstLower.cpp

+3-7
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
//===----------------------------------------------------------------------===//
1313

1414
#include "AArch64MCInstLower.h"
15-
#include "AArch64MachineFunctionInfo.h"
1615
#include "MCTargetDesc/AArch64MCExpr.h"
1716
#include "Utils/AArch64BaseInfo.h"
1817
#include "llvm/CodeGen/AsmPrinter.h"
@@ -186,12 +185,9 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandELF(const MachineOperand &MO,
186185
MCSymbol *Sym) const {
187186
uint32_t RefFlags = 0;
188187

189-
if (MO.getTargetFlags() & AArch64II::MO_GOT) {
190-
const MachineFunction *MF = MO.getParent()->getParent()->getParent();
191-
RefFlags |= (MF->getInfo<AArch64FunctionInfo>()->hasELFSignedGOT()
192-
? AArch64MCExpr::VK_GOT_AUTH
193-
: AArch64MCExpr::VK_GOT);
194-
} else if (MO.getTargetFlags() & AArch64II::MO_TLS) {
188+
if (MO.getTargetFlags() & AArch64II::MO_GOT)
189+
RefFlags |= AArch64MCExpr::VK_GOT;
190+
else if (MO.getTargetFlags() & AArch64II::MO_TLS) {
195191
TLSModel::Model Model;
196192
if (MO.isGlobal()) {
197193
const GlobalValue *GV = MO.getGlobal();

llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.cpp

-25
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#include "AArch64MachineFunctionInfo.h"
1717
#include "AArch64InstrInfo.h"
1818
#include "AArch64Subtarget.h"
19-
#include "llvm/BinaryFormat/ELF.h"
2019
#include "llvm/IR/Constants.h"
2120
#include "llvm/IR/Metadata.h"
2221
#include "llvm/IR/Module.h"
@@ -73,29 +72,6 @@ static bool ShouldSignWithBKey(const Function &F, const AArch64Subtarget &STI) {
7372
return Key == "b_key";
7473
}
7574

76-
// Determine if we need to treat pointers in GOT as signed (as described in
77-
// https://github.com/ARM-software/abi-aa/blob/main/pauthabielf64/pauthabielf64.rst#appendix-signed-got)
78-
// based on PAuth core info encoded as "aarch64-elf-pauthabi-platform" and
79-
// "aarch64-elf-pauthabi-version" module flags. Currently, only
80-
// AARCH64_PAUTH_PLATFORM_LLVM_LINUX platform supports signed GOT with
81-
// AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT bit in version value set.
82-
static bool hasELFSignedGOTHelper(const Function &F,
83-
const AArch64Subtarget *STI) {
84-
if (!Triple(STI->getTargetTriple()).isOSBinFormatELF())
85-
return false;
86-
const Module *M = F.getParent();
87-
const auto *PAP = mdconst::extract_or_null<ConstantInt>(
88-
M->getModuleFlag("aarch64-elf-pauthabi-platform"));
89-
if (!PAP || PAP->getZExtValue() != ELF::AARCH64_PAUTH_PLATFORM_LLVM_LINUX)
90-
return false;
91-
const auto *PAV = mdconst::extract_or_null<ConstantInt>(
92-
M->getModuleFlag("aarch64-elf-pauthabi-version"));
93-
if (!PAV)
94-
return false;
95-
return PAV->getZExtValue() &
96-
(1 << ELF::AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT);
97-
}
98-
9975
AArch64FunctionInfo::AArch64FunctionInfo(const Function &F,
10076
const AArch64Subtarget *STI) {
10177
// If we already know that the function doesn't have a redzone, set
@@ -104,7 +80,6 @@ AArch64FunctionInfo::AArch64FunctionInfo(const Function &F,
10480
HasRedZone = false;
10581
std::tie(SignReturnAddress, SignReturnAddressAll) = GetSignReturnAddress(F);
10682
SignWithBKey = ShouldSignWithBKey(F, *STI);
107-
HasELFSignedGOT = hasELFSignedGOTHelper(F, STI);
10883
// TODO: skip functions that have no instrumented allocas for optimization
10984
IsMTETagged = F.hasFnAttribute(Attribute::SanitizeMemTag);
11085

llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.h

-10
Original file line numberDiff line numberDiff line change
@@ -177,14 +177,6 @@ class AArch64FunctionInfo final : public MachineFunctionInfo {
177177
/// SignWithBKey modifies the default PAC-RET mode to signing with the B key.
178178
bool SignWithBKey = false;
179179

180-
/// HasELFSignedGOT is true if the target binary format is ELF and the IR
181-
/// module containing the corresponding function has the following flags:
182-
/// - aarch64-elf-pauthabi-platform flag equal to
183-
/// AARCH64_PAUTH_PLATFORM_LLVM_LINUX;
184-
/// - aarch64-elf-pauthabi-version flag with
185-
/// AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT bit set.
186-
bool HasELFSignedGOT = false;
187-
188180
/// SigningInstrOffset captures the offset of the PAC-RET signing instruction
189181
/// within the prologue, so it can be re-used for authentication in the
190182
/// epilogue when using PC as a second salt (FEAT_PAuth_LR)
@@ -517,8 +509,6 @@ class AArch64FunctionInfo final : public MachineFunctionInfo {
517509

518510
bool shouldSignWithBKey() const { return SignWithBKey; }
519511

520-
bool hasELFSignedGOT() const { return HasELFSignedGOT; }
521-
522512
MCSymbol *getSigningInstrLabel() const { return SignInstrLabel; }
523513
void setSigningInstrLabel(MCSymbol *Label) { SignInstrLabel = Label; }
524514

llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp

+13-19
Original file line numberDiff line numberDiff line change
@@ -875,7 +875,6 @@ class AArch64Operand : public MCParsedAsmOperand {
875875
if (DarwinRefKind == MCSymbolRefExpr::VK_PAGEOFF ||
876876
ELFRefKind == AArch64MCExpr::VK_LO12 ||
877877
ELFRefKind == AArch64MCExpr::VK_GOT_LO12 ||
878-
ELFRefKind == AArch64MCExpr::VK_GOT_AUTH_LO12 ||
879878
ELFRefKind == AArch64MCExpr::VK_DTPREL_LO12 ||
880879
ELFRefKind == AArch64MCExpr::VK_DTPREL_LO12_NC ||
881880
ELFRefKind == AArch64MCExpr::VK_TPREL_LO12 ||
@@ -987,20 +986,19 @@ class AArch64Operand : public MCParsedAsmOperand {
987986
int64_t Addend;
988987
if (AArch64AsmParser::classifySymbolRef(Expr, ELFRefKind,
989988
DarwinRefKind, Addend)) {
990-
return DarwinRefKind == MCSymbolRefExpr::VK_PAGEOFF ||
991-
DarwinRefKind == MCSymbolRefExpr::VK_TLVPPAGEOFF ||
992-
(DarwinRefKind == MCSymbolRefExpr::VK_GOTPAGEOFF && Addend == 0) ||
993-
ELFRefKind == AArch64MCExpr::VK_LO12 ||
994-
ELFRefKind == AArch64MCExpr::VK_GOT_AUTH_LO12 ||
995-
ELFRefKind == AArch64MCExpr::VK_DTPREL_HI12 ||
996-
ELFRefKind == AArch64MCExpr::VK_DTPREL_LO12 ||
997-
ELFRefKind == AArch64MCExpr::VK_DTPREL_LO12_NC ||
998-
ELFRefKind == AArch64MCExpr::VK_TPREL_HI12 ||
999-
ELFRefKind == AArch64MCExpr::VK_TPREL_LO12 ||
1000-
ELFRefKind == AArch64MCExpr::VK_TPREL_LO12_NC ||
1001-
ELFRefKind == AArch64MCExpr::VK_TLSDESC_LO12 ||
1002-
ELFRefKind == AArch64MCExpr::VK_SECREL_HI12 ||
1003-
ELFRefKind == AArch64MCExpr::VK_SECREL_LO12;
989+
return DarwinRefKind == MCSymbolRefExpr::VK_PAGEOFF
990+
|| DarwinRefKind == MCSymbolRefExpr::VK_TLVPPAGEOFF
991+
|| (DarwinRefKind == MCSymbolRefExpr::VK_GOTPAGEOFF && Addend == 0)
992+
|| ELFRefKind == AArch64MCExpr::VK_LO12
993+
|| ELFRefKind == AArch64MCExpr::VK_DTPREL_HI12
994+
|| ELFRefKind == AArch64MCExpr::VK_DTPREL_LO12
995+
|| ELFRefKind == AArch64MCExpr::VK_DTPREL_LO12_NC
996+
|| ELFRefKind == AArch64MCExpr::VK_TPREL_HI12
997+
|| ELFRefKind == AArch64MCExpr::VK_TPREL_LO12
998+
|| ELFRefKind == AArch64MCExpr::VK_TPREL_LO12_NC
999+
|| ELFRefKind == AArch64MCExpr::VK_TLSDESC_LO12
1000+
|| ELFRefKind == AArch64MCExpr::VK_SECREL_HI12
1001+
|| ELFRefKind == AArch64MCExpr::VK_SECREL_LO12;
10041002
}
10051003

10061004
// If it's a constant, it should be a real immediate in range.
@@ -3252,7 +3250,6 @@ ParseStatus AArch64AsmParser::tryParseAdrpLabel(OperandVector &Operands) {
32523250
DarwinRefKind != MCSymbolRefExpr::VK_TLVPPAGE &&
32533251
ELFRefKind != AArch64MCExpr::VK_ABS_PAGE_NC &&
32543252
ELFRefKind != AArch64MCExpr::VK_GOT_PAGE &&
3255-
ELFRefKind != AArch64MCExpr::VK_GOT_AUTH_PAGE &&
32563253
ELFRefKind != AArch64MCExpr::VK_GOT_PAGE_LO15 &&
32573254
ELFRefKind != AArch64MCExpr::VK_GOTTPREL_PAGE &&
32583255
ELFRefKind != AArch64MCExpr::VK_TLSDESC_PAGE) {
@@ -4338,8 +4335,6 @@ bool AArch64AsmParser::parseSymbolicImmVal(const MCExpr *&ImmVal) {
43384335
.Case("got", AArch64MCExpr::VK_GOT_PAGE)
43394336
.Case("gotpage_lo15", AArch64MCExpr::VK_GOT_PAGE_LO15)
43404337
.Case("got_lo12", AArch64MCExpr::VK_GOT_LO12)
4341-
.Case("got_auth", AArch64MCExpr::VK_GOT_AUTH_PAGE)
4342-
.Case("got_auth_lo12", AArch64MCExpr::VK_GOT_AUTH_LO12)
43434338
.Case("gottprel", AArch64MCExpr::VK_GOTTPREL_PAGE)
43444339
.Case("gottprel_lo12", AArch64MCExpr::VK_GOTTPREL_LO12_NC)
43454340
.Case("gottprel_g1", AArch64MCExpr::VK_GOTTPREL_G1)
@@ -5714,7 +5709,6 @@ bool AArch64AsmParser::validateInstruction(MCInst &Inst, SMLoc &IDLoc,
57145709

57155710
// Only allow these with ADDXri/ADDWri
57165711
if ((ELFRefKind == AArch64MCExpr::VK_LO12 ||
5717-
ELFRefKind == AArch64MCExpr::VK_GOT_AUTH_LO12 ||
57185712
ELFRefKind == AArch64MCExpr::VK_DTPREL_HI12 ||
57195713
ELFRefKind == AArch64MCExpr::VK_DTPREL_LO12 ||
57205714
ELFRefKind == AArch64MCExpr::VK_DTPREL_LO12_NC ||

llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -2845,9 +2845,7 @@ bool AArch64InstructionSelector::select(MachineInstr &I) {
28452845
}
28462846

28472847
if (OpFlags & AArch64II::MO_GOT) {
2848-
I.setDesc(TII.get(MF.getInfo<AArch64FunctionInfo>()->hasELFSignedGOT()
2849-
? AArch64::LOADgotAUTH
2850-
: AArch64::LOADgot));
2848+
I.setDesc(TII.get(AArch64::LOADgot));
28512849
I.getOperand(1).setTargetFlags(OpFlags);
28522850
} else if (TM.getCodeModel() == CodeModel::Large &&
28532851
!TM.isPositionIndependent()) {

llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp

+5-29
Original file line numberDiff line numberDiff line change
@@ -167,15 +167,6 @@ unsigned AArch64ELFObjectWriter::getRelocType(MCContext &Ctx,
167167
}
168168
if (SymLoc == AArch64MCExpr::VK_GOT && !IsNC)
169169
return R_CLS(ADR_GOT_PAGE);
170-
if (SymLoc == AArch64MCExpr::VK_GOT_AUTH && !IsNC) {
171-
if (IsILP32) {
172-
Ctx.reportError(Fixup.getLoc(),
173-
"ILP32 ADRP AUTH relocation not supported "
174-
"(LP64 eqv: AUTH_ADR_GOT_PAGE)");
175-
return ELF::R_AARCH64_NONE;
176-
}
177-
return ELF::R_AARCH64_AUTH_ADR_GOT_PAGE;
178-
}
179170
if (SymLoc == AArch64MCExpr::VK_GOTTPREL && !IsNC)
180171
return R_CLS(TLSIE_ADR_GOTTPREL_PAGE21);
181172
if (SymLoc == AArch64MCExpr::VK_TLSDESC && !IsNC)
@@ -246,15 +237,6 @@ unsigned AArch64ELFObjectWriter::getRelocType(MCContext &Ctx,
246237
return R_CLS(TLSLE_ADD_TPREL_LO12);
247238
if (RefKind == AArch64MCExpr::VK_TLSDESC_LO12)
248239
return R_CLS(TLSDESC_ADD_LO12);
249-
if (RefKind == AArch64MCExpr::VK_GOT_AUTH_LO12 && IsNC) {
250-
if (IsILP32) {
251-
Ctx.reportError(Fixup.getLoc(),
252-
"ILP32 ADD AUTH relocation not supported "
253-
"(LP64 eqv: AUTH_GOT_ADD_LO12_NC)");
254-
return ELF::R_AARCH64_NONE;
255-
}
256-
return ELF::R_AARCH64_AUTH_GOT_ADD_LO12_NC;
257-
}
258240
if (SymLoc == AArch64MCExpr::VK_ABS && IsNC)
259241
return R_CLS(ADD_ABS_LO12_NC);
260242

@@ -347,23 +329,17 @@ unsigned AArch64ELFObjectWriter::getRelocType(MCContext &Ctx,
347329
case AArch64::fixup_aarch64_ldst_imm12_scale8:
348330
if (SymLoc == AArch64MCExpr::VK_ABS && IsNC)
349331
return R_CLS(LDST64_ABS_LO12_NC);
350-
if ((SymLoc == AArch64MCExpr::VK_GOT ||
351-
SymLoc == AArch64MCExpr::VK_GOT_AUTH) &&
352-
IsNC) {
332+
if (SymLoc == AArch64MCExpr::VK_GOT && IsNC) {
353333
AArch64MCExpr::VariantKind AddressLoc =
354334
AArch64MCExpr::getAddressFrag(RefKind);
355-
bool IsAuth = (SymLoc == AArch64MCExpr::VK_GOT_AUTH);
356335
if (!IsILP32) {
357336
if (AddressLoc == AArch64MCExpr::VK_LO15)
358337
return ELF::R_AARCH64_LD64_GOTPAGE_LO15;
359-
return (IsAuth ? ELF::R_AARCH64_AUTH_LD64_GOT_LO12_NC
360-
: ELF::R_AARCH64_LD64_GOT_LO12_NC);
338+
return ELF::R_AARCH64_LD64_GOT_LO12_NC;
361339
}
362-
Ctx.reportError(Fixup.getLoc(),
363-
Twine("ILP32 64-bit load/store "
364-
"relocation not supported (LP64 eqv: ") +
365-
(IsAuth ? "AUTH_GOT_LO12_NC" : "LD64_GOT_LO12_NC") +
366-
Twine(')'));
340+
Ctx.reportError(Fixup.getLoc(), "ILP32 64-bit load/store "
341+
"relocation not supported (LP64 eqv: "
342+
"LD64_GOT_LO12_NC)");
367343
return ELF::R_AARCH64_NONE;
368344
}
369345
if (SymLoc == AArch64MCExpr::VK_DTPREL && !IsNC)

0 commit comments

Comments
 (0)