mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-04 05:48:20 +08:00
* symfile.c (symfile_bfd_open): Don't copy name. Call
gdb_bfd_stash_filename. (load_command): Open the new BFD before freeing the old. (bfd_open_maybe_remote): Call gdb_bfd_stash_filename. * symfile-mem.c (symbol_file_add_from_memory): Don't copy name. Call gdb_bfd_stash_filename. * spu-linux-nat.c (spu_bfd_open): Don't copy name. * solib-spu.c (spu_bfd_fopen): Don't copy name. Call gdb_bfd_stash_filename. * solib-darwin.c (darwin_solib_get_all_image_info_addr_at_init): Free found_pathname. * rs6000-nat.c (add_vmap): Don't copy filename. Call gdb_bfd_stash_filename. * remote.c (remote_bfd_open): Call gdb_bfd_stash_filename. * machoread.c (macho_add_oso_symfile): Call gdb_bfd_stash_filename. (macho_symfile_read_all_oso): Arrange to free archive_name. Call gdb_bfd_stash_filename. (macho_check_dsym): Don't copy filename. Call gdb_bfd_stash_filename. * jit.c (bfd_open_from_target_memory): Don't copy the filename. * gdb_bfd.c (gdb_bfd_stash_filename): New function. * gdb_bfd.h (gdb_bfd_stash_filename): Declare. * gcore.c (create_gcore_bfd): Call gdb_bfd_stash_filename. * exec.c (exec_close): Don't free the BFD's filename. (exec_file_attach): Don't copy the filename. Call gdb_bfd_stash_filename. * corelow.c (core_close): Don't free the BFD's filename. (core_open): Call gdb_bfd_stash_filename. * corefile.c (reopen_exec_file): Remove #if 0 code. * solib.c (solib_bfd_fopen): Call gdb_bfd_stash_filename. Free pathname. * dwarf2read.c (try_open_dwo_file): Call gdb_bfd_stash_filename.
This commit is contained in:
16
gdb/solib.c
16
gdb/solib.c
@ -361,9 +361,9 @@ solib_find (char *in_pathname, int *fd)
|
||||
it is used as file handle to open the file. Throws an error if the file
|
||||
could not be opened. Handles both local and remote file access.
|
||||
|
||||
PATHNAME must be malloc'ed by the caller. If successful, the new BFD's
|
||||
name will point to it. If unsuccessful, PATHNAME will be freed and the
|
||||
FD will be closed (unless FD was -1). */
|
||||
PATHNAME must be malloc'ed by the caller. It will be freed by this
|
||||
function. If unsuccessful, the FD will be closed (unless FD was
|
||||
-1). */
|
||||
|
||||
bfd *
|
||||
solib_bfd_fopen (char *pathname, int fd)
|
||||
@ -390,6 +390,9 @@ solib_bfd_fopen (char *pathname, int fd)
|
||||
pathname, bfd_errmsg (bfd_get_error ()));
|
||||
}
|
||||
|
||||
gdb_bfd_stash_filename (abfd);
|
||||
xfree (pathname);
|
||||
|
||||
return gdb_bfd_ref (abfd);
|
||||
}
|
||||
|
||||
@ -421,17 +424,16 @@ solib_bfd_open (char *pathname)
|
||||
/* Check bfd format. */
|
||||
if (!bfd_check_format (abfd, bfd_object))
|
||||
{
|
||||
gdb_bfd_unref (abfd);
|
||||
make_cleanup (xfree, found_pathname);
|
||||
make_cleanup_bfd_close (abfd);
|
||||
error (_("`%s': not in executable format: %s"),
|
||||
found_pathname, bfd_errmsg (bfd_get_error ()));
|
||||
bfd_get_filename (abfd), bfd_errmsg (bfd_get_error ()));
|
||||
}
|
||||
|
||||
/* Check bfd arch. */
|
||||
b = gdbarch_bfd_arch_info (target_gdbarch);
|
||||
if (!b->compatible (b, bfd_get_arch_info (abfd)))
|
||||
warning (_("`%s': Shared library architecture %s is not compatible "
|
||||
"with target architecture %s."), found_pathname,
|
||||
"with target architecture %s."), bfd_get_filename (abfd),
|
||||
bfd_get_arch_info (abfd)->printable_name, b->printable_name);
|
||||
|
||||
return abfd;
|
||||
|
Reference in New Issue
Block a user