From 186947f7ca47d3c7ea8cf9b6cd5241b653edbd59 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Tue, 28 Nov 2006 22:21:23 +0000 Subject: gdb/gdbserver/ * Makefile.in (clean): Remove reg-mips64.c. (reg-mips64.c, reg-mips64.o): New rules. * configure.srv: Handle mips64. Include regset support for mips. * linux-mips-low.c (union mips_register): New. (mips_get_pc, mips_set_pc, mips_reinsert_addr): Use it. (mips_breakpoint, mips_breakpoint_at): Use int. (mips_collect_register, mips_supply_register) (mips_collect_register_32bit, mips_supply_register_32bit) (mips_fill_gregset, mips_store_gregset, mips_fill_fpregset) (mips_store_fpregset, target_regsets): New. * thread-db.c (thread_db_get_tls_address): Use uintptr_t. gdb/ * regformats/reg-mips64.dat: New file. --- gdb/gdbserver/thread-db.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'gdb/gdbserver/thread-db.c') diff --git a/gdb/gdbserver/thread-db.c b/gdb/gdbserver/thread-db.c index 78bc6434076..e1f0653df4d 100644 --- a/gdb/gdbserver/thread-db.c +++ b/gdb/gdbserver/thread-db.c @@ -33,6 +33,8 @@ extern int debug_threads; #include "gdb_proc_service.h" +#include + /* Structure that identifies the child process for the interface. */ static struct ps_prochandle proc_handle; @@ -333,11 +335,14 @@ thread_db_get_tls_address (struct thread_info *thread, CORE_ADDR offset, if (!process->thread_known) return TD_NOTHR; - err = td_thr_tls_get_addr (&process->th, (psaddr_t) load_module, offset, - &addr); + /* Note the cast through uintptr_t: this interface only works if + a target address fits in a psaddr_t, which is a host pointer. + So a 32-bit debugger can not access 64-bit TLS through this. */ + err = td_thr_tls_get_addr (&process->th, (psaddr_t) (uintptr_t) load_module, + offset, &addr); if (err == TD_OK) { - *address = (CORE_ADDR) addr; + *address = (CORE_ADDR) (uintptr_t) addr; return 0; } else -- cgit v1.2.1