aarch64, fix gdb with linux-custom

This commit is contained in:
Ciro Santilli
2017-07-12 11:49:58 +01:00
parent 438f38de84
commit 80889c0376
5 changed files with 53 additions and 8 deletions

View File

@@ -291,7 +291,7 @@ And then tell GDB where the module was loaded with:
The portability of the kernel and toolchains is amazing: change an option and most things magically work on completely different hardware.
### ARM
### arm
First build:
@@ -312,7 +312,21 @@ TODOs:
- only managed to run in the terminal interface (but weirdly a blank QEMU window is still opened)
- GDB not connecting to KGDB. Possibly linked to `-serial stdio`. See also: <https://stackoverflow.com/questions/14155577/how-to-use-kgdb-on-arm>
### MIPS
### aarch64
./run -a aarch64
TODOs:
- GDB gives a ton of messages:
no module object found for ''
when you connect. `Ctrl + C` then `c` works though.
- How to add devices to `-M virt` as we did for `-M versatilepb`
### mips64
./run -a mips64

View File

@@ -53,12 +53,15 @@ CONFIG_SCHED_TRACER=y
CONFIG_STACK_TRACER=y
CONFIG_TRACER_SNAPSHOT=y
# x86
## x86
# https://stackoverflow.com/questions/20069620/print-kernels-page-table-entries
# cat /sys/kernel/debug/kernel_page_tables
CONFIG_X86_PTDUMP=y
# LEDs. ARM only.
## ARM
# LEDs:
#
# cd /sys/class/leds/versatile:0
# cat max_brightness
@@ -109,8 +112,6 @@ CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_PL061=y
# run -a arm
#
# In target:
#
# modprobe dummy-irq irq=34
@@ -125,3 +126,12 @@ CONFIG_GPIO_PL061=y
#
# The IRQ number 34 was found by via dmesg on a previous "insmod /platform_device.ko".
CONFIG_DUMMY_IRQ=m
## aarch64
# For some reason not selected by default as it was for arm, and pci modules fail to build.
# Not that we have PCI working on ARM anyways.
CONFIG_PCI=y
# Like CONFIG_X86_PTDUMP for ARM.
CONFIG_ARM64_PTDUMP=y

3
run
View File

@@ -21,6 +21,9 @@ case "$arch" in
# so let's stick to versatile for now.
defconfig='qemu_arm_versatile_defconfig'
;;
'aarch64')
defconfig='qemu_aarch64_virt_defconfig'
;;
'mips64')
defconfig='qemu_mips64r6_malta_defconfig'
;;

5
rungdb
View File

@@ -23,7 +23,7 @@ fi
buildroot_out_dir="$(pwd)/buildroot/output.${arch}~"
gdb="${buildroot_out_dir}/host/usr/bin/${arch}-linux-gdb"
cd "${buildroot_out_dir}/build"/linux-?.*.*/
cd "${buildroot_out_dir}/build"/linux-custom/
if "$kgdb"; then
cmd="$gdb \
-q \
@@ -51,7 +51,7 @@ else
-ex 'lx-symbols ../kernel_module-1.0/'
"
;;
'arm'|'mips64')
'arm'|'aarch64'|'mips64')
cmd="$gdb \
-q \
-ex 'add-auto-load-safe-path $(pwd)' \
@@ -63,4 +63,5 @@ else
;;
esac
fi
echo "$cmd"
eval "$cmd"

17
runqemu
View File

@@ -85,6 +85,23 @@ case "$arch" in
$extra_flags
"
;;
'aarch64')
if $kgdb; then
extra_append="$extra_append kgdboc=ttyAMA0,115200"
fi
cmd="$qemu_common \
-M virt \
-append 'root=/dev/sda $extra_append' \
-cpu cortex-a57 \
-device virtio-net-device,netdev=eth0 \
-drive file=${images_dir}/rootfs.cpio,if=scsi,format=raw \
-kernel ${images_dir}/Image \
-netdev user,id=eth0 \
-nographic \
-serial stdio \
$extra_flags
"
;;
'mips64')
cmd="$qemu_common \
-M malta \