From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1275 invoked by alias); 7 Feb 2013 12:10:30 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 1223 invoked by uid 9364); 7 Feb 2013 12:10:28 -0000 Date: Thu, 07 Feb 2013 12:10:00 -0000 Message-ID: <20130207121027.1200.qmail@sourceware.org> From: gary@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] archer-gbenson-stap-rtld-mainline: Recover from bad push X-Git-Refname: refs/heads/archer-gbenson-stap-rtld-mainline X-Git-Reftype: branch X-Git-Oldrev: 51102a7374742ccea7c69171d2c8eaf63e1273a0 X-Git-Newrev: 7230d07de7987c95ac47cd808f0ae9cee9c4dbf7 X-SW-Source: 2013-q1/txt/msg00041.txt.bz2 List-Id: The branch, archer-gbenson-stap-rtld-mainline has been updated via 7230d07de7987c95ac47cd808f0ae9cee9c4dbf7 (commit) from 51102a7374742ccea7c69171d2c8eaf63e1273a0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 7230d07de7987c95ac47cd808f0ae9cee9c4dbf7 Author: Gary Benson Date: Thu Feb 7 12:07:35 2013 +0000 Recover from bad push ----------------------------------------------------------------------- Summary of changes: gdb/breakpoint.h | 2 - gdb/solib-svr4.c | 33 +++++++++++++----------- gdb/solib.c | 71 +++++++++++++++++++++++++++-------------------------- 3 files changed, 54 insertions(+), 52 deletions(-) First 500 lines of diff: diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 7a2c629..946f57a 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -1552,8 +1552,6 @@ extern int user_breakpoint_p (struct breakpoint *); /* Attempt to determine architecture of location identified by SAL. */ extern struct gdbarch *get_sal_arch (struct symtab_and_line sal); -extern void handle_solib_event (void); - extern void breakpoint_free_objfile (struct objfile *objfile); #endif /* !defined (BREAKPOINT_H) */ diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 1706bfc..07670b0 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -119,23 +119,23 @@ static const char * const main_name_list[] = NULL }; -/* Actions to take at solib event breakpoint stops. */ +/* What to do with the namespace table when a probe stop occurs. */ enum probe_action { /* Something went seriously wrong. Stop using probes and - revert to the older interface. */ + revert to using the older interface. */ NAMESPACE_TABLE_INVALIDATE, - /* No action is required at this stop. */ + /* No action is required. This namespace is still valid. */ NAMESPACE_NO_ACTION, - /* The specified namespace should be reloaded entirely. */ + /* This namespace should be reloaded entirely. */ NAMESPACE_RELOAD, - /* Attempt to incrementally update the specified namespace. - If the update fails or is not possible, fall back to - reloading the namespace in full. */ + /* Attempt to incrementally update this namespace. If the + update fails or is not possible, fall back to reloading + the namespace in full. */ NAMESPACE_UPDATE_OR_RELOAD, }; @@ -174,7 +174,7 @@ struct svr4_info CORE_ADDR debug_base; /* Base of dynamic linker structures. */ /* Validity flag for debug_loader_offset. */ - unsigned int debug_loader_offset_p : 1; + int debug_loader_offset_p; /* Load address for the dynamic linker, inferred. */ CORE_ADDR debug_loader_offset; @@ -1422,14 +1422,10 @@ svr4_current_sos_from_debug_base (void) static struct so_list * svr4_current_sos (void) { - struct svr4_info *info = get_svr4_info (); + struct svr4_info *info; struct svr4_library_list library_list; struct so_list *result; - /* If we have a namespace table then return a flattened copy. */ - if (info->namespace_table != NULL) - return namespace_table_flatten (info->namespace_table); - /* Fall back to manual examination of the target if the packet is not supported or gdbserver failed to find DT_DEBUG. gdb.server/solib-list.exp tests a case where gdbserver cannot find the shared libraries list while @@ -1449,6 +1445,12 @@ svr4_current_sos (void) return library_list.head ? library_list.head : svr4_default_sos (); } + info = get_svr4_info (); + + /* If we have a namespace table then return a flattened copy. */ + if (info->namespace_table != NULL) + return namespace_table_flatten (info->namespace_table); + /* Always locate the debug struct, in case it has moved. */ info->debug_base = 0; locate_base (info); @@ -1581,7 +1583,8 @@ equal_probe_and_action (const void *p1, const void *p2) return pa1->probe->address == pa2->probe->address; } -/* XXX. */ +/* Register a solib event probe and its associated action in the + probes table. */ static void register_solib_event_probe (struct probe *probe, enum probe_action action) @@ -2038,7 +2041,7 @@ svr4_update_solib_event_breakpoints (void) iterate_over_breakpoints (svr4_update_solib_event_breakpoint, NULL); } -/* XXX. */ +/* Create and register solib event breakpoints. */ static void svr4_create_probe_breakpoints (struct gdbarch *gdbarch, diff --git a/gdb/solib.c b/gdb/solib.c index 08e710d..39eb38b 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -1206,6 +1206,42 @@ no_shared_libraries (char *ignored, int from_tty) objfile_purge_solibs (); } +/* See solib.h. */ + +void +update_solib_breakpoints (void) +{ + struct target_so_ops *ops = solib_ops (target_gdbarch ()); + + if (ops->update_breakpoints != NULL) + ops->update_breakpoints (); +} + +/* See solib.h. */ + +void +handle_solib_event (void) +{ + struct target_so_ops *ops = solib_ops (target_gdbarch ()); + + if (ops->handle_event != NULL) + ops->handle_event (); + + clear_program_space_solib_cache (current_inferior ()->pspace); + + /* Check for any newly added shared libraries if we're supposed to + be adding them automatically. Switch terminal for any messages + produced by breakpoint_re_set. */ + target_terminal_ours_for_output (); +#ifdef SOLIB_ADD + SOLIB_ADD (NULL, 0, ¤t_target, auto_solib_add); +#else + solib_add (NULL, 0, ¤t_target, auto_solib_add); +#endif + target_terminal_inferior (); +} + + /* Reload shared libraries, but avoid reloading the same symbol file we already have loaded. */ @@ -1448,41 +1484,6 @@ gdb_bfd_lookup_symbol (bfd *abfd, return symaddr; } -/* See solib.h. */ - -void -update_solib_breakpoints (void) -{ - struct target_so_ops *ops = solib_ops (target_gdbarch ()); - - if (ops->update_breakpoints != NULL) - ops->update_breakpoints (); -} - -/* See solib.h. */ - -void -handle_solib_event (void) -{ - struct target_so_ops *ops = solib_ops (target_gdbarch ()); - - if (ops->handle_event != NULL) - ops->handle_event (); - - clear_program_space_solib_cache (current_inferior ()->pspace); - - /* Check for any newly added shared libraries if we're supposed to - be adding them automatically. Switch terminal for any messages - produced by breakpoint_re_set. */ - target_terminal_ours_for_output (); -#ifdef SOLIB_ADD - SOLIB_ADD (NULL, 0, ¤t_target, auto_solib_add); -#else - solib_add (NULL, 0, ¤t_target, auto_solib_add); -#endif - target_terminal_inferior (); -} - extern initialize_file_ftype _initialize_solib; /* -Wmissing-prototypes */ void hooks/post-receive -- Repository for Project Archer.