diff options
author | Kieran Bingham <kieran.bingham@linaro.org> | 2016-03-15 14:37:42 +0000 |
---|---|---|
committer | Kieran Bingham <kieran.bingham@linaro.org> | 2016-03-17 10:21:02 +0000 |
commit | af9918c2076bb5cf11ce5ea8945188dff7cc1a1a (patch) | |
tree | f5b651d355509ee84e29bd2678e857af45bda194 | |
parent | ed79a0e291b90c865c269bd2e713f1e84a382056 (diff) |
gdb/arm-linux-tdep: Add Linux Thread support
-rw-r--r-- | gdb/arm-linux-tdep.c | 41 |
1 files changed, 41 insertions, 0 deletions
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. */ |