无法使用afl-clangfast+交叉编译和链接源代码+; 我试图用AFL PLUS加Clang-编译器(LLVMYMODE)来模糊一个简单的C++代码。我能够模糊代码并生成ARM对象文件,但链接时失败。我想我错过了一些链接器选项。任何帮助都将不胜感激

无法使用afl-clangfast+交叉编译和链接源代码+; 我试图用AFL PLUS加Clang-编译器(LLVMYMODE)来模糊一个简单的C++代码。我能够模糊代码并生成ARM对象文件,但链接时失败。我想我错过了一些链接器选项。任何帮助都将不胜感激,llvm,cross-compiling,llvm-clang,linaro,american-fuzzy-lop,Llvm,Cross Compiling,Llvm Clang,Linaro,American Fuzzy Lop,以下是我的命令: afl-clang-fast++ --target=arm-linux-gnueabihf --rtlib=compiler-rt --stdlib=libc++ -nostdinc++ -I${root}/include/c++/v1 -Wl,-L${root}/lib --sysroot ${sysroot} --gcc-toolchain=/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gn

以下是我的命令:

afl-clang-fast++  --target=arm-linux-gnueabihf --rtlib=compiler-rt --stdlib=libc++ -nostdinc++ -I${root}/include/c++/v1 -Wl,-L${root}/lib --sysroot ${sysroot} --gcc-toolchain=/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf -rpath ${root}/lib TestCodeX86toARM.cpp -o Test -v
root和sysroot值如下所示

root=/path/to/clang/install_dir

sysroot=/path/to/linarogcc/arm-linux-gnueabihf/libc
从输出中,我可以得出结论,在Linaro工具链的帮助下,编译正在进行,但链接正在失败

输出:

afl-clang-fast++2.66d by <lszekeres@google.com> in CLASSIC mode
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: arm--linux-gnueabihf
Thread model: posix
InstalledDir: /usr/lib/llvm-6.0/bin
Found candidate GCC installation: /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0
Selected GCC installation: /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0
Candidate multilib: .;@m32
Selected multilib: .;@m32
 "/usr/lib/llvm-6.0/bin/clang" -cc1 -triple armv6kz--linux-gnueabihf -emit-obj -disable-free -disable-llvm-verifier -discard-value-names -main-file-name TestCodeX86toARM.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu arm1176jzf-s -target-feature +strict-align -target-abi aapcs-linux -mfloat-abi hard -fallow-half-arguments-and-returns -dwarf-column-info -debug-info-kind=limited -dwarf-version=4 -debugger-tuning=gdb -v -nostdinc++ -resource-dir /usr/lib/llvm-6.0/lib/clang/6.0.0 -I /home/user/Tejas/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/include/c++/v1 -D __AFL_HAVE_MANUAL_CONTROL=1 -D __AFL_COMPILER=1 -D FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION=1 -D __AFL_FUZZ_INIT()=int __afl_sharedmem_fuzzing = 1;extern unsigned int *__afl_fuzz_len;extern unsigned char *__afl_fuzz_ptr;unsigned char __afl_fuzz_alt[1024000];unsigned char *__afl_fuzz_alt_ptr = __afl_fuzz_alt; -D __AFL_FUZZ_TESTCASE_BUF=(__afl_fuzz_ptr ? __afl_fuzz_ptr : __afl_fuzz_alt_ptr) -D __AFL_FUZZ_TESTCASE_LEN=(__afl_fuzz_ptr ? *__afl_fuzz_len : (*__afl_fuzz_len = read(0, __afl_fuzz_alt_ptr, 1024000)) == 0xffffffff ? 0 : *__afl_fuzz_len) -D "__AFL_LOOP(_A)=({ static volatile char *_B __attribute__((used));  _B = (char*)\"##SIG_AFL_PERSISTENT##\"; __attribute__((visibility(\"default\"))) int _L(unsigned int) __asm__(\"__afl_persistent_loop\"); _L(_A); })" -D "__AFL_INIT()=do { static volatile char *_A __attribute__((used));  _A = (char*)\"##SIG_AFL_DEFER_FORKSRV##\"; __attribute__((visibility(\"default\"))) void _I(void) __asm__(\"__afl_manual_init\"); _I(); } while (0)" -isysroot /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc -internal-isystem /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/local/include -internal-isystem /usr/lib/llvm-6.0/lib/clang/6.0.0/include -internal-externc-isystem /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/include -internal-externc-isystem /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include -O3 -Wno-unused-command-line-argument -fdeprecated-macro -fdebug-compilation-dir /home/user/Tejas/CrossCopileTestCode -ferror-limit 19 -fmessage-length 87 -funroll-loops -fno-signed-char -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -load /usr/local/lib/afl/afl-llvm-pass.so -o /tmp/TestCodeX86toARM-c0d8ac.o -x c++ TestCodeX86toARM.cpp
clang -cc1 version 6.0.0 based upon LLVM 6.0.0 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/local/include"
ignoring nonexistent directory "/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/user/Tejas/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/include/c++/v1
 /usr/lib/llvm-6.0/lib/clang/6.0.0/include
 /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include
End of search list.
afl-llvm-pass++2.66d by <lszekeres@google.com> and <adrian.herrera@anu.edu.au>
[+] Instrumented 3 locations (non-hardened mode, ratio 100%).
 "/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../arm-linux-gnueabihf/bin/ld" --sysroot=/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc -z relro -X --hash-style=gnu --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-linux-armhf.so.3 -o Test /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/../lib/crt1.o /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/../lib/crti.o /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0/crtbegin.o -L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0 -L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../arm-linux-gnueabihf/lib/../lib -L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/../lib -L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/../lib -L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../arm-linux-gnueabihf/lib -L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib -L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib -L/home/user/Tejas/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/lib -rpath /home/user/Tejas/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/lib /tmp/TestCodeX86toARM-c0d8ac.o /usr/local/lib/afl/afl-llvm-rt.o -lc++ -lm /usr/lib/llvm-6.0/lib/clang/6.0.0/lib/linux/libclang_rt.builtins-armhf.a -lc /usr/lib/llvm-6.0/lib/clang/6.0.0/lib/linux/libclang_rt.builtins-armhf.a /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0/crtend.o /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/../lib/crtn.o
/usr/local/lib/afl/afl-llvm-rt.o: file not recognized: File format not recognized
clang: error: linker command failed with exit code 1 (use -v to see invocation)
经典模式下的afl clang fast++2.66d 铿锵版本6.0.0-1ubuntu2(标签/发行版\u 600/最终版) 目标:arm——linux gnueabihf 线程模型:posix InstalledDir:/usr/lib/llvm-6.0/bin 找到候选GCC安装:/home/user/Tejas/LLVM/GCC-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/GCC/arm-linux-gnueabihf/7.5.0 所选GCC安装:/home/user/Tejas/LLVM/GCC-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/GCC/arm-linux-gnueabihf/7.5.0 候选多重库:@m32 所选多库:@m32 “/usr/lib/llvm-6.0/bin/clang”-cc1-三重armv6kz-linux gnueabihf-emit obj-禁用free-禁用llvm验证器-丢弃值名称-主文件名TestCodeX86toARM.cpp-mrelocation model static-mthread model posix-mdisable fp elim-fmath errno-masm verbose-mconstructor别名-fuse init数组-目标cpu arm1176jzf-s-目标功能+严格对齐-目标abiaapcs linux-mfloat abi hard-fallow半参数和返回-dwarf列信息-debug info kind=limited-dwarf version=4-debugger tuning=gdb-v-nostinc++-resource dir/usr/lib/llvm-6.0/lib/clang/6.0.0-I/home/user/Tejas/clang+llvm-10.0.0-x86\u 64-linux-gnu-ubuntu-18.04/include/c++/v1-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION=1-D_uuafl_FUZZ_INIT()=int_uuafl_sharedmem_FUZZING=1;外部无符号整数*\uuu afl\u fuzz\u len;外部无符号字符*\uuuuAFL\uFuzz\uPTR;无符号字符[1024000];无符号字符*\uuuuAFL\uFuzz\uAlt\uPTR=\uuuuuAFL\uFuzz\uAlt-10月10日,研究者们在一个关于模糊模糊理论的测试用例(测试用例的测试用例)的测试用例(BUF=((基于模糊模糊理论的模糊理论的研究者们的模糊模糊理论的ptr:::卢浮浮浮浮浮夫的模糊理论的测试用例(测试用例)的测试用例(测试用例)的测试用例(测试用例测试用例)的研究者们的模糊测试用例(测试用例的模糊模糊模糊模糊——ptr??????????\浮浮浮浮式模糊——模糊——模糊——模糊——模糊的模糊。据据前言前言前言:::::::(((*:(*4000。据据据据据据据据据据据目前目前目前,4000::::::(*4000。4000。4000。据据据据据据据据据据据在4000年,在在4000年,在4000年,在4000年,在4000年,在4000年,在4000年,在4000年,在4000年,在4000年,在4000年-D“u AFL_循环(_A)=({静态易失性字符*_B_u属性uu((使用));_B=(字符*)\”#SIG_AFL_持久##\“UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU(0)while(0)"-isysroot/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_-arm-linux-gnueabihf/arm-linux-gnueabihf/libc-internal-isystem/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_-arm-linux-gnueabihf/arm-gnueabihf/libc/usr/local/include-internal-isystem/usr/lib/lib/lib/LLVM-6.0/claude-internal-isystem/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/include-内部外部isystem/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include-O3-Wno未使用的命令行参数-fdeprecated宏-fdebug编译目录FLOR C++ 19 - FNOR-符号char -fObcRunTime= GCC -FCXX例外- FCutoType显示选项-FCULL诊断-矢量化循环-矢量化SLP -加载/ Ur/Pras/Lab/AFL/AFL LVVM PASS.SO O/TMP/TestCouDIS86toARM-C0D8AC.O-XC+TestCoCux86toARM.CPP clang-cc1版本6.0.0基于LLVM 6.0.0默认目标x86_64-pc-linux-gnu 忽略不存在的目录“/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/local/include” 忽略不存在的目录“/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/include” #包括“…”搜索从这里开始: #包括搜索从这里开始: /home/user/Tejas/clang+llvm-10.0.0-x86_64-linux-gnu-ubuntu-18.04/include/c++/v1 /usr/lib/llvm-6.0/lib/clang/6.0.0/include /home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include 搜索列表结束。 afl llvm通过和传递++2.66d [+]仪表化3个位置(非硬化模式,比率100%)。 “/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../../arm linux-gnueabihf/bin/ld”--sysroot=/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_-arm-linux-gnueabihf/arm-linux-gnueabihf/libc-z relro-X--hash style=gnu--eh frame hdr-m armelf-linux-eabi-dynamic linker/lib/ld-linux-armhf.so.3-o Test/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_-arm-linux-linux-abihf/arm/lib/linux/lib/cru t1//4.8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 0-L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../../../arm linux-gnueabihf/lib/../lib-L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm/lib/lib-L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib//lib-L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0/../../../../../../../arm-linux-gnueabihf/lib-L/home/user/Tejas/LLVM/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib-L/home/user/Teja