[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