Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH 0/6] Add gdbarch-checking script
@ 2024-11-04 21:14 Tom Tromey
  2024-11-04 21:14 ` [PATCH 1/6] Add check-gdbarch.py Tom Tromey
                   ` (6 more replies)
  0 siblings, 7 replies; 11+ messages in thread
From: Tom Tromey @ 2024-11-04 21:14 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey, Alan Modra, Jan Kratochvil

I was curious if any gdbarch methods were unused, so I wrote a script
to check this.  It works by scanning the source and looking for calls
to gdbarch methods and for arches setting the parameter.

This found a few methods that are obsolete.  These are removed in the
series.

A few other gdbarch settings are used by gdb but not set by any
existing arch.  I haven't removed these since they maybe needed more
discussion:

    stap_gdb_register_suffix
    stap_integer_suffixes
    stap_register_suffixes

Maybe these could be useful.

    bfloat16_bit
    half_bit

Perhaps these should just both be 16-bit types unconditionally.

    addressable_memory_unit_size

This was added in 2015.  Not sure if there's a need for it but at the
same time it seems necessary if we ever want to really support arches
like this.

Signed-off-by: Tom Tromey <tom@tromey.com>
---
Tom Tromey (6):
      Add check-gdbarch.py
      Use 'invalid' rather than 'predicate' in some gdbarch functions
      Remove solib_symbols_extension gdbarch hook
      Remove skip_permanent_breakpoint gdbarch hook
      Remove the print_vector_info gdbarch hook
      Remove the auto_charset gdbarch hook

 gdb/arch-utils.c          |  12 ----
 gdb/arch-utils.h          |   8 ---
 gdb/breakpoint.c          |   3 +-
 gdb/breakpoint.h          |   3 +-
 gdb/charset.c             |   9 +--
 gdb/check-gdbarch.py      |  87 +++++++++++++++++++++++
 gdb/gdbarch-gen.c         | 173 ++--------------------------------------------
 gdb/gdbarch-gen.h         |  40 -----------
 gdb/gdbarch_components.py |  61 ++--------------
 gdb/infcmd.c              |  21 ++----
 gdb/infrun.c              |   7 +-
 gdb/solib.c               |  27 --------
 12 files changed, 118 insertions(+), 333 deletions(-)
---
base-commit: ae2f3fa7581fb59ebbf80f93b7ed75f853f0ba29
change-id: 20241104-check-unused-gdbarch-c396c0aff7fc

Best regards,
-- 
Tom Tromey <tom@tromey.com>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/6] Add check-gdbarch.py
  2024-11-04 21:14 [PATCH 0/6] Add gdbarch-checking script Tom Tromey
@ 2024-11-04 21:14 ` Tom Tromey
  2024-12-05 22:47   ` Keith Seitz
  2024-11-04 21:14 ` [PATCH 2/6] Use 'invalid' rather than 'predicate' in some gdbarch functions Tom Tromey
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 11+ messages in thread
From: Tom Tromey @ 2024-11-04 21:14 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

This adds a new check-gdbarch.py script.  This script checks the
sources to see which gdbarch methods are set but never called, and
which ones are called but never set.
---
 gdb/check-gdbarch.py | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)

diff --git a/gdb/check-gdbarch.py b/gdb/check-gdbarch.py
new file mode 100755
index 0000000000000000000000000000000000000000..1f7479e7d1bdfc177e62ae9f58d971b8b8e34ce9
--- /dev/null
+++ b/gdb/check-gdbarch.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+
+# gdbarch checker.
+#
+# Copyright (C) 2024 Free Software Foundation, Inc.
+#
+# This file is part of GDB.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import fileinput
+import glob
+import re
+import sys
+
+# gdbarch_components is imported only for its side-effect of filling
+# `gdbarch_types.components`.
+import gdbarch_components  # noqa: F401 # type: ignore
+from gdbarch_types import Component, Function, Info, Value, components
+
+
+def not_info(c: Component):
+    "Filter function to omit Info components."
+    return type(c) is not Info
+
+
+if len(sys.argv) != 1:
+    # Must be run in gdb srcdir.
+    print("usage: check-gdbarch.py")
+    sys.exit(1)
+
+
+# Make a hash holding all the gdbarch customization names.
+defined_names = set()
+set_names = set()
+called_names = set()
+for c in filter(not_info, components):
+    if c.implement:
+        defined_names.add(c.name)
+    if c.predicate:
+        # Predicates are always "set".
+        pname = c.name + "_p"
+        set_names.add(pname)
+        defined_names.add(pname)
+
+
+def find_local_files():
+    result = []
+    for name in glob.glob("*.[chyl]"):
+        if "gdbarch" not in name:
+            result.append(name)
+    return result
+
+
+files = find_local_files()
+files.extend(glob.glob("*/*.[ch]"))
+
+# FIXME could keep counts here and then look for deletion
+# opportunities.
+rx = re.compile(r"\b(set_)?gdbarch_([a-zA-Z0-9_]+)\b")
+for line in fileinput.input(files=files):
+    m = rx.search(line)
+    if m:
+        if m[0] == "gdbarch_p":
+            # There are a few variables with this name, exclude them.
+            pass
+        elif m[1]:
+            set_names.add(m[2])
+        else:
+            called_names.add(m[2])
+
+
+for elt in defined_names - set_names:
+    print(f"never set: {elt}")
+for elt in defined_names - called_names:
+    # Don't report _p functions here, predicate=True is sometimes used
+    # to allow optional functions.
+    if not elt.endswith("_p"):
+        print(f"never called: {elt}")

-- 
2.46.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 2/6] Use 'invalid' rather than 'predicate' in some gdbarch functions
  2024-11-04 21:14 [PATCH 0/6] Add gdbarch-checking script Tom Tromey
  2024-11-04 21:14 ` [PATCH 1/6] Add check-gdbarch.py Tom Tromey
@ 2024-11-04 21:14 ` Tom Tromey
  2024-11-04 21:14 ` [PATCH 3/6] Remove solib_symbols_extension gdbarch hook Tom Tromey
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Tom Tromey @ 2024-11-04 21:14 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

The check-gdbarch.py script points out that a few gdbarch functions
have a predicate that is never called.  This patch changes these
functions to use 'invalid=False' instead, removing a bit of code.
---
 gdb/check-gdbarch.py      |  5 +---
 gdb/gdbarch-gen.c         | 75 +++++------------------------------------------
 gdb/gdbarch-gen.h         | 12 --------
 gdb/gdbarch_components.py | 13 ++++----
 4 files changed, 14 insertions(+), 91 deletions(-)

diff --git a/gdb/check-gdbarch.py b/gdb/check-gdbarch.py
index 1f7479e7d1bdfc177e62ae9f58d971b8b8e34ce9..6f2983c79841d0c8251fdc5c2b284be7702623c5 100755
--- a/gdb/check-gdbarch.py
+++ b/gdb/check-gdbarch.py
@@ -84,7 +84,4 @@ for line in fileinput.input(files=files):
 for elt in defined_names - set_names:
     print(f"never set: {elt}")
 for elt in defined_names - called_names:
-    # Don't report _p functions here, predicate=True is sometimes used
-    # to allow optional functions.
-    if not elt.endswith("_p"):
-        print(f"never called: {elt}")
+    print(f"never called: {elt}")
diff --git a/gdb/gdbarch-gen.c b/gdb/gdbarch-gen.c
index 0d00cd7c9933ecf0dc40a216f177858803fdd0eb..e50bb1e9a819fe8e2a0219314fe939eb307e4424 100644
--- a/gdb/gdbarch-gen.c
+++ b/gdb/gdbarch-gen.c
@@ -197,7 +197,7 @@ struct gdbarch
   gdbarch_displaced_step_copy_insn_closure_by_addr_ftype *displaced_step_copy_insn_closure_by_addr = nullptr;
   gdbarch_displaced_step_restore_all_in_ptid_ftype *displaced_step_restore_all_in_ptid = nullptr;
   ULONGEST displaced_step_buffer_length = 0;
-  gdbarch_relocate_instruction_ftype *relocate_instruction = NULL;
+  gdbarch_relocate_instruction_ftype *relocate_instruction = nullptr;
   gdbarch_overlay_update_ftype *overlay_update = nullptr;
   gdbarch_core_read_description_ftype *core_read_description = nullptr;
   int sofun_address_maybe_missing = 0;
@@ -332,7 +332,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of pseudo_register_read, has predicate.  */
   /* Skip verify of pseudo_register_read_value, has predicate.  */
   /* Skip verify of pseudo_register_write, has predicate.  */
-  /* Skip verify of deprecated_pseudo_register_write, has predicate.  */
+  /* Skip verify of deprecated_pseudo_register_write, invalid_p == 0.  */
   if (gdbarch->num_regs == -1)
     log.puts ("\n\tnum_regs");
   /* Skip verify of num_pseudo_regs, invalid_p == 0.  */
@@ -435,12 +435,12 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of execute_dwarf_cfa_vendor_op, invalid_p == 0.  */
   /* Skip verify of address_class_name_to_type_flags, has predicate.  */
   /* Skip verify of register_reggroup_p, invalid_p == 0.  */
-  /* Skip verify of fetch_pointer_argument, has predicate.  */
+  /* Skip verify of fetch_pointer_argument, invalid_p == 0.  */
   /* Skip verify of iterate_over_regset_sections, has predicate.  */
   /* Skip verify of make_corefile_notes, has predicate.  */
   /* Skip verify of find_memory_regions, has predicate.  */
-  /* Skip verify of create_memtag_section, has predicate.  */
-  /* Skip verify of fill_memtag_section, has predicate.  */
+  /* Skip verify of create_memtag_section, invalid_p == 0.  */
+  /* Skip verify of fill_memtag_section, invalid_p == 0.  */
   /* Skip verify of decode_memtag_section, has predicate.  */
   /* Skip verify of core_xfer_shared_libraries, has predicate.  */
   /* Skip verify of core_xfer_shared_libraries_aix, has predicate.  */
@@ -453,7 +453,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of vbit_in_delta, invalid_p == 0.  */
   /* Skip verify of skip_permanent_breakpoint, invalid_p == 0.  */
   /* Skip verify of max_insn_length, has predicate.  */
-  /* Skip verify of displaced_step_copy_insn, has predicate.  */
+  /* Skip verify of displaced_step_copy_insn, invalid_p == 0.  */
   /* Skip verify of displaced_step_hw_singlestep, invalid_p == 0.  */
   if ((gdbarch->displaced_step_copy_insn == nullptr) != (gdbarch->displaced_step_fixup == nullptr))
     log.puts ("\n\tdisplaced_step_fixup");
@@ -466,7 +466,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
     gdbarch->displaced_step_buffer_length = gdbarch->max_insn_length;
   if (gdbarch->displaced_step_buffer_length < gdbarch->max_insn_length)
     log.puts ("\n\tdisplaced_step_buffer_length");
-  /* Skip verify of relocate_instruction, has predicate.  */
+  /* Skip verify of relocate_instruction, invalid_p == 0.  */
   /* Skip verify of overlay_update, has predicate.  */
   /* Skip verify of core_read_description, has predicate.  */
   /* Skip verify of sofun_address_maybe_missing, invalid_p == 0.  */
@@ -657,9 +657,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
   gdb_printf (file,
 	      "gdbarch_dump: pseudo_register_write = <%s>\n",
 	      host_address_to_string (gdbarch->pseudo_register_write));
-  gdb_printf (file,
-	      "gdbarch_dump: gdbarch_deprecated_pseudo_register_write_p() = %d\n",
-	      gdbarch_deprecated_pseudo_register_write_p (gdbarch));
   gdb_printf (file,
 	      "gdbarch_dump: deprecated_pseudo_register_write = <%s>\n",
 	      host_address_to_string (gdbarch->deprecated_pseudo_register_write));
@@ -1011,9 +1008,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
   gdb_printf (file,
 	      "gdbarch_dump: register_reggroup_p = <%s>\n",
 	      host_address_to_string (gdbarch->register_reggroup_p));
-  gdb_printf (file,
-	      "gdbarch_dump: gdbarch_fetch_pointer_argument_p() = %d\n",
-	      gdbarch_fetch_pointer_argument_p (gdbarch));
   gdb_printf (file,
 	      "gdbarch_dump: fetch_pointer_argument = <%s>\n",
 	      host_address_to_string (gdbarch->fetch_pointer_argument));
@@ -1035,15 +1029,9 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
   gdb_printf (file,
 	      "gdbarch_dump: find_memory_regions = <%s>\n",
 	      host_address_to_string (gdbarch->find_memory_regions));
-  gdb_printf (file,
-	      "gdbarch_dump: gdbarch_create_memtag_section_p() = %d\n",
-	      gdbarch_create_memtag_section_p (gdbarch));
   gdb_printf (file,
 	      "gdbarch_dump: create_memtag_section = <%s>\n",
 	      host_address_to_string (gdbarch->create_memtag_section));
-  gdb_printf (file,
-	      "gdbarch_dump: gdbarch_fill_memtag_section_p() = %d\n",
-	      gdbarch_fill_memtag_section_p (gdbarch));
   gdb_printf (file,
 	      "gdbarch_dump: fill_memtag_section = <%s>\n",
 	      host_address_to_string (gdbarch->fill_memtag_section));
@@ -1110,9 +1098,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
   gdb_printf (file,
 	      "gdbarch_dump: max_insn_length = %s\n",
 	      plongest (gdbarch->max_insn_length));
-  gdb_printf (file,
-	      "gdbarch_dump: gdbarch_displaced_step_copy_insn_p() = %d\n",
-	      gdbarch_displaced_step_copy_insn_p (gdbarch));
   gdb_printf (file,
 	      "gdbarch_dump: displaced_step_copy_insn = <%s>\n",
 	      host_address_to_string (gdbarch->displaced_step_copy_insn));
@@ -1143,9 +1128,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
   gdb_printf (file,
 	      "gdbarch_dump: displaced_step_buffer_length = %s\n",
 	      plongest (gdbarch->displaced_step_buffer_length));
-  gdb_printf (file,
-	      "gdbarch_dump: gdbarch_relocate_instruction_p() = %d\n",
-	      gdbarch_relocate_instruction_p (gdbarch));
   gdb_printf (file,
 	      "gdbarch_dump: relocate_instruction = <%s>\n",
 	      host_address_to_string (gdbarch->relocate_instruction));
@@ -1934,13 +1916,6 @@ set_gdbarch_pseudo_register_write (struct gdbarch *gdbarch,
   gdbarch->pseudo_register_write = pseudo_register_write;
 }
 
-bool
-gdbarch_deprecated_pseudo_register_write_p (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  return gdbarch->deprecated_pseudo_register_write != NULL;
-}
-
 void
 gdbarch_deprecated_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const gdb_byte *buf)
 {
@@ -3715,13 +3690,6 @@ set_gdbarch_register_reggroup_p (struct gdbarch *gdbarch,
   gdbarch->register_reggroup_p = register_reggroup_p;
 }
 
-bool
-gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  return gdbarch->fetch_pointer_argument != NULL;
-}
-
 CORE_ADDR
 gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, const frame_info_ptr &frame, int argi, struct type *type)
 {
@@ -3811,13 +3779,6 @@ set_gdbarch_find_memory_regions (struct gdbarch *gdbarch,
   gdbarch->find_memory_regions = find_memory_regions;
 }
 
-bool
-gdbarch_create_memtag_section_p (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  return gdbarch->create_memtag_section != NULL;
-}
-
 asection *
 gdbarch_create_memtag_section (struct gdbarch *gdbarch, bfd *obfd, CORE_ADDR address, size_t size)
 {
@@ -3835,13 +3796,6 @@ set_gdbarch_create_memtag_section (struct gdbarch *gdbarch,
   gdbarch->create_memtag_section = create_memtag_section;
 }
 
-bool
-gdbarch_fill_memtag_section_p (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  return gdbarch->fill_memtag_section != NULL;
-}
-
 bool
 gdbarch_fill_memtag_section (struct gdbarch *gdbarch, asection *osec)
 {
@@ -4128,13 +4082,6 @@ set_gdbarch_max_insn_length (struct gdbarch *gdbarch,
   gdbarch->max_insn_length = max_insn_length;
 }
 
-bool
-gdbarch_displaced_step_copy_insn_p (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  return gdbarch->displaced_step_copy_insn != NULL;
-}
-
 displaced_step_copy_insn_closure_up
 gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 {
@@ -4286,19 +4233,11 @@ set_gdbarch_displaced_step_buffer_length (struct gdbarch *gdbarch,
   gdbarch->displaced_step_buffer_length = displaced_step_buffer_length;
 }
 
-bool
-gdbarch_relocate_instruction_p (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  return gdbarch->relocate_instruction != NULL;
-}
-
 void
 gdbarch_relocate_instruction (struct gdbarch *gdbarch, CORE_ADDR *to, CORE_ADDR from)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->relocate_instruction != NULL);
-  /* Do not check predicate: gdbarch->relocate_instruction != NULL, allow call.  */
   if (gdbarch_debug >= 2)
     gdb_printf (gdb_stdlog, "gdbarch_relocate_instruction called\n");
   gdbarch->relocate_instruction (gdbarch, to, from);
diff --git a/gdb/gdbarch-gen.h b/gdb/gdbarch-gen.h
index b982fd7cd092e071d90b010b9deee2c270520855..582c682de21412b6ead55280fc936c2ce37ee4b7 100644
--- a/gdb/gdbarch-gen.h
+++ b/gdb/gdbarch-gen.h
@@ -220,8 +220,6 @@ extern void set_gdbarch_pseudo_register_write (struct gdbarch *gdbarch, gdbarch_
 
    Implementations should be migrated to implement pseudo_register_write instead. */
 
-extern bool gdbarch_deprecated_pseudo_register_write_p (struct gdbarch *gdbarch);
-
 typedef void (gdbarch_deprecated_pseudo_register_write_ftype) (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const gdb_byte *buf);
 extern void gdbarch_deprecated_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const gdb_byte *buf);
 extern void set_gdbarch_deprecated_pseudo_register_write (struct gdbarch *gdbarch, gdbarch_deprecated_pseudo_register_write_ftype *deprecated_pseudo_register_write);
@@ -925,8 +923,6 @@ extern void set_gdbarch_register_reggroup_p (struct gdbarch *gdbarch, gdbarch_re
 
 /* Fetch the pointer to the ith function argument. */
 
-extern bool gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch);
-
 typedef CORE_ADDR (gdbarch_fetch_pointer_argument_ftype) (const frame_info_ptr &frame, int argi, struct type *type);
 extern CORE_ADDR gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, const frame_info_ptr &frame, int argi, struct type *type);
 extern void set_gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument);
@@ -962,16 +958,12 @@ extern void set_gdbarch_find_memory_regions (struct gdbarch *gdbarch, gdbarch_fi
 
 /* Given a bfd OBFD, segment ADDRESS and SIZE, create a memory tag section to be dumped to a core file */
 
-extern bool gdbarch_create_memtag_section_p (struct gdbarch *gdbarch);
-
 typedef asection * (gdbarch_create_memtag_section_ftype) (struct gdbarch *gdbarch, bfd *obfd, CORE_ADDR address, size_t size);
 extern asection * gdbarch_create_memtag_section (struct gdbarch *gdbarch, bfd *obfd, CORE_ADDR address, size_t size);
 extern void set_gdbarch_create_memtag_section (struct gdbarch *gdbarch, gdbarch_create_memtag_section_ftype *create_memtag_section);
 
 /* Given a memory tag section OSEC, fill OSEC's contents with the appropriate tag data */
 
-extern bool gdbarch_fill_memtag_section_p (struct gdbarch *gdbarch);
-
 typedef bool (gdbarch_fill_memtag_section_ftype) (struct gdbarch *gdbarch, asection *osec);
 extern bool gdbarch_fill_memtag_section (struct gdbarch *gdbarch, asection *osec);
 extern void set_gdbarch_fill_memtag_section (struct gdbarch *gdbarch, gdbarch_fill_memtag_section_ftype *fill_memtag_section);
@@ -1099,8 +1091,6 @@ extern void set_gdbarch_max_insn_length (struct gdbarch *gdbarch, ULONGEST max_i
    core falls back to stepping past the instruction in-line instead in
    that case. */
 
-extern bool gdbarch_displaced_step_copy_insn_p (struct gdbarch *gdbarch);
-
 typedef displaced_step_copy_insn_closure_up (gdbarch_displaced_step_copy_insn_ftype) (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
 extern displaced_step_copy_insn_closure_up gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
 extern void set_gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, gdbarch_displaced_step_copy_insn_ftype *displaced_step_copy_insn);
@@ -1203,8 +1193,6 @@ extern void set_gdbarch_displaced_step_buffer_length (struct gdbarch *gdbarch, U
    relative branches, and other PC-relative instructions need the
    offset adjusted; etc. */
 
-extern bool gdbarch_relocate_instruction_p (struct gdbarch *gdbarch);
-
 typedef void (gdbarch_relocate_instruction_ftype) (struct gdbarch *gdbarch, CORE_ADDR *to, CORE_ADDR from);
 extern void gdbarch_relocate_instruction (struct gdbarch *gdbarch, CORE_ADDR *to, CORE_ADDR from);
 extern void set_gdbarch_relocate_instruction (struct gdbarch *gdbarch, gdbarch_relocate_instruction_ftype *relocate_instruction);
diff --git a/gdb/gdbarch_components.py b/gdb/gdbarch_components.py
index 4006380076dc7e25aadb13e640c9788ca326b65d..1c7a0aea35e40fe4b05349ee7815ba92a82bda7a 100644
--- a/gdb/gdbarch_components.py
+++ b/gdb/gdbarch_components.py
@@ -453,7 +453,7 @@ Implementations should be migrated to implement pseudo_register_write instead.
         ("int", "cookednum"),
         ("const gdb_byte *", "buf"),
     ],
-    predicate=True,
+    invalid=False,
 )
 
 Value(
@@ -1600,7 +1600,7 @@ Fetch the pointer to the ith function argument.
         ("int", "argi"),
         ("struct type *", "type"),
     ],
-    predicate=True,
+    invalid=False,
 )
 
 Method(
@@ -1649,7 +1649,7 @@ Given a bfd OBFD, segment ADDRESS and SIZE, create a memory tag section to be du
     type="asection *",
     name="create_memtag_section",
     params=[("bfd *", "obfd"), ("CORE_ADDR", "address"), ("size_t", "size")],
-    predicate=True,
+    invalid=False,
 )
 
 Method(
@@ -1659,7 +1659,7 @@ Given a memory tag section OSEC, fill OSEC's contents with the appropriate tag d
     type="bool",
     name="fill_memtag_section",
     params=[("asection *", "osec")],
-    predicate=True,
+    invalid=False,
 )
 
 Method(
@@ -1829,7 +1829,7 @@ that case.
     type="displaced_step_copy_insn_closure_up",
     name="displaced_step_copy_insn",
     params=[("CORE_ADDR", "from"), ("CORE_ADDR", "to"), ("struct regcache *", "regs")],
-    predicate=True,
+    invalid=False,
 )
 
 Method(
@@ -1971,8 +1971,7 @@ offset adjusted; etc.
     type="void",
     name="relocate_instruction",
     params=[("CORE_ADDR *", "to"), ("CORE_ADDR", "from")],
-    predicate=True,
-    predefault="NULL",
+    invalid=False,
 )
 
 Function(

-- 
2.46.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 3/6] Remove solib_symbols_extension gdbarch hook
  2024-11-04 21:14 [PATCH 0/6] Add gdbarch-checking script Tom Tromey
  2024-11-04 21:14 ` [PATCH 1/6] Add check-gdbarch.py Tom Tromey
  2024-11-04 21:14 ` [PATCH 2/6] Use 'invalid' rather than 'predicate' in some gdbarch functions Tom Tromey
@ 2024-11-04 21:14 ` Tom Tromey
  2024-11-04 21:14 ` [PATCH 4/6] Remove skip_permanent_breakpoint " Tom Tromey
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Tom Tromey @ 2024-11-04 21:14 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey, Alan Modra

The solib_symbols_extension gdbarch hook has been obsolete since:

    commit 18b8df43bd11ed314153dff2ef04a4b991f00a7c
    Author: Alan Modra <amodra@gmail.com>
    Date:   Wed Feb 10 12:38:47 2021 +1030

	gdb: Remove arm-symbianelf support

This patch removes it.
---
 gdb/gdbarch-gen.c         | 22 ----------------------
 gdb/gdbarch-gen.h         | 10 ----------
 gdb/gdbarch_components.py | 15 ---------------
 gdb/solib.c               | 27 ---------------------------
 4 files changed, 74 deletions(-)

diff --git a/gdb/gdbarch-gen.c b/gdb/gdbarch-gen.c
index e50bb1e9a819fe8e2a0219314fe939eb307e4424..3d3261f636aa8da6cdd3412d76a469eb6059aafd 100644
--- a/gdb/gdbarch-gen.c
+++ b/gdb/gdbarch-gen.c
@@ -232,7 +232,6 @@ struct gdbarch
   gdbarch_guess_tracepoint_registers_ftype *guess_tracepoint_registers = default_guess_tracepoint_registers;
   gdbarch_auto_charset_ftype *auto_charset = default_auto_charset;
   gdbarch_auto_wide_charset_ftype *auto_wide_charset = default_auto_wide_charset;
-  const char * solib_symbols_extension = 0;
   int has_dos_based_file_system = 0;
   gdbarch_gen_return_address_ftype *gen_return_address = default_gen_return_address;
   gdbarch_info_proc_ftype *info_proc = nullptr;
@@ -501,7 +500,6 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of guess_tracepoint_registers, invalid_p == 0.  */
   /* Skip verify of auto_charset, invalid_p == 0.  */
   /* Skip verify of auto_wide_charset, invalid_p == 0.  */
-  /* Skip verify of solib_symbols_extension, invalid_p == 0.  */
   /* Skip verify of has_dos_based_file_system, invalid_p == 0.  */
   /* Skip verify of gen_return_address, invalid_p == 0.  */
   /* Skip verify of info_proc, has predicate.  */
@@ -1281,9 +1279,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
   gdb_printf (file,
 	      "gdbarch_dump: auto_wide_charset = <%s>\n",
 	      host_address_to_string (gdbarch->auto_wide_charset));
-  gdb_printf (file,
-	      "gdbarch_dump: solib_symbols_extension = %s\n",
-	      pstring (gdbarch->solib_symbols_extension));
   gdb_printf (file,
 	      "gdbarch_dump: has_dos_based_file_system = %s\n",
 	      plongest (gdbarch->has_dos_based_file_system));
@@ -4940,23 +4935,6 @@ set_gdbarch_auto_wide_charset (struct gdbarch *gdbarch,
   gdbarch->auto_wide_charset = auto_wide_charset;
 }
 
-const char *
-gdbarch_solib_symbols_extension (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  /* Skip verify of solib_symbols_extension, invalid_p == 0.  */
-  if (gdbarch_debug >= 2)
-    gdb_printf (gdb_stdlog, "gdbarch_solib_symbols_extension called\n");
-  return gdbarch->solib_symbols_extension;
-}
-
-void
-set_gdbarch_solib_symbols_extension (struct gdbarch *gdbarch,
-				     const char * solib_symbols_extension)
-{
-  gdbarch->solib_symbols_extension = solib_symbols_extension;
-}
-
 int
 gdbarch_has_dos_based_file_system (struct gdbarch *gdbarch)
 {
diff --git a/gdb/gdbarch-gen.h b/gdb/gdbarch-gen.h
index 582c682de21412b6ead55280fc936c2ce37ee4b7..0a5a168f21070b5f3baefee217eb6838791a71bb 100644
--- a/gdb/gdbarch-gen.h
+++ b/gdb/gdbarch-gen.h
@@ -1541,16 +1541,6 @@ typedef const char * (gdbarch_auto_wide_charset_ftype) ();
 extern const char * gdbarch_auto_wide_charset (struct gdbarch *gdbarch);
 extern void set_gdbarch_auto_wide_charset (struct gdbarch *gdbarch, gdbarch_auto_wide_charset_ftype *auto_wide_charset);
 
-/* If non-empty, this is a file extension that will be opened in place
-   of the file extension reported by the shared library list.
-
-   This is most useful for toolchains that use a post-linker tool,
-   where the names of the files run on the target differ in extension
-   compared to the names of the files GDB should load for debug info. */
-
-extern const char * gdbarch_solib_symbols_extension (struct gdbarch *gdbarch);
-extern void set_gdbarch_solib_symbols_extension (struct gdbarch *gdbarch, const char * solib_symbols_extension);
-
 /* If true, the target OS has DOS-based file system semantics.  That
    is, absolute paths include a drive name, and the backslash is
    considered a directory separator. */
diff --git a/gdb/gdbarch_components.py b/gdb/gdbarch_components.py
index 1c7a0aea35e40fe4b05349ee7815ba92a82bda7a..262d448b6c7130728f21afd4b55c9412553a32fb 100644
--- a/gdb/gdbarch_components.py
+++ b/gdb/gdbarch_components.py
@@ -2443,21 +2443,6 @@ Return the "auto" target wide charset.
     invalid=False,
 )
 
-Value(
-    comment="""
-If non-empty, this is a file extension that will be opened in place
-of the file extension reported by the shared library list.
-
-This is most useful for toolchains that use a post-linker tool,
-where the names of the files run on the target differ in extension
-compared to the names of the files GDB should load for debug info.
-""",
-    type="const char *",
-    name="solib_symbols_extension",
-    invalid=False,
-    printer="pstring (gdbarch->solib_symbols_extension)",
-)
-
 Value(
     comment="""
 If true, the target OS has DOS-based file system semantics.  That
diff --git a/gdb/solib.c b/gdb/solib.c
index 5c926def715080f3ab54172afcabc3361f15ceb0..91404f6c69c64bde645e64252429a9b840c9bec6 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -377,33 +377,6 @@ exec_file_find (const char *in_pathname, int *fd)
 gdb::unique_xmalloc_ptr<char>
 solib_find (const char *in_pathname, int *fd)
 {
-  const char *solib_symbols_extension
-    = gdbarch_solib_symbols_extension (current_inferior ()->arch ());
-
-  /* If solib_symbols_extension is set, replace the file's
-     extension.  */
-  if (solib_symbols_extension != NULL)
-    {
-      const char *p = in_pathname + strlen (in_pathname);
-
-      while (p > in_pathname && *p != '.')
-	p--;
-
-      if (*p == '.')
-	{
-	  char *new_pathname;
-
-	  new_pathname
-	    = (char *) alloca (p - in_pathname + 1
-			       + strlen (solib_symbols_extension) + 1);
-	  memcpy (new_pathname, in_pathname, p - in_pathname + 1);
-	  strcpy (new_pathname + (p - in_pathname) + 1,
-		  solib_symbols_extension);
-
-	  in_pathname = new_pathname;
-	}
-    }
-
   return solib_find_1 (in_pathname, fd, true);
 }
 

-- 
2.46.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 4/6] Remove skip_permanent_breakpoint gdbarch hook
  2024-11-04 21:14 [PATCH 0/6] Add gdbarch-checking script Tom Tromey
                   ` (2 preceding siblings ...)
  2024-11-04 21:14 ` [PATCH 3/6] Remove solib_symbols_extension gdbarch hook Tom Tromey
@ 2024-11-04 21:14 ` Tom Tromey
  2024-11-04 21:14 ` [PATCH 5/6] Remove the print_vector_info " Tom Tromey
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Tom Tromey @ 2024-11-04 21:14 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey, Jan Kratochvil

The skip_permanent_breakpoint gdbarch hook has been obsolete since:

    commit 61a12cfa7b25746914493cc0d94e5053a8492aa5
    Author: Jan Kratochvil <jan.kratochvil@redhat.com>
    Date:   Fri Mar 13 20:24:22 2015 +0100

	Remove HPUX

This patch removes it.
---
 gdb/arch-utils.c          | 12 ------------
 gdb/arch-utils.h          |  7 -------
 gdb/breakpoint.c          |  3 +--
 gdb/breakpoint.h          |  3 +--
 gdb/gdbarch-gen.c         | 22 ----------------------
 gdb/gdbarch-gen.h         |  6 ------
 gdb/gdbarch_components.py | 11 -----------
 gdb/infrun.c              |  7 ++++---
 8 files changed, 6 insertions(+), 65 deletions(-)

diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
index 6ffa4109765579bc6654df8ae245a26cdcad838f..6ca9ec34ad8a6f1fc77e576a475b3bd3182fa265 100644
--- a/gdb/arch-utils.c
+++ b/gdb/arch-utils.c
@@ -956,18 +956,6 @@ default_program_breakpoint_here_p (struct gdbarch *gdbarch,
   return false;
 }
 
-void
-default_skip_permanent_breakpoint (struct regcache *regcache)
-{
-  struct gdbarch *gdbarch = regcache->arch ();
-  CORE_ADDR current_pc = regcache_read_pc (regcache);
-  int bp_len;
-
-  gdbarch_breakpoint_from_pc (gdbarch, &current_pc, &bp_len);
-  current_pc += bp_len;
-  regcache_write_pc (regcache, current_pc);
-}
-
 CORE_ADDR
 default_infcall_mmap (CORE_ADDR size, unsigned prot)
 {
diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h
index 40c62f30a65fbf86a1644ae24ef3f6ec329fd87f..39094a0bf3e2e121c7df67a64d530ca6c471f661 100644
--- a/gdb/arch-utils.h
+++ b/gdb/arch-utils.h
@@ -254,13 +254,6 @@ extern bool default_program_breakpoint_here_p (struct gdbarch *gdbarch,
 
 extern int default_vsyscall_range (struct gdbarch *gdbarch, struct mem_range *range);
 
-/* Default way to advance the PC to the next instruction in order to
-   skip a permanent breakpoint.  Increments the PC by the size of a
-   software breakpoint instruction, as determined with
-   gdbarch_breakpoint_from_pc.  This matches how the breakpoints
-   module determines whether a breakpoint is permanent.  */
-extern void default_skip_permanent_breakpoint (struct regcache *regcache);
-
 /* Symbols for gdbarch_infcall_mmap; their Linux PROT_* system
    definitions would be dependent on compilation host.  */
 #define GDB_MMAP_PROT_READ	0x1	/* Page can be read.  */
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index b7e4f5d0a4549d4b1729a507419d611ddc7999fa..5b7633e313b1b0b8d91c550cfa86c4ec09d64704 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -4411,8 +4411,7 @@ breakpoint_init_inferior (inferior *inf, inf_context context)
    - When continuing from a location with an ordinary breakpoint, we
      actually single step once before calling insert_breakpoints.
    - When continuing from a location with a permanent breakpoint, we
-     need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
-     the target, to advance the PC past the breakpoint.  */
+     advance the PC past the breakpoint manually.  */
 
 enum breakpoint_here
 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index cef1d727ed256eed919914646e40a2fa06715ec8..5de2efb7398e255fcb7b0c016e87c32c4c9c942c 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -406,8 +406,7 @@ class bp_location : public refcounted_object, public intrusive_list_node<bp_loca
   /* True if this is a permanent breakpoint.  There is a breakpoint
      instruction hard-wired into the target's code.  Don't try to
      write another breakpoint instruction on top of it, or restore its
-     value.  Step over it using the architecture's
-     gdbarch_skip_permanent_breakpoint method.  */
+     value.  Step over it.  */
   bool permanent = false;
 
   /* True if this is not the first breakpoint in the list
diff --git a/gdb/gdbarch-gen.c b/gdb/gdbarch-gen.c
index 3d3261f636aa8da6cdd3412d76a469eb6059aafd..534ed35f3bba3b6ebe1a034198f5f7e16e756e72 100644
--- a/gdb/gdbarch-gen.c
+++ b/gdb/gdbarch-gen.c
@@ -187,7 +187,6 @@ struct gdbarch
   const char * gcore_bfd_target = 0;
   int vtable_function_descriptors = 0;
   int vbit_in_delta = 0;
-  gdbarch_skip_permanent_breakpoint_ftype *skip_permanent_breakpoint = default_skip_permanent_breakpoint;
   ULONGEST max_insn_length = 0;
   gdbarch_displaced_step_copy_insn_ftype *displaced_step_copy_insn = nullptr;
   gdbarch_displaced_step_hw_singlestep_ftype *displaced_step_hw_singlestep = default_displaced_step_hw_singlestep;
@@ -450,7 +449,6 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of gcore_bfd_target, has predicate.  */
   /* Skip verify of vtable_function_descriptors, invalid_p == 0.  */
   /* Skip verify of vbit_in_delta, invalid_p == 0.  */
-  /* Skip verify of skip_permanent_breakpoint, invalid_p == 0.  */
   /* Skip verify of max_insn_length, has predicate.  */
   /* Skip verify of displaced_step_copy_insn, invalid_p == 0.  */
   /* Skip verify of displaced_step_hw_singlestep, invalid_p == 0.  */
@@ -1087,9 +1085,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
   gdb_printf (file,
 	      "gdbarch_dump: vbit_in_delta = %s\n",
 	      plongest (gdbarch->vbit_in_delta));
-  gdb_printf (file,
-	      "gdbarch_dump: skip_permanent_breakpoint = <%s>\n",
-	      host_address_to_string (gdbarch->skip_permanent_breakpoint));
   gdb_printf (file,
 	      "gdbarch_dump: gdbarch_max_insn_length_p() = %d\n",
 	      gdbarch_max_insn_length_p (gdbarch));
@@ -4035,23 +4030,6 @@ set_gdbarch_vbit_in_delta (struct gdbarch *gdbarch,
   gdbarch->vbit_in_delta = vbit_in_delta;
 }
 
-void
-gdbarch_skip_permanent_breakpoint (struct gdbarch *gdbarch, struct regcache *regcache)
-{
-  gdb_assert (gdbarch != NULL);
-  gdb_assert (gdbarch->skip_permanent_breakpoint != NULL);
-  if (gdbarch_debug >= 2)
-    gdb_printf (gdb_stdlog, "gdbarch_skip_permanent_breakpoint called\n");
-  gdbarch->skip_permanent_breakpoint (regcache);
-}
-
-void
-set_gdbarch_skip_permanent_breakpoint (struct gdbarch *gdbarch,
-				       gdbarch_skip_permanent_breakpoint_ftype skip_permanent_breakpoint)
-{
-  gdbarch->skip_permanent_breakpoint = skip_permanent_breakpoint;
-}
-
 bool
 gdbarch_max_insn_length_p (struct gdbarch *gdbarch)
 {
diff --git a/gdb/gdbarch-gen.h b/gdb/gdbarch-gen.h
index 0a5a168f21070b5f3baefee217eb6838791a71bb..6b5ebcc28516f942ffa33c288e5d6c1aab7d9aac 100644
--- a/gdb/gdbarch-gen.h
+++ b/gdb/gdbarch-gen.h
@@ -1054,12 +1054,6 @@ extern void set_gdbarch_vtable_function_descriptors (struct gdbarch *gdbarch, in
 extern int gdbarch_vbit_in_delta (struct gdbarch *gdbarch);
 extern void set_gdbarch_vbit_in_delta (struct gdbarch *gdbarch, int vbit_in_delta);
 
-/* Advance PC to next instruction in order to skip a permanent breakpoint. */
-
-typedef void (gdbarch_skip_permanent_breakpoint_ftype) (struct regcache *regcache);
-extern void gdbarch_skip_permanent_breakpoint (struct gdbarch *gdbarch, struct regcache *regcache);
-extern void set_gdbarch_skip_permanent_breakpoint (struct gdbarch *gdbarch, gdbarch_skip_permanent_breakpoint_ftype *skip_permanent_breakpoint);
-
 /* The maximum length of an instruction on this architecture in bytes. */
 
 extern bool gdbarch_max_insn_length_p (struct gdbarch *gdbarch);
diff --git a/gdb/gdbarch_components.py b/gdb/gdbarch_components.py
index 262d448b6c7130728f21afd4b55c9412553a32fb..f79d61559b8e4c50a66258284376f454072f4112 100644
--- a/gdb/gdbarch_components.py
+++ b/gdb/gdbarch_components.py
@@ -1779,17 +1779,6 @@ significant bit of the pfn for pointers to virtual member functions.
     invalid=False,
 )
 
-Function(
-    comment="""
-Advance PC to next instruction in order to skip a permanent breakpoint.
-""",
-    type="void",
-    name="skip_permanent_breakpoint",
-    params=[("struct regcache *", "regcache")],
-    predefault="default_skip_permanent_breakpoint",
-    invalid=False,
-)
-
 Value(
     comment="""
 The maximum length of an instruction on this architecture in bytes.
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 4ca15450afe0344f9acf97ca73dcf837879650e3..7ac57c4273b4b745ab625a8b6021e775c90ec83e 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -2770,10 +2770,11 @@ resume_1 (enum gdb_signal sig)
 	  /* There's no signal to pass, we can go ahead and skip the
 	     permanent breakpoint manually.  */
 	  infrun_debug_printf ("skipping permanent breakpoint");
-	  gdbarch_skip_permanent_breakpoint (gdbarch, regcache);
-	  /* Update pc to reflect the new address from which we will
-	     execute instructions.  */
 	  pc = regcache_read_pc (regcache);
+	  int bp_len;
+	  gdbarch_breakpoint_from_pc (gdbarch, &pc, &bp_len);
+	  pc += bp_len;
+	  regcache_write_pc (regcache, pc);
 
 	  if (step)
 	    {

-- 
2.46.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 5/6] Remove the print_vector_info gdbarch hook
  2024-11-04 21:14 [PATCH 0/6] Add gdbarch-checking script Tom Tromey
                   ` (3 preceding siblings ...)
  2024-11-04 21:14 ` [PATCH 4/6] Remove skip_permanent_breakpoint " Tom Tromey
@ 2024-11-04 21:14 ` Tom Tromey
  2024-12-05 22:49   ` Keith Seitz
  2024-11-04 21:14 ` [PATCH 6/6] Remove the auto_charset " Tom Tromey
  2024-12-05 22:50 ` [PATCH 0/6] Add gdbarch-checking script Keith Seitz
  6 siblings, 1 reply; 11+ messages in thread
From: Tom Tromey @ 2024-11-04 21:14 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

The print_vector_info gdbarch hook has apparently never been set by
any arch.  This patch removes it.
---
 gdb/gdbarch-gen.c         | 32 --------------------------------
 gdb/gdbarch-gen.h         |  6 ------
 gdb/gdbarch_components.py | 11 -----------
 gdb/infcmd.c              | 21 +++++++--------------
 4 files changed, 7 insertions(+), 63 deletions(-)

diff --git a/gdb/gdbarch-gen.c b/gdb/gdbarch-gen.c
index 534ed35f3bba3b6ebe1a034198f5f7e16e756e72..47f068967cce0e44f1e3e6a5b7eee485320ae705 100644
--- a/gdb/gdbarch-gen.c
+++ b/gdb/gdbarch-gen.c
@@ -99,7 +99,6 @@ struct gdbarch
   gdbarch_code_of_frame_writable_ftype *code_of_frame_writable = default_code_of_frame_writable;
   gdbarch_print_registers_info_ftype *print_registers_info = default_print_registers_info;
   gdbarch_print_float_info_ftype *print_float_info = default_print_float_info;
-  gdbarch_print_vector_info_ftype *print_vector_info = nullptr;
   gdbarch_register_sim_regno_ftype *register_sim_regno = legacy_register_sim_regno;
   gdbarch_cannot_fetch_register_ftype *cannot_fetch_register = cannot_register_not;
   gdbarch_cannot_store_register_ftype *cannot_store_register = cannot_register_not;
@@ -357,7 +356,6 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of code_of_frame_writable, invalid_p == 0.  */
   /* Skip verify of print_registers_info, invalid_p == 0.  */
   /* Skip verify of print_float_info, invalid_p == 0.  */
-  /* Skip verify of print_vector_info, has predicate.  */
   /* Skip verify of register_sim_regno, invalid_p == 0.  */
   /* Skip verify of cannot_fetch_register, invalid_p == 0.  */
   /* Skip verify of cannot_store_register, invalid_p == 0.  */
@@ -740,12 +738,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
   gdb_printf (file,
 	      "gdbarch_dump: print_float_info = <%s>\n",
 	      host_address_to_string (gdbarch->print_float_info));
-  gdb_printf (file,
-	      "gdbarch_dump: gdbarch_print_vector_info_p() = %d\n",
-	      gdbarch_print_vector_info_p (gdbarch));
-  gdb_printf (file,
-	      "gdbarch_dump: print_vector_info = <%s>\n",
-	      host_address_to_string (gdbarch->print_vector_info));
   gdb_printf (file,
 	      "gdbarch_dump: register_sim_regno = <%s>\n",
 	      host_address_to_string (gdbarch->register_sim_regno));
@@ -2354,30 +2346,6 @@ set_gdbarch_print_float_info (struct gdbarch *gdbarch,
   gdbarch->print_float_info = print_float_info;
 }
 
-bool
-gdbarch_print_vector_info_p (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  return gdbarch->print_vector_info != NULL;
-}
-
-void
-gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args)
-{
-  gdb_assert (gdbarch != NULL);
-  gdb_assert (gdbarch->print_vector_info != NULL);
-  if (gdbarch_debug >= 2)
-    gdb_printf (gdb_stdlog, "gdbarch_print_vector_info called\n");
-  gdbarch->print_vector_info (gdbarch, file, frame, args);
-}
-
-void
-set_gdbarch_print_vector_info (struct gdbarch *gdbarch,
-			       gdbarch_print_vector_info_ftype print_vector_info)
-{
-  gdbarch->print_vector_info = print_vector_info;
-}
-
 int
 gdbarch_register_sim_regno (struct gdbarch *gdbarch, int reg_nr)
 {
diff --git a/gdb/gdbarch-gen.h b/gdb/gdbarch-gen.h
index 6b5ebcc28516f942ffa33c288e5d6c1aab7d9aac..d96bbe94f07b17a5ed173bdf20b3bfee7ff70cfa 100644
--- a/gdb/gdbarch-gen.h
+++ b/gdb/gdbarch-gen.h
@@ -372,12 +372,6 @@ typedef void (gdbarch_print_float_info_ftype) (struct gdbarch *gdbarch, struct u
 extern void gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
 extern void set_gdbarch_print_float_info (struct gdbarch *gdbarch, gdbarch_print_float_info_ftype *print_float_info);
 
-extern bool gdbarch_print_vector_info_p (struct gdbarch *gdbarch);
-
-typedef void (gdbarch_print_vector_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
-extern void gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
-extern void set_gdbarch_print_vector_info (struct gdbarch *gdbarch, gdbarch_print_vector_info_ftype *print_vector_info);
-
 /* MAP a GDB RAW register number onto a simulator register number.  See
    also include/...-sim.h. */
 
diff --git a/gdb/gdbarch_components.py b/gdb/gdbarch_components.py
index f79d61559b8e4c50a66258284376f454072f4112..78d9521154f629740bced42a44300c20a1e2b2cb 100644
--- a/gdb/gdbarch_components.py
+++ b/gdb/gdbarch_components.py
@@ -719,17 +719,6 @@ Method(
     invalid=False,
 )
 
-Method(
-    type="void",
-    name="print_vector_info",
-    params=[
-        ("struct ui_file *", "file"),
-        ("const frame_info_ptr &", "frame"),
-        ("const char *", "args"),
-    ],
-    predicate=True,
-)
-
 Method(
     comment="""
 MAP a GDB RAW register number onto a simulator register number.  See
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 74873b9f7c80fa2ec299f528cde748161882c175..db9d6e66b57b700b7dc9b7bd6176fdc0ac888ef3 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -2404,25 +2404,18 @@ print_vector_info (struct ui_file *file,
 		   const frame_info_ptr &frame, const char *args)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
+  int printed_something = 0;
 
-  if (gdbarch_print_vector_info_p (gdbarch))
-    gdbarch_print_vector_info (gdbarch, file, frame, args);
-  else
+  for (int regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
     {
-      int regnum;
-      int printed_something = 0;
-
-      for (regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
+      if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
 	{
-	  if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
-	    {
-	      printed_something = 1;
-	      gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
-	    }
+	  printed_something = 1;
+	  gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
 	}
-      if (!printed_something)
-	gdb_printf (file, "No vector information\n");
     }
+  if (!printed_something)
+    gdb_printf (file, "No vector information\n");
 }
 
 static void

-- 
2.46.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 6/6] Remove the auto_charset gdbarch hook
  2024-11-04 21:14 [PATCH 0/6] Add gdbarch-checking script Tom Tromey
                   ` (4 preceding siblings ...)
  2024-11-04 21:14 ` [PATCH 5/6] Remove the print_vector_info " Tom Tromey
@ 2024-11-04 21:14 ` Tom Tromey
  2024-12-05 22:50 ` [PATCH 0/6] Add gdbarch-checking script Keith Seitz
  6 siblings, 0 replies; 11+ messages in thread
From: Tom Tromey @ 2024-11-04 21:14 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

The auto_charset gdbarch hook has never been set by any architecture.
I probably added it (don't remember) to be parallel to
auto_wide_charset -- but considering that it hasn't ever been needed,
it seems fine to remove it.
---
 gdb/arch-utils.h          |  1 -
 gdb/charset.c             |  9 +++++----
 gdb/gdbarch-gen.c         | 22 ----------------------
 gdb/gdbarch-gen.h         |  6 ------
 gdb/gdbarch_components.py | 11 -----------
 5 files changed, 5 insertions(+), 44 deletions(-)

diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h
index 39094a0bf3e2e121c7df67a64d530ca6c471f661..807ab96ca4edad319cd42b7ff45768ef91a45a67 100644
--- a/gdb/arch-utils.h
+++ b/gdb/arch-utils.h
@@ -236,7 +236,6 @@ extern void default_gen_return_address (struct gdbarch *gdbarch,
 					struct axs_value *value,
 					CORE_ADDR scope);
 
-extern const char *default_auto_charset (void);
 extern const char *default_auto_wide_charset (void);
 
 extern int default_return_in_first_hidden_param_p (struct gdbarch *,
diff --git a/gdb/charset.c b/gdb/charset.c
index 35e700a8caf71fffffe5b06081f08d964d2d6bce..04c424b7fb5fca50b310340c8394b70c1868d342 100644
--- a/gdb/charset.c
+++ b/gdb/charset.c
@@ -216,6 +216,7 @@ gdb_iconv (iconv_t utf_flag, ICONV_CONST char **inbuf, size_t *inbytesleft,
 \f
 /* The global lists of character sets and translations.  */
 
+static const char *default_auto_charset ();
 
 #ifndef GDB_DEFAULT_TARGET_CHARSET
 #define GDB_DEFAULT_TARGET_CHARSET "ISO-8859-1"
@@ -249,7 +250,7 @@ show_target_charset_name (struct ui_file *file, int from_tty,
     gdb_printf (file,
 		_("The target character set is \"auto; "
 		  "currently %s\".\n"),
-		gdbarch_auto_charset (get_current_arch ()));
+		default_auto_charset ());
   else
     gdb_printf (file, _("The target character set is \"%s\".\n"),
 		value);
@@ -425,7 +426,7 @@ const char *
 target_charset (struct gdbarch *gdbarch)
 {
   if (!strcmp (target_charset_name, "auto"))
-    return gdbarch_auto_charset (gdbarch);
+    return default_auto_charset ();
   return target_charset_name;
 }
 
@@ -917,8 +918,8 @@ find_charset_names (void)
 /* The "auto" target charset used by default_auto_charset.  */
 static const char *auto_target_charset_name = GDB_DEFAULT_TARGET_CHARSET;
 
-const char *
-default_auto_charset (void)
+static const char *
+default_auto_charset ()
 {
   return auto_target_charset_name;
 }
diff --git a/gdb/gdbarch-gen.c b/gdb/gdbarch-gen.c
index 47f068967cce0e44f1e3e6a5b7eee485320ae705..4c3b9b7f9e27e853f4b6a52cf46c65173e252cef 100644
--- a/gdb/gdbarch-gen.c
+++ b/gdb/gdbarch-gen.c
@@ -228,7 +228,6 @@ struct gdbarch
   gdbarch_has_shared_address_space_ftype *has_shared_address_space = default_has_shared_address_space;
   gdbarch_fast_tracepoint_valid_at_ftype *fast_tracepoint_valid_at = default_fast_tracepoint_valid_at;
   gdbarch_guess_tracepoint_registers_ftype *guess_tracepoint_registers = default_guess_tracepoint_registers;
-  gdbarch_auto_charset_ftype *auto_charset = default_auto_charset;
   gdbarch_auto_wide_charset_ftype *auto_wide_charset = default_auto_wide_charset;
   int has_dos_based_file_system = 0;
   gdbarch_gen_return_address_ftype *gen_return_address = default_gen_return_address;
@@ -494,7 +493,6 @@ verify_gdbarch (struct gdbarch *gdbarch)
   /* Skip verify of has_shared_address_space, invalid_p == 0.  */
   /* Skip verify of fast_tracepoint_valid_at, invalid_p == 0.  */
   /* Skip verify of guess_tracepoint_registers, invalid_p == 0.  */
-  /* Skip verify of auto_charset, invalid_p == 0.  */
   /* Skip verify of auto_wide_charset, invalid_p == 0.  */
   /* Skip verify of has_dos_based_file_system, invalid_p == 0.  */
   /* Skip verify of gen_return_address, invalid_p == 0.  */
@@ -1260,9 +1258,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
   gdb_printf (file,
 	      "gdbarch_dump: guess_tracepoint_registers = <%s>\n",
 	      host_address_to_string (gdbarch->guess_tracepoint_registers));
-  gdb_printf (file,
-	      "gdbarch_dump: auto_charset = <%s>\n",
-	      host_address_to_string (gdbarch->auto_charset));
   gdb_printf (file,
 	      "gdbarch_dump: auto_wide_charset = <%s>\n",
 	      host_address_to_string (gdbarch->auto_wide_charset));
@@ -4847,23 +4842,6 @@ set_gdbarch_guess_tracepoint_registers (struct gdbarch *gdbarch,
   gdbarch->guess_tracepoint_registers = guess_tracepoint_registers;
 }
 
-const char *
-gdbarch_auto_charset (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  gdb_assert (gdbarch->auto_charset != NULL);
-  if (gdbarch_debug >= 2)
-    gdb_printf (gdb_stdlog, "gdbarch_auto_charset called\n");
-  return gdbarch->auto_charset ();
-}
-
-void
-set_gdbarch_auto_charset (struct gdbarch *gdbarch,
-			  gdbarch_auto_charset_ftype auto_charset)
-{
-  gdbarch->auto_charset = auto_charset;
-}
-
 const char *
 gdbarch_auto_wide_charset (struct gdbarch *gdbarch)
 {
diff --git a/gdb/gdbarch-gen.h b/gdb/gdbarch-gen.h
index d96bbe94f07b17a5ed173bdf20b3bfee7ff70cfa..4f7544c97b5ea2a6878d80dc253a04c2428551ed 100644
--- a/gdb/gdbarch-gen.h
+++ b/gdb/gdbarch-gen.h
@@ -1517,12 +1517,6 @@ typedef void (gdbarch_guess_tracepoint_registers_ftype) (struct gdbarch *gdbarch
 extern void gdbarch_guess_tracepoint_registers (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr);
 extern void set_gdbarch_guess_tracepoint_registers (struct gdbarch *gdbarch, gdbarch_guess_tracepoint_registers_ftype *guess_tracepoint_registers);
 
-/* Return the "auto" target charset. */
-
-typedef const char * (gdbarch_auto_charset_ftype) ();
-extern const char * gdbarch_auto_charset (struct gdbarch *gdbarch);
-extern void set_gdbarch_auto_charset (struct gdbarch *gdbarch, gdbarch_auto_charset_ftype *auto_charset);
-
 /* Return the "auto" target wide charset. */
 
 typedef const char * (gdbarch_auto_wide_charset_ftype) ();
diff --git a/gdb/gdbarch_components.py b/gdb/gdbarch_components.py
index 78d9521154f629740bced42a44300c20a1e2b2cb..ca8731c69cf2d27d5a30654fdc5edde508a96564 100644
--- a/gdb/gdbarch_components.py
+++ b/gdb/gdbarch_components.py
@@ -2399,17 +2399,6 @@ On entry, regcache has all registers marked as unavailable.
     invalid=False,
 )
 
-Function(
-    comment="""
-Return the "auto" target charset.
-""",
-    type="const char *",
-    name="auto_charset",
-    params=[],
-    predefault="default_auto_charset",
-    invalid=False,
-)
-
 Function(
     comment="""
 Return the "auto" target wide charset.

-- 
2.46.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/6] Add check-gdbarch.py
  2024-11-04 21:14 ` [PATCH 1/6] Add check-gdbarch.py Tom Tromey
@ 2024-12-05 22:47   ` Keith Seitz
  0 siblings, 0 replies; 11+ messages in thread
From: Keith Seitz @ 2024-12-05 22:47 UTC (permalink / raw)
  To: Tom Tromey, gdb-patches

Hi,

On 11/4/24 1:14 PM, Tom Tromey wrote:
> This adds a new check-gdbarch.py script.  This script checks the
> sources to see which gdbarch methods are set but never called, and
> which ones are called but never set.

While I was playing with this, I (naively?) tried to run the script
from my play branch in my virgin master branch. Much to my surprise,
it output exactly the same output as when it was run in my play
branch (which contains this entire series).

Do we care? If not, please feel free to ignore this.

It's a pretty easy thing to change:

diff --git a/gdb/check-gdbarch.py b/gdb/check-gdbarch.py
index 6f2983c7984..da27c481017 100755
--- a/gdb/check-gdbarch.py
+++ b/gdb/check-gdbarch.py
@@ -21,9 +21,14 @@

  import fileinput
  import glob
+import os
  import re
  import sys

+# Insert CWD in case this script is run from some other gdb src
+# directory.
+sys.path.insert(0, os.getcwd())
+
  # gdbarch_components is imported only for its side-effect of filling
  # `gdbarch_types.components`.
  import gdbarch_components  # noqa: F401 # type: ignore

Keith


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 5/6] Remove the print_vector_info gdbarch hook
  2024-11-04 21:14 ` [PATCH 5/6] Remove the print_vector_info " Tom Tromey
@ 2024-12-05 22:49   ` Keith Seitz
  0 siblings, 0 replies; 11+ messages in thread
From: Keith Seitz @ 2024-12-05 22:49 UTC (permalink / raw)
  To: Tom Tromey, gdb-patches

Hi,

One really tiny, tiny request:

On 11/4/24 1:14 PM, Tom Tromey wrote:

> diff --git a/gdb/infcmd.c b/gdb/infcmd.c
> index 74873b9f7c80fa2ec299f528cde748161882c175..db9d6e66b57b700b7dc9b7bd6176fdc0ac888ef3 100644
> --- a/gdb/infcmd.c
> +++ b/gdb/infcmd.c
> @@ -2404,25 +2404,18 @@ print_vector_info (struct ui_file *file,
>   		   const frame_info_ptr &frame, const char *args)
>   {
>     struct gdbarch *gdbarch = get_frame_arch (frame);
> +  int printed_something = 0;

Since you're here, would you mind changing `printed_something' to a bool?

[I warned you it was teeny tiny!]

Keith

>   
> -  if (gdbarch_print_vector_info_p (gdbarch))
> -    gdbarch_print_vector_info (gdbarch, file, frame, args);
> -  else
> +  for (int regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
>       {
> -      int regnum;
> -      int printed_something = 0;
> -
> -      for (regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
> +      if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
>   	{
> -	  if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
> -	    {
> -	      printed_something = 1;
> -	      gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
> -	    }
> +	  printed_something = 1;
> +	  gdbarch_print_registers_info (gdbarch, file, frame, regnum, 1);
>   	}
> -      if (!printed_something)
> -	gdb_printf (file, "No vector information\n");
>       }
> +  if (!printed_something)
> +    gdb_printf (file, "No vector information\n");
>   }
>   
>   static void
> 


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/6] Add gdbarch-checking script
  2024-11-04 21:14 [PATCH 0/6] Add gdbarch-checking script Tom Tromey
                   ` (5 preceding siblings ...)
  2024-11-04 21:14 ` [PATCH 6/6] Remove the auto_charset " Tom Tromey
@ 2024-12-05 22:50 ` Keith Seitz
  2024-12-06  2:58   ` Sergio Durigan Junior
  6 siblings, 1 reply; 11+ messages in thread
From: Keith Seitz @ 2024-12-05 22:50 UTC (permalink / raw)
  To: Tom Tromey, gdb-patches

Hi, Tom,

[It's me again!]

On 11/4/24 1:14 PM, Tom Tromey wrote:
> I was curious if any gdbarch methods were unused, so I wrote a script
> to check this.  It works by scanning the source and looking for calls
> to gdbarch methods and for arches setting the parameter.
> 
> This found a few methods that are obsolete.  These are removed in the
> series.

This is very nice... I've looked over the series, and I only have
two minor requests (patch nos. 1 & 5). Otherwise, this series
LGTM.

> A few other gdbarch settings are used by gdb but not set by any
> existing arch.  I haven't removed these since they maybe needed more
> discussion:
> 
>      stap_gdb_register_suffix
>      stap_integer_suffixes
>      stap_register_suffixes

I briefly discussed these with fche, and it certainly appears
that the compiler *could* output these suffixes. However, it seems
that either no one has generated a probe that does this (and/or
tried to debug it), or no one has reported any problems.

I agree these need further discussion, but while I understand
the desire to simplify, I still lean toward keeping these around.

>      bfloat16_bit
>      half_bit
> 
> Perhaps these should just both be 16-bit types unconditionally.

It appears that both these methods were just added for parallelism
with other type implementations, like "float_bit" and "float_format".
Honestly, probably what I would have done until a maintainer corrected
me during review!

>      addressable_memory_unit_size
> 
> This was added in 2015.  Not sure if there's a need for it but at the
> same time it seems necessary if we ever want to really support arches
> like this.

Wow, there's a lot of related code using this, even if nothing ever sets
the value differently from the default... I can't help but wonder if
this was needed for some port which never landed on the list or 
something? The work here, as noted in the ChangeLog entry, does note
that this work (at commit time) was not complete. [I don't know if that
has changed?]

Maybe Simon has some further insight?

In any case, these patches need not be delayed further for the sake
of dealing with *everything* it discovered.

Reviewed-By: Keith Seitz <keiths@redhat.com>

Keith

> Signed-off-by: Tom Tromey <tom@tromey.com>
> ---
> Tom Tromey (6):
>        Add check-gdbarch.py
>        Use 'invalid' rather than 'predicate' in some gdbarch functions
>        Remove solib_symbols_extension gdbarch hook
>        Remove skip_permanent_breakpoint gdbarch hook
>        Remove the print_vector_info gdbarch hook
>        Remove the auto_charset gdbarch hook
> 
>   gdb/arch-utils.c          |  12 ----
>   gdb/arch-utils.h          |   8 ---
>   gdb/breakpoint.c          |   3 +-
>   gdb/breakpoint.h          |   3 +-
>   gdb/charset.c             |   9 +--
>   gdb/check-gdbarch.py      |  87 +++++++++++++++++++++++
>   gdb/gdbarch-gen.c         | 173 ++--------------------------------------------
>   gdb/gdbarch-gen.h         |  40 -----------
>   gdb/gdbarch_components.py |  61 ++--------------
>   gdb/infcmd.c              |  21 ++----
>   gdb/infrun.c              |   7 +-
>   gdb/solib.c               |  27 --------
>   12 files changed, 118 insertions(+), 333 deletions(-)
> ---
> base-commit: ae2f3fa7581fb59ebbf80f93b7ed75f853f0ba29
> change-id: 20241104-check-unused-gdbarch-c396c0aff7fc
> 
> Best regards,


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/6] Add gdbarch-checking script
  2024-12-05 22:50 ` [PATCH 0/6] Add gdbarch-checking script Keith Seitz
@ 2024-12-06  2:58   ` Sergio Durigan Junior
  0 siblings, 0 replies; 11+ messages in thread
From: Sergio Durigan Junior @ 2024-12-06  2:58 UTC (permalink / raw)
  To: Keith Seitz; +Cc: Tom Tromey, gdb-patches

On Thursday, December 05 2024, Keith Seitz wrote:

> Hi, Tom,
>
> [It's me again!]

Hey you two :-),

> On 11/4/24 1:14 PM, Tom Tromey wrote:
[...]
>> A few other gdbarch settings are used by gdb but not set by any
>> existing arch.  I haven't removed these since they maybe needed more
>> discussion:
>>      stap_gdb_register_suffix
>>      stap_integer_suffixes
>>      stap_register_suffixes
>
> I briefly discussed these with fche, and it certainly appears
> that the compiler *could* output these suffixes. However, it seems
> that either no one has generated a probe that does this (and/or
> tried to debug it), or no one has reported any problems.
>
> I agree these need further discussion, but while I understand
> the desire to simplify, I still lean toward keeping these around.

I agree.  I believe it makes sense to leave them around because it's a
logical (IMHO) thing to expect that registers might have prefixes (which
are indeed being used) *and* suffixes.  If you remove them, you'll have
to touch stap-probe.c as well FWIW.

Thanks,

-- 
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF  31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
https://sergiodj.net/

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2024-12-06  2:59 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-04 21:14 [PATCH 0/6] Add gdbarch-checking script Tom Tromey
2024-11-04 21:14 ` [PATCH 1/6] Add check-gdbarch.py Tom Tromey
2024-12-05 22:47   ` Keith Seitz
2024-11-04 21:14 ` [PATCH 2/6] Use 'invalid' rather than 'predicate' in some gdbarch functions Tom Tromey
2024-11-04 21:14 ` [PATCH 3/6] Remove solib_symbols_extension gdbarch hook Tom Tromey
2024-11-04 21:14 ` [PATCH 4/6] Remove skip_permanent_breakpoint " Tom Tromey
2024-11-04 21:14 ` [PATCH 5/6] Remove the print_vector_info " Tom Tromey
2024-12-05 22:49   ` Keith Seitz
2024-11-04 21:14 ` [PATCH 6/6] Remove the auto_charset " Tom Tromey
2024-12-05 22:50 ` [PATCH 0/6] Add gdbarch-checking script Keith Seitz
2024-12-06  2:58   ` Sergio Durigan Junior

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox