================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits