mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-21 01:12:32 +08:00
gdb/
Add from_tty to solib_create_inferior_hook. * infcmd.c (post_create_inferior): Move solib_add after solib_create_inferior_hook. Pass from_tty to solib_create_inferior_hook. Call solib_add and SOLIB_ADD with 0 from_tty and comment why. * infrun.c (follow_exec): Pass from_tty solib_create_inferior_hook as 0. * linux-nat.c (linux_child_follow_fork): Likewise. * nto-procfs.c (procfs_post_attach, procfs_create_inferior): Likewise. * solib-darwin.c (darwin_solib_create_inferior_hook): New parameter from_tty. * solib-frv.c (frv_solib_create_inferior_hook): Likewise. * solib-irix.c (irix_solib_create_inferior_hook): Likewise. * solib-null.c (null_solib_create_inferior_hook): Likewise. * solib-osf.c (osf_solib_create_inferior_hook): Likewise. * solib-pa64.c (pa64_solib_create_inferior_hook): Likewise. * solib-som.c (som_solib_create_inferior_hook): Likewise. * solib-spu.c (spu_solib_create_inferior_hook): New parameter from_tty. Pass it to svr4_so_ops.solib_create_inferior_hook. * solib-sunos.c (sunos_solib_create_inferior_hook): New parameter from_tty. * solib-svr4.c (enable_break): New parameter from_tty. Pass it to solib_add. (svr4_solib_create_inferior_hook): New parameter from_tty. Pass it to enable_break. * solib-target.c (solib_target_solib_create_inferior_hook): New parameter from_tty. * solib.c (solib_create_inferior_hook): New parameter from_tty. Pass it to ops->solib_create_inferior_hook. (reload_shared_libraries): Pass from_tty to solib_create_inferior_hook. Move solib_add after solib_create_inferior_hook, call it now with from_tty as 0. New comment there. * solib.h (solib_create_inferior_hook): New parameter from_tty. * solist.h (struct target_so_ops <solib_create_inferior_hook>): Likewise.
This commit is contained in:
parent
339d40a3d9
commit
268a4a75bd
@ -1,3 +1,40 @@
|
||||
2010-01-08 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Add from_tty to solib_create_inferior_hook.
|
||||
* infcmd.c (post_create_inferior): Move solib_add after
|
||||
solib_create_inferior_hook. Pass from_tty to
|
||||
solib_create_inferior_hook. Call solib_add and SOLIB_ADD with
|
||||
0 from_tty and comment why.
|
||||
* infrun.c (follow_exec): Pass from_tty solib_create_inferior_hook as 0.
|
||||
* linux-nat.c (linux_child_follow_fork): Likewise.
|
||||
* nto-procfs.c (procfs_post_attach, procfs_create_inferior): Likewise.
|
||||
* solib-darwin.c (darwin_solib_create_inferior_hook): New parameter
|
||||
from_tty.
|
||||
* solib-frv.c (frv_solib_create_inferior_hook): Likewise.
|
||||
* solib-irix.c (irix_solib_create_inferior_hook): Likewise.
|
||||
* solib-null.c (null_solib_create_inferior_hook): Likewise.
|
||||
* solib-osf.c (osf_solib_create_inferior_hook): Likewise.
|
||||
* solib-pa64.c (pa64_solib_create_inferior_hook): Likewise.
|
||||
* solib-som.c (som_solib_create_inferior_hook): Likewise.
|
||||
* solib-spu.c (spu_solib_create_inferior_hook): New parameter from_tty.
|
||||
Pass it to svr4_so_ops.solib_create_inferior_hook.
|
||||
* solib-sunos.c (sunos_solib_create_inferior_hook): New parameter
|
||||
from_tty.
|
||||
* solib-svr4.c (enable_break): New parameter from_tty. Pass it to
|
||||
solib_add.
|
||||
(svr4_solib_create_inferior_hook): New parameter from_tty. Pass it to
|
||||
enable_break.
|
||||
* solib-target.c (solib_target_solib_create_inferior_hook): New
|
||||
parameter from_tty.
|
||||
* solib.c (solib_create_inferior_hook): New parameter from_tty. Pass
|
||||
it to ops->solib_create_inferior_hook.
|
||||
(reload_shared_libraries): Pass from_tty to solib_create_inferior_hook.
|
||||
Move solib_add after solib_create_inferior_hook, call it now with
|
||||
from_tty as 0. New comment there.
|
||||
* solib.h (solib_create_inferior_hook): New parameter from_tty.
|
||||
* solist.h (struct target_so_ops <solib_create_inferior_hook>):
|
||||
Likewise.
|
||||
|
||||
2010-01-08 Vladimir Prus <vladimir@codesourcery.com>
|
||||
|
||||
Fix multiexec race.
|
||||
@ -22,7 +59,7 @@
|
||||
(ada_print_type): Remove support for VAX floats.
|
||||
* ada-valprint.c (ada_val_print_1): Remove support for VAX floats.
|
||||
|
||||
2010-01-08 jan kratochvil <jan.kratochvil@redhat.com>
|
||||
2010-01-08 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* stabsread.c (read_args): Handle zero arguments.
|
||||
|
||||
|
36
gdb/infcmd.c
36
gdb/infcmd.c
@ -397,22 +397,6 @@ post_create_inferior (struct target_ops *target, int from_tty)
|
||||
/* Now that we know the register layout, retrieve current PC. */
|
||||
stop_pc = regcache_read_pc (get_current_regcache ());
|
||||
|
||||
/* If the solist is global across processes, there's no need to
|
||||
refetch it here. */
|
||||
if (exec_bfd && !gdbarch_has_global_solist (target_gdbarch))
|
||||
{
|
||||
/* Sometimes the platform-specific hook loads initial shared
|
||||
libraries, and sometimes it doesn't. Try to do so first, so
|
||||
that we can add them with the correct value for FROM_TTY.
|
||||
If we made all the inferior hook methods consistent,
|
||||
this call could be removed. */
|
||||
#ifdef SOLIB_ADD
|
||||
SOLIB_ADD (NULL, from_tty, target, auto_solib_add);
|
||||
#else
|
||||
solib_add (NULL, from_tty, target, auto_solib_add);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (exec_bfd)
|
||||
{
|
||||
/* Create the hooks to handle shared library load and unload
|
||||
@ -420,7 +404,25 @@ post_create_inferior (struct target_ops *target, int from_tty)
|
||||
#ifdef SOLIB_CREATE_INFERIOR_HOOK
|
||||
SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid));
|
||||
#else
|
||||
solib_create_inferior_hook ();
|
||||
solib_create_inferior_hook (from_tty);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* If the solist is global across processes, there's no need to
|
||||
refetch it here. */
|
||||
if (exec_bfd && !gdbarch_has_global_solist (target_gdbarch))
|
||||
{
|
||||
/* Sometimes the platform-specific hook loads initial shared
|
||||
libraries, and sometimes it doesn't. If it doesn't FROM_TTY will be
|
||||
incorrectly 0 but such solib targets should be fixed anyway. If we
|
||||
made all the inferior hook methods consistent, this call could be
|
||||
removed. Call it only after the solib target has been initialized by
|
||||
solib_create_inferior_hook. */
|
||||
|
||||
#ifdef SOLIB_ADD
|
||||
SOLIB_ADD (NULL, 0, target, auto_solib_add);
|
||||
#else
|
||||
solib_add (NULL, 0, target, auto_solib_add);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -764,7 +764,7 @@ follow_exec (ptid_t pid, char *execd_pathname)
|
||||
#ifdef SOLIB_CREATE_INFERIOR_HOOK
|
||||
SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid));
|
||||
#else
|
||||
solib_create_inferior_hook ();
|
||||
solib_create_inferior_hook (0);
|
||||
#endif
|
||||
|
||||
jit_inferior_created_hook ();
|
||||
|
@ -769,7 +769,7 @@ holding the child stopped. Try \"set detach-on-fork\" or \
|
||||
breakpoint. If a "cloned-VM" event was propagated
|
||||
better throughout the core, this wouldn't be
|
||||
required. */
|
||||
solib_create_inferior_hook ();
|
||||
solib_create_inferior_hook (0);
|
||||
}
|
||||
|
||||
/* Let the thread_db layer learn about this new process. */
|
||||
@ -952,7 +952,7 @@ Attaching after process %d fork to child process %d.\n"),
|
||||
shared libraries, and install the solib event breakpoint.
|
||||
If a "cloned-VM" event was propagated better throughout
|
||||
the core, this wouldn't be required. */
|
||||
solib_create_inferior_hook ();
|
||||
solib_create_inferior_hook (0);
|
||||
}
|
||||
|
||||
/* Let the thread_db layer learn about this new process. */
|
||||
|
@ -654,7 +654,7 @@ static void
|
||||
procfs_post_attach (pid_t pid)
|
||||
{
|
||||
if (exec_bfd)
|
||||
solib_create_inferior_hook ();
|
||||
solib_create_inferior_hook (0);
|
||||
}
|
||||
|
||||
static ptid_t
|
||||
@ -1215,7 +1215,7 @@ procfs_create_inferior (struct target_ops *ops, char *exec_file,
|
||||
|
||||
if (exec_bfd != NULL
|
||||
|| (symfile_objfile != NULL && symfile_objfile->obfd != NULL))
|
||||
solib_create_inferior_hook ();
|
||||
solib_create_inferior_hook (0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -295,7 +295,7 @@ darwin_special_symbol_handling (void)
|
||||
/* Shared library startup support. See documentation in solib-svr4.c */
|
||||
|
||||
static void
|
||||
darwin_solib_create_inferior_hook (void)
|
||||
darwin_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
struct minimal_symbol *msymbol;
|
||||
char **bkpt_namep;
|
||||
|
@ -984,7 +984,7 @@ frv_relocate_main_executable (void)
|
||||
*/
|
||||
|
||||
static void
|
||||
frv_solib_create_inferior_hook (void)
|
||||
frv_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
/* Relocate main executable. */
|
||||
frv_relocate_main_executable ();
|
||||
|
@ -392,7 +392,7 @@ enable_break (void)
|
||||
|
||||
SYNOPSIS
|
||||
|
||||
void solib_create_inferior_hook ()
|
||||
void solib_create_inferior_hook (int from_tty)
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
@ -437,7 +437,7 @@ enable_break (void)
|
||||
*/
|
||||
|
||||
static void
|
||||
irix_solib_create_inferior_hook (void)
|
||||
irix_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
struct inferior *inf;
|
||||
struct thread_info *tp;
|
||||
|
@ -32,7 +32,7 @@ null_special_symbol_handling (void)
|
||||
}
|
||||
|
||||
static void
|
||||
null_solib_create_inferior_hook (void)
|
||||
null_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -306,7 +306,7 @@ osf_clear_solib (void)
|
||||
Also, what if child has exit()ed? Must exit loop somehow. */
|
||||
|
||||
static void
|
||||
osf_solib_create_inferior_hook (void)
|
||||
osf_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
struct inferior *inf;
|
||||
struct thread_info *tp;
|
||||
|
@ -329,7 +329,7 @@ bfd_lookup_symbol (bfd *abfd, char *symname)
|
||||
with shared libraries mapped shareable. */
|
||||
|
||||
static void
|
||||
pa64_solib_create_inferior_hook (void)
|
||||
pa64_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
struct minimal_symbol *msymbol;
|
||||
unsigned int dld_flags, status;
|
||||
|
@ -183,7 +183,7 @@ struct {
|
||||
means running until the "_start" is called. */
|
||||
|
||||
static void
|
||||
som_solib_create_inferior_hook (void)
|
||||
som_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch);
|
||||
struct minimal_symbol *msymbol;
|
||||
|
@ -371,7 +371,7 @@ spu_enable_break (struct objfile *objfile)
|
||||
|
||||
/* Create inferior hook. */
|
||||
static void
|
||||
spu_solib_create_inferior_hook (void)
|
||||
spu_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
/* Remove all previously installed solib breakpoints. Both the SVR4
|
||||
code and us will re-install all required breakpoints. */
|
||||
@ -402,7 +402,7 @@ spu_solib_create_inferior_hook (void)
|
||||
}
|
||||
|
||||
/* Call SVR4 hook -- this will re-insert the SVR4 solib breakpoints. */
|
||||
svr4_so_ops.solib_create_inferior_hook ();
|
||||
svr4_so_ops.solib_create_inferior_hook (from_tty);
|
||||
|
||||
/* If the inferior is statically linked against libspe, we need to install
|
||||
our own solib breakpoint right now. Otherwise, it will be installed by
|
||||
|
@ -741,7 +741,7 @@ sunos_special_symbol_handling (void)
|
||||
*/
|
||||
|
||||
static void
|
||||
sunos_solib_create_inferior_hook (void)
|
||||
sunos_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
struct thread_info *tp;
|
||||
struct inferior *inf;
|
||||
|
@ -1265,7 +1265,7 @@ exec_entry_point (struct bfd *abfd, struct target_ops *targ)
|
||||
*/
|
||||
|
||||
static int
|
||||
enable_break (struct svr4_info *info)
|
||||
enable_break (struct svr4_info *info, int from_tty)
|
||||
{
|
||||
struct minimal_symbol *msymbol;
|
||||
char **bkpt_namep;
|
||||
@ -1285,7 +1285,7 @@ enable_break (struct svr4_info *info)
|
||||
mean r_brk has already been relocated. Assume the dynamic linker
|
||||
is the object containing r_brk. */
|
||||
|
||||
solib_add (NULL, 0, ¤t_target, auto_solib_add);
|
||||
solib_add (NULL, from_tty, ¤t_target, auto_solib_add);
|
||||
sym_addr = 0;
|
||||
if (info->debug_base && solib_svr4_r_map (info) != 0)
|
||||
sym_addr = solib_svr4_r_brk (info);
|
||||
@ -1412,7 +1412,7 @@ enable_break (struct svr4_info *info)
|
||||
info->debug_loader_name = xstrdup (interp_name);
|
||||
info->debug_loader_offset_p = 1;
|
||||
info->debug_loader_offset = load_addr;
|
||||
solib_add (NULL, 0, ¤t_target, auto_solib_add);
|
||||
solib_add (NULL, from_tty, ¤t_target, auto_solib_add);
|
||||
}
|
||||
|
||||
/* Record the relocated start and end address of the dynamic linker
|
||||
@ -1651,7 +1651,7 @@ svr4_relocate_main_executable (void)
|
||||
|
||||
SYNOPSIS
|
||||
|
||||
void svr4_solib_create_inferior_hook ()
|
||||
void svr4_solib_create_inferior_hook (int from_tty)
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
@ -1696,7 +1696,7 @@ svr4_relocate_main_executable (void)
|
||||
*/
|
||||
|
||||
static void
|
||||
svr4_solib_create_inferior_hook (void)
|
||||
svr4_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
struct inferior *inf;
|
||||
struct thread_info *tp;
|
||||
@ -1710,7 +1710,7 @@ svr4_solib_create_inferior_hook (void)
|
||||
if (!svr4_have_link_map_offsets ())
|
||||
return;
|
||||
|
||||
if (!enable_break (info))
|
||||
if (!enable_break (info, from_tty))
|
||||
return;
|
||||
|
||||
#if defined(_SCO_DS)
|
||||
|
@ -306,7 +306,7 @@ solib_target_special_symbol_handling (void)
|
||||
}
|
||||
|
||||
static void
|
||||
solib_target_solib_create_inferior_hook (void)
|
||||
solib_target_solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
/* Nothing needed. */
|
||||
}
|
||||
|
19
gdb/solib.c
19
gdb/solib.c
@ -1015,7 +1015,7 @@ clear_solib (void)
|
||||
|
||||
SYNOPSIS
|
||||
|
||||
void solib_create_inferior_hook ()
|
||||
void solib_create_inferior_hook (int from_tty)
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
@ -1025,10 +1025,10 @@ clear_solib (void)
|
||||
SOLIB_CREATE_INFERIOR_HOOK. */
|
||||
|
||||
void
|
||||
solib_create_inferior_hook (void)
|
||||
solib_create_inferior_hook (int from_tty)
|
||||
{
|
||||
struct target_so_ops *ops = solib_ops (target_gdbarch);
|
||||
ops->solib_create_inferior_hook();
|
||||
ops->solib_create_inferior_hook (from_tty);
|
||||
}
|
||||
|
||||
/* GLOBAL FUNCTION
|
||||
@ -1104,7 +1104,6 @@ reload_shared_libraries (char *ignored, int from_tty,
|
||||
struct cmd_list_element *e)
|
||||
{
|
||||
no_shared_libraries (NULL, from_tty);
|
||||
solib_add (NULL, from_tty, NULL, auto_solib_add);
|
||||
/* Creating inferior hooks here has two purposes. First, if we reload
|
||||
shared libraries then the address of solib breakpoint we've computed
|
||||
previously might be no longer valid. For example, if we forgot to set
|
||||
@ -1119,9 +1118,19 @@ reload_shared_libraries (char *ignored, int from_tty,
|
||||
#ifdef SOLIB_CREATE_INFERIOR_HOOK
|
||||
SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid));
|
||||
#else
|
||||
solib_create_inferior_hook ();
|
||||
solib_create_inferior_hook (from_tty);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Sometimes the platform-specific hook loads initial shared
|
||||
libraries, and sometimes it doesn't. If it doesn't FROM_TTY will be
|
||||
incorrectly 0 but such solib targets should be fixed anyway. If we
|
||||
made all the inferior hook methods consistent, this call could be
|
||||
removed. Call it only after the solib target has been initialized by
|
||||
solib_create_inferior_hook. */
|
||||
|
||||
solib_add (NULL, 0, NULL, auto_solib_add);
|
||||
|
||||
/* We have unloaded and then reloaded debug info for all shared libraries.
|
||||
However, frames may still reference them, for example a frame's
|
||||
unwinder might still point of DWARF FDE structures that are now freed.
|
||||
|
@ -42,7 +42,7 @@ extern int solib_read_symbols (struct so_list *, int);
|
||||
addresses to which they are linked, and sufficient information to
|
||||
read in their symbols at a later time. */
|
||||
|
||||
extern void solib_create_inferior_hook (void);
|
||||
extern void solib_create_inferior_hook (int from_tty);
|
||||
|
||||
/* If ADDR lies in a shared library, return its name. */
|
||||
|
||||
|
@ -90,7 +90,7 @@ struct target_so_ops
|
||||
void (*clear_solib) (void);
|
||||
|
||||
/* Target dependent code to run after child process fork. */
|
||||
void (*solib_create_inferior_hook) (void);
|
||||
void (*solib_create_inferior_hook) (int from_tty);
|
||||
|
||||
/* Do additional symbol handling, lookup, etc. after symbols
|
||||
for a shared object have been loaded. */
|
||||
|
Loading…
Reference in New Issue
Block a user