gcc: error: unrecognized command line option ‘-fsanitize-coverage=trace-pc-guard’

gcc: error: unrecognized command line option ‘-fsanitize-coverage=trace-pc-guard’

在构建 Firefox(包括 56.0、57.0 在内的旧版本)期间,我多次遇到以下错误:

gcc: error: unrecognized command line option ‘-fsanitize-coverage=trace-pc-guard’; did you mean ‘-fsanitize-coverage=trace-pc’?

无论是在 ASAN 构建还是正常调试构建中。

对于正常调试,我使用了以下选项:

ac_add_options --disable-jemalloc
ac_add_options --enable-crashreporter
ac_add_options --disable-elf-hack
export MOZ_DEBUG_SYMBOLS=1
ac_add_options --enable-debug-symbols
ac_add_options --disable-install-strip
ac_add_options --disable-strip
ac_add_options --disable-optimize
ac_add_options --enable-debug
ac_add_options --disable-profiling
ac_add_options --enable-fuzzing

我的猜测是它与选项 --enable-fuzzing 有关,但不知道为什么以及如何修复。

PS: 我有 g++, gcc 版本 7.4.0.

GCC 不支持消毒剂覆盖,但您可以改用 clang:

apt-get install clang
# or, to force a specific version of clang:
apt-get install clang-8
export CC=clang
export CXX=clang++
# or, force a specific version of clang:
export CC=clang-8
export CXX=clang++-8