From d4cb39287c50234e15d11e1b5bc90e9c7ebf08b7 Mon Sep 17 00:00:00 2001 From: Wael Yehia Date: Tue, 29 Nov 2022 20:43:04 +0000 Subject: [PATCH] [AIX][LTO] Properly respect LDR_CNTRL and set MAXDATA32 to 0xA0000000@DSA. Reviewed By: rzurob Differential Revision: https://reviews.llvm.org/D138944 --- llvm/lib/LTO/LTOCodeGenerator.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp index b1f0cf9..1f1c9bb 100644 --- a/llvm/lib/LTO/LTOCodeGenerator.cpp +++ b/llvm/lib/LTO/LTOCodeGenerator.cpp @@ -261,13 +261,18 @@ bool LTOCodeGenerator::runAIXSystemAssembler(SmallString<128> &AssemblyFile) { } } + // Setup the LDR_CNTRL variable + std::string LDR_CNTRL_var = "LDR_CNTRL=MAXDATA32=0xA0000000@DSA"; + if (Optional V = sys::Process::GetEnv("LDR_CNTRL")) + LDR_CNTRL_var += ("@" + *V); + // Prepare inputs for the assember. const auto &Triple = TargetMach->getTargetTriple(); const char *Arch = Triple.isArch64Bit() ? "-a64" : "-a32"; std::string ObjectFileName(AssemblyFile); ObjectFileName[ObjectFileName.size() - 1] = 'o'; SmallVector Args = { - "/bin/env", "LDR_CNTRL=MAXDATA32=0x80000000@${LDR_CNTRL}", + "/bin/env", LDR_CNTRL_var, AssemblerPath, Arch, "-many", "-o", ObjectFileName, AssemblyFile}; -- 2.7.4