[PATCH v1] readelf: constify read cursor for all object attribute parsing and display helpers

Matthieu Longo matthieu.longo@arm.com
Mon Jan 19 17:37:26 GMT 2026


---
 binutils/readelf.c | 84 +++++++++++++++++++++++-----------------------
 1 file changed, 42 insertions(+), 42 deletions(-)

diff --git a/binutils/readelf.c b/binutils/readelf.c
index 5b7fc0dc1de..9aa9d430fe6 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -18284,9 +18284,9 @@ process_mips_fpe_exception (int mask)
 
    Reads at or beyond END will not be made.  */
 
-static unsigned char *
+static const unsigned char *
 display_tag_value (signed int tag,
-		   unsigned char * p,
+		   const unsigned char * p,
 		   const unsigned char * const end)
 {
   uint64_t val;
@@ -18308,7 +18308,7 @@ display_tag_value (signed int tag,
 	{
 	  maxlen -= 1; /* Remove \0 from the character count.  */
 	  print_symbol_name ((int) maxlen, (const char *) p);
-	  size_t len = strnlen ((char *) p, maxlen);
+	  size_t len = strnlen ((const char *) p, maxlen);
 	  if (len == maxlen && p[maxlen] != '\0')
 	    printf (_("<corrupt string tag>"));
 	  p += len + 1;
@@ -18316,7 +18316,7 @@ display_tag_value (signed int tag,
       else
 	{
 	  printf (_("<corrupt string tag>"));
-	  p = (unsigned char *) end;
+	  p = end;
 	}
       printf ("\"\n");
     }
@@ -18332,8 +18332,8 @@ display_tag_value (signed int tag,
 
 /* ARC ABI attributes section.  */
 
-static unsigned char *
-display_arc_attribute (unsigned char * p,
+static const unsigned char *
+display_arc_attribute (const unsigned char * p,
 		       const unsigned char * const end)
 {
   unsigned int tag;
@@ -18649,8 +18649,8 @@ static arm_attr_public_tag arm_attr_public_tags[] =
 };
 #undef LOOKUP
 
-static unsigned char *
-display_arm_attribute (unsigned char * p,
+static const unsigned char *
+display_arm_attribute (const unsigned char * p,
 		       const unsigned char * const end)
 {
   unsigned int tag;
@@ -18796,10 +18796,10 @@ display_arm_attribute (unsigned char * p,
   return display_tag_value (tag, p, end);
 }
 
-static unsigned char *
-display_gnu_attribute (unsigned char * p,
-		       unsigned char * (* display_proc_gnu_attribute)
-		       (unsigned char *, unsigned int, const unsigned char * const),
+static const unsigned char *
+display_gnu_attribute (const unsigned char * p,
+		       const unsigned char * (* display_proc_gnu_attribute)
+		       (const unsigned char *, unsigned int, const unsigned char * const),
 		       const unsigned char * const end)
 {
   unsigned int tag;
@@ -18844,8 +18844,8 @@ display_gnu_attribute (unsigned char * p,
   return display_tag_value (tag, p, end);
 }
 
-static unsigned char *
-display_m68k_gnu_attribute (unsigned char * p,
+static const unsigned char *
+display_m68k_gnu_attribute (const unsigned char * p,
 			    unsigned int tag,
 			    const unsigned char * const end)
 {
@@ -18882,8 +18882,8 @@ display_m68k_gnu_attribute (unsigned char * p,
   return display_tag_value (tag & 1, p, end);
 }
 
-static unsigned char *
-display_power_gnu_attribute (unsigned char * p,
+static const unsigned char *
+display_power_gnu_attribute (const unsigned char * p,
 			     unsigned int tag,
 			     const unsigned char * const end)
 {
@@ -19001,8 +19001,8 @@ display_power_gnu_attribute (unsigned char * p,
   return display_tag_value (tag & 1, p, end);
 }
 
-static unsigned char *
-display_s390_gnu_attribute (unsigned char * p,
+static const unsigned char *
+display_s390_gnu_attribute (const unsigned char * p,
 			    unsigned int tag,
 			    const unsigned char * const end)
 {
@@ -19114,8 +19114,8 @@ display_sparc_hwcaps2 (unsigned int mask)
   fputc ('\n', stdout);
 }
 
-static unsigned char *
-display_sparc_gnu_attribute (unsigned char * p,
+static const unsigned char *
+display_sparc_gnu_attribute (const unsigned char * p,
 			     unsigned int tag,
 			     const unsigned char * const end)
 {
@@ -19177,8 +19177,8 @@ print_mips_fp_abi_value (unsigned int val)
     }
 }
 
-static unsigned char *
-display_mips_gnu_attribute (unsigned char * p,
+static const unsigned char *
+display_mips_gnu_attribute (const unsigned char * p,
 			    unsigned int tag,
 			    const unsigned char * const end)
 {
@@ -19217,8 +19217,8 @@ display_mips_gnu_attribute (unsigned char * p,
   return display_tag_value (tag & 1, p, end);
 }
 
-static unsigned char *
-display_tic6x_attribute (unsigned char * p,
+static const unsigned char *
+display_tic6x_attribute (const unsigned char * p,
 			 const unsigned char * const end)
 {
   unsigned int tag;
@@ -19454,7 +19454,7 @@ display_tic6x_attribute (unsigned char * p,
 }
 
 static void
-display_raw_attribute (unsigned char * p, unsigned char const * const end)
+display_raw_attribute (const unsigned char * p, unsigned char const * const end)
 {
   uint64_t addr = 0;
   size_t bytes = end - p;
@@ -19498,8 +19498,8 @@ display_raw_attribute (unsigned char * p, unsigned char const * const end)
   putchar ('\n');
 }
 
-static unsigned char *
-display_msp430_attribute (unsigned char * p,
+static const unsigned char *
+display_msp430_attribute (const unsigned char * p,
 			  const unsigned char * const end)
 {
   uint64_t val;
@@ -19578,8 +19578,8 @@ display_msp430_attribute (unsigned char * p,
   return p;
 }
 
-static unsigned char *
-display_msp430_gnu_attribute (unsigned char * p,
+static const unsigned char *
+display_msp430_gnu_attribute (const unsigned char * p,
 			      unsigned int tag,
 			      const unsigned char * const end)
 {
@@ -19623,8 +19623,8 @@ static struct riscv_attr_tag_t riscv_attr_tag[] =
 #undef T
 };
 
-static unsigned char *
-display_riscv_attribute (unsigned char *p,
+static const unsigned char *
+display_riscv_attribute (const unsigned char *p,
 			 const unsigned char * const end)
 {
   uint64_t val;
@@ -19683,8 +19683,8 @@ display_riscv_attribute (unsigned char *p,
   return p;
 }
 
-static unsigned char *
-display_csky_attribute (unsigned char * p,
+static const unsigned char *
+display_csky_attribute (const unsigned char * p,
 			const unsigned char * const end)
 {
   uint64_t tag;
@@ -19794,8 +19794,8 @@ static bool
 process_attributes (Filedata * filedata,
 		    const char * public_name,
 		    unsigned int proc_type,
-		    unsigned char * (* display_pub_attribute) (unsigned char *, const unsigned char * const),
-		    unsigned char * (* display_proc_gnu_attribute) (unsigned char *, unsigned int, const unsigned char * const))
+		    const unsigned char * (* display_pub_attribute) (const unsigned char *, const unsigned char * const),
+		    const unsigned char * (* display_proc_gnu_attribute) (const unsigned char *, unsigned int, const unsigned char * const))
 {
   /* Find the section header so that we get the size.  */
   Elf_Internal_Shdr * sect = find_section_by_type (filedata, proc_type);
@@ -19812,7 +19812,7 @@ process_attributes (Filedata * filedata,
     return false;
 
   bool res = true;
-  unsigned char * p = contents;
+  const unsigned char * p = contents;
   /* The first character is the version of the attributes.
      Currently only version 1, (aka 'A') is recognised here.  */
   if (*p != 'A')
@@ -19889,7 +19889,7 @@ process_attributes (Filedata * filedata,
 	  int tag;
 	  unsigned int val;
 	  uint64_t size;
-	  unsigned char * end;
+	  const unsigned char * end;
 
 	  /* PR binutils/17531: Safe handling of corrupt files.  */
 	  if (attr_len < 6)
@@ -24203,8 +24203,8 @@ process_notes (Filedata * filedata)
   return true;
 }
 
-static unsigned char *
-display_public_gnu_attributes (unsigned char * start,
+static const unsigned char *
+display_public_gnu_attributes (const unsigned char * start,
 			       const unsigned char * const end)
 {
   printf (_("  Unknown GNU attribute: %s\n"), start);
@@ -24215,13 +24215,13 @@ display_public_gnu_attributes (unsigned char * start,
   return (unsigned char *) end;
 }
 
-static unsigned char *
-display_generic_attribute (unsigned char * start,
+static const unsigned char *
+display_generic_attribute (const unsigned char * start,
 			   unsigned int tag,
 			   const unsigned char * const end)
 {
   if (tag == 0)
-    return (unsigned char *) end;
+    return end;
 
   return display_tag_value (tag, start, end);
 }
-- 
2.52.0



More information about the Binutils mailing list