gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Fri, 8 Jan 2010 22:52:04 +0000 (22:52 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Fri, 8 Jan 2010 22:52:04 +0000 (22:52 +0000)
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.

19 files changed:
gdb/ChangeLog
gdb/infcmd.c
gdb/infrun.c
gdb/linux-nat.c
gdb/nto-procfs.c
gdb/solib-darwin.c
gdb/solib-frv.c
gdb/solib-irix.c
gdb/solib-null.c
gdb/solib-osf.c
gdb/solib-pa64.c
gdb/solib-som.c
gdb/solib-spu.c
gdb/solib-sunos.c
gdb/solib-svr4.c
gdb/solib-target.c
gdb/solib.c
gdb/solib.h
gdb/solist.h

index bfb8d29e6a16e9d6dec9e9e87d7eaab9d9c93f36..8f88733d69510392371e69b57eb8614722b524fe 100644 (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.
 
index 821ae5fb37b432238e5f461e2ff3191528564277..21a2233ac44b3e358aa939e6445aa881c1684847 100644 (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
     }
 
index cfa7e82865e0a7e74350bb562b212be198a4bc3f..3d6812d2e3bf42bfbb1974979c54c3312f24ccaa 100644 (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 ();
index 0c95b95f936051b3ba0894ffd012f7470eb691ca..48ea1bc46c81b40c72f83eb5109f4f66e6f2222b 100644 (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.  */
index 215647d0a30ac871c2aac7a474e0367f429871f0..d8f3c91a8274490b1a0bb9657130418263c680f6 100644 (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
index b019adaa398961d01c80b3b610e9e58fbf191dd6..3c700899d40db3177a45b87b43a425c9eb643d1b 100644 (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;
index 5c9a220fd9f6ed3f7765273b9d44208848ee1259..0976c8352eacd49c4bd0d582d47b43c6fefab4a1 100644 (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 ();
index 596f9a01a240700236866a2613e0b3d9533f8b88..17f7240269cbed2a29866fcebea9992137c8ebcc 100644 (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;
index adefb044fdc73b3b82fa79255140876949a8bba4..2cc6c643789df43247a86c360a72dc5187687de1 100644 (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)
 {
 }
 
index ded56709fe531119b9a510a8c6557561c374d21d..ab6ea56fcfdbac772dd5fb12197ddf5ad120e134 100644 (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;
index 79fdb93a4686f4070150c7286bddf74184399284..df97f319cf04fbe0e8b8728d42edf9b8bf3aabc5 100644 (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;
index 758db07ee28bc73894ed0cf1bad91baf72f0a59b..6540d0b7bd5726ebfdd3c6783c4ec7ba57e6ba00 100644 (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;
index 07b7a1b42fdd5447ba777e041160a88644a0d817..e752544699de8a9d7e528800dc6c9d6f1ff4b1ad 100644 (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
index db2a40cc5686ca412dc476fd668fae8850f9273d..e8a1f32488d139c717f8ca4420ce3dd72cc8d930 100644 (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;
index ee87a43cb08ed28b78851b186abae7dbb3d3bf80..00e16b000a7c83857078dca599882da8a3cd4b07 100644 (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)
index 994caacafc4de96f61964b430e9aaec70733315a..a9c34c8506157e5eb571d99386fd8be4887e0760 100644 (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.  */
 }
index 7662e9d71c90e2e9b441b87ebfde67f7d5c13a24..6d6bf83588918609cf0c248ab48148554e22337f 100644 (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.
index 0a1317c025cbdb06195a407aadab56d1dcba7b77..03a4b08b264623a5a1ed8d3b6e8ed678798646f3 100644 (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.  */
 
index 08107a1c08347bca0786efe1cec9c5c25aaac47d..573f73665120d0f01347ca19893996c07c50ece0 100644 (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.  */