You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译LLVMFuzzerTestOneInput遇DWARF错误及链接问题求助

解决AFL++编译XPDF 3.02模糊测试Harness的三类问题

1. DWARF错误:invalid or unhandled FORM value: 0x25

这个错误源于高版本GCC生成的DWARF格式超出了AFL++默认解析器的兼容范围,XPDF 3.02作为老版本软件,适配低版本GCC即可解决:

  • 安装GCC 8(或7):sudo apt install gcc-8 g++-8
  • 切换默认编译器:
    update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80
    update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 80
    
  • 编译XPDF时强制生成DWARF2格式:
    ./configure CC=gcc-8 CXX=g++-8 CFLAGS="-gdwarf-2" CXXFLAGS="-gdwarf-2"
    make
    

2. 符号多重定义(如__afl_trace)

这类冲突多因重复链接AFL++运行时库或插桩/静态链接配置矛盾:

  • 检查harness代码,避免手动引入afl-fuzz.h后又叠加-fsanitize=address或重复指定-lafl参数
  • 编译harness时只保留必要的AFL++参数,示例命令:
    afl-clang-fast++ -o xpdf_harness xpdf_harness.cpp -L./xpdf-3.02/build/lib -lxpdf -lfreetype -ljpeg -lpng -lz
    
  • 若静态链接引发冲突,改用动态链接,或编译XPDF时添加--enable-static=no配置

3. MemStream、PDFDoc相关方法的未定义引用

这是链接阶段未正确关联XPDF的库文件和头文件路径导致的:

  • 确认XPDF编译后生成了libxpdf.a或libxpdf.so,路径无误
  • 编译harness时必须指定头文件目录、库目录并链接XPDF库,示例命令:
    afl-clang-fast++ -o xpdf_harness xpdf_harness.cpp -I./xpdf-3.02/include -L./xpdf-3.02/lib -lxpdf -lfreetype -ljpeg -lpng -lz -lm
    
  • 检查XPDF的configure选项,确保启用了MemStream相关模块(若XPDF 3.02提供--enable-memstream选项则开启)

内容的提问来源于stack exchange,提问作者Krumelmonster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:12:02