forked from mirrorer/afl
-
Notifications
You must be signed in to change notification settings - Fork 142
Open
Description
SETUP:
- OS:ubuntu 20.04
- RAM:250G
- aflgo:commit 1b81e7c
- Fuzz Taregt:llvm-dis(llvm-15.0.4)
- BBtargets.txt
llvm/tools/llvm-dis/llvm-dis.cpp:108
llvm/tools/llvm-dis/llvm-dis.cpp:109
llvm/tools/llvm-dis/llvm-dis.cpp:110Steps To Reproduce
- run AFLGo building script to configure.
- download llvm-15.0.4
# download and tar
wget https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-15.0.4.tar.gz
tar -zxvf llvmorg-15.0.4.tar.gz
mv llvm-project-llvmorg-15.0.4 llvm-project
export SUBJECT=$PWD/llvm-project3.Set targets
# Setup directory containing all temporary files
mkdir temp
export TMP_DIR=$PWD/temp
BBtargets.txt
llvm/tools/llvm-dis/llvm-dis.cpp:108
llvm/tools/llvm-dis/llvm-dis.cpp:109
llvm/tools/llvm-dis/llvm-dis.cpp:110
# Print extracted targets.
echo "Targets:"
cat $TMP_DIR/BBtargets.txt- generate CG and intra-procedural CFGs from the subject.
# Set aflgo-instrumenter
export CC=$AFLGO/instrument/aflgo-clang
export CXX=$AFLGO/instrument/aflgo-clang++
# Set aflgo-instrumentation flags
export COPY_CFLAGS=$CFLAGS
export COPY_CXXFLAGS=$CXXFLAGS
export ADDITIONAL="-targets=$TMP_DIR/BBtargets.txt -outdir=$TMP_DIR -flto -fuse-ld=gold -Wl,-plugin-opt=save-temps"
export CFLAGS="$CFLAGS $ADDITIONAL"
export CXXFLAGS="$CXXFLAGS $ADDITIONAL"
export LDFLAGS=-lpthread
# Build only LLVM
pushd llvm-project
mkdir build
pushd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER="$CC" -DCMAKE_CXX_COMPILER="$CXX"
-DCMAKE_CXX_FLAGS="$ADDITIONAL" -DCMAKE_C_FLAGS="$ADDITIONAL"
-DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS"
../llvm
ninja- Generate distance file. Firstly we need to clean up BBnames.txt and BBcalls.txt, otherwise distance_calculator may fail.
cat $TMP_DIR/BBnames.txt | grep -v "^$"| rev | cut -d: -f2- | rev | sort | uniq > $TMP_DIR/BBnames2.txt && mv $TMP_DIR/BBnames2.txt $TMP_DIR/BBnames.txt
cat $TMP_DIR/BBcalls.txt | grep -Ev "^[^,]*$|^([^,]*,){2,}[^,]*$"| sort | uniq > $TMP_DIR/BBcalls2.txt && mv $TMP_DIR/BBcalls2.txt $TMP_DIR/BBcalls.txt
$AFLGO/distance/gen_distance_fast.py $SUBJECT/build/bin $TMP_DIR llvm-disExpected Behavoirs:
$AFLGO/distance/gen_distance_fast.py $SUBJECT/build/bin $TMP_DIR llvm-dis perform well Actual Behavoirs:
(aflgo) h3d@h3d-AS-4124GS-TNR:~/HUCHENG/project/targets/llvm-project/build$ $AFLGO/distance/gen_distance_fast.py $SUBJECT/build/bin $TMP_DIR llvm-dis
(0) Constructing CG for /home/h3d/HUCHENG/project/targets/llvm-project/build/bin/llvm-dis.0.0.preopt.bc..
(1) Computing distance for callgraph
(2) Computing distance for control-flow graphs (this might take a while)
awk: fatal: cannot open file `/home/h3d/HUCHENG/project/targets/temp/dot-files/cfg._ZN4llvm12function_refIFPNS_14GlobalVariableEvEE11callback_fnIZN12_GLOBAL__N_117DataFlowSanitizer7runImplERNS_6ModuleEE3.dot' for reading (No such file or directory)
**awk: fatal**: cannot open file `/home/h3d/HUCHENG/project/targets/temp/dot-files/cfg._ZZL28predictValueUseListOrderImplPKN4llvm5ValueEPKNS_8FunctionEjRKN12_GLOBAL__N_18OrderMapERSt6vectorINS_12UseListOrderESaISB_EEENK3.dot' for reading (**No such file or directory**)
**mv**: cannot stat '/home/h3d/HUCHENG/project/targets/temp/dot-files/cfg._ZN4llvm19TargetTransformInfo5ModelIN12_GLOBAL__N_19NoTTIImplEE27preferPredicateOverEpilogueEPNS_4LoopEPNS_8LoopInfoERNS_15ScalarEvolutionERNS_15AssumptionCacheEPNS_17TargetLibraryInfoEPNS_13DominatorTreeEPNS_25LoopVectorizationLegalityE.dot.smaller.dot': **File name too long**Metadata
Metadata
Assignees
Labels
No labels