diff options
author | Tom Tromey <tromey@redhat.com> | 2012-07-18 19:34:57 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2012-07-18 19:34:57 +0000 |
commit | a4453b7e0b9b84dd18c844ef43fbb9f6e2e75433 (patch) | |
tree | 86d872256f3fb47092c6660448c7f7655748e2b7 /gdb/solib.c | |
parent | cbb099e88685f8aa80b9a958ba35988d8dbb8721 (diff) | |
download | gdb-a4453b7e0b9b84dd18c844ef43fbb9f6e2e75433.zip gdb-a4453b7e0b9b84dd18c844ef43fbb9f6e2e75433.tar.gz gdb-a4453b7e0b9b84dd18c844ef43fbb9f6e2e75433.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/solib.c')
-rw-r--r-- | gdb/solib.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gdb/solib.c b/gdb/solib.c index 7b9f473..4ddf91a 100644 --- a/gdb/solib.c +++ b/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; |