Add more sanitizers

This commit is contained in:
Wojtek Figat
2024-04-13 19:20:39 +02:00
parent d42e315e55
commit 60ccac31b5
3 changed files with 22 additions and 15 deletions

View File

@@ -46,6 +46,16 @@ namespace Flax.Build.NativeCpp
/// Data races and deadlocks detector.
/// </summary>
Thread = 2,
/// <summary>
/// Uninitialized memory reads detector.
/// </summary>
Memory = 4,
/// <summary>
/// Undefined behavior (UB) detector.
/// </summary>
Undefined = 8,
}
/// <summary>

View File

@@ -182,18 +182,5 @@ namespace Flax.Build
}
return true;
}
/// <summary>
/// Utility that outputs the arguments for Clang with specific sanitizer.
/// </summary>
/// <param name="options">The sanitizers as flags.</param>
/// <param name="options">The arguments list.</param>
protected void AddClangSanitizerArgs(Sanitizer sanitizers, List<string> args)
{
if (sanitizers.HasFlag(Sanitizer.Address))
args.Add("-fsanitize=address");
if (sanitizers.HasFlag(Sanitizer.Thread))
args.Add("-fsanitize=thread");
}
}
}

View File

@@ -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<string> 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");
}
}
}