[clang] [clang] Implement address sanitizer on AIX (PR #129925)
David Tenty via cfe-commits
cfe-commits at lists.llvm.org
Wed May 28 06:53:34 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:
Summarizing an offline discussion: the AIX linkage model, which by default doesn't have runtime pre-emption of symbols, makes it problematic when shared libraries have static copies of runtimes we'd have linked into the main application (i.e. we'd likely end up with multiple copies of the runtime in an application if allowed this, which isn't what we want)
https://github.com/llvm/llvm-project/pull/129925
More information about the cfe-commits
mailing list