+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
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)
{
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);
/* 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.
/* 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;
}
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. */
/* 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. */