From patchwork Fri Sep 6 13:29:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 34407 Received: (qmail 38011 invoked by alias); 6 Sep 2019 13:29:24 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 37980 invoked by uid 89); 6 Sep 2019 13:29:24 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.0 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=xfree, duration, Manage, Clean X-HELO: mail-pf1-f172.google.com Received: from mail-pf1-f172.google.com (HELO mail-pf1-f172.google.com) (209.85.210.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 06 Sep 2019 13:29:21 +0000 Received: by mail-pf1-f172.google.com with SMTP id y22so4500492pfr.3; Fri, 06 Sep 2019 06:29:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:subject:message-id:mime-version:content-disposition :user-agent; bh=2lswobXL9NCOLT+S8q7gX4sZrW0f9q96gsR1u2xd1Jw=; b=dlOtSsq3XpG3qyp9mHQnxNzXD2Ve4xu7MFDtiLSlArTtbXKDHEAhfbSg+L58IM8Gxt bAVofuaqJc3tCFXaTKo/HoYOHDvjV5LA+MTj7/G2qoQON5C60cdM0Jdi4eHzKcTTI/7W Kh4Q3jsMqRutJm90FdSGwT4luC5znVHsARLBUJ5m3ws11k5fUgGJyDHSSa7PsEQAFDAj eC0XFsFajqCXtHz/Tjd7Bhj0wF+peILWl63NxxEqYgkjdn9qfen/vtxt/isB5cU5nHWx SSWWDH8rqrfGey7dUWHW5TzF+bhh2WhfgfABvKJieWd4WKsYuVtnolrY1zNE4RLIHmEP 4i6Q== Return-Path: Received: from bubble.grove.modra.org (158.106.96.58.static.exetel.com.au. [58.96.106.158]) by smtp.gmail.com with ESMTPSA id p66sm10109564pfg.127.2019.09.06.06.29.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Sep 2019 06:29:18 -0700 (PDT) Received: by bubble.grove.modra.org (Postfix, from userid 1000) id 4D91B807E7; Fri, 6 Sep 2019 22:59:14 +0930 (ACST) Date: Fri, 6 Sep 2019 22:59:14 +0930 From: Alan Modra To: binutils@sourceware.org, gdb-patches@sourceware.org Subject: bfd_get_filename Message-ID: <20190906132914.GJ30165@bubble.grove.modra.org> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) This macro says: /* Cast from const char * to char * so that caller can assign to a char * without a warning. */ I reckon that isn't such a good idea since it can result in char* variables where const char* is appropriate. Not very many places need the char* cast. Applying to gdb as obvious. bfd/ * aout-target.h (object_p): Formatting. * bfd-in.h (bfd_get_filename): Don't cast to char*. * corefile.c (generic_core_file_matches_executable_p): Constify variables and remove cast. * bfd-in2.h: Regenerate. binutils/ * nm.c (print_object_filename_bsd, print_object_filename_sysv), (print_object_filename_posix, print_archive_filename_bsd), (print_archive_filename_sysv, print_archive_filename_posix), (print_archive_member_bsd, print_archive_member_sysv), (print_archive_member_posix): Constify parameter. (struct output_fns ), (): Likewise. * objcopy.c (copy_archive): Add cast for make_tempdir. ld/ * emultempl/elf32.em (gld${EMULATION_NAME}_search_needed): Constify variable. * emultempl/pe.em (gld_${EMULATION_NAME}_after_open): Likewise. * emultempl/pep.em (gld_${EMULATION_NAME}_after_open): Likewise. gdb/ * coffread.c (coff_symfile_read): Constify filename variable. * dbxread.c (dbx_symfile_init, coffstab_build_psymtabs), (elfstab_build_psymtabs, stabsect_build_psymtabs): Likewise. * gdb_bfd.c (gdb_bfd_close_or_warn): Likewise. * solib.c (reload_shared_libraries_1): Likewise. * symfile.c (reread_symbols): Likewise. * solib-aix.c (solib_aix_bfd_open): Add cast for xfree of filename. * solib-darwin.c (darwin_bfd_open): Likewise. * symfile-mem.c (symbol_file_add_from_memory): Likewise. sim/cris/ * sim-if.c (sim_open): Constify filename variable. diff --git a/bfd/aout-target.h b/bfd/aout-target.h index 2f3d5ea453..99a82bb57a 100644 --- a/bfd/aout-target.h +++ b/bfd/aout-target.h @@ -180,7 +180,7 @@ MY (object_p) (bfd *abfd) #ifndef S_IXUSR #define S_IXUSR 0100 /* Execute by owner. */ #endif - if (stat(abfd->filename, &buf) == 0 && (buf.st_mode & S_IXUSR)) + if (stat (abfd->filename, &buf) == 0 && (buf.st_mode & S_IXUSR)) abfd->flags |= EXEC_P; } #endif /* ENTRY_CAN_BE_ZERO */ diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index a5e95d14aa..6544838a57 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -518,9 +518,7 @@ extern int bfd_stat (bfd *, struct stat *); #endif extern void _bfd_warn_deprecated (const char *, const char *, int, const char *); -/* Cast from const char * to char * so that caller can assign to - a char * without a warning. */ -#define bfd_get_filename(abfd) ((char *) (abfd)->filename) +#define bfd_get_filename(abfd) ((abfd)->filename) #define bfd_get_cacheable(abfd) ((abfd)->cacheable) #define bfd_get_format(abfd) ((abfd)->format) #define bfd_get_target(abfd) ((abfd)->xvec->name) diff --git a/bfd/corefile.c b/bfd/corefile.c index aa43da5cae..b2b3d2e26a 100644 --- a/bfd/corefile.c +++ b/bfd/corefile.c @@ -157,9 +157,9 @@ DESCRIPTION bfd_boolean generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd) { - char *exec; - char *core; - char *last_slash; + const char *exec; + const char *core; + const char *last_slash; if (exec_bfd == NULL || core_bfd == NULL) return TRUE; @@ -169,7 +169,7 @@ generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd) non-const char *. In this case, the assignement does not lead to breaking the const, as we're only reading the string. */ - core = (char *) bfd_core_file_failing_command (core_bfd); + core = bfd_core_file_failing_command (core_bfd); if (core == NULL) return TRUE; diff --git a/binutils/nm.c b/binutils/nm.c index 5d3d647843..67b7ac7b12 100644 --- a/binutils/nm.c +++ b/binutils/nm.c @@ -77,15 +77,15 @@ struct extended_symbol_info (sym->elfinfo ? sym->elfinfo->internal_elf_sym.st_size: sym->ssize) /* The output formatting functions. */ -static void print_object_filename_bsd (char *); -static void print_object_filename_sysv (char *); -static void print_object_filename_posix (char *); -static void print_archive_filename_bsd (char *); -static void print_archive_filename_sysv (char *); -static void print_archive_filename_posix (char *); -static void print_archive_member_bsd (char *, const char *); -static void print_archive_member_sysv (char *, const char *); -static void print_archive_member_posix (char *, const char *); +static void print_object_filename_bsd (const char *); +static void print_object_filename_sysv (const char *); +static void print_object_filename_posix (const char *); +static void print_archive_filename_bsd (const char *); +static void print_archive_filename_sysv (const char *); +static void print_archive_filename_posix (const char *); +static void print_archive_member_bsd (const char *, const char *); +static void print_archive_member_sysv (const char *, const char *); +static void print_archive_member_posix (const char *, const char *); static void print_symbol_filename_bsd (bfd *, bfd *); static void print_symbol_filename_sysv (bfd *, bfd *); static void print_symbol_filename_posix (bfd *, bfd *); @@ -98,13 +98,13 @@ static void print_symbol_info_posix (struct extended_symbol_info *, bfd *); struct output_fns { /* Print the name of an object file given on the command line. */ - void (*print_object_filename) (char *); + void (*print_object_filename) (const char *); /* Print the name of an archive file given on the command line. */ - void (*print_archive_filename) (char *); + void (*print_archive_filename) (const char *); /* Print the name of an archive member file. */ - void (*print_archive_member) (char *, const char *); + void (*print_archive_member) (const char *, const char *); /* Print the name of the file (and archive, if there is one) containing a symbol. */ @@ -1357,14 +1357,14 @@ display_file (char *filename) /* Print the name of an object file given on the command line. */ static void -print_object_filename_bsd (char *filename) +print_object_filename_bsd (const char *filename) { if (filename_per_file && !filename_per_symbol) printf ("\n%s:\n", filename); } static void -print_object_filename_sysv (char *filename) +print_object_filename_sysv (const char *filename) { if (undefined_only) printf (_("\n\nUndefined symbols from %s:\n\n"), filename); @@ -1379,7 +1379,7 @@ Name Value Class Type Size } static void -print_object_filename_posix (char *filename) +print_object_filename_posix (const char *filename) { if (filename_per_file && !filename_per_symbol) printf ("%s:\n", filename); @@ -1388,26 +1388,26 @@ print_object_filename_posix (char *filename) /* Print the name of an archive file given on the command line. */ static void -print_archive_filename_bsd (char *filename) +print_archive_filename_bsd (const char *filename) { if (filename_per_file) printf ("\n%s:\n", filename); } static void -print_archive_filename_sysv (char *filename ATTRIBUTE_UNUSED) +print_archive_filename_sysv (const char *filename ATTRIBUTE_UNUSED) { } static void -print_archive_filename_posix (char *filename ATTRIBUTE_UNUSED) +print_archive_filename_posix (const char *filename ATTRIBUTE_UNUSED) { } /* Print the name of an archive member file. */ static void -print_archive_member_bsd (char *archive ATTRIBUTE_UNUSED, +print_archive_member_bsd (const char *archive ATTRIBUTE_UNUSED, const char *filename) { if (!filename_per_symbol) @@ -1415,7 +1415,7 @@ print_archive_member_bsd (char *archive ATTRIBUTE_UNUSED, } static void -print_archive_member_sysv (char *archive, const char *filename) +print_archive_member_sysv (const char *archive, const char *filename) { if (undefined_only) printf (_("\n\nUndefined symbols from %s[%s]:\n\n"), archive, filename); @@ -1430,7 +1430,7 @@ Name Value Class Type Size } static void -print_archive_member_posix (char *archive, const char *filename) +print_archive_member_posix (const char *archive, const char *filename) { if (!filename_per_symbol) printf ("%s[%s]:\n", archive, filename); diff --git a/binutils/objcopy.c b/binutils/objcopy.c index ebb99339aa..b702e52d98 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -3311,7 +3311,7 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target, } /* Make a temp directory to hold the contents. */ - dir = make_tempdir (bfd_get_filename (obfd)); + dir = make_tempdir ((char *) bfd_get_filename (obfd)); if (dir == NULL) fatal (_("cannot create tempdir for archive copying (error: %s)"), strerror (errno)); diff --git a/gdb/coffread.c b/gdb/coffread.c index e24ab8d2f4..a70461271e 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -538,7 +538,7 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) struct coff_symfile_info *info; bfd *abfd = objfile->obfd; coff_data_type *cdata = coff_data (abfd); - char *filename = bfd_get_filename (abfd); + const char *filename = bfd_get_filename (abfd); int val; unsigned int num_symbols; int symtab_offset; diff --git a/gdb/dbxread.c b/gdb/dbxread.c index e339d1f7ec..df3ae5828a 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -587,7 +587,7 @@ dbx_symfile_init (struct objfile *objfile) { int val; bfd *sym_bfd = objfile->obfd; - char *name = bfd_get_filename (sym_bfd); + const char *name = bfd_get_filename (sym_bfd); asection *text_sect; unsigned char size_temp[DBX_STRINGTAB_SIZE_SIZE]; @@ -2939,7 +2939,7 @@ coffstab_build_psymtabs (struct objfile *objfile, { int val; bfd *sym_bfd = objfile->obfd; - char *name = bfd_get_filename (sym_bfd); + const char *name = bfd_get_filename (sym_bfd); unsigned int stabsize; /* Allocate struct to keep track of stab reading. */ @@ -3026,7 +3026,7 @@ elfstab_build_psymtabs (struct objfile *objfile, asection *stabsect, { int val; bfd *sym_bfd = objfile->obfd; - char *name = bfd_get_filename (sym_bfd); + const char *name = bfd_get_filename (sym_bfd); stabsread_new_init (); @@ -3107,7 +3107,7 @@ stabsect_build_psymtabs (struct objfile *objfile, char *stab_name, { int val; bfd *sym_bfd = objfile->obfd; - char *name = bfd_get_filename (sym_bfd); + const char *name = bfd_get_filename (sym_bfd); asection *stabsect; asection *stabstrsect; asection *text_sect; diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c index 0334523ef1..d3b4c749f5 100644 --- a/gdb/gdb_bfd.c +++ b/gdb/gdb_bfd.c @@ -504,7 +504,7 @@ static int gdb_bfd_close_or_warn (struct bfd *abfd) { int ret; - char *name = bfd_get_filename (abfd); + const char *name = bfd_get_filename (abfd); bfd_map_over_sections (abfd, free_one_bfd_section, NULL); diff --git a/gdb/solib-aix.c b/gdb/solib-aix.c index d13b651944..2b5444293e 100644 --- a/gdb/solib-aix.c +++ b/gdb/solib-aix.c @@ -643,9 +643,9 @@ 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 (bfd_get_filename (object_bfd.get ())); + xfree ((char *) bfd_get_filename (object_bfd.get ())); object_bfd->filename = xstrprintf ("%s%s", - bfd_get_filename (archive_bfd.get ()), + bfd_get_filename (archive_bfd.get ()), sep); return object_bfd; diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c index 443ebb64a4..3dd30d2aa3 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -670,7 +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 (bfd_get_filename (res.get ())); + xfree ((char *) bfd_get_filename (res.get ())); res->filename = xstrdup (pathname); return res; diff --git a/gdb/solib.c b/gdb/solib.c index 29a17ad5d4..86000f6d61 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -1296,7 +1296,7 @@ reload_shared_libraries_1 (int from_tty) for (so = so_list_head; so != NULL; so = so->next) { - char *found_pathname = NULL; + const char *found_pathname = NULL; int was_loaded = so->symbols_loaded; symfile_add_flags add_flags = SYMFILE_DEFER_BP_RESET; diff --git a/gdb/symfile-mem.c b/gdb/symfile-mem.c index 51a75541e5..6d1deae1e0 100644 --- a/gdb/symfile-mem.c +++ b/gdb/symfile-mem.c @@ -101,7 +101,7 @@ 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 (bfd_get_filename (nbfd)); + xfree ((char *) bfd_get_filename (nbfd)); if (name == NULL) nbfd->filename = xstrdup ("shared object read from target memory"); else diff --git a/gdb/symfile.c b/gdb/symfile.c index 8843781e13..3cd514409b 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -2548,7 +2548,7 @@ reread_symbols (void) /* Clean up any state BFD has sitting around. */ { gdb_bfd_ref_ptr obfd (objfile->obfd); - char *obfd_filename; + const char *obfd_filename; obfd_filename = bfd_get_filename (objfile->obfd); /* Open the new BFD before freeing the old one, so that diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em index b3c012c46d..52db0fde1d 100644 --- a/ld/emultempl/elf32.em +++ b/ld/emultempl/elf32.em @@ -552,7 +552,7 @@ gld${EMULATION_NAME}_search_needed (const char *path, FIXME: The code could be a lot cleverer about allocating space for the processed string. */ char * end = strchr (var, '/'); - char * replacement = NULL; + const char *replacement = NULL; char * v = var + 1; char * freeme = NULL; unsigned flen = strlen (filename); diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em index 834215ac85..49bb66b906 100644 --- a/ld/emultempl/pe.em +++ b/ld/emultempl/pe.em @@ -1513,7 +1513,7 @@ gld_${EMULATION_NAME}_after_open (void) { struct bfd_symbol *s; struct bfd_link_hash_entry * blhe; - char *other_bfd_filename; + const char *other_bfd_filename; char *n; s = (relocs[i]->sym_ptr_ptr)[0]; diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em index 9eb7cd7a4b..4daa32b5c6 100644 --- a/ld/emultempl/pep.em +++ b/ld/emultempl/pep.em @@ -1480,7 +1480,7 @@ gld_${EMULATION_NAME}_after_open (void) { struct bfd_symbol *s; struct bfd_link_hash_entry * blhe; - char *other_bfd_filename; + const char *other_bfd_filename; char *n; s = (relocs[i]->sym_ptr_ptr)[0]; diff --git a/sim/cris/sim-if.c b/sim/cris/sim-if.c index 054cce557b..1a5d421caf 100644 --- a/sim/cris/sim-if.c +++ b/sim/cris/sim-if.c @@ -746,7 +746,7 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, struct bfd *abfd, specified. */ if (abfd != NULL && !cris_bare_iron) { - char *name = bfd_get_filename (abfd); + const char *name = bfd_get_filename (abfd); char **my_environ = GET_ENVIRON (); /* We use these maps to give the same behavior as the old xsim simulator. */