*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / solib-som.c
index 886eb4b7bd23602d081b5eb0233a950960cee0e2..52c7367c47becbcdaab307993c0cae133999a68d 100644 (file)
@@ -1,6 +1,6 @@
-/* Handle SOM shared libraries for GDB, the GNU Debugger.
+/* Handle SOM shared libraries.
 
-   Copyright 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 #include "defs.h"
 #include "som.h"
@@ -195,9 +195,10 @@ som_solib_create_inferior_hook (void)
   status = target_write_memory (anaddr, buf, 4);
   if (status != 0)
     {
-      warning ("Unable to write __d_pid");
-      warning ("Suggest linking with /opt/langtools/lib/end.o.");
-      warning ("GDB will be unable to track shl_load/shl_unload calls");
+      warning (_("\
+Unable to write __d_pid.\n\
+Suggest linking with /opt/langtools/lib/end.o.\n\
+GDB will be unable to track shl_load/shl_unload calls"));
       goto keep_going;
     }
 
@@ -215,9 +216,10 @@ som_solib_create_inferior_hook (void)
     msymbol = lookup_minimal_symbol ("__d_trap", NULL, symfile_objfile);
   if (msymbol == NULL)
     {
-      warning ("Unable to find _DLD_HOOK symbol in object file.");
-      warning ("Suggest linking with /opt/langtools/lib/end.o.");
-      warning ("GDB will be unable to track shl_load/shl_unload calls");
+      warning (_("\
+Unable to find _DLD_HOOK symbol in object file.\n\
+Suggest linking with /opt/langtools/lib/end.o.\n\
+GDB will be unable to track shl_load/shl_unload calls"));
       goto keep_going;
     }
   anaddr = SYMBOL_VALUE_ADDRESS (msymbol);
@@ -237,9 +239,10 @@ som_solib_create_inferior_hook (void)
   msymbol = lookup_minimal_symbol ("__dld_hook", NULL, symfile_objfile);
   if (msymbol == NULL)
     {
-      warning ("Unable to find __dld_hook symbol in object file.");
-      warning ("Suggest linking with /opt/langtools/lib/end.o.");
-      warning ("GDB will be unable to track shl_load/shl_unload calls");
+      warning (_("\
+Unable to find __dld_hook symbol in object file.\n\
+Suggest linking with /opt/langtools/lib/end.o.\n\
+GDB will be unable to track shl_load/shl_unload calls"));
       goto keep_going;
     }
   anaddr = SYMBOL_VALUE_ADDRESS (msymbol);
@@ -250,9 +253,10 @@ som_solib_create_inferior_hook (void)
   msymbol = lookup_minimal_symbol ("__d_trap", NULL, symfile_objfile);
   if (msymbol == NULL)
     {
-      warning ("Unable to find __dld_d_trap symbol in object file.");
-      warning ("Suggest linking with /opt/langtools/lib/end.o.");
-      warning ("GDB will be unable to track shl_load/shl_unload calls");
+      warning (_("\
+Unable to find __dld_d_trap symbol in object file.\n\
+Suggest linking with /opt/langtools/lib/end.o.\n\
+GDB will be unable to track shl_load/shl_unload calls"));
       goto keep_going;
     }
   create_solib_event_breakpoint (SYMBOL_VALUE_ADDRESS (msymbol));
@@ -268,7 +272,7 @@ keep_going:
   msymbol = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
   if (msymbol == NULL)
     {
-      error ("Unable to find __dld_flags symbol in object file.\n");
+      error (_("Unable to find __dld_flags symbol in object file."));
     }
 
   anaddr = SYMBOL_VALUE_ADDRESS (msymbol);
@@ -276,9 +280,7 @@ keep_going:
   /* Read the current contents.  */
   status = target_read_memory (anaddr, buf, 4);
   if (status != 0)
-    {
-      error ("Unable to read __dld_flags\n");
-    }
+    error (_("Unable to read __dld_flags."));
   dld_flags = extract_unsigned_integer (buf, 4);
 
   /* Turn on the flags we care about.  */
@@ -288,9 +290,7 @@ keep_going:
   store_unsigned_integer (buf, 4, dld_flags);
   status = target_write_memory (anaddr, buf, 4);
   if (status != 0)
-    {
-      error ("Unable to write __dld_flags\n");
-    }
+    error (_("Unable to write __dld_flags."));
 
   /* Now find the address of _start and set a breakpoint there. 
      We still need this code for two reasons:
@@ -303,9 +303,7 @@ keep_going:
 
   msymbol = lookup_minimal_symbol ("_start", NULL, symfile_objfile);
   if (msymbol == NULL)
-    {
-      error ("Unable to find _start symbol in object file.\n");
-    }
+    error (_("Unable to find _start symbol in object file."));
 
   anaddr = SYMBOL_VALUE_ADDRESS (msymbol);
 
@@ -315,50 +313,6 @@ keep_going:
   clear_symtab_users ();
 }
 
-/* This operation removes the "hook" between GDB and the dynamic linker,
-   which causes the dld to notify GDB of shared library events.
-
-   After this operation completes, the dld will no longer notify GDB of
-   shared library events.  To resume notifications, GDB must call
-   som_solib_create_inferior_hook.
-
-   This operation does not remove any knowledge of shared libraries which
-   GDB may already have been notified of.
- */
-static void
-som_solib_remove_inferior_hook (int pid)
-{
-  CORE_ADDR addr;
-  struct minimal_symbol *msymbol;
-  int status;
-  char dld_flags_buffer[4];
-  unsigned int dld_flags_value;
-  struct cleanup *old_cleanups = save_inferior_ptid ();
-
-  /* Ensure that we're really operating on the specified process. */
-  inferior_ptid = pid_to_ptid (pid);
-
-  /* We won't bother to remove the solib breakpoints from this process.
-
-     In fact, on PA64 the breakpoint is hard-coded into the dld callback,
-     and thus we're not supposed to remove it.
-
-     Rather, we'll merely clear the dld_flags bit that enables callbacks.
-   */
-  msymbol = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
-
-  addr = SYMBOL_VALUE_ADDRESS (msymbol);
-  status = target_read_memory (addr, dld_flags_buffer, 4);
-
-  dld_flags_value = extract_unsigned_integer (dld_flags_buffer, 4);
-
-  dld_flags_value &= ~DLD_FLAGS_HOOKVALID;
-  store_unsigned_integer (dld_flags_buffer, 4, dld_flags_value);
-  status = target_write_memory (addr, dld_flags_buffer, 4);
-
-  do_cleanups (old_cleanups);
-}
-
 static void
 som_special_symbol_handling (void)
 {
@@ -534,24 +488,18 @@ link_map_start (void)
 
   sym = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
   if (!sym)
-    {
-      error ("Unable to find __dld_flags symbol in object file.\n");
-      return 0;
-    }
+    error (_("Unable to find __dld_flags symbol in object file."));
   addr = SYMBOL_VALUE_ADDRESS (sym);
   read_memory (addr, buf, 4);
   dld_flags = extract_unsigned_integer (buf, 4);
   if ((dld_flags & DLD_FLAGS_LISTVALID) == 0)
-    {
-      error ("__dld_list is not valid according to __dld_flags.\n");
-      return 0;
-    }
+    error (_("__dld_list is not valid according to __dld_flags."));
 
   /* If the libraries were not mapped private, warn the user.  */
   if ((dld_flags & DLD_FLAGS_MAPPRIVATE) == 0)
-    warning ("The shared libraries were not privately mapped; setting a\n"
+    warning (_("The shared libraries were not privately mapped; setting a\n"
             "breakpoint in a shared library will not work until you rerun the "
-            "program.\n");
+            "program.\n"));
 
   sym = lookup_minimal_symbol ("__dld_list", NULL, NULL);
   if (!sym)
@@ -561,7 +509,7 @@ link_map_start (void)
       sym = lookup_minimal_symbol ("__dld_flags", NULL, NULL);
       if (!sym)
        {
-         error ("Unable to find dynamic library list.\n");
+         error (_("Unable to find dynamic library list."));
          return 0;
        }
       addr = SYMBOL_VALUE_ADDRESS (sym) - 8;
@@ -572,10 +520,7 @@ link_map_start (void)
   read_memory (addr, buf, 4);
   addr = extract_unsigned_integer (buf, 4);
   if (addr == 0)
-    {
-      error ("Debugging dynamic executables loaded via the hpux8 dld.sl is not supported.\n");
-      return 0;
-    }
+    return 0;
 
   read_memory (addr, buf, 4);
   return extract_unsigned_integer (buf, 4);
@@ -612,15 +557,14 @@ som_current_sos (void)
       new->lm_info = xmalloc (sizeof (struct lm_info));
       make_cleanup (xfree, new->lm_info);
 
-      read_memory (lm, (char *)&dbuf, sizeof (struct dld_list));
+      read_memory (lm, (gdb_byte *)&dbuf, sizeof (struct dld_list));
 
-      addr = extract_unsigned_integer (&dbuf.name, sizeof (dbuf.name));
+      addr = extract_unsigned_integer ((gdb_byte *)&dbuf.name,
+                                      sizeof (dbuf.name));
       target_read_string (addr, &namebuf, SO_NAME_MAX_PATH_SIZE - 1, &errcode);
       if (errcode != 0)
-       {
-         warning ("current_sos: Can't read pathname for load map: %s\n",
-                  safe_strerror (errcode));
-       }
+       warning (_("Can't read pathname for load map: %s."),
+                safe_strerror (errcode));
       else
        {
          strncpy (new->so_name, namebuf, SO_NAME_MAX_PATH_SIZE - 1);
@@ -637,7 +581,7 @@ som_current_sos (void)
            lmi->lm_addr = lm;
 
 #define EXTRACT(_fld) \
-  extract_unsigned_integer (&dbuf._fld, sizeof (dbuf._fld));
+  extract_unsigned_integer ((gdb_byte *)&dbuf._fld, sizeof (dbuf._fld));
 
            lmi->text_addr = EXTRACT (text_addr);
            tmp = EXTRACT (info);
@@ -732,7 +676,7 @@ som_open_symbol_file_object (void *from_ttyp)
 
   if (errcode)
     {
-      warning ("failed to read exec filename from attached file: %s",
+      warning (_("failed to read exec filename from attached file: %s"),
               safe_strerror (errcode));
       return 0;
     }
@@ -860,7 +804,7 @@ som_solib_section_offsets (struct objfile *objfile,
                                                     "$PRIVATE$");
          if (!private_section)
            {
-             warning ("Unable to find $PRIVATE$ in shared library!");
+             warning (_("Unable to find $PRIVATE$ in shared library!"));
              offsets->offsets[SECT_OFF_DATA (objfile)] = 0;
              offsets->offsets[SECT_OFF_BSS (objfile)] = 0;
              return 1;
This page took 0.027409 seconds and 4 git commands to generate.