Use exec_file_find to prepend gdb_sysroot in follow_exec
authorGary Benson <gbenson@redhat.com>
Tue, 28 Apr 2015 11:21:32 +0000 (12:21 +0100)
committerGary Benson <gbenson@redhat.com>
Tue, 28 Apr 2015 11:21:32 +0000 (12:21 +0100)
This commit updates follow_exec to use exec_file_find to prefix
the new executable's filename with gdb_sysroot rather than doing
it longhand.

gdb/ChangeLog:

* infrun.c (solist.h): New include.
(follow_exec): Use exec_file_find to prefix execd_pathname
with gdb_sysroot.

gdb/ChangeLog
gdb/infrun.c

index d833876193d7bd8cef48253e600bdddc5228d616..a22b7f8018072c963feafb7a4ad6314827b0cd8e 100644 (file)
@@ -1,3 +1,9 @@
+2015-04-28  Gary Benson <gbenson@redhat.com>
+
+       * infrun.c (solist.h): New include.
+       (follow_exec): Use exec_file_find to prefix execd_pathname
+       with gdb_sysroot.
+
 2015-04-28  Patrick Palka  <patrick@parcs.ath.cx>
 
        * tui/tui-source.c (tui_set_source_content): Avoid calling
index 7870f703e6c76041d0c831b28545f3a5536e1513..f09e2daa94560a7548f5d4bb5c8646bb168d1422 100644 (file)
@@ -60,6 +60,7 @@
 #include "target-descriptions.h"
 #include "target-dcache.h"
 #include "terminal.h"
+#include "solist.h"
 
 /* Prototypes for local functions */
 
@@ -1133,15 +1134,18 @@ follow_exec (ptid_t ptid, char *execd_pathname)
 
   breakpoint_init_inferior (inf_execd);
 
-  if (gdb_sysroot && *gdb_sysroot)
+  if (gdb_sysroot != NULL && *gdb_sysroot != '\0')
     {
-      char *name = alloca (strlen (gdb_sysroot)
-                           + strlen (execd_pathname)
-                           + 1);
+      int fd = -1;
+      char *name;
 
-      strcpy (name, gdb_sysroot);
-      strcat (name, execd_pathname);
-      execd_pathname = name;
+      name = exec_file_find (execd_pathname, &fd);
+      if (fd >= 0)
+       close (fd);
+
+      execd_pathname = alloca (strlen (name) + 1);
+      strcpy (execd_pathname, name);
+      xfree (name);
     }
 
   /* Reset the shared library package.  This ensures that we get a