public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Remove redundant typedefs
@ 2020-12-03 19:24 Tom Tromey
  2020-12-03 19:33 ` Simon Marchi
  2020-12-04  0:18 ` Pedro Alves
  0 siblings, 2 replies; 5+ messages in thread
From: Tom Tromey @ 2020-12-03 19:24 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

I was inspired by this patch of Simon's:

https://sourceware.org/pipermail/gdb-patches/2020-November/173522.html

... to remove other typedefs that are no longer necessary now that gdb
uses C++.

I didn't remove absolutely every one -- I didn't touch the tdep files.
However, I removed many of them.  In some cases, I removed an existing
different struct tag.

gdb/ChangeLog
2020-12-03  Tom Tromey  <tromey@adacore.com>

	* breakpoint.h (struct breakpoint): Update.
	* linespec.c (struct linespec_token): Rename; remove typedef.
	* guile/scm-breakpoint.c (struct breakpoint_smob): Remove typedef.
	* guile/scm-block.c (struct block_smob): Remove typedef.
	(struct block_syms_progress_smob): Likewise.
	* guile/scm-symbol.c (struct symbol_smob): Remove typedef.
	* guile/scm-symtab.c (symtab_smob): Remove typedef.
	(struct sal_smob): Remove typedef.
	* guile/scm-param.c (struct param_smob): Remove typedef.
	* guile/scm-progspace.c (struct pspace_smob): Rename.
	* guile/scm-objfile.c (struct objfile_smob): Rename.
	* guile/scm-iterator.c (struct iterator_smob): Rename.
	* guile/scm-frame.c (struct frame_smob): Rename.
	* guile/scm-arch.c (struct arch_smob): Rename.
	* guile/scm-type.c (struct field_smob): Remove typedef.
	(struct type_smob): Rename.
	* guile/scm-cmd.c (struct command_smob): Remove typedef.
	* guile/scm-ports.c (struct ioscm_memory_port): Remove typedef.
	* guile/scm-value.c (struct value_smob): Remove typedef.
	* guile/scm-lazy-string.c (lazy_string_smob): Remove typedef.
	* guile/guile-internal.h (struct scheme_variable)
	(struct scheme_function, struct scheme_integer_constant)
	(struct gdb_smob, struct chained_gdb_smob)
	(struct eqable_gdb_smob, arch_smob, frame_smob, iterator_smob)
	(objfile_smob, pspace_smob, type_smob): Remove typedef.
	* guile/scm-pretty-print.c (pretty_printer_smob): Remove typedef.
	(struct pretty_printer_worker_smob): Remove typedef.
	* guile/scm-exception.c (struct exception_smob): Remove typedef.
	* python/py-block.c (struct block_object): Remove typedef.
	(block_syms_iterator_object): Update.
	(set_block): Update.
	(block_syms_iterator_object): Remove typedef.
	* python/py-inferior.c (struct membuf_object): Remove typedef.
	* python/py-symtab.c (struct symtab_object): Remove typedef.
	(set_symtab): Update.
	(sal_object): Remove typedef.
	(set_sal): Update.
	* python/py-frame.c (frame_object): Remove typedef.
	* python/py-record-btrace.c (struct btpy_list_object): Remove
	typedef.
	* python/py-arch.c (struct arch_object): Remove typedef.
	* python/py-linetable.c (struct linetable_entry_object)
	(linetable_object, struct ltpy_iterator_object): Remove typedef.
	* python/py-events.h (eventregistry_object): Remove typedef.
	(struct events_object): Remove typedef.
	* python/python-internal.h (gdbpy_breakpoint_object): Remove
	typedef.
	(thread_object): Remove typedef.
	* python/py-progspace.c (pspace_object): Remove typedef.
	* python/py-value.c (struct value_object): Remove typedef.
	* python/py-record.h (recpy_record_object): Remove typedef.
	(struct recpy_element_object): Remove typedef.
	* python/py-lazy-string.c (lazy_string_object): Remove typedef.
	* python/py-objfile.c (objfile_object): Remove typedef.
	* python/py-cmd.c (struct cmdpy_object): Remove typedef.
	* python/py-type.c (type_object): Remove typedef.
	(typy_iterator_object): Update.
	(set_type): Update.
	(field_object): Remove typedef.
	(typy_iterator_object): Remove typedef.
	* python/py-registers.c (register_descriptor_iterator_object):
	Remove typedef.
	(struct register_descriptor_object)
	(struct reggroup_iterator_object, struct reggroup_object): Remove
	typedef.
	* python/py-record.c (recpy_gap_object): Remove typedef.
	* python/py-symbol.c (symbol_object): Remove typedef.
	(set_symbol): Update.
	* python/py-event.h (event_object): Remove typedef.
	* python/py-param.c (parmpy_object): Remove typedef.
	* python/py-instruction.c (struct py_insn_obj): Remove typedef.
	* python/py-unwind.c (struct pending_frame_object): Remove typedef.
	(unwind_info_object, struct cached_frame_info): Likewise.
---
 gdb/ChangeLog                 | 76 +++++++++++++++++++++++++++++++++++
 gdb/breakpoint.h              |  4 +-
 gdb/guile/guile-internal.h    | 40 +++++++++---------
 gdb/guile/scm-arch.c          |  2 +-
 gdb/guile/scm-block.c         |  8 ++--
 gdb/guile/scm-breakpoint.c    |  4 +-
 gdb/guile/scm-cmd.c           |  4 +-
 gdb/guile/scm-exception.c     |  4 +-
 gdb/guile/scm-frame.c         |  2 +-
 gdb/guile/scm-iterator.c      |  2 +-
 gdb/guile/scm-lazy-string.c   |  4 +-
 gdb/guile/scm-objfile.c       |  2 +-
 gdb/guile/scm-param.c         |  4 +-
 gdb/guile/scm-ports.c         |  4 +-
 gdb/guile/scm-pretty-print.c  |  8 ++--
 gdb/guile/scm-progspace.c     |  2 +-
 gdb/guile/scm-symbol.c        |  4 +-
 gdb/guile/scm-symtab.c        |  8 ++--
 gdb/guile/scm-type.c          |  6 +--
 gdb/guile/scm-value.c         |  8 ++--
 gdb/linespec.c                |  3 +-
 gdb/python/py-arch.c          |  4 +-
 gdb/python/py-block.c         | 16 ++++----
 gdb/python/py-cmd.c           |  2 -
 gdb/python/py-event.h         |  4 +-
 gdb/python/py-events.h        |  8 ++--
 gdb/python/py-frame.c         |  4 +-
 gdb/python/py-inferior.c      |  4 +-
 gdb/python/py-instruction.c   |  4 +-
 gdb/python/py-lazy-string.c   |  4 +-
 gdb/python/py-linetable.c     | 12 +++---
 gdb/python/py-objfile.c       |  4 +-
 gdb/python/py-param.c         |  2 -
 gdb/python/py-progspace.c     |  4 +-
 gdb/python/py-record-btrace.c |  4 +-
 gdb/python/py-record.c        |  4 +-
 gdb/python/py-record.h        |  8 ++--
 gdb/python/py-registers.c     | 16 ++++----
 gdb/python/py-symbol.c        | 10 ++---
 gdb/python/py-symtab.c        | 22 +++++-----
 gdb/python/py-type.c          | 20 ++++-----
 gdb/python/py-unwind.c        | 12 +++---
 gdb/python/py-value.c         |  4 +-
 gdb/python/python-internal.h  |  8 ++--
 44 files changed, 225 insertions(+), 154 deletions(-)

diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index 4a65dd2dd43..1d557dacd61 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -33,7 +33,7 @@
 
 struct block;
 struct gdbpy_breakpoint_object;
-struct gdbscm_breakpoint_object;
+struct breakpoint_smob;
 struct number_or_range_parser;
 struct thread_info;
 struct bpstats;
@@ -794,7 +794,7 @@ struct breakpoint
   gdbpy_breakpoint_object *py_bp_object = NULL;
 
   /* Same as py_bp_object, but for Scheme.  */
-  gdbscm_breakpoint_object *scm_bp_object = NULL;
+  breakpoint_smob *scm_bp_object = NULL;
 };
 
 /* An instance of this type is used to represent a watchpoint.  */
diff --git a/gdb/guile/guile-internal.h b/gdb/guile/guile-internal.h
index bb2bc119187..4dd7023fbf9 100644
--- a/gdb/guile/guile-internal.h
+++ b/gdb/guile/guile-internal.h
@@ -40,12 +40,12 @@ typedef int excp_matcher_func (SCM key);
 
 /* Scheme variables to define during initialization.  */
 
-typedef struct
+struct scheme_variable
 {
   const char *name;
   SCM value;
   const char *doc_string;
-} scheme_variable;
+};
 
 /* End of scheme_variable table mark.  */
 
@@ -89,7 +89,7 @@ as_a_scm_t_subr (SCM (*func) (SCM, SCM, SCM))
 
 /* Scheme functions to define during initialization.  */
 
-typedef struct
+struct scheme_function
 {
   const char *name;
   int required;
@@ -97,7 +97,7 @@ typedef struct
   int rest;
   scm_t_subr func;
   const char *doc_string;
-} scheme_function;
+};
 
 /* End of scheme_function table mark.  */
 
@@ -105,11 +105,11 @@ typedef struct
 
 /* Useful for defining a set of constants.  */
 
-typedef struct
+struct scheme_integer_constant
 {
   const char *name;
   int value;
-} scheme_integer_constant;
+};
 
 #define END_INTEGER_CONSTANTS { NULL, 0 }
 
@@ -239,20 +239,20 @@ extern int gdbscm_guile_version_is_at_least (int major, int minor, int micro);
 #define GDB_SMOB_HEAD \
   int empty_base_class;
 
-typedef struct
+struct gdb_smob
 {
   GDB_SMOB_HEAD
-} gdb_smob;
+};
 
-typedef struct _chained_gdb_smob
+struct chained_gdb_smob
 {
   GDB_SMOB_HEAD
 
-  struct _chained_gdb_smob *prev;
-  struct _chained_gdb_smob *next;
-} chained_gdb_smob;
+  chained_gdb_smob *prev;
+  chained_gdb_smob *next;
+};
 
-typedef struct _eqable_gdb_smob
+struct eqable_gdb_smob
 {
   GDB_SMOB_HEAD
 
@@ -267,7 +267,7 @@ typedef struct _eqable_gdb_smob
      we need to invalidate the objects: we can do that using the same hashtab
      used to record the smob for eq-ability.  */
   SCM containing_scm;
-} eqable_gdb_smob;
+};
 
 #undef GDB_SMOB_HEAD
 
@@ -416,7 +416,7 @@ extern void gdbscm_enter_repl (void);
 
 /* scm-arch.c */
 
-typedef struct _arch_smob arch_smob;
+struct arch_smob;
 
 extern struct gdbarch *arscm_get_gdbarch (arch_smob *a_smob);
 
@@ -447,7 +447,7 @@ extern char *gdbscm_canonicalize_command_name (const char *name,
 
 /* scm-frame.c */
 
-typedef struct _frame_smob frame_smob;
+struct frame_smob;
 
 extern int frscm_is_frame (SCM scm);
 
@@ -458,7 +458,7 @@ extern struct frame_info *frscm_frame_smob_to_frame (frame_smob *);
 
 /* scm-iterator.c */
 
-typedef struct _iterator_smob iterator_smob;
+struct iterator_smob;
 
 extern SCM itscm_iterator_smob_object (iterator_smob *i_smob);
 
@@ -500,7 +500,7 @@ extern void lsscm_val_print_lazy_string
 
 /* scm-objfile.c */
 
-typedef struct _objfile_smob objfile_smob;
+struct objfile_smob;
 
 extern SCM ofscm_objfile_smob_pretty_printers (objfile_smob *o_smob);
 
@@ -510,7 +510,7 @@ extern SCM ofscm_scm_from_objfile (struct objfile *objfile);
 
 /* scm-progspace.c */
 
-typedef struct _pspace_smob pspace_smob;
+struct pspace_smob;
 
 extern SCM psscm_pspace_smob_pretty_printers (const pspace_smob *);
 
@@ -557,7 +557,7 @@ extern SCM stscm_scm_from_sal (struct symtab_and_line sal);
 
 /* scm-type.c */
 
-typedef struct _type_smob type_smob;
+struct type_smob;
 
 extern int tyscm_is_type (SCM scm);
 
diff --git a/gdb/guile/scm-arch.c b/gdb/guile/scm-arch.c
index 953cb226d98..7ff821ed4e2 100644
--- a/gdb/guile/scm-arch.c
+++ b/gdb/guile/scm-arch.c
@@ -29,7 +29,7 @@
 /* The <gdb:arch> smob.
    The typedef for this struct is in guile-internal.h.  */
 
-struct _arch_smob
+struct arch_smob
 {
   /* This always appears first.  */
   gdb_smob base;
diff --git a/gdb/guile/scm-block.c b/gdb/guile/scm-block.c
index 813c6c1022c..1a898fa65ea 100644
--- a/gdb/guile/scm-block.c
+++ b/gdb/guile/scm-block.c
@@ -30,7 +30,7 @@
 
 /* A smob describing a gdb block.  */
 
-typedef struct _block_smob
+struct block_smob
 {
   /* This always appears first.
      We want blocks to be eq?-able.  And we need to be able to invalidate
@@ -44,7 +44,7 @@ typedef struct _block_smob
      between a block and an object file.  When a block is created also
      store a pointer to the object file for later use.  */
   struct objfile *objfile;
-} block_smob;
+};
 
 /* To iterate over block symbols from Scheme we need to store
    struct block_iterator somewhere.  This is stored in the "progress" field
@@ -54,7 +54,7 @@ typedef struct _block_smob
    Remember: While iterating over block symbols, you must continually check
    whether the block is still valid.  */
 
-typedef struct
+struct block_syms_progress_smob
 {
   /* This always appears first.  */
   gdb_smob base;
@@ -64,7 +64,7 @@ typedef struct
 
   /* Has the iterator been initialized flag.  */
   int initialized_p;
-} block_syms_progress_smob;
+};
 
 static const char block_smob_name[] = "gdb:block";
 static const char block_syms_progress_smob_name[] = "gdb:block-symbols-iterator";
diff --git a/gdb/guile/scm-breakpoint.c b/gdb/guile/scm-breakpoint.c
index 7c9707235ec..4258aa914b0 100644
--- a/gdb/guile/scm-breakpoint.c
+++ b/gdb/guile/scm-breakpoint.c
@@ -43,7 +43,7 @@
    any side-effects.  This means that the smob needs to store everything
    that was passed to make-breakpoint.  */
 
-typedef struct gdbscm_breakpoint_object
+struct breakpoint_smob
 {
   /* This always appears first.  */
   gdb_smob base;
@@ -88,7 +88,7 @@ typedef struct gdbscm_breakpoint_object
 
   /* A stop condition or #f.  */
   SCM stop;
-} breakpoint_smob;
+};
 
 static const char breakpoint_smob_name[] = "gdb:breakpoint";
 
diff --git a/gdb/guile/scm-cmd.c b/gdb/guile/scm-cmd.c
index f4db4114403..bf079a27511 100644
--- a/gdb/guile/scm-cmd.c
+++ b/gdb/guile/scm-cmd.c
@@ -37,7 +37,7 @@
    any side-effects.  This means that the smob needs to store everything
    that was passed to make-command.  */
 
-typedef struct _command_smob
+struct command_smob
 {
   /* This always appears first.  */
   gdb_smob base;
@@ -85,7 +85,7 @@ typedef struct _command_smob
      the object since a reference to it comes from non-gc-managed space
      (the command context pointer).  */
   SCM containing_scm;
-} command_smob;
+};
 
 static const char command_smob_name[] = "gdb:command";
 
diff --git a/gdb/guile/scm-exception.c b/gdb/guile/scm-exception.c
index 96ed60a7e2b..a6c6a5ece90 100644
--- a/gdb/guile/scm-exception.c
+++ b/gdb/guile/scm-exception.c
@@ -37,7 +37,7 @@
    One important invariant is that <gdb:exception> smobs are never a valid
    result of a function, other than to signify an exception occurred.  */
 
-typedef struct
+struct exception_smob
 {
   /* This always appears first.  */
   gdb_smob base;
@@ -45,7 +45,7 @@ typedef struct
   /* The key and args parameters to "throw".  */
   SCM key;
   SCM args;
-} exception_smob;
+};
 
 static const char exception_smob_name[] = "gdb:exception";
 
diff --git a/gdb/guile/scm-frame.c b/gdb/guile/scm-frame.c
index 211c6638232..4949f0641b0 100644
--- a/gdb/guile/scm-frame.c
+++ b/gdb/guile/scm-frame.c
@@ -35,7 +35,7 @@
 /* The <gdb:frame> smob.
    The typedef for this struct is in guile-internal.h.  */
 
-struct _frame_smob
+struct frame_smob
 {
   /* This always appears first.  */
   eqable_gdb_smob base;
diff --git a/gdb/guile/scm-iterator.c b/gdb/guile/scm-iterator.c
index 36ab5c01d3d..bcc8ae308de 100644
--- a/gdb/guile/scm-iterator.c
+++ b/gdb/guile/scm-iterator.c
@@ -58,7 +58,7 @@
    too expensive.
    The typedef for this struct is in guile-internal.h.  */
 
-struct _iterator_smob
+struct iterator_smob
 {
   /* This always appears first.  */
   gdb_smob base;
diff --git a/gdb/guile/scm-lazy-string.c b/gdb/guile/scm-lazy-string.c
index 0df1b3a0f81..978f695d8f1 100644
--- a/gdb/guile/scm-lazy-string.c
+++ b/gdb/guile/scm-lazy-string.c
@@ -29,7 +29,7 @@
 
 /* The <gdb:lazy-string> smob.  */
 
-typedef struct
+struct lazy_string_smob
 {
   /* This always appears first.  */
   gdb_smob base;
@@ -58,7 +58,7 @@ typedef struct
      This is recorded as an SCM object so that we take advantage of support for
      preserving the type should its owning objfile go away.  */
   SCM type;
-} lazy_string_smob;
+};
 
 static const char lazy_string_smob_name[] = "gdb:lazy-string";
 
diff --git a/gdb/guile/scm-objfile.c b/gdb/guile/scm-objfile.c
index b1ff402fa1e..c046ff57576 100644
--- a/gdb/guile/scm-objfile.c
+++ b/gdb/guile/scm-objfile.c
@@ -28,7 +28,7 @@
 /* The <gdb:objfile> smob.
    The typedef for this struct is in guile-internal.h.  */
 
-struct _objfile_smob
+struct objfile_smob
 {
   /* This always appears first.  */
   gdb_smob base;
diff --git a/gdb/guile/scm-param.c b/gdb/guile/scm-param.c
index 62e21087403..19ca45e390c 100644
--- a/gdb/guile/scm-param.c
+++ b/gdb/guile/scm-param.c
@@ -62,7 +62,7 @@ union pascm_variable
    N.B. There is no free function for this smob.
    All objects pointed to by this smob must live in GC space.  */
 
-typedef struct _param_smob
+struct param_smob
 {
   /* This always appears first.  */
   gdb_smob base;
@@ -112,7 +112,7 @@ typedef struct _param_smob
      protect/unprotect the object since a reference to it comes from
      non-gc-managed space (the command context pointer).  */
   SCM containing_scm;
-} param_smob;
+};
 
 static const char param_smob_name[] = "gdb:parameter";
 
diff --git a/gdb/guile/scm-ports.c b/gdb/guile/scm-ports.c
index 66efdf4465b..f071c2f573c 100644
--- a/gdb/guile/scm-ports.c
+++ b/gdb/guile/scm-ports.c
@@ -59,7 +59,7 @@ class ioscm_file_port : public ui_file
 
 /* Data for a memory port.  */
 
-typedef struct
+struct ioscm_memory_port
 {
   /* Bounds of memory range this port is allowed to access: [start, end).
      This means that 0xff..ff is not accessible.  I can live with that.  */
@@ -80,7 +80,7 @@ typedef struct
      the user to specify these values to help get something similar.  */
   unsigned read_buf_size, write_buf_size;
 #endif
-} ioscm_memory_port;
+};
 
 /* Copies of the original system input/output/error ports.
    These are recorded for debugging purposes.  */
diff --git a/gdb/guile/scm-pretty-print.c b/gdb/guile/scm-pretty-print.c
index df09dae434e..0bbcc4de579 100644
--- a/gdb/guile/scm-pretty-print.c
+++ b/gdb/guile/scm-pretty-print.c
@@ -59,7 +59,7 @@ enum display_hint
 
 /* The <gdb:pretty-printer> smob.  */
 
-typedef struct
+struct pretty_printer_smob
 {
   /* This must appear first.  */
   gdb_smob base;
@@ -77,11 +77,11 @@ typedef struct
   SCM lookup;
 
   /* Note: Attaching subprinters to this smob is left to Scheme.  */
-} pretty_printer_smob;
+};
 
 /* The <gdb:pretty-printer-worker> smob.  */
 
-typedef struct
+struct pretty_printer_worker_smob
 {
   /* This must appear first.  */
   gdb_smob base;
@@ -99,7 +99,7 @@ typedef struct
      The iterator returns a pair for each iteration: (name . value),
      where "value" can have the same types as to_string.  */
   SCM children;
-} pretty_printer_worker_smob;
+};
 
 static const char pretty_printer_smob_name[] =
   "gdb:pretty-printer";
diff --git a/gdb/guile/scm-progspace.c b/gdb/guile/scm-progspace.c
index 49c3e36227f..018c691c1d3 100644
--- a/gdb/guile/scm-progspace.c
+++ b/gdb/guile/scm-progspace.c
@@ -31,7 +31,7 @@
 /* The <gdb:progspace> smob.
    The typedef for this struct is in guile-internal.h.  */
 
-struct _pspace_smob
+struct pspace_smob
 {
   /* This always appears first.  */
   gdb_smob base;
diff --git a/gdb/guile/scm-symbol.c b/gdb/guile/scm-symbol.c
index 8bad7e6c5a0..9810ec95c30 100644
--- a/gdb/guile/scm-symbol.c
+++ b/gdb/guile/scm-symbol.c
@@ -30,14 +30,14 @@
 
 /* The <gdb:symbol> smob.  */
 
-typedef struct
+struct symbol_smob
 {
   /* This always appears first.  */
   eqable_gdb_smob base;
 
   /* The GDB symbol structure this smob is wrapping.  */
   struct symbol *symbol;
-} symbol_smob;
+};
 
 static const char symbol_smob_name[] = "gdb:symbol";
 
diff --git a/gdb/guile/scm-symtab.c b/gdb/guile/scm-symtab.c
index 0efd0aafac1..eb83a161a3f 100644
--- a/gdb/guile/scm-symtab.c
+++ b/gdb/guile/scm-symtab.c
@@ -29,7 +29,7 @@
 
 /* A <gdb:symtab> smob.  */
 
-typedef struct
+struct symtab_smob
 {
   /* This always appears first.
      eqable_gdb_smob is used so that symtabs are eq?-able.
@@ -42,7 +42,7 @@ typedef struct
      If this is NULL the symtab is invalid.  This can happen when the
      underlying objfile is freed.  */
   struct symtab *symtab;
-} symtab_smob;
+};
 
 /* A <gdb:sal> smob.
    A smob describing a gdb symtab-and-line object.
@@ -50,7 +50,7 @@ typedef struct
    the validity of symtab_scm.
    TODO: Sals are not eq?-able at the moment, or even comparable.  */
 
-typedef struct
+struct sal_smob
 {
   /* This always appears first.  */
   gdb_smob base;
@@ -67,7 +67,7 @@ typedef struct
      this pointer will not be updated.  Use symtab_scm instead to determine
      if this sal is valid.  */
   struct symtab_and_line sal;
-} sal_smob;
+};
 
 static const char symtab_smob_name[] = "gdb:symtab";
 /* "symtab-and-line" is pretty long, and "sal" is short and unique.  */
diff --git a/gdb/guile/scm-type.c b/gdb/guile/scm-type.c
index 8fc9629eb0d..707b58678d4 100644
--- a/gdb/guile/scm-type.c
+++ b/gdb/guile/scm-type.c
@@ -37,7 +37,7 @@
    deleted.
    The typedef for this struct is in guile-internal.h.  */
 
-struct _type_smob
+struct type_smob
 {
   /* This always appears first.
      eqable_gdb_smob is used so that types are eq?-able.
@@ -52,7 +52,7 @@ struct _type_smob
 
 /* A field smob.  */
 
-typedef struct
+struct field_smob
 {
   /* This always appears first.  */
   gdb_smob base;
@@ -62,7 +62,7 @@ typedef struct
 
   /* The field number in TYPE_SCM.  */
   int field_num;
-} field_smob;
+};
 
 static const char type_smob_name[] = "gdb:type";
 static const char field_smob_name[] = "gdb:field";
diff --git a/gdb/guile/scm-value.c b/gdb/guile/scm-value.c
index 5ba1f2cb003..e1b0020c98a 100644
--- a/gdb/guile/scm-value.c
+++ b/gdb/guile/scm-value.c
@@ -34,7 +34,7 @@
 
 /* The <gdb:value> smob.  */
 
-typedef struct _value_smob
+struct value_smob
 {
   /* This always appears first.  */
   gdb_smob base;
@@ -42,8 +42,8 @@ typedef struct _value_smob
   /* Doubly linked list of values in values_in_scheme.
      IWBN to use a chained_gdb_smob instead, which is doable, it just requires
      a bit more casting than normal.  */
-  struct _value_smob *next;
-  struct _value_smob *prev;
+  value_smob *next;
+  value_smob *prev;
 
   struct value *value;
 
@@ -55,7 +55,7 @@ typedef struct _value_smob
   SCM address;
   SCM type;
   SCM dynamic_type;
-} value_smob;
+};
 
 static const char value_smob_name[] = "gdb:value";
 
diff --git a/gdb/linespec.c b/gdb/linespec.c
index 74560953d71..3bf16c504a2 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -260,7 +260,7 @@ const char * const linespec_keywords[] = { "if", "thread", "task", "-force-condi
 
 /* A token of the linespec lexer  */
 
-struct ls_token
+struct linespec_token
 {
   /* The type of the token  */
   linespec_token_type type;
@@ -275,7 +275,6 @@ struct ls_token
     const char *keyword;
   } data;
 };
-typedef struct ls_token linespec_token;
 
 #define LS_TOKEN_STOKEN(TOK) (TOK).data.string
 #define LS_TOKEN_KEYWORD(TOK) (TOK).data.keyword
diff --git a/gdb/python/py-arch.c b/gdb/python/py-arch.c
index ec955e79654..ac64335ae74 100644
--- a/gdb/python/py-arch.c
+++ b/gdb/python/py-arch.c
@@ -23,10 +23,10 @@
 #include "disasm.h"
 #include "python-internal.h"
 
-typedef struct arch_object_type_object {
+struct arch_object {
   PyObject_HEAD
   struct gdbarch *gdbarch;
-} arch_object;
+};
 
 static struct gdbarch_data *arch_object_data = NULL;
 
diff --git a/gdb/python/py-block.c b/gdb/python/py-block.c
index 26d59e102a3..aadc1e7702b 100644
--- a/gdb/python/py-block.c
+++ b/gdb/python/py-block.c
@@ -24,7 +24,7 @@
 #include "python-internal.h"
 #include "objfiles.h"
 
-typedef struct blpy_block_object {
+struct block_object {
   PyObject_HEAD
   /* The GDB block structure that represents a frame's code block.  */
   const struct block *block;
@@ -34,11 +34,11 @@ typedef struct blpy_block_object {
   struct objfile *objfile;
   /* Keep track of all blocks with a doubly-linked list.  Needed for
      block invalidation if the source object file has been freed.  */
-  struct blpy_block_object *prev;
-  struct blpy_block_object *next;
-} block_object;
+  block_object *prev;
+  block_object *next;
+};
 
-typedef struct {
+struct block_syms_iterator_object {
   PyObject_HEAD
   /* The block.  */
   const struct block *block;
@@ -49,8 +49,8 @@ typedef struct {
   /* Pointer back to the original source block object.  Needed to
      check if the block is still valid, and has not been invalidated
      when an object file has been freed.  */
-  struct blpy_block_object *source;
-} block_syms_iterator_object;
+  block_object *source;
+};
 
 /* Require a valid block.  All access to block_object->block should be
    gated by this call.  */
@@ -293,7 +293,7 @@ set_block (block_object *obj, const struct block *block,
   if (objfile)
     {
       obj->objfile = objfile;
-      obj->next = ((struct blpy_block_object *)
+      obj->next = ((block_object *)
 		   objfile_data (objfile, blpy_objfile_data_key));
       if (obj->next)
 	obj->next->prev = obj;
diff --git a/gdb/python/py-cmd.c b/gdb/python/py-cmd.c
index 760208f52b9..b3e8daf9321 100644
--- a/gdb/python/py-cmd.c
+++ b/gdb/python/py-cmd.c
@@ -66,8 +66,6 @@ struct cmdpy_object
   struct cmd_list_element *sub_list;
 };
 
-typedef struct cmdpy_object cmdpy_object;
-
 extern PyTypeObject cmdpy_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("cmdpy_object");
 
diff --git a/gdb/python/py-event.h b/gdb/python/py-event.h
index 92a71f675af..5832a568efc 100644
--- a/gdb/python/py-event.h
+++ b/gdb/python/py-event.h
@@ -32,12 +32,12 @@
 #include "py-event-types.def"
 #undef GDB_PY_DEFINE_EVENT_TYPE
 
-typedef struct
+struct event_object
 {
   PyObject_HEAD
 
   PyObject *dict;
-} event_object;
+};
 
 extern int emit_continue_event (ptid_t ptid);
 extern int emit_exited_event (const LONGEST *exit_code, struct inferior *inf);
diff --git a/gdb/python/py-events.h b/gdb/python/py-events.h
index 51416764931..1cd0d9ba253 100644
--- a/gdb/python/py-events.h
+++ b/gdb/python/py-events.h
@@ -27,17 +27,17 @@
 /* Stores a list of objects to be notified when the event for which this
    registry tracks occurs.  */
 
-typedef struct
+struct eventregistry_object
 {
   PyObject_HEAD
 
   PyObject *callbacks;
-} eventregistry_object;
+};
 
 /* Struct holding references to event registries both in python and c.
    This is meant to be a singleton.  */
 
-typedef struct
+struct events_object
 {
 #define GDB_PY_DEFINE_EVENT(name)		\
   eventregistry_object *name;
@@ -46,7 +46,7 @@ typedef struct
 
   PyObject *module;
 
-} events_object;
+};
 
 /* Python events singleton.  */
 extern events_object gdb_py_events;
diff --git a/gdb/python/py-frame.c b/gdb/python/py-frame.c
index 6f0bb8e5a4c..6b2b29d7864 100644
--- a/gdb/python/py-frame.c
+++ b/gdb/python/py-frame.c
@@ -28,7 +28,7 @@
 #include "symfile.h"
 #include "objfiles.h"
 
-typedef struct {
+struct frame_object {
   PyObject_HEAD
   struct frame_id frame_id;
   struct gdbarch *gdbarch;
@@ -42,7 +42,7 @@ typedef struct {
      ID as the  previous frame).  Whenever get_prev_frame returns NULL, we
      record the frame_id of the next frame and set FRAME_ID_IS_NEXT to 1.  */
   int frame_id_is_next;
-} frame_object;
+};
 
 /* Require a valid frame.  This must be called inside a TRY_CATCH, or
    another context in which a gdb exception is allowed.  */
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index 102a4270af3..89a822192c8 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -61,14 +61,14 @@ extern PyTypeObject inferior_object_type
 
 static const struct inferior_data *infpy_inf_data_key;
 
-typedef struct {
+struct membuf_object {
   PyObject_HEAD
   void *buffer;
 
   /* These are kept just for mbpy_str.  */
   CORE_ADDR addr;
   CORE_ADDR length;
-} membuf_object;
+};
 
 extern PyTypeObject membuf_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("membuf_object");
diff --git a/gdb/python/py-instruction.c b/gdb/python/py-instruction.c
index fda44da2843..374fb90ca47 100644
--- a/gdb/python/py-instruction.c
+++ b/gdb/python/py-instruction.c
@@ -28,9 +28,9 @@ PyTypeObject py_insn_type = {
 
 /* Python instruction object.  */
 
-typedef struct {
+struct py_insn_obj {
   PyObject_HEAD
-} py_insn_obj;
+};
 
 /* Getter function for gdb.Instruction attributes.  */
 
diff --git a/gdb/python/py-lazy-string.c b/gdb/python/py-lazy-string.c
index aaee94f5e1f..070923cddeb 100644
--- a/gdb/python/py-lazy-string.c
+++ b/gdb/python/py-lazy-string.c
@@ -24,7 +24,7 @@
 #include "valprint.h"
 #include "language.h"
 
-typedef struct {
+struct lazy_string_object {
   PyObject_HEAD
 
   /*  Holds the address of the lazy string.  */
@@ -51,7 +51,7 @@ typedef struct {
      This is recorded as a PyObject so that we take advantage of support for
      preserving the type should its owning objfile go away.  */
   PyObject *type;
-} lazy_string_object;
+};
 
 extern PyTypeObject lazy_string_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("lazy_string_object");
diff --git a/gdb/python/py-linetable.c b/gdb/python/py-linetable.c
index 49e98c0d898..e384d954d8d 100644
--- a/gdb/python/py-linetable.c
+++ b/gdb/python/py-linetable.c
@@ -20,29 +20,29 @@
 #include "defs.h"
 #include "python-internal.h"
 
-typedef struct {
+struct linetable_entry_object {
   PyObject_HEAD
   /* The line table source line.  */
   int line;
   /* The pc associated with the source line.  */
   CORE_ADDR pc;
-} linetable_entry_object;
+};
 
 extern PyTypeObject linetable_entry_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("linetable_entry_object");
 
-typedef struct {
+struct linetable_object {
   PyObject_HEAD
   /* The symtab python object.  We store the Python object here as the
      underlying symtab can become invalid, and we have to run validity
      checks on it.  */
   PyObject *symtab;
-} linetable_object;
+};
 
 extern PyTypeObject linetable_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("linetable_object");
 
-typedef struct {
+struct ltpy_iterator_object {
   PyObject_HEAD
   /* The current entry in the line table for the iterator  */
   int current_index;
@@ -50,7 +50,7 @@ typedef struct {
      check if the line table is still valid, and has not been invalidated
      when an object file has been freed.  */
   PyObject *source;
-} ltpy_iterator_object;
+};
 
 extern PyTypeObject ltpy_iterator_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("ltpy_iterator_object");
diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
index a006eb38830..e88c77eb03a 100644
--- a/gdb/python/py-objfile.c
+++ b/gdb/python/py-objfile.c
@@ -25,7 +25,7 @@
 #include "build-id.h"
 #include "symtab.h"
 
-typedef struct
+struct objfile_object
 {
   PyObject_HEAD
 
@@ -50,7 +50,7 @@ typedef struct
 
   /* The debug method matcher list.  */
   PyObject *xmethods;
-} objfile_object;
+};
 
 extern PyTypeObject objfile_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("objfile_object");
diff --git a/gdb/python/py-param.c b/gdb/python/py-param.c
index fb39187b184..df45e563b4d 100644
--- a/gdb/python/py-param.c
+++ b/gdb/python/py-param.c
@@ -91,8 +91,6 @@ struct parmpy_object
   const char **enumeration;
 };
 
-typedef struct parmpy_object parmpy_object;
-
 extern PyTypeObject parmpy_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("parmpy_object");
 
diff --git a/gdb/python/py-progspace.c b/gdb/python/py-progspace.c
index 34baa875027..ac8f6d57727 100644
--- a/gdb/python/py-progspace.c
+++ b/gdb/python/py-progspace.c
@@ -27,7 +27,7 @@
 #include "solib.h"
 #include "block.h"
 
-typedef struct
+struct pspace_object
 {
   PyObject_HEAD
 
@@ -52,7 +52,7 @@ typedef struct
 
   /* The debug method list.  */
   PyObject *xmethods;
-} pspace_object;
+};
 
 extern PyTypeObject pspace_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("pspace_object");
diff --git a/gdb/python/py-record-btrace.c b/gdb/python/py-record-btrace.c
index 15cd15bb0dc..93c3f7c9312 100644
--- a/gdb/python/py-record-btrace.c
+++ b/gdb/python/py-record-btrace.c
@@ -40,7 +40,7 @@
 
 /* Python object for btrace record lists.  */
 
-typedef struct {
+struct btpy_list_object {
   PyObject_HEAD
 
   /* The thread this list belongs to.  */
@@ -57,7 +57,7 @@ typedef struct {
 
   /* Either &BTPY_CALL_TYPE or &RECPY_INSN_TYPE.  */
   PyTypeObject* element_type;
-} btpy_list_object;
+};
 
 /* Python type for btrace lists.  */
 
diff --git a/gdb/python/py-record.c b/gdb/python/py-record.c
index 38634081224..3ea7833eb35 100644
--- a/gdb/python/py-record.c
+++ b/gdb/python/py-record.c
@@ -50,7 +50,7 @@ PyTypeObject recpy_gap_type = {
 };
 
 /* Python RecordGap object.  */
-typedef struct
+struct recpy_gap_object
 {
   PyObject_HEAD
 
@@ -62,7 +62,7 @@ typedef struct
 
   /* Element number.  */
   Py_ssize_t number;
-} recpy_gap_object;
+};
 
 /* Implementation of record.method.  */
 
diff --git a/gdb/python/py-record.h b/gdb/python/py-record.h
index 5d361fe3998..b771f321ce2 100644
--- a/gdb/python/py-record.h
+++ b/gdb/python/py-record.h
@@ -25,7 +25,7 @@
 #include "record.h"
 
 /* Python Record object.  */
-typedef struct
+struct recpy_record_object
 {
   PyObject_HEAD
 
@@ -34,12 +34,12 @@ typedef struct
 
   /* The current recording method.  */
   enum record_method method;
-} recpy_record_object;
+};
 
 /* Python recorded element object.  This is generic enough to represent
    recorded instructions as well as recorded function call segments, hence the
    generic name.  */
-typedef struct
+struct recpy_element_object
 {
   PyObject_HEAD
 
@@ -51,7 +51,7 @@ typedef struct
 
   /* Element number.  */
   Py_ssize_t number;
-} recpy_element_object;
+};
 
 /* Python RecordInstruction type.  */
 extern PyTypeObject recpy_insn_type;
diff --git a/gdb/python/py-registers.c b/gdb/python/py-registers.c
index d7b876bae28..7e9dc1d8cd7 100644
--- a/gdb/python/py-registers.c
+++ b/gdb/python/py-registers.c
@@ -30,7 +30,7 @@
 static struct gdbarch_data *gdbpy_register_object_data = NULL;
 
 /* Structure for iterator over register descriptors.  */
-typedef struct {
+struct register_descriptor_iterator_object {
   PyObject_HEAD
 
   /* The register group that the user is iterating over.  This will never
@@ -42,13 +42,13 @@ typedef struct {
 
   /* Pointer back to the architecture we're finding registers for.  */
   struct gdbarch *gdbarch;
-} register_descriptor_iterator_object;
+};
 
 extern PyTypeObject register_descriptor_iterator_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("register_descriptor_iterator_object");
 
 /* A register descriptor.  */
-typedef struct {
+struct register_descriptor_object {
   PyObject_HEAD
 
   /* The register this is a descriptor for.  */
@@ -56,13 +56,13 @@ typedef struct {
 
   /* The architecture this is a register for.  */
   struct gdbarch *gdbarch;
-} register_descriptor_object;
+};
 
 extern PyTypeObject register_descriptor_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("register_descriptor_object");
 
 /* Structure for iterator over register groups.  */
-typedef struct {
+struct reggroup_iterator_object {
   PyObject_HEAD
 
   /* The last register group returned.  Initially this will be NULL.  */
@@ -70,18 +70,18 @@ typedef struct {
 
   /* Pointer back to the architecture we're finding registers for.  */
   struct gdbarch *gdbarch;
-} reggroup_iterator_object;
+};
 
 extern PyTypeObject reggroup_iterator_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("reggroup_iterator_object");
 
 /* A register group object.  */
-typedef struct {
+struct reggroup_object {
   PyObject_HEAD
 
   /* The register group being described.  */
   struct reggroup *reggroup;
-} reggroup_object;
+};
 
 extern PyTypeObject reggroup_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("reggroup_object");
diff --git a/gdb/python/py-symbol.c b/gdb/python/py-symbol.c
index 0adcb0bc9ad..edcb51fcc12 100644
--- a/gdb/python/py-symbol.c
+++ b/gdb/python/py-symbol.c
@@ -25,7 +25,7 @@
 #include "objfiles.h"
 #include "symfile.h"
 
-typedef struct sympy_symbol_object {
+struct symbol_object {
   PyObject_HEAD
   /* The GDB symbol structure this object is wrapping.  */
   struct symbol *symbol;
@@ -33,9 +33,9 @@ typedef struct sympy_symbol_object {
      doubly-linked list, rooted in the objfile.  This lets us
      invalidate the underlying struct symbol when the objfile is
      deleted.  */
-  struct sympy_symbol_object *prev;
-  struct sympy_symbol_object *next;
-} symbol_object;
+  symbol_object *prev;
+  symbol_object *next;
+};
 
 /* Require a valid symbol.  All access to symbol_object->symbol should be
    gated by this call.  */
@@ -307,7 +307,7 @@ set_symbol (symbol_object *obj, struct symbol *symbol)
     {
       struct objfile *objfile = symbol_objfile (symbol);
 
-      obj->next = ((struct sympy_symbol_object *)
+      obj->next = ((symbol_object *)
 		   objfile_data (objfile, sympy_objfile_data_key));
       if (obj->next)
 	obj->next->prev = obj;
diff --git a/gdb/python/py-symtab.c b/gdb/python/py-symtab.c
index 579662f92d2..33cb67cb9e2 100644
--- a/gdb/python/py-symtab.c
+++ b/gdb/python/py-symtab.c
@@ -25,7 +25,7 @@
 #include "objfiles.h"
 #include "block.h"
 
-typedef struct stpy_symtab_object {
+struct symtab_object {
   PyObject_HEAD
   /* The GDB Symbol table structure.  */
   struct symtab *symtab;
@@ -33,9 +33,9 @@ typedef struct stpy_symtab_object {
      a doubly-linked list, rooted in the objfile.  This allows
      invalidation of the underlying struct symtab when the objfile is
      deleted.  */
-  struct stpy_symtab_object *prev;
-  struct stpy_symtab_object *next;
-} symtab_object;
+  symtab_object *prev;
+  symtab_object *next;
+};
 
 extern PyTypeObject symtab_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("symtab_object");
@@ -54,7 +54,7 @@ static const struct objfile_data *stpy_objfile_data_key;
       }							 \
   } while (0)
 
-typedef struct salpy_sal_object {
+struct sal_object {
   PyObject_HEAD
   /* The GDB Symbol table structure.  */
   PyObject *symtab;
@@ -64,9 +64,9 @@ typedef struct salpy_sal_object {
      track with a doubly-linked list, rooted in the objfile.  This
      allows invalidation of the underlying struct symtab_and_line
      when the objfile is deleted.  */
-  struct salpy_sal_object *prev;
-  struct salpy_sal_object *next;
-} sal_object;
+  sal_object *prev;
+  sal_object *next;
+};
 
 extern PyTypeObject sal_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("sal_object");
@@ -378,8 +378,8 @@ set_sal (sal_object *sal_obj, struct symtab_and_line sal)
       symtab *symtab = symtab_object_to_symtab (sal_obj->symtab);
 
       sal_obj->next
-	= ((struct salpy_sal_object *) objfile_data (SYMTAB_OBJFILE (symtab),
-						     salpy_objfile_data_key));
+	= ((sal_object *) objfile_data (SYMTAB_OBJFILE (symtab),
+					salpy_objfile_data_key));
       if (sal_obj->next)
 	sal_obj->next->prev = sal_obj;
 
@@ -405,7 +405,7 @@ set_symtab (symtab_object *obj, struct symtab *symtab)
   if (symtab)
     {
       obj->next
-	= ((struct stpy_symtab_object *)
+	= ((symtab_object *)
 	   objfile_data (SYMTAB_OBJFILE (symtab), stpy_objfile_data_key));
       if (obj->next)
 	obj->next->prev = obj;
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index 55d8264fea9..1c7cacbddf3 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -28,7 +28,7 @@
 #include "language.h"
 #include "typeprint.h"
 
-typedef struct pyty_type_object
+struct type_object
 {
   PyObject_HEAD
   struct type *type;
@@ -36,35 +36,35 @@ typedef struct pyty_type_object
   /* If a Type object is associated with an objfile, it is kept on a
      doubly-linked list, rooted in the objfile.  This lets us copy the
      underlying struct type when the objfile is deleted.  */
-  struct pyty_type_object *prev;
-  struct pyty_type_object *next;
-} type_object;
+  struct type_object *prev;
+  struct type_object *next;
+};
 
 extern PyTypeObject type_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("type_object");
 
 /* A Field object.  */
-typedef struct pyty_field_object
+struct field_object
 {
   PyObject_HEAD
 
   /* Dictionary holding our attributes.  */
   PyObject *dict;
-} field_object;
+};
 
 extern PyTypeObject field_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("field_object");
 
 /* A type iterator object.  */
-typedef struct {
+struct typy_iterator_object {
   PyObject_HEAD
   /* The current field index.  */
   int field;
   /* What to return.  */
   enum gdbpy_iter_kind kind;
   /* Pointer back to the original source type object.  */
-  struct pyty_type_object *source;
-} typy_iterator_object;
+  type_object *source;
+};
 
 extern PyTypeObject type_iterator_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("typy_iterator_object");
@@ -1101,7 +1101,7 @@ set_type (type_object *obj, struct type *type)
     {
       struct objfile *objfile = TYPE_OBJFILE (type);
 
-      obj->next = ((struct pyty_type_object *)
+      obj->next = ((type_object *)
 		   objfile_data (objfile, typy_objfile_data_key));
       if (obj->next)
 	obj->next->prev = obj;
diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c
index 4571ef685c7..c01e6b1aa1d 100644
--- a/gdb/python/py-unwind.c
+++ b/gdb/python/py-unwind.c
@@ -31,7 +31,7 @@
 #define TRACE_PY_UNWIND(level, args...) if (pyuw_debug >= level)  \
   { fprintf_unfiltered (gdb_stdlog, args); }
 
-typedef struct
+struct pending_frame_object
 {
   PyObject_HEAD
 
@@ -40,7 +40,7 @@ typedef struct
 
   /* Its architecture, passed by the sniffer caller.  */
   struct gdbarch *gdbarch;
-} pending_frame_object;
+};
 
 /* Saved registers array item.  */
 
@@ -59,7 +59,7 @@ struct saved_reg
 /* The data we keep for the PyUnwindInfo: pending_frame, saved registers
    and frame ID.  */
 
-typedef struct
+struct unwind_info_object
 {
   PyObject_HEAD
 
@@ -71,12 +71,12 @@ typedef struct
 
   /* Saved registers array.  */
   std::vector<saved_reg> *saved_regs;
-} unwind_info_object;
+};
 
 /* The data we keep for a frame we can unwind: frame ID and an array of
    (register_number, register_value) pairs.  */
 
-typedef struct
+struct cached_frame_info
 {
   /* Frame ID.  */
   struct frame_id frame_id;
@@ -88,7 +88,7 @@ typedef struct
   int reg_count;
 
   cached_reg_t reg[];
-} cached_frame_info;
+};
 
 extern PyTypeObject pending_frame_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("pending_frame_object");
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index 4e8d93e15ab..c1ff8e8eca9 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -53,7 +53,7 @@
 #define builtin_type_pychar \
   language_string_char_type (python_language, python_gdbarch)
 
-typedef struct value_object {
+struct value_object {
   PyObject_HEAD
   struct value_object *next;
   struct value_object *prev;
@@ -61,7 +61,7 @@ typedef struct value_object {
   PyObject *address;
   PyObject *type;
   PyObject *dynamic_type;
-} value_object;
+};
 
 /* List of all values which are currently exposed to Python. It is
    maintained so that when an objfile is discarded, preserve_values
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index cc113cb7bfa..3fdfedefbea 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -318,7 +318,7 @@ extern PyTypeObject frame_object_type
 extern PyTypeObject thread_object_type
     CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("thread_object");
 
-typedef struct gdbpy_breakpoint_object
+struct gdbpy_breakpoint_object
 {
   PyObject_HEAD
 
@@ -331,7 +331,7 @@ typedef struct gdbpy_breakpoint_object
 
   /* 1 is this is a FinishBreakpoint object, 0 otherwise.  */
   int is_finish_bp;
-} gdbpy_breakpoint_object;
+};
 
 /* Require that BREAKPOINT be a valid breakpoint ID; throw a Python
    exception if it is invalid.  */
@@ -361,7 +361,7 @@ typedef struct gdbpy_breakpoint_object
 extern gdbpy_breakpoint_object *bppy_pending_object;
 
 
-typedef struct
+struct thread_object
 {
   PyObject_HEAD
 
@@ -370,7 +370,7 @@ typedef struct
 
   /* The Inferior object to which this thread belongs.  */
   PyObject *inf_obj;
-} thread_object;
+};
 
 struct inferior_object;
 
-- 
2.26.2


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

* Re: [PATCH] Remove redundant typedefs
  2020-12-03 19:24 [PATCH] Remove redundant typedefs Tom Tromey
@ 2020-12-03 19:33 ` Simon Marchi
  2020-12-04 20:08   ` Tom Tromey
  2020-12-04  0:18 ` Pedro Alves
  1 sibling, 1 reply; 5+ messages in thread
From: Simon Marchi @ 2020-12-03 19:33 UTC (permalink / raw)
  To: Tom Tromey, gdb-patches

On 2020-12-03 2:24 p.m., Tom Tromey wrote:
> @@ -794,7 +794,7 @@ struct breakpoint
>    gdbpy_breakpoint_object *py_bp_object = NULL;
>
>    /* Same as py_bp_object, but for Scheme.  */
> -  gdbscm_breakpoint_object *scm_bp_object = NULL;
> +  breakpoint_smob *scm_bp_object = NULL;

In this case, I think it would make sense to keep the
"gdbscm_breakpoint_object" name, first for symmetry with Python, but
also because it's more descriptive than "breakpoint_smob", when you are
not in the guile code.

Since the code in scm-breakpoint.c uses breakpoint_smob everywhere (and
in the context of guile, it's clear what a _smob is), you could just add
a

  using breakpoint_smob = gdbscm_breakpoint_object;

in that file.

But other than that, this LGTM, thanks!

Simon

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

* Re: [PATCH] Remove redundant typedefs
  2020-12-03 19:24 [PATCH] Remove redundant typedefs Tom Tromey
  2020-12-03 19:33 ` Simon Marchi
@ 2020-12-04  0:18 ` Pedro Alves
  2020-12-04 20:09   ` Tom Tromey
  1 sibling, 1 reply; 5+ messages in thread
From: Pedro Alves @ 2020-12-04  0:18 UTC (permalink / raw)
  To: Tom Tromey, gdb-patches

On 12/3/20 7:24 PM, Tom Tromey wrote:

> diff --git a/gdb/guile/scm-arch.c b/gdb/guile/scm-arch.c
> index 953cb226d98..7ff821ed4e2 100644
> --- a/gdb/guile/scm-arch.c
> +++ b/gdb/guile/scm-arch.c
> @@ -29,7 +29,7 @@
>  /* The <gdb:arch> smob.
>     The typedef for this struct is in guile-internal.h.  */

This comment becomes stale, as you've removed the typedef
in guile-internal.h.

These probably also need tweaking:

 $ grep "typedef for" -rn | grep internal
 guile/scm-iterator.c:59:   The typedef for this struct is in guile-internal.h.  */
 guile/scm-objfile.c:29:   The typedef for this struct is in guile-internal.h.  */
 guile/scm-progspace.c:32:   The typedef for this struct is in guile-internal.h.  */
 guile/scm-frame.c:36:   The typedef for this struct is in guile-internal.h.  */
 guile/scm-type.c:38:   The typedef for this struct is in guile-internal.h.  */
 guile/scm-arch.c:30:   The typedef for this struct is in guile-internal.h.  */

>  
> -struct _arch_smob
> +struct arch_smob
>  {
>    /* This always appears first.  */
>    gdb_smob base;

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

* Re: [PATCH] Remove redundant typedefs
  2020-12-03 19:33 ` Simon Marchi
@ 2020-12-04 20:08   ` Tom Tromey
  0 siblings, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2020-12-04 20:08 UTC (permalink / raw)
  To: Simon Marchi; +Cc: Tom Tromey, gdb-patches

>> @@ -794,7 +794,7 @@ struct breakpoint
>> gdbpy_breakpoint_object *py_bp_object = NULL;
>> 
>> /* Same as py_bp_object, but for Scheme.  */
>> -  gdbscm_breakpoint_object *scm_bp_object = NULL;
>> +  breakpoint_smob *scm_bp_object = NULL;

Simon> In this case, I think it would make sense to keep the
Simon> "gdbscm_breakpoint_object" name, first for symmetry with Python, but
Simon> also because it's more descriptive than "breakpoint_smob", when you are
Simon> not in the guile code.

Makes sense.

Simon> Since the code in scm-breakpoint.c uses breakpoint_smob everywhere (and
Simon> in the context of guile, it's clear what a _smob is), you could just add
Simon> a

Simon>   using breakpoint_smob = gdbscm_breakpoint_object;

Simon> in that file.

I just backed out this one specific change instead.

Tom

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

* Re: [PATCH] Remove redundant typedefs
  2020-12-04  0:18 ` Pedro Alves
@ 2020-12-04 20:09   ` Tom Tromey
  0 siblings, 0 replies; 5+ messages in thread
From: Tom Tromey @ 2020-12-04 20:09 UTC (permalink / raw)
  To: Pedro Alves; +Cc: Tom Tromey, gdb-patches

>>>>> "Pedro" == Pedro Alves <pedro@palves.net> writes:

Pedro> This comment becomes stale, as you've removed the typedef
Pedro> in guile-internal.h.

Pedro> These probably also need tweaking:

Pedro>  $ grep "typedef for" -rn | grep internal
Pedro>  guile/scm-iterator.c:59:   The typedef for this struct is in guile-internal.h.  */
Pedro>  guile/scm-objfile.c:29:   The typedef for this struct is in guile-internal.h.  */
Pedro>  guile/scm-progspace.c:32:   The typedef for this struct is in guile-internal.h.  */
Pedro>  guile/scm-frame.c:36:   The typedef for this struct is in guile-internal.h.  */
Pedro>  guile/scm-type.c:38:   The typedef for this struct is in guile-internal.h.  */
Pedro>  guile/scm-arch.c:30:   The typedef for this struct is in guile-internal.h.  */

Thanks, I fixed this up.

Tom

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

end of thread, other threads:[~2020-12-04 20:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-03 19:24 [PATCH] Remove redundant typedefs Tom Tromey
2020-12-03 19:33 ` Simon Marchi
2020-12-04 20:08   ` Tom Tromey
2020-12-04  0:18 ` Pedro Alves
2020-12-04 20:09   ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).