[clang] [clang] Implement address sanitizer on AIX (PR #129925)

David Tenty via cfe-commits cfe-commits at lists.llvm.org
Wed May 28 06:55:09 PDT 2025


================
@@ -259,6 +260,56 @@ void aix::Linker::ConstructJob(Compilation &C, const JobAction &JA,
   // Specify linker input file(s).
   AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
 
+  // Add sanitizer libraries.
+  const SanitizerArgs &Sanitize = ToolChain.getSanitizerArgs(Args);
+  const char *sanitizer = nullptr;
+  bool NeedsSanitizerDeps = false;
+  // For now, only support address sanitizer.
+  if (Sanitize.needsAsanRt())
+    sanitizer = "AddressSanitizer";
+
+  if (sanitizer) {
+    if (Sanitize.needsSharedRt()) {
+      ToolChain.getDriver().Diag(diag::err_drv_unsupported_shared_sanitizer_aix)
+          << sanitizer;
+      return;
+    }
+    NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
+  }
+
+  // Add sanitizer runtime dependencies.
+  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles,
----------------
daltenty wrote:

nit: add comment 
```suggestion
  // note: having the static runtime linked into shared libraries can
  // lead to multiple copies of the runtime with AIX's linkage model, 
  // so disallow that.
  if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles,
```

https://github.com/llvm/llvm-project/pull/129925


More information about the cfe-commits mailing list