Théophile Bastian
3d336de196
Once rbp has been set in the DWARF, if this flag is set, nothing will remove it from the table. This mimicks gcc and allows us to check easily our tables against theirs.
48 lines
1.2 KiB
Bash
Executable file
48 lines
1.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
USAGE="$0 output_dir nb_tests
|
|
You may also set COMPILE_CMD to eg. 'gcc -O2' if you want to override the
|
|
default command."
|
|
|
|
if [ -z "$COMPILE_CMD" ] ; then
|
|
COMPILE_CMD='gcc -O2'
|
|
fi
|
|
|
|
if [ "$#" -lt 2 ] ; then
|
|
>&2 echo -e "Missing argument(s). Usage:\n$USAGE"
|
|
exit 1
|
|
fi
|
|
|
|
DIR=$1
|
|
NB_TESTS=$2
|
|
shift ; shift
|
|
|
|
check_gen_eh_frame=0
|
|
while [ "$#" -gt 0 ]; do
|
|
if [ "$1" = "--check-gen-eh-frame" ] ; then
|
|
check_gen_eh_frame=1
|
|
fi
|
|
shift
|
|
done
|
|
|
|
mkdir -p "$DIR"
|
|
echo -n ">>> "
|
|
for _num in $(seq 1 $NB_TESTS); do
|
|
num=$(printf "%02d" $_num)
|
|
echo -ne "\r>>> $num.c "
|
|
path="$DIR/$num"
|
|
csmith > "$path.c"
|
|
sed -i 's/^static \(.* func_\)/\1/g' "$path.c"
|
|
echo -ne "\r>>> $num.bin "
|
|
$COMPILE_CMD -I/usr/include/csmith-2.3.0/ -w "$path.c" -o "$path.orig.bin"
|
|
objcopy --remove-section '.eh_frame' --remove-section '.eh_frame_hdr' \
|
|
"$path.orig.bin" "$path.bin"
|
|
echo -ne "\r>>> $num.eh.bin "
|
|
BAP_ARGS='--dwarfsynth-no-rbp-undef' ../synthesize_dwarf.sh "$path.bin" "$path.eh.bin"
|
|
|
|
if [ "$check_gen_eh_frame" -gt 0 ] ; then
|
|
./check_generated_eh_frame.sh "$path"
|
|
fi
|
|
done
|
|
|
|
echo ""
|