From: Tom Tromey Date: Sun, 8 Sep 2019 17:38:24 +0000 (-0600) Subject: Introduce bfd_set_filename X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=64b2d4a0a4e4f80d2aa2e52c6eec3186e76fc397;p=binutils-gdb.git Introduce bfd_set_filename This introduces a new bfd_set_filename function, which is then used in various spots in gdb. This allows for the removal of some casts. bfd/ChangeLog 2019-09-11 Tom Tromey * opncls.c (bfd_set_filename): New function. * bfd-in2.h: Regenerate. gdb/ChangeLog 2019-09-11 Tom Tromey * symfile-mem.c (symbol_file_add_from_memory): Use bfd_set_filename. * solib-darwin.c (darwin_bfd_open): Use bfd_set_filename. * solib-aix.c (solib_aix_bfd_open): Use bfd_set_filename. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f498a91b88f..ea0f06041b0 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2019-09-11 Tom Tromey + + * opncls.c (bfd_set_filename): New function. + * bfd-in2.h: Regenerate. + 2019-09-11 Alan Modra * targets.c (struct bfd_target): Add _bfd_group_name. diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index dc9b5daf946..13445a1de71 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1193,6 +1193,8 @@ bfd_boolean bfd_fill_in_gnu_debuglink_section char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir); +void bfd_set_filename (bfd *abfd, char *filename); + /* Extracted from libbfd.c. */ /* Byte swapping macros for user section data. */ diff --git a/bfd/opncls.c b/bfd/opncls.c index 07f89b9a4c1..d14dfe93206 100644 --- a/bfd/opncls.c +++ b/bfd/opncls.c @@ -2089,3 +2089,23 @@ bfd_follow_build_id_debuglink (bfd *abfd, const char *dir) get_build_id_name, check_build_id_file, &build_id); } + +/* +FUNCTION + bfd_set_filename + +SYNOPSIS + void bfd_set_filename (bfd *abfd, char *filename); + +DESCRIPTION + Set the filename of @var{abfd}. The old filename, if any, is freed. + @var{filename} must be allocated using @code{xmalloc}. After + this call, it is owned @var{abfd}. +*/ + +void +bfd_set_filename (bfd *abfd, char *filename) +{ + free ((char *) abfd->filename); + abfd->filename = filename; +} diff --git a/gdb/ChangeLog b/gdb/ChangeLog index dace64e6be3..e4b18fa1dec 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2019-09-11 Tom Tromey + + * symfile-mem.c (symbol_file_add_from_memory): Use + bfd_set_filename. + * solib-darwin.c (darwin_bfd_open): Use bfd_set_filename. + * solib-aix.c (solib_aix_bfd_open): Use bfd_set_filename. + 2019-09-10 Tom Tromey * dwarf-index-write.c (write_psymbols): Extend error message. diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c index 2b5444293e2..0c8a18267c9 100644 --- a/gdb/solib-aix.c +++ b/gdb/solib-aix.c @@ -643,10 +643,10 @@ solib_aix_bfd_open (const char *pathname) along with appended parenthesized member name in order to allow commands listing all shared libraries to display. Otherwise, we would only be displaying the name of the archive member object. */ - xfree ((char *) bfd_get_filename (object_bfd.get ())); - object_bfd->filename = xstrprintf ("%s%s", - bfd_get_filename (archive_bfd.get ()), - sep); + bfd_set_filename (object_bfd.get (), + xstrprintf ("%s%s", + bfd_get_filename (archive_bfd.get ()), + sep)); return object_bfd; } diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c index 3dd30d2aa3c..778c6d9f617 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -670,8 +670,7 @@ darwin_bfd_open (const char *pathname) /* The current filename for fat-binary BFDs is a name generated by BFD, usually a string containing the name of the architecture. Reset its value to the actual filename. */ - xfree ((char *) bfd_get_filename (res.get ())); - res->filename = xstrdup (pathname); + bfd_set_filename (res.get (), xstrdup (pathname)); return res; } diff --git a/gdb/symfile-mem.c b/gdb/symfile-mem.c index 6d1deae1e0e..05542c13915 100644 --- a/gdb/symfile-mem.c +++ b/gdb/symfile-mem.c @@ -101,11 +101,9 @@ symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr, /* Manage the new reference for the duration of this function. */ gdb_bfd_ref_ptr nbfd_holder = gdb_bfd_ref_ptr::new_reference (nbfd); - xfree ((char *) bfd_get_filename (nbfd)); if (name == NULL) - nbfd->filename = xstrdup ("shared object read from target memory"); - else - nbfd->filename = name; + name = xstrdup ("shared object read from target memory"); + bfd_set_filename (nbfd, name); if (!bfd_check_format (nbfd, bfd_object)) error (_("Got object file from memory but can't read symbols: %s."),