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).
This commit is contained in:
parent
93ce768456
commit
06d3b283b1
14 changed files with 88 additions and 116 deletions
|
@ -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:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue