From af9918c2076bb5cf11ce5ea8945188dff7cc1a1a Mon Sep 17 00:00:00 2001 From: Kieran Bingham Date: Tue, 15 Mar 2016 14:37:42 +0000 Subject: gdb/arm-linux-tdep: Add Linux Thread support --- gdb/arm-linux-tdep.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index eba86044c1..cc29c790fd 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -41,6 +41,7 @@ #include "arm-tdep.h" #include "arm-linux-tdep.h" #include "linux-tdep.h" +#include "linux-kthread.h" #include "glibc-tdep.h" #include "arch-utils.h" #include "inferior.h" @@ -1383,6 +1384,41 @@ arm_linux_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc) return find_solib_trampoline_target (frame, pc); } + + + +static void +arm_linux_supply_thread (struct regcache *regcache, + int regnum, CORE_ADDR addr) +{ + struct gdbarch *gdbarch = get_regcache_arch (regcache); + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + CORE_ADDR sp = 0; + gdb_byte buf[8]; + int i; + + gdb_assert (regnum >= -1); + + gdb_assert (0); + +} + +static void +arm_linux_collect_thread (const struct regcache *regcache, + int regnum, CORE_ADDR addr) +{ + struct gdbarch *gdbarch = get_regcache_arch (regcache); + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + CORE_ADDR sp = 0; + gdb_byte buf[8]; + int i; + + gdb_assert (regnum >= -1); + + gdb_assert (0); + +} + static void arm_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) @@ -1662,6 +1698,11 @@ arm_linux_init_abi (struct gdbarch_info info, arm_linux_record_tdep.arg2 = ARM_A1_REGNUM + 2; arm_linux_record_tdep.arg3 = ARM_A1_REGNUM + 3; arm_linux_record_tdep.arg4 = ARM_A1_REGNUM + 3; + + /* Provide a Linux Kernel threads implementation. */ + linux_kthread_set_supply_thread (gdbarch, arm_linux_supply_thread); + linux_kthread_set_collect_thread (gdbarch, arm_linux_collect_thread); + } /* Provide a prototype to silence -Wmissing-prototypes. */ -- cgit v1.2.3