2001-01-24 Fernando Nasser <fnasser@redhat.com>
[deliverable/binutils-gdb.git] / gdb / coff-solib.c
index 01ffc9c6347f7c216d3c97ae4cc282d17e41e7e2..e36b276adb1daefdb87ae9ec44c4ce2d5ca1c90a 100644 (file)
@@ -1,56 +1,55 @@
 /* Handle COFF SVR3 shared libraries for GDB, the GNU Debugger.
    Copyright 1993 Free Software Foundation, Inc.
-   
-This file is part of GDB.
 
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+   This file is part of GDB.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
 
-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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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.  */
 
 
 #include "defs.h"
 
+#include "frame.h"
 #include "bfd.h"
 #include "gdbcore.h"
 #include "symtab.h"
 
 /*
 
-GLOBAL FUNCTION
+   GLOBAL FUNCTION
 
-       coff_solib_add -- add a shared library files to the symtab list.  We
-       examine the `.lib' section of the exec file and determine the names of
-       the shared libraries.
+   coff_solib_add -- add a shared library files to the symtab list.  We
+   examine the `.lib' section of the exec file and determine the names of
+   the shared libraries.
 
-       This function is responsible for discovering those names and
-       addresses, and saving sufficient information about them to allow
-       their symbols to be read at a later time.
+   This function is responsible for discovering those names and
+   addresses, and saving sufficient information about them to allow
+   their symbols to be read at a later time.
 
-SYNOPSIS
+   SYNOPSIS
 
-       void coff_solib_add (char *arg_string, int from_tty,
-                            struct target_ops *target)
+   void coff_solib_add (char *arg_string, int from_tty,
+   struct target_ops *target)
 
-DESCRIPTION
+   DESCRIPTION
 
-*/
+ */
 
 void
-coff_solib_add (arg_string, from_tty, target)
-     char *arg_string;
-     int from_tty;
-     struct target_ops *target;
-{      
+coff_solib_add (char *arg_string, int from_tty, struct target_ops *target)
+{
   asection *libsect;
 
   libsect = bfd_get_section_by_name (exec_bfd, ".lib");
@@ -67,7 +66,7 @@ coff_solib_add (arg_string, from_tty, target)
 
       libsize = bfd_section_size (exec_bfd, libsect);
 
-      lib = alloca (libsize);
+      lib = (unsigned char *) alloca (libsize);
 
       bfd_get_section_contents (exec_bfd, libsect, lib, 0, libsize);
 
@@ -78,7 +77,7 @@ coff_solib_add (arg_string, from_tty, target)
          int len, nameoffset;
          char *filename;
 
-         ent = (struct libent *)lib;
+         ent = (struct libent *) lib;
 
          len = bfd_get_32 (exec_bfd, ent->len);
 
@@ -87,40 +86,44 @@ coff_solib_add (arg_string, from_tty, target)
          if (len <= 0)
            break;
 
-         filename = (char *)ent + nameoffset * 4;
+         filename = (char *) ent + nameoffset * 4;
 
          objfile = symbol_file_add (filename, from_tty,
-                                    0, /* addr */
-                                    0, /* not mainline */
-                                    0, /* not mapped */
-                                    0); /* Not readnow */
+                                    NULL,      /* no offsets */
+                                    0,         /* not mainline */
+                                    OBJF_SHARED);      /* flags */
+
          libsize -= len * 4;
          lib += len * 4;
        }
+
+      /* Getting new symbols may change our opinion about what is
+         frameless.  */
+      reinit_frame_cache ();
     }
 }
 
 /*
-  
-GLOBAL FUNCTION
-  
-       coff_solib_create_inferior_hook -- shared library startup support
-  
-SYNOPSIS
-  
-       void coff_solib_create_inferior_hook()
-  
-DESCRIPTION
-  
-       When gdb starts up the inferior, the kernel maps in the shared
-       libraries.  We get here with the target stopped at it's first
-       instruction, and the libraries already mapped.  At this point, this
-       function gets called via expansion of the macro
-       SOLIB_CREATE_INFERIOR_HOOK.
 */
-
-void 
-coff_solib_create_inferior_hook()
+
+   GLOBAL FUNCTION
+
+   coff_solib_create_inferior_hook -- shared library startup support
+
+   SYNOPSIS
+
+   void coff_solib_create_inferior_hook()
+
+   DESCRIPTION
+
+   When gdb starts up the inferior, the kernel maps in the shared
+   libraries.  We get here with the target stopped at it's first
+   instruction, and the libraries already mapped.  At this      point, this
+   function gets called via expansion of the macro
+   SOLIB_CREATE_INFERIOR_HOOK.
+ */
+
+void
+coff_solib_create_inferior_hook (void)
 {
   coff_solib_add ((char *) 0, 0, (struct target_ops *) 0);
 }
This page took 0.039331 seconds and 4 git commands to generate.