github 正常安装
一些 github中未注明的依赖
sudo apt install uuid-dev pkg-config -y
antlr可选
java -jar antlr-4.7-complete.jar -o path -visitor -no-listener -Dlanguage=Cpp ECMAScript.g4
antlr-4.7 不需要添加到环境变量,但是要保证需要编译的两个文件夹里面有
js_parser js_typing
Build AFL 这一步
需要先到Superion里面make,有一个Makefile中的bug,需要把php_parser 改成 js_parser
然后再到 llvm_mode 里面 make
llvm_mode make的时候需要先添加临时的 LLVM_CONFIG
export LLVM_CONFIG=/usr/bin/llvm-config-3.9
也可以在make 的时候 设置llvm-config和系统的版本一致
这里的配置要和系统的 clang 版本一致
关于配置clang版本参考博文
https://blog.csdn.net/DumpDoctorWang/article/details/84567757
其中这一步是添加clang的链接
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.9 1 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-3.9
注意在 make 之前 先清理之前的make 残留 (make clean)
编译引擎
JerryScript
如果下载和论文中一致的版本(具体到分支),可以使用同样的编译指令
sudo apt-get install gcc-arm-none-eabi cmake cppcheck vera++
注意Python 版本是2.7的
export CC=~/Superion/afl-gcc
export CXX=~/Superion/afl-g++
python tools/build.py
常见的编译命令
--debug 调试版本
--builddir 指定构建目标目录
这一步的编译有一处bug 需要修改CMakeList(JerryScript根目录下)
删除173行 jerry_add_compile_flags(-Werror=${_warning})
删除 221行的 -Werror
jerryscript 2.4.0 不需要修改makefile