gdb: constify auxv parse functions
authorSimon Marchi <simon.marchi@polymtl.ca>
Thu, 29 Sep 2022 19:13:09 +0000 (15:13 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Thu, 29 Sep 2022 20:42:34 +0000 (16:42 -0400)
Constify the input parameters of the various auxv parse functions, they
don't need to modify the raw auxv data.

Change-Id: I13eacd5ab8e925ec2b5c1f7722cbab39c41516ec

gdb/auxv.c
gdb/auxv.h
gdb/gdbarch-components.py
gdb/gdbarch-gen.h
gdb/gdbarch.c
gdb/ppc-linux-nat.c
gdb/s390-linux-nat.c
gdb/target-debug.h
gdb/target-delegates.c
gdb/target.h

index b248f997f1ca6bdfef317fc714001520adade3dc..63ee01c333c5b48e0122fceaca93178bdc381eb1 100644 (file)
@@ -250,14 +250,14 @@ memory_xfer_auxv (struct target_ops *ops,
    the auxv type field as a parameter.  */
 
 static int
-generic_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr,
-                   gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp,
+generic_auxv_parse (struct gdbarch *gdbarch, const gdb_byte **readptr,
+                   const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp,
                    int sizeof_auxv_type)
 {
   struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
   const int sizeof_auxv_val = ptr_type->length ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  gdb_byte *ptr = *readptr;
+  const gdb_byte *ptr = *readptr;
 
   if (endptr == ptr)
     return 0;
@@ -281,8 +281,8 @@ generic_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr,
 /* See auxv.h.  */
 
 int
-default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
-                   gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+default_auxv_parse (struct target_ops *ops, const gdb_byte **readptr,
+                   const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
 {
   struct gdbarch *gdbarch = target_gdbarch ();
   struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
@@ -295,8 +295,8 @@ default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
 /* See auxv.h.  */
 
 int
-svr4_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr,
-                gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+svr4_auxv_parse (struct gdbarch *gdbarch, const gdb_byte **readptr,
+                const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
 {
   struct type *int_type = builtin_type (gdbarch)->builtin_int;
   const int sizeof_auxv_type = int_type->length ();
@@ -310,8 +310,8 @@ svr4_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr,
    Return -1 if there is insufficient buffer for a whole entry.
    Return 1 if an entry was read into *TYPEP and *VALP.  */
 int
-target_auxv_parse (gdb_byte **readptr,
-                  gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+target_auxv_parse (const gdb_byte **readptr, const gdb_byte *endptr,
+                  CORE_ADDR *typep, CORE_ADDR *valp)
 {
   struct gdbarch *gdbarch = target_gdbarch();
 
@@ -383,8 +383,8 @@ target_auxv_search (struct target_ops *ops, CORE_ADDR match, CORE_ADDR *valp)
   if (!info->data)
     return -1;
 
-  gdb_byte *data = info->data->data ();
-  gdb_byte *ptr = data;
+  const gdb_byte *data = info->data->data ();
+  const gdb_byte *ptr = data;
   size_t len = info->data->size ();
 
   while (1)
@@ -557,8 +557,8 @@ fprint_target_auxv (struct ui_file *file, struct target_ops *ops)
   if (!info->data)
     return -1;
 
-  gdb_byte *data = info->data->data ();
-  gdb_byte *ptr = data;
+  const gdb_byte *data = info->data->data ();
+  const gdb_byte *ptr = data;
   size_t len = info->data->size ();
 
   while (target_auxv_parse (&ptr, data + len, &type, &val) > 0)
index a4801c34d2f6082ad8530a00a001902024018933..497318e87a04cbb6af83ce98cdc2d81665a2358f 100644 (file)
@@ -31,8 +31,8 @@
    Return 0 if *READPTR is already at the end of the buffer.
    Return -1 if there is insufficient buffer for a whole entry.
    Return 1 if an entry was read into *TYPEP and *VALP.  */
-extern int default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
-                              gdb_byte *endptr, CORE_ADDR *typep,
+extern int default_auxv_parse (struct target_ops *ops, const gdb_byte **readptr,
+                              const gdb_byte *endptr, CORE_ADDR *typep,
                               CORE_ADDR *valp);
 
 /* The SVR4 psABI implementation of to_auxv_parse, that uses an int to
@@ -42,15 +42,15 @@ extern int default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
    Return 0 if *READPTR is already at the end of the buffer.
    Return -1 if there is insufficient buffer for a whole entry.
    Return 1 if an entry was read into *TYPEP and *VALP.  */
-extern int svr4_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr,
-                           gdb_byte *endptr, CORE_ADDR *typep,
+extern int svr4_auxv_parse (struct gdbarch *gdbarch, const gdb_byte **readptr,
+                           const gdb_byte *endptr, CORE_ADDR *typep,
                            CORE_ADDR *valp);
 
 /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
    Return 0 if *READPTR is already at the end of the buffer.
    Return -1 if there is insufficient buffer for a whole entry.
    Return 1 if an entry was read into *TYPEP and *VALP.  */
-extern int target_auxv_parse (gdb_byte **readptr, gdb_byte *endptr,
+extern int target_auxv_parse (const gdb_byte **readptr, const gdb_byte *endptr,
                              CORE_ADDR *typep, CORE_ADDR *valp);
 
 /* Extract the auxiliary vector entry with a_type matching MATCH.
index ad71bf754de9de2a61274800a95e11e9c21bbd44..6374240ae4b568ae3af6d25e1ef635fe9d3a3a4e 100644 (file)
@@ -2492,8 +2492,8 @@ Return 1 if an entry was read into *TYPEP and *VALP.
     type="int",
     name="auxv_parse",
     params=[
-        ("gdb_byte **", "readptr"),
-        ("gdb_byte *", "endptr"),
+        ("const gdb_byte **", "readptr"),
+        ("const gdb_byte *", "endptr"),
         ("CORE_ADDR *", "typep"),
         ("CORE_ADDR *", "valp"),
     ],
index c7a24704c7cf85774b75d6ffff73e9643500978d..706dbb3befe1632e22c2b2ff8e8e9de2dffe8f91 100644 (file)
@@ -1539,8 +1539,8 @@ extern void set_gdbarch_program_breakpoint_here_p (struct gdbarch *gdbarch, gdba
 
 extern bool gdbarch_auxv_parse_p (struct gdbarch *gdbarch);
 
-typedef int (gdbarch_auxv_parse_ftype) (struct gdbarch *gdbarch, gdb_byte **readptr, gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp);
-extern int gdbarch_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr, gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp);
+typedef int (gdbarch_auxv_parse_ftype) (struct gdbarch *gdbarch, const gdb_byte **readptr, const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp);
+extern int gdbarch_auxv_parse (struct gdbarch *gdbarch, const gdb_byte **readptr, const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp);
 extern void set_gdbarch_auxv_parse (struct gdbarch *gdbarch, gdbarch_auxv_parse_ftype *auxv_parse);
 
 /* Print the description of a single auxv entry described by TYPE and VAL
index 18d46a39d7a5ba0bee6ed9ebc69673837078a8c6..be73d399069e9da17b0113f57c0e782dfb334548 100644 (file)
@@ -5149,7 +5149,7 @@ gdbarch_auxv_parse_p (struct gdbarch *gdbarch)
 }
 
 int
-gdbarch_auxv_parse (struct gdbarch *gdbarch, gdb_byte **readptr, gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+gdbarch_auxv_parse (struct gdbarch *gdbarch, const gdb_byte **readptr, const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->auxv_parse != NULL);
index b089fcc8a5f5a662b161d816c05b519a2bd007de..dfa81e19a79f3906747b0b10d3f13dfc14c15f08 100644 (file)
@@ -530,8 +530,8 @@ struct ppc_linux_nat_target final : public linux_nat_target
 
   const struct target_desc *read_description ()  override;
 
-  int auxv_parse (gdb_byte **readptr,
-                 gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+  int auxv_parse (const gdb_byte **readptr,
+                 const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
     override;
 
   /* Override linux_nat_target low methods.  */
@@ -1915,8 +1915,8 @@ fill_fpregset (const struct regcache *regcache,
 }
 
 int
-ppc_linux_nat_target::auxv_parse (gdb_byte **readptr,
-                                 gdb_byte *endptr, CORE_ADDR *typep,
+ppc_linux_nat_target::auxv_parse (const gdb_byte **readptr,
+                                 const gdb_byte *endptr, CORE_ADDR *typep,
                                  CORE_ADDR *valp)
 {
   int tid = inferior_ptid.lwp ();
@@ -1926,7 +1926,7 @@ ppc_linux_nat_target::auxv_parse (gdb_byte **readptr,
   int sizeof_auxv_field = ppc_linux_target_wordsize (tid);
 
   enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  gdb_byte *ptr = *readptr;
+  const gdb_byte *ptr = *readptr;
 
   if (endptr == ptr)
     return 0;
index 73961c8776916b4cb1afbc771a3088cdf7eb9333..2b21e08223621f4988293fb042a4878582ae0760 100644 (file)
@@ -132,8 +132,8 @@ public:
 
   /* Detect target architecture.  */
   const struct target_desc *read_description () override;
-  int auxv_parse (gdb_byte **readptr,
-                 gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+  int auxv_parse (const gdb_byte **readptr,
+                 const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
     override;
 
   /* Override linux_nat_target low methods.  */
@@ -962,13 +962,13 @@ s390_target_wordsize (void)
 }
 
 int
-s390_linux_nat_target::auxv_parse (gdb_byte **readptr,
-                                  gdb_byte *endptr, CORE_ADDR *typep,
+s390_linux_nat_target::auxv_parse (const gdb_byte **readptr,
+                                  const gdb_byte *endptr, CORE_ADDR *typep,
                                   CORE_ADDR *valp)
 {
   int sizeof_auxv_field = s390_target_wordsize ();
   enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-  gdb_byte *ptr = *readptr;
+  const gdb_byte *ptr = *readptr;
 
   if (endptr == ptr)
     return 0;
index ab89c0a518586ed3fd7da6291bc6f01ccb5f6f53..77033f00289ba88beef556b2bb211d10ca737ef3 100644 (file)
@@ -76,7 +76,7 @@
   target_debug_do_print (host_address_to_string (X))
 #define target_debug_print_gdb_byte_p(X)       \
   target_debug_do_print (host_address_to_string (X))
-#define target_debug_print_gdb_byte_pp(X)      \
+#define target_debug_print_const_gdb_byte_pp(X)        \
   target_debug_do_print (host_address_to_string (*(X)))
 #define target_debug_print_enum_gdb_signal(X)  \
   target_debug_do_print (gdb_signal_to_name (X))
index b6628c4d0be69dd89325d171d5afd9874592a72c..daf46821be0736c32029fea0659658c04aa7d782 100644 (file)
@@ -119,7 +119,7 @@ struct dummy_target : public target_ops
   void flash_done () override;
   const struct target_desc *read_description () override;
   ptid_t get_ada_task_ptid (long arg0, ULONGEST arg1) override;
-  int auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3) override;
+  int auxv_parse (const gdb_byte **arg0, const gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3) override;
   int search_memory (CORE_ADDR arg0, ULONGEST arg1, const gdb_byte *arg2, ULONGEST arg3, CORE_ADDR *arg4) override;
   bool can_execute_reverse () override;
   enum exec_direction_kind execution_direction () override;
@@ -293,7 +293,7 @@ struct debug_target : public target_ops
   void flash_done () override;
   const struct target_desc *read_description () override;
   ptid_t get_ada_task_ptid (long arg0, ULONGEST arg1) override;
-  int auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3) override;
+  int auxv_parse (const gdb_byte **arg0, const gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3) override;
   int search_memory (CORE_ADDR arg0, ULONGEST arg1, const gdb_byte *arg2, ULONGEST arg3, CORE_ADDR *arg4) override;
   bool can_execute_reverse () override;
   enum exec_direction_kind execution_direction () override;
@@ -2623,27 +2623,27 @@ debug_target::get_ada_task_ptid (long arg0, ULONGEST arg1)
 }
 
 int
-target_ops::auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3)
+target_ops::auxv_parse (const gdb_byte **arg0, const gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3)
 {
   return this->beneath ()->auxv_parse (arg0, arg1, arg2, arg3);
 }
 
 int
-dummy_target::auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3)
+dummy_target::auxv_parse (const gdb_byte **arg0, const gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3)
 {
   return default_auxv_parse (this, arg0, arg1, arg2, arg3);
 }
 
 int
-debug_target::auxv_parse (gdb_byte **arg0, gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3)
+debug_target::auxv_parse (const gdb_byte **arg0, const gdb_byte *arg1, CORE_ADDR *arg2, CORE_ADDR *arg3)
 {
   int result;
   gdb_printf (gdb_stdlog, "-> %s->auxv_parse (...)\n", this->beneath ()->shortname ());
   result = this->beneath ()->auxv_parse (arg0, arg1, arg2, arg3);
   gdb_printf (gdb_stdlog, "<- %s->auxv_parse (", this->beneath ()->shortname ());
-  target_debug_print_gdb_byte_pp (arg0);
+  target_debug_print_const_gdb_byte_pp (arg0);
   gdb_puts (", ", gdb_stdlog);
-  target_debug_print_gdb_byte_p (arg1);
+  target_debug_print_const_gdb_byte_p (arg1);
   gdb_puts (", ", gdb_stdlog);
   target_debug_print_CORE_ADDR_p (arg2);
   gdb_puts (", ", gdb_stdlog);
index 8e13ada07b6a025e63d2158ddd829e55bc367d46..28aa92738930b1a6651b2a7784a3f7a4c9f9be85 100644 (file)
@@ -862,8 +862,8 @@ struct target_ops
        Return 0 if *READPTR is already at the end of the buffer.
        Return -1 if there is insufficient buffer for a whole entry.
        Return 1 if an entry was read into *TYPEP and *VALP.  */
-    virtual int auxv_parse (gdb_byte **readptr,
-                           gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+    virtual int auxv_parse (const gdb_byte **readptr,
+                           const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
       TARGET_DEFAULT_FUNC (default_auxv_parse);
 
     /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the