aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/target.h
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-10-17 16:02:27 +0000
committerDaniel Jacobowitz <drow@false.org>2006-10-17 16:02:27 +0000
commitdae5f5cf4b47e0c8b81c090316093ecf5777f770 (patch)
tree7a7f4edbdd4892beda9c8424dc6445c998aeb2a4 /gdb/gdbserver/target.h
parent5bd2f6e2a6179014300f75f86231e0e37736eb6b (diff)
downloadgdb-dae5f5cf4b47e0c8b81c090316093ecf5777f770.zip
gdb-dae5f5cf4b47e0c8b81c090316093ecf5777f770.tar.gz
gdb-dae5f5cf4b47e0c8b81c090316093ecf5777f770.tar.bz2
* acinclude.m4 (SRV_CHECK_TLS_GET_ADDR): New.
* configure.ac: Use it. Define HAVE_TD_THR_TLS_GET_ADDR. * config.in, configure: Regenerated. * inferiors.c (gdb_id_to_thread): New function. (gdb_id_to_thread_id): Use it. * linux-low.c (linux_target_ops): Use thread_db_get_tls_address. * linux-low.h (struct process_info): Add th member. (thread_db_get_tls_address): New prototype. * remote-utils.c (decode_address): Make non-static. * server.c (handle_query): Handle qGetTLSAddr. * server.h (gdb_id_to_thread, decode_address): New prototypes. * target.h (struct target_ops): Add get_tls_address. * thread-db.c (maybe_attach_thread): Save the thread handle. (thread_db_get_tls_address): New.
Diffstat (limited to 'gdb/gdbserver/target.h')
-rw-r--r--gdb/gdbserver/target.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h
index 9ee87a2..b2f9b09 100644
--- a/gdb/gdbserver/target.h
+++ b/gdb/gdbserver/target.h
@@ -163,6 +163,15 @@ struct target_ops
time. */
int (*read_offsets) (CORE_ADDR *text, CORE_ADDR *data);
+
+ /* Fetch the address associated with a specific thread local storage
+ area, determined by the specified THREAD, OFFSET, and LOAD_MODULE.
+ Stores it in *ADDRESS and returns zero on success; otherwise returns
+ an error code. A return value of -1 means this system does not
+ support the operation. */
+
+ int (*get_tls_address) (struct thread_info *thread, CORE_ADDR offset,
+ CORE_ADDR load_module, CORE_ADDR *address);
};
extern struct target_ops *the_target;