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:
Jan Kratochvil 2010-01-08 22:52:04 +00:00
parent 339d40a3d9
commit 268a4a75bd
19 changed files with 96 additions and 48 deletions

View File

@ -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.

View File

@ -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
}

View File

@ -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 ();

View File

@ -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. */

View File

@ -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

View File

@ -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;

View File

@ -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 ();

View File

@ -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;

View File

@ -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)
{
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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, &current_target, auto_solib_add);
solib_add (NULL, from_tty, &current_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, &current_target, auto_solib_add);
solib_add (NULL, from_tty, &current_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)

View File

@ -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. */
}

View File

@ -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.

View File

@ -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. */

View File

@ -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. */