[clang] [clang] Implement address sanitizer on AIX (1/6) (PR #129925)
David Tenty via cfe-commits
cfe-commits at lists.llvm.org
Mon May 5 20:57:17 PDT 2025
================
@@ -259,6 +260,45 @@ 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,
+ options::OPT_shared, options::OPT_r)) {
----------------
daltenty wrote:
It's unclear here why we include `options::OPT_shared`, as that isn't something that doesn't seem to happen on any other target. SInce this is special on AIX, I think we should add a comment explaining why.
https://github.com/llvm/llvm-project/pull/129925
More information about the cfe-commits
mailing list