1010#include " CommonArgs.h"
1111#include " clang/Config/config.h"
1212#include " clang/Driver/Compilation.h"
13+ #include " clang/Driver/SanitizerArgs.h"
1314#include " llvm/Support/Path.h"
1415
1516using namespace clang ::driver;
@@ -100,6 +101,7 @@ void haiku::Linker::ConstructJob(Compilation &C, const JobAction &JA,
100101 D.getLTOMode () == LTOK_Thin);
101102 }
102103
104+ bool NeedsSanitizerDeps = addSanitizerRuntimes (ToolChain, Args, CmdArgs);
103105 addLinkerCompressDebugSectionsOption (ToolChain, Args, CmdArgs);
104106 AddLinkerInputs (ToolChain, Inputs, Args, CmdArgs, JA);
105107
@@ -125,6 +127,9 @@ void haiku::Linker::ConstructJob(Compilation &C, const JobAction &JA,
125127 addFortranRuntimeLibs (ToolChain, Args, CmdArgs);
126128 }
127129
130+ if (NeedsSanitizerDeps)
131+ linkSanitizerRuntimeDeps (ToolChain, Args, CmdArgs);
132+
128133 CmdArgs.push_back (" -lgcc" );
129134
130135 CmdArgs.push_back (" --push-state" );
@@ -281,3 +286,11 @@ void Haiku::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs,
281286Tool *Haiku::buildLinker () const { return new tools::haiku::Linker (*this ); }
282287
283288bool Haiku::HasNativeLLVMSupport () const { return true ; }
289+
290+ SanitizerMask Haiku::getSupportedSanitizers () const {
291+ SanitizerMask Res = ToolChain::getSupportedSanitizers ();
292+
293+ Res |= SanitizerKind::Address;
294+
295+ return Res;
296+ }
0 commit comments