From be9f56cc9b5120723a57a2f77cb75c8a0fdcb39a Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Sun, 21 May 2017 10:22:31 +0100 Subject: [PATCH] Use buildroot host gdb, consider QEMU and target GDB but give up for now --- buildroot_config_fragment | 31 +++++++++++++++++++++++++++++++ run | 2 ++ rungdb | 3 ++- runqemu | 2 ++ 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/buildroot_config_fragment b/buildroot_config_fragment index 8065508..f1652a7 100644 --- a/buildroot_config_fragment +++ b/buildroot_config_fragment @@ -1,4 +1,35 @@ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="../kernel_config_fragment" BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="../busybox_config_fragment" BR2_PACKAGE_KERNEL_MODULE=y +BR2_PACKAGE_STRACE=y BR2_ROOTFS_OVERLAY="../rootfs_overlay" + +## Host GDB +BR2_GDB_VERSION="7.11.1" +BR2_GDB_VERSION_7_10=n +BR2_GDB_VERSION_7_11=y +BR2_GDB_VERSION_7_12=n +BR2_PACKAGE_HOST_GDB=y +BR2_PACKAGE_HOST_GDB_PYTHON=y +BR2_PACKAGE_HOST_GDB_SIM=y +BR2_PACKAGE_HOST_GDB_TUI=y + +## QEMU. +# Buildroot can also build QEMU, but it does not have SDL support, +# so you have to mess around with a VNC, so let's not use that for now. +# Someone should patch this, and add a SDL support option to the QEMU package! :-) +#BR2_PACKAGE_HOST_QEMU=y +#BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE=n +#BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y +#BR2_PACKAGE_HOST_QEMU_VDE2=y + +## Target GDB +# This is preparation for target GDB / gdbserver. +# But those options require a toolchain with threads like glibc, +# which I'm afraid will make compilation slower, so let's leave it +# at that for now since our focus is kernel debug. +#BR2_DEBUG_1=n +#BR2_DEBUG_2=n +#BR2_DEBUG_3=y +#BR2_ENABLE_DEBUG=y +#BR2_OPTIMIZE_0=y diff --git a/run b/run index 8161f3f..6ed3844 100755 --- a/run +++ b/run @@ -2,6 +2,8 @@ set -e cd buildroot make BR2_EXTERNAL="$(pwd)/../kernel_module" qemu_x86_64_defconfig +# Can't get rid of this for now. +# http://stackoverflow.com/questions/44078245/is-it-possible-to-use-config-fragments-with-buildroots-config cat ../buildroot_config_fragment >> .config env -u LD_LIBRARY_PATH make BR2_JLEVEL="$(($(nproc) - 2))" kernel_module-rebuild all cd .. diff --git a/rungdb b/rungdb index 763e4e6..71b8690 100755 --- a/rungdb +++ b/rungdb @@ -4,8 +4,9 @@ if [ "$#" -gt 0 ]; then else brk="" fi +gdb="$(pwd)/buildroot/output/host/usr/bin/x86_64-linux-gdb" cd buildroot/output/build/linux-*.*.*/ -cmd="gdb \ +cmd="$gdb \ -q \ -ex 'add-auto-load-safe-path $(pwd)' \ -ex 'file vmlinux' \ diff --git a/runqemu b/runqemu index 9afdd44..7606a9b 100755 --- a/runqemu +++ b/runqemu @@ -21,6 +21,8 @@ while getopts dn OPT; do esac done +# If we turn on buildroot host QEMU some day. +#cmd="./buildroot/output/host/usr/bin/qemu-system-x86_64 \ cmd="qemu-system-x86_64 \ -M pc \ -append 'root=/dev/vda $extra_append' \