* target.h (struct target_ops): New member to_thread_architecture.

(target_thread_architecture): New macro.
	* target.c (update_current_target): Inherit to_thread_architecture.
	(default_thread_architecture): New function.
	(debug_to_thread_architecture): New function.
	(setup_target_debug): Handle to_thread_architecture.

	* regcache.h (get_thread_arch_regcache): New.
	* regcache.c (struct regcache_list): New data type.
	(current_regcache): Hold regcache list instead of single regcache.
	(current_thread_ptid, current_thread_arch): New static variables.
	(get_thread_arch_regcache): New function.
	(get_thread_regcache): Use it.  Call target_thread_architecture.
	(regcache_thread_ptid_changed): Update to current_regcache changes.
	(registers_changed): Likewise.  Reset current_thread_arch and
	current_thread_ptid.

	* remote.c (remote_wait): Access target registers in target_gdbarch.
	* linux-nat.c (linux_nat_do_thread_registers): Likewise.
	* proc-service.c (ps_lgetregs, ps_lsetregs): Likewise.
	(ps_lgetfpregs, ps_lsetfpregs): Likewise.
	* sol-thread.c (ps_lgetregs, ps_lsetregs): Likewise.
	(ps_lgetfpregs, ps_lsetfpregs): Likewise.
	* solib-svr4.c (enable_break): Likewise.
	(svr4_relocate_main_executable): Likewise.
This commit is contained in:
Ulrich Weigand
2009-07-02 17:06:44 +00:00
parent d452c4bcef
commit c2250ad1c4
9 changed files with 134 additions and 34 deletions

View File

@ -542,6 +542,9 @@ struct target_ops
simultaneously? */
int (*to_supports_multi_process) (void);
/* Determine current architecture of thread PTID. */
struct gdbarch *(*to_thread_architecture) (struct target_ops *, ptid_t);
int to_magic;
/* Need sub-structure for target machine related rather than comm related?
*/
@ -1039,6 +1042,11 @@ extern char *normal_pid_to_str (ptid_t ptid);
#define target_pid_to_exec_file(pid) \
(current_target.to_pid_to_exec_file) (pid)
/* Determine current architecture of thread PTID. */
#define target_thread_architecture(ptid) \
(current_target.to_thread_architecture (&current_target, ptid))
/*
* Iterator function for target memory regions.
* Calls a callback function once for each memory region 'mapped'