mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-15 11:28:08 +00:00
fix UBSAN handling, update docs
This commit is contained in:
@ -25,9 +25,8 @@ tools make fairly broad use of environmental variables:
|
|||||||
- see [notes_for_asan.md](notes_for_asan.md).
|
- see [notes_for_asan.md](notes_for_asan.md).
|
||||||
|
|
||||||
(You can also enable MSAN via AFL_USE_MSAN; ASAN and MSAN come with the
|
(You can also enable MSAN via AFL_USE_MSAN; ASAN and MSAN come with the
|
||||||
same gotchas; the modes are mutually exclusive. UBSAN and other exotic
|
same gotchas; the modes are mutually exclusive. UBSAN can be enabled
|
||||||
sanitizers are not officially supported yet, but are easy to get to work
|
similarly by setting the environment variable AFL_USE_UBSAN=1)
|
||||||
by hand.)
|
|
||||||
|
|
||||||
- Setting AFL_CC, AFL_CXX, and AFL_AS lets you use alternate downstream
|
- Setting AFL_CC, AFL_CXX, and AFL_AS lets you use alternate downstream
|
||||||
compilation tools, rather than the default 'clang', 'gcc', or 'as' binaries
|
compilation tools, rather than the default 'clang', 'gcc', or 'as' binaries
|
||||||
|
@ -136,7 +136,8 @@ istruction that will cause SIGILL (ud2 on x86) when an undefined behaviour
|
|||||||
is detected. This is the option that you want to use when combining AFL++
|
is detected. This is the option that you want to use when combining AFL++
|
||||||
and UBSan.
|
and UBSan.
|
||||||
|
|
||||||
AFL_USE_UBSAN=1 env var will add this compiler flag to afl-clang-fast for you.
|
AFL_USE_UBSAN=1 env var will add this compiler flag to afl-clang-fast,
|
||||||
|
afl-gcc-fast and afl-gcc for you.
|
||||||
|
|
||||||
Old versions of UBSAN don't offer a consistent way
|
Old versions of UBSAN don't offer a consistent way
|
||||||
to abort() on fault conditions or to terminate with a distinctive exit code
|
to abort() on fault conditions or to terminate with a distinctive exit code
|
||||||
|
@ -192,13 +192,13 @@ static void edit_params(u32 argc, char** argv) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getenv("AFL_USE_UBSAN")) {
|
}
|
||||||
|
|
||||||
cc_params[cc_par_cnt++] = "-fsanitize=undefined";
|
if (getenv("AFL_USE_UBSAN")) {
|
||||||
cc_params[cc_par_cnt++] = "-fsanitize-undefined-trap-on-error";
|
|
||||||
cc_params[cc_par_cnt++] = "-fno-sanitize-recover=all";
|
|
||||||
|
|
||||||
}
|
cc_params[cc_par_cnt++] = "-fsanitize=undefined";
|
||||||
|
cc_params[cc_par_cnt++] = "-fsanitize-undefined-trap-on-error";
|
||||||
|
cc_params[cc_par_cnt++] = "-fno-sanitize-recover=all";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,13 +300,13 @@ static void edit_params(u32 argc, char** argv) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getenv("AFL_USE_UBSAN")) {
|
}
|
||||||
|
|
||||||
cc_params[cc_par_cnt++] = "-fsanitize=undefined";
|
if (getenv("AFL_USE_UBSAN")) {
|
||||||
cc_params[cc_par_cnt++] = "-fsanitize-undefined-trap-on-error";
|
|
||||||
cc_params[cc_par_cnt++] = "-fno-sanitize-recover=all";
|
|
||||||
|
|
||||||
}
|
cc_params[cc_par_cnt++] = "-fsanitize=undefined";
|
||||||
|
cc_params[cc_par_cnt++] = "-fsanitize-undefined-trap-on-error";
|
||||||
|
cc_params[cc_par_cnt++] = "-fno-sanitize-recover=all";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,15 +282,11 @@ static void edit_params(u32 argc, char** argv) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!asan_set) {
|
if (getenv("AFL_USE_UBSAN")) {
|
||||||
|
|
||||||
if (getenv("AFL_USE_UBSAN")) {
|
cc_params[cc_par_cnt++] = "-fsanitize=undefined";
|
||||||
|
cc_params[cc_par_cnt++] = "-fsanitize-undefined-trap-on-error";
|
||||||
cc_params[cc_par_cnt++] = "-fsanitize=undefined";
|
cc_params[cc_par_cnt++] = "-fno-sanitize-recover=all";
|
||||||
cc_params[cc_par_cnt++] = "-fsanitize-undefined-trap-on-error";
|
|
||||||
cc_params[cc_par_cnt++] = "-fno-sanitize-recover=all";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user