[llvm] d4cb392 - [AIX][LTO] Properly respect LDR_CNTRL and set MAXDATA32 to 0xA0000000 at DSA.

Wael Yehia via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 29 14:16:16 PST 2022


Author: Wael Yehia
Date: 2022-11-29T22:15:59Z
New Revision: d4cb39287c50234e15d11e1b5bc90e9c7ebf08b7

URL: https://github.com/llvm/llvm-project/commit/d4cb39287c50234e15d11e1b5bc90e9c7ebf08b7
DIFF: https://github.com/llvm/llvm-project/commit/d4cb39287c50234e15d11e1b5bc90e9c7ebf08b7.diff

LOG: [AIX][LTO] Properly respect LDR_CNTRL and set MAXDATA32 to 0xA0000000 at DSA.

Reviewed By: rzurob

Differential Revision: https://reviews.llvm.org/D138944

Added: 
    

Modified: 
    llvm/lib/LTO/LTOCodeGenerator.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp
index b1f0cf9a7480..1f1c9bb5f896 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 at DSA";
+  if (Optional<std::string> 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<StringRef, 8> Args = {
-      "/bin/env",     "LDR_CNTRL=MAXDATA32=0x80000000@${LDR_CNTRL}",
+      "/bin/env",     LDR_CNTRL_var,
       AssemblerPath,  Arch,
       "-many",        "-o",
       ObjectFileName, AssemblyFile};


        


More information about the llvm-commits mailing list