* bfd_get_filename
@ 2019-09-06 13:29 Alan Modra
2019-09-09 18:17 ` bfd_get_filename Tom Tromey
0 siblings, 1 reply; 2+ messages in thread
From: Alan Modra @ 2019-09-06 13:29 UTC (permalink / raw)
To: binutils, gdb-patches
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 <print_object_filename, print_archive_filename>),
(<print_archive_member>): 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)
{
}
\f
/* 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. */
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: bfd_get_filename
2019-09-06 13:29 bfd_get_filename Alan Modra
@ 2019-09-09 18:17 ` Tom Tromey
0 siblings, 0 replies; 2+ messages in thread
From: Tom Tromey @ 2019-09-09 18:17 UTC (permalink / raw)
To: Alan Modra; +Cc: binutils, gdb-patches
>>>>> "Alan" == Alan Modra <amodra@gmail.com> writes:
Alan> This macro says:
Alan> /* Cast from const char * to char * so that caller can assign to
Alan> a char * without a warning. */
Alan> I reckon that isn't such a good idea since it can result in char*
Alan> variables where const char* is appropriate. Not very many places
Alan> need the char* cast. Applying to gdb as obvious.
Thanks for doing this. I came up with a couple of follow-up patches to
remove some of the casts. I'll send those soon.
Tom
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-09-09 18:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-06 13:29 bfd_get_filename Alan Modra
2019-09-09 18:17 ` bfd_get_filename Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).