]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
binutils: fix C23 -Wdiscarded-qualifiers errors
authorSimon Marchi <simon.marchi@polymtl.ca>
Fri, 13 Feb 2026 19:17:40 +0000 (14:17 -0500)
committerSimon Marchi <simon.marchi@polymtl.ca>
Sat, 14 Feb 2026 01:43:18 +0000 (20:43 -0500)
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
binutils/nm.c
binutils/prdbg.c

index 141a7099de4d429c32e9d970f3781ed10fd56205..f8c110f532f0357913ad4543a82fabfb212f5863 100644 (file)
@@ -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)
index 3aef8ebe0983b9d5e626ac9a79bd5d9435728a50..c5f7e68e9dfdd7ee24c2335d9d2bbecc7f69c7fc 100644 (file)
@@ -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)
        {
index 287083df1b920294a35f78333a70c4768c49d245..ff24eac54fbdd7558f2462356552164b1cede8bd 100644 (file)
@@ -2642,22 +2642,24 @@ tg_start_function (void *p, const char *name, bool global)
   if (dname != NULL)
     {
       char *sep;
+      char *mutable_name;
       sep = strstr (dname, "::");
       if (sep)
        {
          info->stack->method = dname;
          dname = NULL;
          *sep = 0;
-         name = sep + 2;
+         mutable_name = sep + 2;
        }
       else
        {
          info->stack->method = xstrdup ("");
-         name = dname;
+         mutable_name = dname;
        }
-      sep = strchr (name, '(');
+      sep = strchr (mutable_name, '(');
       if (sep)
        *sep = 0;
+      name = mutable_name;
       /* Obscure functions as type_info function.  */
     }