This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH, M68K] Handle TLS


Hi,

The following simple patch adds handling of TLS to m68k gdbserver.

A corresponding kernel patch is being reviewed here <http://marc.info/?l=linux-m68k&m=125447760017098&w=2>.

Tested on coldfire-linux.

OK to apply?

Thanks!

--
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724
2009-11-03  Maxim Kuvyrkov  <maxim@codesourcery.com>

	* linux-m68k-low.c: Include <asm/ptrace.h>
	(ps_get_thread_area): Implement.
Index: gdb/gdbserver/linux-m68k-low.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbserver/linux-m68k-low.c,v
retrieving revision 1.13
diff -u -p -r1.13 linux-m68k-low.c
--- gdb/gdbserver/linux-m68k-low.c	3 Jan 2009 05:57:57 -0000	1.13
+++ gdb/gdbserver/linux-m68k-low.c	3 Nov 2009 15:47:25 -0000
@@ -154,6 +154,25 @@ m68k_breakpoint_at (CORE_ADDR pc)
   return 0;
 }
 
+#include <asm/ptrace.h>
+
+/* Fetch the thread-local storage pointer for libthread_db.  */
+
+ps_err_e
+ps_get_thread_area (const struct ps_prochandle *ph,
+		    lwpid_t lwpid, int idx, void **base)
+{
+  if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
+    return PS_ERR;
+
+  /* IDX is the bias from the thread pointer to the beginning of the
+     thread descriptor.  It has to be subtracted due to implementation
+     quirks in libthread_db.  */
+  *base = (void *) ((char *)*base - idx);
+
+  return PS_OK;
+}
+
 struct linux_target_ops the_low_target = {
   init_registers_m68k,
   m68k_num_regs,

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]