================
@@ -338,6 +338,13 @@ void aix::Linker::ConstructJob(Compilation &C, const 
JobAction &JA,
     CmdArgs.push_back("-lpthread");
   }
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
+    
+// Required for 64-bit atomic operations used in sanitizer runtimes 
+// (e.g., sanitizer_common's atomic utilities). On 32-bit AIX, these 
+// are not natively supported, necessitating linkage with -latomic.
+  if (Sanitize.hasAnySanitizer() && IsArch32Bit) {
+    CmdArgs.push_back("-latomic");
----------------
hubert-reinterpretcast wrote:

> This minimizes the risk of inadvertently impacting sanitizer handling on 
> non-AIX targets.

Generally, placing the code in a more widely used path will lead to more likely 
detection of problems. In other words, minimizing the risk of inadvertently 
impacting sanitizer handling on AIX targets _increases the risk_ of having 
broken sanitizer handling on AIX. Considering that the risk of breaking non-AIX 
should be low (especially in an undetected manner) and that the risk of 
incorrect sanitizer handling on AIX is high during active development, I think 
deliberate attempts to isolate the AIX code (as opposed to using common code 
paths) is a mistake.

https://github.com/llvm/llvm-project/pull/125388
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to