aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/exec.c8
-rw-r--r--gdb/infrun.c7
-rw-r--r--gdb/solib.c25
4 files changed, 29 insertions, 21 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 92d972e..425282c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2015-04-29 Gary Benson <gbenson@redhat.com>
+
+ * solib.c (solib_find_1): Allow fd argument to be NULL.
+ (exec_file_find): Update comment.
+ (solib_find): Likewise.
+ * exec.c (exec_file_locate_attach): Use NULL as fd
+ argument to exec_file_find to avoid having to close
+ the opened file.
+ * infrun.c (follow_exec): Likewise.
+
2015-04-28 Doug Evans <dje@google.com>
PR python/18299
diff --git a/gdb/exec.c b/gdb/exec.c
index 872b86c..8a4ab6f 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -156,13 +156,7 @@ exec_file_locate_attach (int pid, int from_tty)
is absolute then prefix the filename with gdb_sysroot. */
if (gdb_sysroot != NULL && *gdb_sysroot != '\0'
&& IS_ABSOLUTE_PATH (exec_file))
- {
- int fd = -1;
-
- full_exec_path = exec_file_find (exec_file, &fd);
- if (fd >= 0)
- close (fd);
- }
+ full_exec_path = exec_file_find (exec_file, NULL);
if (full_exec_path == NULL)
{
diff --git a/gdb/infrun.c b/gdb/infrun.c
index f09e2da..a4f0b9f 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -1136,12 +1136,7 @@ follow_exec (ptid_t ptid, char *execd_pathname)
if (gdb_sysroot != NULL && *gdb_sysroot != '\0')
{
- int fd = -1;
- char *name;
-
- name = exec_file_find (execd_pathname, &fd);
- if (fd >= 0)
- close (fd);
+ char *name = exec_file_find (execd_pathname, NULL);
execd_pathname = alloca (strlen (name) + 1);
strcpy (execd_pathname, name);
diff --git a/gdb/solib.c b/gdb/solib.c
index 2466235..358a0a2 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -114,8 +114,9 @@ show_solib_search_path (struct ui_file *file, int from_tty,
/* Return the full pathname of a binary file (the main executable
or a shared library file), or NULL if not found. The returned
- pathname is malloc'ed and must be freed by the caller. *FD is
- set to either -1 or an open file handle for the binary file.
+ pathname is malloc'ed and must be freed by the caller. If FD
+ is non-NULL, *FD is set to either -1 or an open file handle for
+ the binary file.
Global variable GDB_SYSROOT is used as a prefix directory
to search for binary files if they have an absolute path.
@@ -254,7 +255,8 @@ solib_find_1 (char *in_pathname, int *fd, int is_solib)
/* Handle files to be accessed via the target. */
if (is_target_filename (temp_pathname))
{
- *fd = -1;
+ if (fd != NULL)
+ *fd = -1;
do_cleanups (old_chain);
return temp_pathname;
}
@@ -367,14 +369,21 @@ solib_find_1 (char *in_pathname, int *fd, int is_solib)
OPF_TRY_CWD_FIRST | OPF_RETURN_REALPATH, in_pathname,
O_RDONLY | O_BINARY, &temp_pathname);
- *fd = found_file;
+ if (fd == NULL)
+ {
+ if (found_file >= 0)
+ close (found_file);
+ }
+ else
+ *fd = found_file;
+
return temp_pathname;
}
/* Return the full pathname of the main executable, or NULL if not
found. The returned pathname is malloc'ed and must be freed by
- the caller. *FD is set to either -1 or an open file handle for
- the main executable.
+ the caller. If FD is non-NULL, *FD is set to either -1 or an open
+ file handle for the main executable.
The search algorithm used is described in solib_find_1's comment
above. */
@@ -405,8 +414,8 @@ exec_file_find (char *in_pathname, int *fd)
/* Return the full pathname of a shared library file, or NULL if not
found. The returned pathname is malloc'ed and must be freed by
- the caller. *FD is set to either -1 or an open file handle for
- the shared library.
+ the caller. If FD is non-NULL, *FD is set to either -1 or an open
+ file handle for the shared library.
The search algorithm used is described in solib_find_1's comment
above. */