summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKieran Bingham <kieran.bingham@linaro.org>2016-03-15 14:37:42 +0000
committerKieran Bingham <kieran.bingham@linaro.org>2016-03-17 10:21:02 +0000
commitaf9918c2076bb5cf11ce5ea8945188dff7cc1a1a (patch)
treef5b651d355509ee84e29bd2678e857af45bda194
parented79a0e291b90c865c269bd2e713f1e84a382056 (diff)
gdb/arm-linux-tdep: Add Linux Thread support
-rw-r--r--gdb/arm-linux-tdep.c41
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. */