macOS 上的 libfuzzer 未找到架构 x86_64

Posted

技术标签:

【中文标题】macOS 上的 libfuzzer 未找到架构 x86_64【英文标题】:libfuzzer on macOS not found for architecture x86_64 【发布时间】:2019-12-05 10:28:51 【问题描述】:

我正在尝试在 macOS 10.14.6 和 CLion 2019.2.5 上编译一个简单的模糊测试示例

#include <stdint.h>
#include <stddef.h>

extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) 
    if (size > 0 && data[0] == 'H')
        if (size > 1 && data[1] == 'I')
            if (size > 2 && data[2] == '!')
                __builtin_trap();
    return 0;

这也显示在这里https://llvm.org/docs/LibFuzzer.html#toy-example 如果已经设置了我的 CMakeLists.txt 一切正常,他正在链接 CXX 可执行文件之后发生错误

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64

当我通过终端编译时出现同样的错误我用 Ubuntu 18.04 的 Virtualbox 进行了尝试 - 相同的 Clion 版本和 Cmakelist 没有问题

【问题讨论】:

【参考方案1】:

使用正确的编译器,而不是苹果的编译器,它会起作用, -> brew install llvm 将首选项编译器 c 和 c++ 设置为 /usr/local/opt/llvm/bin/clang

【讨论】:

以上是关于macOS 上的 libfuzzer 未找到架构 x86_64的主要内容,如果未能解决你的问题,请参考以下文章

未找到 macOS Clang C++17 文件系统标头

macOS 和 dyld:未找到符号:_usdt_create_provider

MacOS 上的 Spyder。打字很慢

未找到目标文件“macos”

是否可以告诉 libfuzzer 忽略某些代码?

如何让 Libfuzzer 像 AFL 一样不停地运行?