Add more sanitizer flags to shows more bugs
This commit is contained in:
parent
b8bd648ad9
commit
f827bcd2f3
3 changed files with 59 additions and 19 deletions
|
@ -67,10 +67,10 @@ def get_opts():
|
|||
BoolVariable("use_static_cpp", "Link libgcc and libstdc++ statically for better portability", True),
|
||||
BoolVariable("use_coverage", "Test Godot coverage", False),
|
||||
BoolVariable("use_ubsan", "Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)", False),
|
||||
BoolVariable("use_asan", "Use LLVM/GCC compiler address sanitizer (ASAN))", False),
|
||||
BoolVariable("use_lsan", "Use LLVM/GCC compiler leak sanitizer (LSAN))", False),
|
||||
BoolVariable("use_tsan", "Use LLVM/GCC compiler thread sanitizer (TSAN))", False),
|
||||
BoolVariable("use_msan", "Use LLVM/GCC compiler memory sanitizer (MSAN))", False),
|
||||
BoolVariable("use_asan", "Use LLVM/GCC compiler address sanitizer (ASAN)", False),
|
||||
BoolVariable("use_lsan", "Use LLVM/GCC compiler leak sanitizer (LSAN)", False),
|
||||
BoolVariable("use_tsan", "Use LLVM/GCC compiler thread sanitizer (TSAN)", False),
|
||||
BoolVariable("use_msan", "Use LLVM compiler memory sanitizer (MSAN)", False),
|
||||
BoolVariable("pulseaudio", "Detect and use PulseAudio", True),
|
||||
BoolVariable("udev", "Use udev for gamepad connection callbacks", True),
|
||||
BoolVariable("debug_symbols", "Add debugging symbols to release/release_debug builds", True),
|
||||
|
@ -147,11 +147,23 @@ def configure(env):
|
|||
env.extra_suffix += "s"
|
||||
|
||||
if env["use_ubsan"]:
|
||||
env.Append(CCFLAGS=["-fsanitize=undefined"])
|
||||
env.Append(
|
||||
CCFLAGS=[
|
||||
"-fsanitize=undefined,shift,shift-exponent,integer-divide-by-zero,unreachable,vla-bound,null,return,signed-integer-overflow,bounds,float-divide-by-zero,float-cast-overflow,nonnull-attribute,returns-nonnull-attribute,bool,enum,vptr,pointer-overflow,builtin"
|
||||
]
|
||||
)
|
||||
env.Append(LINKFLAGS=["-fsanitize=undefined"])
|
||||
if env["use_llvm"]:
|
||||
env.Append(
|
||||
CCFLAGS=[
|
||||
"-fsanitize=nullability-return,nullability-arg,function,nullability-assign,implicit-integer-sign-change,implicit-signed-integer-truncation,implicit-unsigned-integer-truncation"
|
||||
]
|
||||
)
|
||||
else:
|
||||
env.Append(CCFLAGS=["-fsanitize=bounds-strict"])
|
||||
|
||||
if env["use_asan"]:
|
||||
env.Append(CCFLAGS=["-fsanitize=address"])
|
||||
env.Append(CCFLAGS=["-fsanitize=address,pointer-subtract,pointer-compare"])
|
||||
env.Append(LINKFLAGS=["-fsanitize=address"])
|
||||
|
||||
if env["use_lsan"]:
|
||||
|
@ -162,8 +174,10 @@ def configure(env):
|
|||
env.Append(CCFLAGS=["-fsanitize=thread"])
|
||||
env.Append(LINKFLAGS=["-fsanitize=thread"])
|
||||
|
||||
if env["use_msan"]:
|
||||
if env["use_msan"] and env["use_llvm"]:
|
||||
env.Append(CCFLAGS=["-fsanitize=memory"])
|
||||
env.Append(CCFLAGS=["-fsanitize-memory-track-origins"])
|
||||
env.Append(CCFLAGS=["-fsanitize-recover=memory"])
|
||||
env.Append(LINKFLAGS=["-fsanitize=memory"])
|
||||
|
||||
if env["use_lto"]:
|
||||
|
|
|
@ -34,9 +34,9 @@ def get_opts():
|
|||
BoolVariable("debug_symbols", "Add debugging symbols to release/release_debug builds", True),
|
||||
BoolVariable("separate_debug_symbols", "Create a separate file containing debugging symbols", False),
|
||||
BoolVariable("use_ubsan", "Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)", False),
|
||||
BoolVariable("use_asan", "Use LLVM/GCC compiler address sanitizer (ASAN))", False),
|
||||
BoolVariable("use_lsan", "Use LLVM/GCC compiler leak sanitizer (LSAN))", False),
|
||||
BoolVariable("use_tsan", "Use LLVM/GCC compiler thread sanitizer (TSAN))", False),
|
||||
BoolVariable("use_asan", "Use LLVM/GCC compiler address sanitizer (ASAN)", False),
|
||||
BoolVariable("use_lsan", "Use LLVM/GCC compiler leak sanitizer (LSAN)", False),
|
||||
BoolVariable("use_tsan", "Use LLVM/GCC compiler thread sanitizer (TSAN)", False),
|
||||
]
|
||||
|
||||
|
||||
|
@ -136,11 +136,23 @@ def configure(env):
|
|||
env.extra_suffix += "s"
|
||||
|
||||
if env["use_ubsan"]:
|
||||
env.Append(CCFLAGS=["-fsanitize=undefined"])
|
||||
env.Append(
|
||||
CCFLAGS=[
|
||||
"-fsanitize=undefined,shift,shift-exponent,integer-divide-by-zero,unreachable,vla-bound,null,return,signed-integer-overflow,bounds,float-divide-by-zero,float-cast-overflow,nonnull-attribute,returns-nonnull-attribute,bool,enum,vptr,pointer-overflow,builtin"
|
||||
]
|
||||
)
|
||||
env.Append(LINKFLAGS=["-fsanitize=undefined"])
|
||||
if env["use_llvm"]:
|
||||
env.Append(
|
||||
CCFLAGS=[
|
||||
"-fsanitize=nullability-return,nullability-arg,function,nullability-assign,implicit-integer-sign-change,implicit-signed-integer-truncation,implicit-unsigned-integer-truncation"
|
||||
]
|
||||
)
|
||||
else:
|
||||
env.Append(CCFLAGS=["-fsanitize=bounds-strict"])
|
||||
|
||||
if env["use_asan"]:
|
||||
env.Append(CCFLAGS=["-fsanitize=address"])
|
||||
env.Append(CCFLAGS=["-fsanitize=address,pointer-subtract,pointer-compare"])
|
||||
env.Append(LINKFLAGS=["-fsanitize=address"])
|
||||
|
||||
if env["use_lsan"]:
|
||||
|
|
|
@ -35,11 +35,11 @@ def get_opts():
|
|||
BoolVariable("use_static_cpp", "Link libgcc and libstdc++ statically for better portability", True),
|
||||
BoolVariable("use_coverage", "Test Godot coverage", False),
|
||||
BoolVariable("use_ubsan", "Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)", False),
|
||||
BoolVariable("use_asan", "Use LLVM/GCC compiler address sanitizer (ASAN))", False),
|
||||
BoolVariable("use_lsan", "Use LLVM/GCC compiler leak sanitizer (LSAN))", False),
|
||||
BoolVariable("use_tsan", "Use LLVM/GCC compiler thread sanitizer (TSAN))", False),
|
||||
BoolVariable("use_asan", "Use LLVM/GCC compiler address sanitizer (ASAN)", False),
|
||||
BoolVariable("use_lsan", "Use LLVM/GCC compiler leak sanitizer (LSAN)", False),
|
||||
BoolVariable("use_tsan", "Use LLVM/GCC compiler thread sanitizer (TSAN)", False),
|
||||
BoolVariable("use_msan", "Use LLVM compiler memory sanitizer (MSAN)", False),
|
||||
BoolVariable("debug_symbols", "Add debugging symbols to release/release_debug builds", True),
|
||||
BoolVariable("use_msan", "Use LLVM/GCC compiler memory sanitizer (MSAN))", False),
|
||||
BoolVariable("separate_debug_symbols", "Create a separate file containing debugging symbols", False),
|
||||
BoolVariable("execinfo", "Use libexecinfo on systems where glibc is not available", False),
|
||||
]
|
||||
|
@ -104,11 +104,23 @@ def configure(env):
|
|||
env.extra_suffix += "s"
|
||||
|
||||
if env["use_ubsan"]:
|
||||
env.Append(CCFLAGS=["-fsanitize=undefined"])
|
||||
env.Append(
|
||||
CCFLAGS=[
|
||||
"-fsanitize=undefined,shift,shift-exponent,integer-divide-by-zero,unreachable,vla-bound,null,return,signed-integer-overflow,bounds,float-divide-by-zero,float-cast-overflow,nonnull-attribute,returns-nonnull-attribute,bool,enum,vptr,pointer-overflow,builtin"
|
||||
]
|
||||
)
|
||||
env.Append(LINKFLAGS=["-fsanitize=undefined"])
|
||||
if env["use_llvm"]:
|
||||
env.Append(
|
||||
CCFLAGS=[
|
||||
"-fsanitize=nullability-return,nullability-arg,function,nullability-assign,implicit-integer-sign-change,implicit-signed-integer-truncation,implicit-unsigned-integer-truncation"
|
||||
]
|
||||
)
|
||||
else:
|
||||
env.Append(CCFLAGS=["-fsanitize=bounds-strict"])
|
||||
|
||||
if env["use_asan"]:
|
||||
env.Append(CCFLAGS=["-fsanitize=address"])
|
||||
env.Append(CCFLAGS=["-fsanitize=address,pointer-subtract,pointer-compare"])
|
||||
env.Append(LINKFLAGS=["-fsanitize=address"])
|
||||
|
||||
if env["use_lsan"]:
|
||||
|
@ -119,8 +131,10 @@ def configure(env):
|
|||
env.Append(CCFLAGS=["-fsanitize=thread"])
|
||||
env.Append(LINKFLAGS=["-fsanitize=thread"])
|
||||
|
||||
if env["use_msan"]:
|
||||
if env["use_msan"] and env["use_llvm"]:
|
||||
env.Append(CCFLAGS=["-fsanitize=memory"])
|
||||
env.Append(CCFLAGS=["-fsanitize-memory-track-origins"])
|
||||
env.Append(CCFLAGS=["-fsanitize-recover=memory"])
|
||||
env.Append(LINKFLAGS=["-fsanitize=memory"])
|
||||
|
||||
if env["use_lto"]:
|
||||
|
|
Loading…
Reference in a new issue