[PATCH] binutils: fix C23 -Wdiscarded-qualifiers errors
simon.marchi@polymtl.ca
simon.marchi@polymtl.ca
Fri Feb 13 16:51:53 GMT 2026
From: Simon Marchi <simon.marchi@polymtl.ca>
When compiling with gcc 15, I get these:
CC prdbg.o
/home/simark/src/binutils-gdb/binutils/prdbg.c: In function ‘tg_start_function’:
/home/simark/src/binutils-gdb/binutils/prdbg.c:2658:11: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
2658 | sep = strchr (name, '(');
| ^
cc1: all warnings being treated as errors
make[2]: *** [Makefile:1220: prdbg.o] Error 1
CC addr2line.o
/home/simark/src/binutils-gdb/binutils/addr2line.c: In function ‘translate_addresses’:
/home/simark/src/binutils-gdb/binutils/addr2line.c:390:21: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
390 | h = strrchr (filename, '/');
| ^
cc1: all warnings being treated as errors
make[2]: *** [Makefile:1220: addr2line.o] Error 1
CC nm.o
/home/simark/src/binutils-gdb/binutils/nm.c: In function ‘print_symname’:
/home/simark/src/binutils-gdb/binutils/nm.c:689:21: error: initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
689 | char *atver = strchr (name, '@');
| ^~~~~~
cc1: all warnings being treated as errors
I think they are related to the fact that strchr having changed to
return const when passed a const.
Change-Id: Idb829916378f0a18e717d1e80414aaa5eba4f7f0
---
binutils/addr2line.c | 2 +-
binutils/nm.c | 2 +-
binutils/prdbg.c | 4 +++-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/binutils/addr2line.c b/binutils/addr2line.c
index 141a7099de4d..f8c110f532f0 100644
--- a/binutils/addr2line.c
+++ b/binutils/addr2line.c
@@ -385,7 +385,7 @@ translate_addresses (bfd *abfd, asection *section)
if (base_names && filename != NULL)
{
- char *h;
+ const char *h;
h = strrchr (filename, '/');
if (h != NULL)
diff --git a/binutils/nm.c b/binutils/nm.c
index 3aef8ebe0983..c5f7e68e9dfd 100644
--- a/binutils/nm.c
+++ b/binutils/nm.c
@@ -686,7 +686,7 @@ print_symname (const char *form, struct extended_symbol_info *info,
if (!with_symbol_versions
&& bfd_get_flavour (abfd) == bfd_target_elf_flavour)
{
- char *atver = strchr (name, '@');
+ const char *atver = strchr (name, '@');
if (atver)
{
diff --git a/binutils/prdbg.c b/binutils/prdbg.c
index 287083df1b92..e307e330a642 100644
--- a/binutils/prdbg.c
+++ b/binutils/prdbg.c
@@ -2655,7 +2655,9 @@ tg_start_function (void *p, const char *name, bool global)
info->stack->method = xstrdup ("");
name = dname;
}
- sep = strchr (name, '(');
+ /* This cast is safe: NAME points into the mutable DNAME buffer in
+ both branches above. */
+ sep = strchr ((char *) name, '(');
if (sep)
*sep = 0;
/* Obscure functions as type_info function. */
base-commit: 44029706162af14559ea4e4f043c2302ab3a0405
--
2.53.0
More information about the Binutils
mailing list