* monitor.c (monitor_load_srec monitor_make_srec): Move all
[deliverable/binutils-gdb.git] / gdb / solib.c
index 2548e62d99f34363458eb56e92fb9d5d514e0fc0..c5ffa7a3dc3c96e01de2d529e21d2ecd5387dbb4 100644 (file)
@@ -16,14 +16,14 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 
 #include "defs.h"
 
 #include <sys/types.h>
 #include <signal.h>
-#include <string.h>
+#include "gdb_string.h"
 #include <sys/param.h>
 #include <fcntl.h>
 #include <unistd.h>
@@ -47,10 +47,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "frame.h"
 #include "regex.h"
 #include "inferior.h"
+#include "environ.h"
 #include "language.h"
 #include "gdbcmd.h"
 
-#define MAX_PATH_SIZE 256              /* FIXME: Should be dynamic */
+#define MAX_PATH_SIZE 512              /* FIXME: Should be dynamic */
 
 /* On SVR4 systems, for the initial implementation, use some runtime startup
    symbol as the "startup mapping complete" breakpoint address.  The models
@@ -238,12 +239,13 @@ solib_map_sections (so)
   filename = tilde_expand (so -> so_name);
   old_chain = make_cleanup (free, filename);
   
-  scratch_chan = openp (getenv ("PATH"), 1, filename, O_RDONLY, 0,
-                       &scratch_pathname);
+  scratch_chan = openp (get_in_environ (inferior_environ, "PATH"), 
+                       1, filename, O_RDONLY, 0, &scratch_pathname);
   if (scratch_chan < 0)
     {
-      scratch_chan = openp (getenv ("LD_LIBRARY_PATH"), 1, filename,
-                           O_RDONLY, 0, &scratch_pathname);
+      scratch_chan = openp (get_in_environ 
+                           (inferior_environ, "LD_LIBRARY_PATH"), 
+                           1, filename, O_RDONLY, 0, &scratch_pathname);
     }
   if (scratch_chan < 0)
     {
@@ -262,6 +264,12 @@ solib_map_sections (so)
   so -> abfd = abfd;
   abfd -> cacheable = true;
 
+  /* copy full path name into so_name, so that later symbol_file_add can find
+     it */
+  if (strlen (scratch_pathname) >= MAX_PATH_SIZE)
+    error ("Full path name length of shared library exceeds MAX_PATH_SIZE in so_list structure.");
+  strcpy (so->so_name, scratch_pathname);
+
   if (!bfd_check_format (abfd, bfd_object))
     {
       error ("\"%s\": not in executable format: %s.",
@@ -942,15 +950,15 @@ symbol_add_stub (arg)
 static int match_main (soname)
     char *soname;
 {
-char **mainp;
+  char **mainp;
 
-for (mainp = main_name_list; *mainp != NULL; mainp++)
-  {
-    if (strcmp (soname, *mainp) == 0)
+  for (mainp = main_name_list; *mainp != NULL; mainp++)
+    {
+      if (strcmp (soname, *mainp) == 0)
        return (1);
-  }
+    }
 
-return (0);
+  return (0);
 }
 
 /*
This page took 0.02469 seconds and 4 git commands to generate.