【问题标题】:gcc: error: unrecognized command line option ‘-fsanitize-coverage=trace-pc-guard’gcc:错误:无法识别的命令行选项“-fsanitize-coverage=trace-pc-guard”
【发布时间】:2020-01-21 21:49:08
【问题描述】:

在构建火狐(旧版本包括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。

【问题讨论】:

    标签: firefox gcc address-sanitizer fuzzing


    【解决方案1】:

    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
    

    【讨论】:

    • 嗨。我按照您的建议添加了 CC 和 CXX 变量并构建了 Firefox 56.0。它是成功的,但我注意到,当 Address sanitizer 发现错误并报告其堆栈跟踪时,它不再提供符号。
    • @CloverYe 尝试使用llvm-symbolizer
    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2013-05-26
    • 2020-02-03
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多