================ @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits