diff options
author | Tom Tromey <tom@tromey.com> | 2023-03-11 09:58:15 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2023-03-18 11:12:38 -0600 |
commit | 2d1bc552337b9ed7ccccdf7d25a1386fc34287d7 (patch) | |
tree | 01c8c063e6805550e4b5a3fd77cda5be84491ba7 /gdb | |
parent | a9a775da56aaaadf906589600f5861a2c80a09a4 (diff) | |
download | gdb-2d1bc552337b9ed7ccccdf7d25a1386fc34287d7.zip gdb-2d1bc552337b9ed7ccccdf7d25a1386fc34287d7.tar.gz gdb-2d1bc552337b9ed7ccccdf7d25a1386fc34287d7.tar.bz2 |
Remove objfile_type
This removes objfile_type, in favor of always using the per-arch
builtins.
Reviewed-By: Simon Marchi <simon.marchi@efficios.com>
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/gdbtypes.c | 124 | ||||
-rw-r--r-- | gdb/gdbtypes.h | 40 |
2 files changed, 3 insertions, 161 deletions
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 7946833..b25b0ce 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 bce7c35..e7e44d2 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]; |