Add more sanitizers
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user