mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-13 20:12:26 +00:00
See also: http://gem5-users.gem5.narkive.com/CQh9J6fU/fail-to-run-fs-mode-with-linux-kernel-v4-8-13-and-ubuntu-image-16-04-1 Start sketching how to tweak system parameters, number of CPUs works, caches don't.
85 lines
1.4 KiB
Bash
Executable File
85 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
arch='x86_64'
|
|
bdfore=''
|
|
gem5=false
|
|
kgdb=false
|
|
while getopts A:a:b:gk OPT; do
|
|
case "$OPT" in
|
|
a)
|
|
arch="$OPTARG"
|
|
;;
|
|
A)
|
|
after="$OPTARG"
|
|
;;
|
|
b)
|
|
before="$OPTARG"
|
|
;;
|
|
g)
|
|
gem5=true
|
|
;;
|
|
k)
|
|
kgdb=true
|
|
;;
|
|
esac
|
|
done
|
|
shift "$(($OPTIND - 1))"
|
|
if [ "$#" -gt 0 ]; then
|
|
brk="-ex 'break $1'"
|
|
shift
|
|
else
|
|
brk=''
|
|
fi
|
|
if "$gem5"; then
|
|
arch_dir="${arch}-gem5"
|
|
port=7000
|
|
else
|
|
arch_dir="$arch"
|
|
port=1234
|
|
fi
|
|
|
|
buildroot_out_dir="$(pwd)/buildroot/output.${arch_dir}~"
|
|
gdb="${buildroot_out_dir}/host/usr/bin/${arch}-linux-gdb $before"
|
|
cd "${buildroot_out_dir}/build/linux-custom/"
|
|
if "$kgdb"; then
|
|
cmd="$gdb \
|
|
-q \
|
|
-ex 'add-auto-load-safe-path $(pwd)' \
|
|
-ex 'file vmlinux' \
|
|
-ex 'target remote localhost:$port'
|
|
"
|
|
else
|
|
case "$arch" in
|
|
'x86_64')
|
|
cmd="$gdb \
|
|
-q \
|
|
-ex 'add-auto-load-safe-path $(pwd)' \
|
|
-ex 'file vmlinux' \
|
|
-ex 'set arch i386:x86-64:intel' \
|
|
-ex 'target remote localhost:$port' \
|
|
$brk \
|
|
-ex 'continue' \
|
|
-ex 'disconnect' \
|
|
-ex 'set arch i386:x86-64' \
|
|
-ex 'target remote localhost:$port' \
|
|
-ex 'lx-symbols ../kernel_module-1.0/' \
|
|
"
|
|
;;
|
|
'arm'|'aarch64'|'mips64')
|
|
cmd="$gdb \
|
|
-q \
|
|
-ex 'add-auto-load-safe-path $(pwd)' \
|
|
-ex 'file vmlinux' \
|
|
-ex 'target remote localhost:$port' \
|
|
-ex 'lx-symbols ../kernel_module-1.0/' \
|
|
$brk \
|
|
"
|
|
;;
|
|
esac
|
|
fi
|
|
cmd="$cmd $after"
|
|
echo "$cmd" | tee rungdb.log
|
|
eval "$cmd"
|