From 60ccac31b5b85db2bb66dcba831243f44a8a7be1 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sat, 13 Apr 2024 19:20:39 +0200 Subject: [PATCH] Add more sanitizers --- .../Build/NativeCpp/CompileEnvironment.cs | 10 ++++++++++ Source/Tools/Flax.Build/Build/Toolchain.cs | 13 ------------- .../Flax.Build/Platforms/Apple/AppleToolchain.cs | 14 ++++++++++++-- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Source/Tools/Flax.Build/Build/NativeCpp/CompileEnvironment.cs b/Source/Tools/Flax.Build/Build/NativeCpp/CompileEnvironment.cs index 8b1d461c1..eac85e17e 100644 --- a/Source/Tools/Flax.Build/Build/NativeCpp/CompileEnvironment.cs +++ b/Source/Tools/Flax.Build/Build/NativeCpp/CompileEnvironment.cs @@ -46,6 +46,16 @@ namespace Flax.Build.NativeCpp /// Data races and deadlocks detector. /// Thread = 2, + + /// + /// Uninitialized memory reads detector. + /// + Memory = 4, + + /// + /// Undefined behavior (UB) detector. + /// + Undefined = 8, } /// diff --git a/Source/Tools/Flax.Build/Build/Toolchain.cs b/Source/Tools/Flax.Build/Build/Toolchain.cs index 553e80032..6d90dc850 100644 --- a/Source/Tools/Flax.Build/Build/Toolchain.cs +++ b/Source/Tools/Flax.Build/Build/Toolchain.cs @@ -182,18 +182,5 @@ namespace Flax.Build } return true; } - - /// - /// Utility that outputs the arguments for Clang with specific sanitizer. - /// - /// The sanitizers as flags. - /// The arguments list. - protected void AddClangSanitizerArgs(Sanitizer sanitizers, List args) - { - if (sanitizers.HasFlag(Sanitizer.Address)) - args.Add("-fsanitize=address"); - if (sanitizers.HasFlag(Sanitizer.Thread)) - args.Add("-fsanitize=thread"); - } } } diff --git a/Source/Tools/Flax.Build/Platforms/Apple/AppleToolchain.cs b/Source/Tools/Flax.Build/Platforms/Apple/AppleToolchain.cs index c3c96b035..8461d6aac 100644 --- a/Source/Tools/Flax.Build/Platforms/Apple/AppleToolchain.cs +++ b/Source/Tools/Flax.Build/Platforms/Apple/AppleToolchain.cs @@ -105,7 +105,7 @@ namespace Flax.Build.Platforms commonArgs.Add("objective-c++"); commonArgs.Add("-stdlib=libc++"); AddArgsCommon(options, commonArgs); - AddClangSanitizerArgs(compileEnvironment.Sanitizers, commonArgs); + AddArgsSanitizer(compileEnvironment.Sanitizers, commonArgs); switch (compileEnvironment.CppVersion) { @@ -251,7 +251,7 @@ namespace Flax.Build.Platforms { args.Add(string.Format("-o \"{0}\"", outputFilePath)); AddArgsCommon(options, args); - AddClangSanitizerArgs(options.CompileEnv.Sanitizers, args); + AddArgsSanitizer(options.CompileEnv.Sanitizers, args); if (isArchive) { @@ -438,5 +438,15 @@ namespace Flax.Build.Platforms break; } } + + protected void AddArgsSanitizer(Sanitizer sanitizers, List args) + { + if (sanitizers.HasFlag(Sanitizer.Address)) + args.Add("-fsanitize=address"); + if (sanitizers.HasFlag(Sanitizer.Thread)) + args.Add("-fsanitize=thread"); + if (sanitizers.HasFlag(Sanitizer.Undefined)) + args.Add("-fsanitize=undefined"); + } } }