diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2007-05-11 19:55:20 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2007-05-11 19:55:20 +0000 |
commit | 06d3b283b148a3ab8ff85a50fb127973524e700c (patch) | |
tree | 4ba2d7fb06e44c9d4f6276211f4378d0e99e8e8d /gdb/sol-thread.c | |
parent | 93ce7684566b4347cf4135f828dcffdb48417ebb (diff) | |
download | gdb-06d3b283b148a3ab8ff85a50fb127973524e700c.zip gdb-06d3b283b148a3ab8ff85a50fb127973524e700c.tar.gz gdb-06d3b283b148a3ab8ff85a50fb127973524e700c.tar.bz2 |
doc/ChangeLog:
* observer.texi (GDB Observers): New observer "new_objfile".
ChangeLog:
* observer.sh: Add "struct objfile" forward declaration.
* target.h (deprecated_target_new_objfile_hook): Remove.
* symfile.c (deprecated_target_new_objfile_hook): Remove.
(clear_symtab_users): Call observer_notify_new_objfile.
(symbol_file_add_with_addrs_or_offsets): Likewise.
* rs6000-nat.c: Include "observer.h".
(vmap_ldinfo): Call observer_notify_new_objfile.
(xcoff_relocate_core): Likewise.
* remote.c (remote_new_objfile_chain): Remove.
(remote_new_objfile): Do not call remote_new_objfile_chain.
(_initialize_remote): Use observer_attach_new_objfile.
* tui/tui-hooks.c (tui_target_new_objfile_chain): Remove.
(tui_new_objfile_hook): Do not call tui_target_new_objfile_chain.
(_initialize_tui_hooks): Use observer_attach_new_objfile.
* aix-thread.c: Include "observer.h".
(target_new_objfile_chain): Remove.
(new_objfile): Do not call target_new_objfile_chain.
(_initialize_aix_thread): Use observer_attach_new_objfile.
* hpux-thread.c: Include "observer.h"
(target_new_objfile_chain): Remove.
(hpux_thread_new_objfile): Make static. Do not call
target_new_objfile_chain.
(_initialize_hpux_thread): Use observer_attach_new_objfile.
* linux-thread-db.c: Include "observer.h".
(target_new_objfile_chain): Remove.
(thread_db_new_objfile): Do not call target_new_objfile_chain.
(_initialize_thread_db): Use observer_attach_new_objfile.
* sol-thread.c: Include "observer.h".
(target_new_objfile_chain): Remove.
(sol_thread_new_objfile): Make static. Do not call
target_new_objfile_chain.
(_initialize_sol_thread): Use observer_attach_new_objfile.
* Makefile.in (aix-thread.o, hpux-thread.o, linux-thread-db.o,
rs6000-nat.o, sol-thread.o, tui-hooks.o): Add dependency on
$(observer_h).
Diffstat (limited to 'gdb/sol-thread.c')
-rw-r--r-- | gdb/sol-thread.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c index 16e3463..ee26b41 100644 --- a/gdb/sol-thread.c +++ b/gdb/sol-thread.c @@ -66,6 +66,7 @@ #include "regcache.h" #include "solib.h" #include "symfile.h" +#include "observer.h" #include "gdb_string.h" @@ -777,16 +778,9 @@ sol_thread_create_inferior (char *exec_file, char *allargs, char **env, when all symbol tables are removed. libthread_db can only be initialized when it finds the right variables in libthread.so. Since it's a shared library, those variables don't show up until - the library gets mapped and the symbol table is read in. + the library gets mapped and the symbol table is read in. */ - This new_objfile event is managed by a chained function pointer. - It is the callee's responsability to call the next client on the - chain. */ - -/* Saved pointer to previous owner of the new_objfile event. */ -static void (*target_new_objfile_chain) (struct objfile *); - -void +static void sol_thread_new_objfile (struct objfile *objfile) { td_err_e val; @@ -794,13 +788,13 @@ sol_thread_new_objfile (struct objfile *objfile) if (!objfile) { sol_thread_active = 0; - goto quit; + return; } /* Don't do anything if init failed to resolve the libthread_db library. */ if (!procfs_suppress_run) - goto quit; + return; /* Now, initialize libthread_db. This needs to be done after the shared libraries are located because it needs information from @@ -810,24 +804,19 @@ sol_thread_new_objfile (struct objfile *objfile) if (val != TD_OK) { warning (_("sol_thread_new_objfile: td_init: %s"), td_err_string (val)); - goto quit; + return; } val = p_td_ta_new (&main_ph, &main_ta); if (val == TD_NOLIBTHREAD) - goto quit; + return; else if (val != TD_OK) { warning (_("sol_thread_new_objfile: td_ta_new: %s"), td_err_string (val)); - goto quit; + return; } sol_thread_active = 1; - -quit: - /* Call predecessor on chain, if any. */ - if (target_new_objfile_chain) - target_new_objfile_chain (objfile); } /* Clean up after the inferior dies. */ @@ -1667,8 +1656,7 @@ _initialize_sol_thread (void) add_target (&core_ops); /* Hook into new_objfile notification. */ - target_new_objfile_chain = deprecated_target_new_objfile_hook; - deprecated_target_new_objfile_hook = sol_thread_new_objfile; + observer_attach_new_objfile (sol_thread_new_objfile); return; die: |