public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Remove objfile_type
@ 2023-03-18 17:20 Tom Tromey
  0 siblings, 0 replies; only message in thread
From: Tom Tromey @ 2023-03-18 17:20 UTC (permalink / raw)
  To: gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=2d1bc552337b9ed7ccccdf7d25a1386fc34287d7

commit 2d1bc552337b9ed7ccccdf7d25a1386fc34287d7
Author: Tom Tromey <tom@tromey.com>
Date:   Sat Mar 11 09:58:15 2023 -0700

    Remove objfile_type
    
    This removes objfile_type, in favor of always using the per-arch
    builtins.
    
    Reviewed-By: Simon Marchi <simon.marchi@efficios.com>

Diff:
---
 gdb/gdbtypes.c | 124 +--------------------------------------------------------
 gdb/gdbtypes.h |  40 +------------------
 2 files changed, 3 insertions(+), 161 deletions(-)

diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 79468332ff5..b25b0ce2e34 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -6126,130 +6126,10 @@ builtin_type (struct gdbarch *gdbarch)
   return result;
 }
 
-/* This set of objfile-based types is intended to be used by symbol
-   readers as basic types.  */
-
-static const registry<objfile>::key<struct objfile_type,
-				    gdb::noop_deleter<struct objfile_type>>
-  objfile_type_data;
-
-const struct objfile_type *
+const struct builtin_type *
 builtin_type (struct objfile *objfile)
 {
-  struct gdbarch *gdbarch;
-  struct objfile_type *objfile_type = objfile_type_data.get (objfile);
-
-  if (objfile_type)
-    return objfile_type;
-
-  objfile_type = OBSTACK_CALLOC (&objfile->objfile_obstack,
-				 1, struct objfile_type);
-
-  /* Use the objfile architecture to determine basic type properties.  */
-  gdbarch = objfile->arch ();
-
-  type_allocator alloc (objfile);
-
-  /* Basic types.  */
-  objfile_type->builtin_void
-    = alloc.new_type (TYPE_CODE_VOID, TARGET_CHAR_BIT, "void");
-  objfile_type->builtin_char
-    = init_integer_type (alloc, TARGET_CHAR_BIT,
-			 !gdbarch_char_signed (gdbarch), "char");
-  objfile_type->builtin_char->set_has_no_signedness (true);
-  objfile_type->builtin_signed_char
-    = init_integer_type (alloc, TARGET_CHAR_BIT,
-			 0, "signed char");
-  objfile_type->builtin_unsigned_char
-    = init_integer_type (alloc, TARGET_CHAR_BIT,
-			 1, "unsigned char");
-  objfile_type->builtin_short
-    = init_integer_type (alloc, gdbarch_short_bit (gdbarch),
-			 0, "short");
-  objfile_type->builtin_unsigned_short
-    = init_integer_type (alloc, gdbarch_short_bit (gdbarch),
-			 1, "unsigned short");
-  objfile_type->builtin_int
-    = init_integer_type (alloc, gdbarch_int_bit (gdbarch),
-			 0, "int");
-  objfile_type->builtin_unsigned_int
-    = init_integer_type (alloc, gdbarch_int_bit (gdbarch),
-			 1, "unsigned int");
-  objfile_type->builtin_long
-    = init_integer_type (alloc, gdbarch_long_bit (gdbarch),
-			 0, "long");
-  objfile_type->builtin_unsigned_long
-    = init_integer_type (alloc, gdbarch_long_bit (gdbarch),
-			 1, "unsigned long");
-  objfile_type->builtin_long_long
-    = init_integer_type (alloc, gdbarch_long_long_bit (gdbarch),
-			 0, "long long");
-  objfile_type->builtin_unsigned_long_long
-    = init_integer_type (alloc, gdbarch_long_long_bit (gdbarch),
-			 1, "unsigned long long");
-  objfile_type->builtin_float
-    = init_float_type (alloc, gdbarch_float_bit (gdbarch),
-		       "float", gdbarch_float_format (gdbarch));
-  objfile_type->builtin_double
-    = init_float_type (alloc, gdbarch_double_bit (gdbarch),
-		       "double", gdbarch_double_format (gdbarch));
-  objfile_type->builtin_long_double
-    = init_float_type (alloc, gdbarch_long_double_bit (gdbarch),
-		       "long double", gdbarch_long_double_format (gdbarch));
-
-  /* This type represents a type that was unrecognized in symbol read-in.  */
-  objfile_type->builtin_error
-    = alloc.new_type (TYPE_CODE_ERROR, 0, "<unknown type>");
-
-  /* The following set of types is used for symbols with no
-     debug information.  */
-  objfile_type->nodebug_text_symbol
-    = alloc.new_type (TYPE_CODE_FUNC, TARGET_CHAR_BIT,
-		      "<text variable, no debug info>");
-
-  objfile_type->nodebug_text_gnu_ifunc_symbol
-    = alloc.new_type (TYPE_CODE_FUNC, TARGET_CHAR_BIT,
-		      "<text gnu-indirect-function variable, no debug info>");
-  objfile_type->nodebug_text_gnu_ifunc_symbol->set_is_gnu_ifunc (true);
-
-  objfile_type->nodebug_got_plt_symbol
-    = init_pointer_type (alloc, gdbarch_addr_bit (gdbarch),
-			 "<text from jump slot in .got.plt, no debug info>",
-			 objfile_type->nodebug_text_symbol);
-  objfile_type->nodebug_data_symbol
-    = alloc.new_type (TYPE_CODE_ERROR, 0, "<data variable, no debug info>");
-  objfile_type->nodebug_unknown_symbol
-    = alloc.new_type (TYPE_CODE_ERROR, 0,
-		      "<variable (not text or data), no debug info>");
-  objfile_type->nodebug_tls_symbol
-    = alloc.new_type (TYPE_CODE_ERROR, 0,
-		      "<thread local variable, no debug info>");
-
-  /* NOTE: on some targets, addresses and pointers are not necessarily
-     the same.
-
-     The upshot is:
-     - gdb's `struct type' always describes the target's
-       representation.
-     - gdb's `struct value' objects should always hold values in
-       target form.
-     - gdb's CORE_ADDR values are addresses in the unified virtual
-       address space that the assembler and linker work with.  Thus,
-       since target_read_memory takes a CORE_ADDR as an argument, it
-       can access any memory on the target, even if the processor has
-       separate code and data address spaces.
-
-     In this context, objfile_type->builtin_core_addr is a bit odd:
-     it's a target type for a value the target will never see.  It's
-     only used to hold the values of (typeless) linker symbols, which
-     are indeed in the unified virtual address space.  */
-
-  objfile_type->builtin_core_addr
-    = init_integer_type (alloc, gdbarch_addr_bit (gdbarch), 1,
-			 "__CORE_ADDR");
-
-  objfile_type_data.set (objfile, objfile_type);
-  return objfile_type;
+  return builtin_type (objfile->arch ());
 }
 
 /* See gdbtypes.h.  */
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index bce7c35160e..e7e44d2b4ef 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -2119,47 +2119,9 @@ struct builtin_type
 
 extern const struct builtin_type *builtin_type (struct gdbarch *gdbarch);
 
-/* * Per-objfile types used by symbol readers.  */
-
-struct objfile_type
-{
-  /* Basic types based on the objfile architecture.  */
-  struct type *builtin_void;
-  struct type *builtin_char;
-  struct type *builtin_short;
-  struct type *builtin_int;
-  struct type *builtin_long;
-  struct type *builtin_long_long;
-  struct type *builtin_signed_char;
-  struct type *builtin_unsigned_char;
-  struct type *builtin_unsigned_short;
-  struct type *builtin_unsigned_int;
-  struct type *builtin_unsigned_long;
-  struct type *builtin_unsigned_long_long;
-  struct type *builtin_half;
-  struct type *builtin_float;
-  struct type *builtin_double;
-  struct type *builtin_long_double;
-
-  /* * This type is used to represent symbol addresses.  */
-  struct type *builtin_core_addr;
-
-  /* * This type represents a type that was unrecognized in symbol
-     read-in.  */
-  struct type *builtin_error;
-
-  /* * Types used for symbols with no debug information.  */
-  struct type *nodebug_text_symbol;
-  struct type *nodebug_text_gnu_ifunc_symbol;
-  struct type *nodebug_got_plt_symbol;
-  struct type *nodebug_data_symbol;
-  struct type *nodebug_unknown_symbol;
-  struct type *nodebug_tls_symbol;
-};
-
 /* * Return the type table for the specified objfile.  */
 
-extern const struct objfile_type *builtin_type (struct objfile *objfile);
+extern const struct builtin_type *builtin_type (struct objfile *objfile);
  
 /* Explicit floating-point formats.  See "floatformat.h".  */
 extern const struct floatformat *floatformats_ieee_half[BFD_ENDIAN_UNKNOWN];

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-03-18 17:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-18 17:20 [binutils-gdb] Remove objfile_type 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).