dwarf-synthesis/csmith/csmith_gen.sh
Théophile Bastian 3d336de196 Add flag to never go back to undefined rbp
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.
2019-04-04 11:52:47 +02:00

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 ""