Files
Ciro Santilli f482f24f87 readme: explain how to run benchmarks with readfile straight out
gem5 cache automate benchmarks, and remove results that were scattered all over.

Move console fun under linux kernel section, since not important enough
for getting started.

Set arch x86_64 by default through common on all scripts.
2018-04-03 22:28:53 +01:00

92 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eu
. common
set -- ${cli_rungdb:-} "$@"
after=
before=
gem5=false
lx_symbols="-ex 'lx-symbols ../kernel_module-1.0/'"
kgdb=false
while getopts A:a:b:gkL OPT; do
case "$OPT" in
A)
after="$OPTARG"
;;
a)
arch="$OPTARG"
;;
b)
before="$OPTARG"
;;
g)
gem5=true
;;
k)
kgdb=true
;;
L)
lx_symbols=
;;
?)
exit 2
;;
esac
done
shift "$(($OPTIND - 1))"
if [ "$#" -gt 0 ]; then
brk="-ex 'break ${1}'"
shift
else
brk=
fi
if "$gem5"; then
port=7000
else
port=1234
fi
set_common_vars "$arch" "$gem5"
gdb="${host_dir}/usr/bin/${arch}-linux-gdb ${before}"
cd "${build_dir}/linux-custom/"
if "$kgdb"; then
cmd="\
${gdb} \
-q \
-ex 'add-auto-load-safe-path $(pwd)' \
-ex 'file vmlinux' \
-ex 'target remote localhost:${port}'
"
else
# ## lx-symbols
#
# ### lx-symbols after continue
#
# lx symbols must be run after continue.
#
# running it immediately after the connect on the bootloader leads to failure,
# likely because kernel structure on which it depends are not yet available.
#
# With this setup, continue runs, and lx-symbols only runs when a break happens,
# either by hitting the breakpoint, or by entering Ctrl + C.
#
# Sure, if the user sets a break on a raw address of the bootloader,
# problems will still arise, but let's think about that some other time.
#
# ### lx-symbols autoload
#
# The lx-symbols commands gets loaded through the file vmlinux-gdb.py
# which gets put on the kernel build root when python debugging scripts are enabled.
cmd="\
${gdb} \
-q \
-ex 'add-auto-load-safe-path $(pwd)' \
-ex 'file vmlinux' \
-ex 'target remote localhost:${port}' \
${brk} \
-ex 'continue' \
${lx_symbols} \
"
fi
cmd="$cmd $after"
echo "$cmd" | tee "${root_dir}/rungdb.log"
eval "$cmd"