GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions | Variables
gdbtypes.c File Reference
#include "defs.h"
#include "bfd.h"
#include "symtab.h"
#include "symfile.h"
#include "objfiles.h"
#include "gdbtypes.h"
#include "expression.h"
#include "language.h"
#include "target.h"
#include "value.h"
#include "demangle.h"
#include "complaints.h"
#include "gdbcmd.h"
#include "cp-abi.h"
#include "hashtab.h"
#include "cp-support.h"
#include "bcache.h"
#include "dwarf2/loc.h"
#include "dwarf2/read.h"
#include "gdbcore.h"
#include "floatformat.h"
#include "f-lang.h"
#include <algorithm>
#include "gmp-utils.h"
#include "rust-lang.h"
#include "ada-lang.h"

Go to the source code of this file.

Classes

struct  type_equality_entry
 
struct  type_pair
 

Macros

#define INVALID_CONVERSION   100
 
#define FIELD_EQ(FIELD)   (l.FIELD == r.FIELD)
 

Typedefs

typedef std::vector< std::unique_ptr< fixed_point_type_info > > fixed_point_type_storage
 

Functions

static struct dynamic_prop_listcopy_dynamic_prop_list (struct obstack *, struct dynamic_prop_list *)
 
static void show_opaque_type_resolution (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void show_overload_debug (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void show_strict_type_checking (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void set_type_code (struct type *type, enum type_code code)
 
struct typeget_target_type (struct type *type)
 
unsigned int type_length_units (struct type *type)
 
static struct typealloc_type_instance (struct type *oldtype)
 
static void smash_type (struct type *type)
 
struct typemake_pointer_type (struct type *type, struct type **typeptr)
 
struct typelookup_pointer_type (struct type *type)
 
struct typemake_reference_type (struct type *type, struct type **typeptr, enum type_code refcode)
 
struct typelookup_reference_type (struct type *type, enum type_code refcode)
 
struct typelookup_lvalue_reference_type (struct type *type)
 
struct typelookup_rvalue_reference_type (struct type *type)
 
struct typemake_function_type (struct type *type, struct type **typeptr)
 
struct typelookup_function_type (struct type *type)
 
struct typelookup_function_type_with_arguments (struct type *type, int nparams, struct type **param_types)
 
type_instance_flags address_space_name_to_type_instance_flags (struct gdbarch *gdbarch, const char *space_identifier)
 
const char * address_space_type_instance_flags_to_name (struct gdbarch *gdbarch, type_instance_flags space_flag)
 
static struct typemake_qualified_type (struct type *type, type_instance_flags new_flags, struct type *storage)
 
struct typemake_type_with_address_space (struct type *type, type_instance_flags space_flag)
 
struct typemake_cv_type (int cnst, int voltl, struct type *type, struct type **typeptr)
 
struct typemake_restrict_type (struct type *type)
 
struct typemake_unqualified_type (struct type *type)
 
struct typemake_atomic_type (struct type *type)
 
void replace_type (struct type *ntype, struct type *type)
 
struct typelookup_memberptr_type (struct type *type, struct type *domain)
 
struct typelookup_methodptr_type (struct type *to_type)
 
bool operator== (const dynamic_prop &l, const dynamic_prop &r)
 
bool operator== (const range_bounds &l, const range_bounds &r)
 
struct typecreate_range_type (type_allocator &alloc, struct type *index_type, const struct dynamic_prop *low_bound, const struct dynamic_prop *high_bound, LONGEST bias)
 
struct typecreate_range_type_with_stride (type_allocator &alloc, struct type *index_type, const struct dynamic_prop *low_bound, const struct dynamic_prop *high_bound, LONGEST bias, const struct dynamic_prop *stride, bool byte_stride_p)
 
struct typecreate_static_range_type (type_allocator &alloc, struct type *index_type, LONGEST low_bound, LONGEST high_bound)
 
static bool has_static_range (const struct range_bounds *bounds)
 
gdb::optional< LONGEST > get_discrete_low_bound (struct type *type)
 
gdb::optional< LONGEST > get_discrete_high_bound (struct type *type)
 
bool get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp)
 
bool get_array_bounds (struct type *type, LONGEST *low_bound, LONGEST *high_bound)
 
gdb::optional< LONGEST > discrete_position (struct type *type, LONGEST val)
 
static bool update_static_array_size (struct type *type)
 
struct typecreate_array_type_with_stride (type_allocator &alloc, struct type *element_type, struct type *range_type, struct dynamic_prop *byte_stride_prop, unsigned int bit_stride)
 
struct typecreate_array_type (type_allocator &alloc, struct type *element_type, struct type *range_type)
 
struct typelookup_array_range_type (struct type *element_type, LONGEST low_bound, LONGEST high_bound)
 
struct typecreate_string_type (type_allocator &alloc, struct type *string_char_type, struct type *range_type)
 
struct typelookup_string_range_type (struct type *string_char_type, LONGEST low_bound, LONGEST high_bound)
 
struct typecreate_set_type (type_allocator &alloc, struct type *domain_type)
 
void make_vector_type (struct type *array_type)
 
struct typeinit_vector_type (struct type *elt_type, int n)
 
struct typeinternal_type_self_type (struct type *type)
 
void set_type_self_type (struct type *type, struct type *self_type)
 
void smash_to_memberptr_type (struct type *type, struct type *self_type, struct type *to_type)
 
void smash_to_methodptr_type (struct type *type, struct type *to_type)
 
void smash_to_method_type (struct type *type, struct type *self_type, struct type *to_type, struct field *args, int nargs, int varargs)
 
const char * type_name_or_error (struct type *type)
 
struct typelookup_typename (const struct language_defn *language, const char *name, const struct block *block, int noerr)
 
struct typelookup_unsigned_typename (const struct language_defn *language, const char *name)
 
struct typelookup_signed_typename (const struct language_defn *language, const char *name)
 
struct typelookup_struct (const char *name, const struct block *block)
 
struct typelookup_union (const char *name, const struct block *block)
 
struct typelookup_enum (const char *name, const struct block *block)
 
struct typelookup_template_type (const char *name, struct type *type, const struct block *block)
 
struct_elt lookup_struct_elt (struct type *type, const char *name, int noerr)
 
struct typelookup_struct_elt_type (struct type *type, const char *name, int noerr)
 
ULONGEST get_unsigned_type_max (struct type *type)
 
void get_signed_type_minmax (struct type *type, LONGEST *min, LONGEST *max)
 
CORE_ADDR get_pointer_type_max (struct type *type)
 
int internal_type_vptr_fieldno (struct type *type)
 
void set_type_vptr_fieldno (struct type *type, int fieldno)
 
struct typeinternal_type_vptr_basetype (struct type *type)
 
void set_type_vptr_basetype (struct type *type, struct type *basetype)
 
int get_vptr_fieldno (struct type *type, struct type **basetypep)
 
static void stub_noname_complaint (void)
 
static int array_type_has_dynamic_stride (struct type *type)
 
static int is_dynamic_type_internal (struct type *type, int top_level)
 
int is_dynamic_type (struct type *type)
 
static struct typeresolve_dynamic_type_internal (struct type *type, struct property_addr_info *addr_stack, const frame_info_ptr &frame, int top_level)
 
static struct typeresolve_dynamic_range (struct type *dyn_range_type, struct property_addr_info *addr_stack, const frame_info_ptr &frame, int rank, bool resolve_p=true)
 
static struct typeresolve_dynamic_array_or_string_1 (struct type *type, struct property_addr_info *addr_stack, const frame_info_ptr &frame, int rank, bool resolve_p)
 
static struct typeresolve_dynamic_array_or_string (struct type *type, struct property_addr_info *addr_stack, const frame_info_ptr &frame)
 
static struct typeresolve_dynamic_union (struct type *type, struct property_addr_info *addr_stack, const frame_info_ptr &frame)
 
static void compute_variant_fields_inner (struct type *type, struct property_addr_info *addr_stack, const variant_part &part, std::vector< bool > &flags)
 
static void compute_variant_fields_recurse (struct type *type, struct property_addr_info *addr_stack, const variant &variant, std::vector< bool > &flags, bool enabled)
 
static void compute_variant_fields (struct type *type, struct type *resolved_type, struct property_addr_info *addr_stack, const gdb::array_view< variant_part > &parts)
 
static struct typeresolve_dynamic_struct (struct type *type, struct property_addr_info *addr_stack, const frame_info_ptr &frame)
 
struct typeresolve_dynamic_type (struct type *type, gdb::array_view< const gdb_byte > valaddr, CORE_ADDR addr, const frame_info_ptr *in_frame)
 
struct typecheck_typedef (struct type *type)
 
static struct typesafe_parse_type (struct gdbarch *gdbarch, const char *p, int length)
 
static void check_stub_method (struct type *type, int method_id, int signature_id)
 
void check_stub_method_group (struct type *type, int method_id)
 
void allocate_cplus_struct_type (struct type *type)
 
void allocate_gnat_aux_type (struct type *type)
 
static int verify_floatformat (int bit, const struct floatformat *floatformat)
 
const struct floatformat * floatformat_from_type (const struct type *type)
 
struct typeinit_integer_type (type_allocator &alloc, int bit, int unsigned_p, const char *name)
 
struct typeinit_character_type (type_allocator &alloc, int bit, int unsigned_p, const char *name)
 
struct typeinit_boolean_type (type_allocator &alloc, int bit, int unsigned_p, const char *name)
 
struct typeinit_float_type (type_allocator &alloc, int bit, const char *name, const struct floatformat **floatformats, enum bfd_endian byte_order)
 
struct typeinit_decfloat_type (type_allocator &alloc, int bit, const char *name)
 
bool can_create_complex_type (struct type *target_type)
 
struct typeinit_complex_type (const char *name, struct type *target_type)
 
struct typeinit_pointer_type (type_allocator &alloc, int bit, const char *name, struct type *target_type)
 
struct typeinit_fixed_point_type (type_allocator &alloc, int bit, int unsigned_p, const char *name)
 
unsigned type_raw_align (struct type *type)
 
unsigned type_align (struct type *type)
 
bool set_type_align (struct type *type, ULONGEST align)
 
int can_dereference (struct type *t)
 
int is_integral_type (struct type *t)
 
int is_floating_type (struct type *t)
 
int is_scalar_type (struct type *type)
 
int is_scalar_type_recursive (struct type *t)
 
int class_or_union_p (const struct type *t)
 
int class_types_same_p (const struct type *a, const struct type *b)
 
static int distance_to_ancestor (struct type *base, struct type *dclass, int is_public)
 
int is_ancestor (struct type *base, struct type *dclass)
 
int is_public_ancestor (struct type *base, struct type *dclass)
 
static int is_unique_ancestor_worker (struct type *base, struct type *dclass, int *offset, const gdb_byte *valaddr, int embedded_offset, CORE_ADDR address, struct value *val)
 
int is_unique_ancestor (struct type *base, struct value *val)
 
enum bfd_endian type_byte_order (const struct type *type)
 
bool is_nocall_function (const struct type *type)
 
struct rank sum_ranks (struct rank a, struct rank b)
 
int compare_ranks (struct rank a, struct rank b)
 
int compare_badness (const badness_vector &a, const badness_vector &b)
 
badness_vector rank_function (gdb::array_view< type * > parms, gdb::array_view< value * > args)
 
static int integer_types_same_name_p (const char *first, const char *second)
 
bool types_equal (struct type *a, struct type *b)
 
static bool compare_maybe_null_strings (const char *s, const char *t)
 
static bool check_types_equal (struct type *type1, struct type *type2, std::vector< type_equality_entry > *worklist)
 
static bool check_types_worklist (std::vector< type_equality_entry > *worklist, gdb::bcache *cache)
 
bool types_deeply_equal (struct type *type1, struct type *type2)
 
int type_not_allocated (const struct type *type)
 
int type_not_associated (const struct type *type)
 
static struct rank rank_one_type_parm_ptr (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_array (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_func (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_int (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_enum (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_char (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_range (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_bool (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_float (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_complex (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_struct (struct type *parm, struct type *arg, struct value *value)
 
static struct rank rank_one_type_parm_set (struct type *parm, struct type *arg, struct value *value)
 
struct rank rank_one_type (struct type *parm, struct type *arg, struct value *value)
 
static void print_bit_vector (B_TYPE *bits, int nbits)
 
static void print_args (struct field *args, int nargs, int spaces)
 
static void dump_fn_fieldlists (struct type *type, int spaces)
 
static void print_cplus_stuff (struct type *type, int spaces)
 
static void print_gnat_stuff (struct type *type, int spaces)
 
static void print_fixed_point_type_info (struct type *type, int spaces)
 
static void dump_dynamic_prop (dynamic_prop const &prop)
 
void recursive_dump_type (struct type *type, int spaces)
 
static hashval_t type_pair_hash (const void *item)
 
static int type_pair_eq (const void *item_lhs, const void *item_rhs)
 
htab_up create_copied_types_hash ()
 
struct typecopy_type_recursive (struct type *type, htab_t copied_types)
 
struct typecopy_type (const struct type *type)
 
struct typearch_flags_type (struct gdbarch *gdbarch, const char *name, int bit)
 
void append_flags_type_field (struct type *type, int start_bitpos, int nr_bits, struct type *field_type, const char *name)
 
void append_flags_type_flag (struct type *type, int bitpos, const char *name)
 
struct typearch_composite_type (struct gdbarch *gdbarch, const char *name, enum type_code code)
 
struct fieldappend_composite_type_field_raw (struct type *t, const char *name, struct type *field)
 
void append_composite_type_field_aligned (struct type *t, const char *name, struct type *field, int alignment)
 
void append_composite_type_field (struct type *t, const char *name, struct type *field)
 
void allocate_fixed_point_type_info (struct type *type)
 
bool is_fixed_point_type (struct type *type)
 
static struct builtin_typecreate_gdbtypes_data (struct gdbarch *gdbarch)
 
const struct builtin_type * builtin_type (struct gdbarch *gdbarch)
 
const struct builtin_type * builtin_type (struct objfile *objfile)
 
void _initialize_gdbtypes ()
 

Variables

const struct rank LENGTH_MISMATCH_BADNESS = {INVALID_CONVERSION,0}
 
const struct rank TOO_FEW_PARAMS_BADNESS = {INVALID_CONVERSION,0}
 
const struct rank INCOMPATIBLE_TYPE_BADNESS = {INVALID_CONVERSION,0}
 
const struct rank EXACT_MATCH_BADNESS = {0,0}
 
const struct rank INTEGER_PROMOTION_BADNESS = {1,0}
 
const struct rank FLOAT_PROMOTION_BADNESS = {1,0}
 
const struct rank BASE_PTR_CONVERSION_BADNESS = {1,0}
 
const struct rank CV_CONVERSION_BADNESS = {1, 0}
 
const struct rank INTEGER_CONVERSION_BADNESS = {2,0}
 
const struct rank FLOAT_CONVERSION_BADNESS = {2,0}
 
const struct rank INT_FLOAT_CONVERSION_BADNESS = {2,0}
 
const struct rank VOID_PTR_CONVERSION_BADNESS = {2,0}
 
const struct rank BOOL_CONVERSION_BADNESS = {3,0}
 
const struct rank BASE_CONVERSION_BADNESS = {2,0}
 
const struct rank REFERENCE_CONVERSION_BADNESS = {2,0}
 
const struct rank REFERENCE_SEE_THROUGH_BADNESS = {0,1}
 
const struct rank NULL_POINTER_CONVERSION_BADNESS = {2,0}
 
const struct rank NS_POINTER_CONVERSION_BADNESS = {10,0}
 
const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS = {3,0}
 
const struct floatformat * floatformats_ieee_half [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_ieee_single [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_ieee_double [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_ieee_quad [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_ieee_double_littlebyte_bigword [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_i387_ext [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_m68881_ext [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_arm_ext [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_ia64_spill [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_vax_f [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_vax_d [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_ibm_long_double [BFD_ENDIAN_UNKNOWN]
 
const struct floatformat * floatformats_bfloat16 [BFD_ENDIAN_UNKNOWN]
 
static bool opaque_type_resolution = true
 
unsigned int overload_debug = 0
 
static bool strict_type_checking = true
 
const struct cplus_struct_type cplus_struct_default = { }
 
const struct gnat_aux_type gnat_aux_default
 
static struct obstack dont_print_type_obstack
 
static const struct registry< objfile >::key< fixed_point_type_storagefixed_point_objfile_key
 
static const registry< gdbarch >::key< struct builtin_typegdbtypes_data
 

Macro Definition Documentation

◆ FIELD_EQ

#define FIELD_EQ ( FIELD)    (l.FIELD == r.FIELD)

◆ INVALID_CONVERSION

#define INVALID_CONVERSION   100

Definition at line 50 of file gdbtypes.c.

Referenced by compare_badness().

Typedef Documentation

◆ fixed_point_type_storage

typedef std::vector<std::unique_ptr<fixed_point_type_info> > fixed_point_type_storage

Definition at line 5825 of file gdbtypes.c.

Function Documentation

◆ _initialize_gdbtypes()

void _initialize_gdbtypes ( )

Definition at line 6195 of file gdbtypes.c.

Referenced by initialize_all_files().

◆ address_space_name_to_type_instance_flags()

type_instance_flags address_space_name_to_type_instance_flags ( struct gdbarch * gdbarch,
const char * space_identifier )

◆ address_space_type_instance_flags_to_name()

const char * address_space_type_instance_flags_to_name ( struct gdbarch * gdbarch,
type_instance_flags space_flag )

◆ alloc_type_instance()

static struct type * alloc_type_instance ( struct type * oldtype)
static

◆ allocate_cplus_struct_type()

void allocate_cplus_struct_type ( struct type * type)

◆ allocate_fixed_point_type_info()

void allocate_fixed_point_type_info ( struct type * type)

◆ allocate_gnat_aux_type()

void allocate_gnat_aux_type ( struct type * type)

◆ append_composite_type_field()

void append_composite_type_field ( struct type * t,
const char * name,
struct type * field )

◆ append_composite_type_field_aligned()

void append_composite_type_field_aligned ( struct type * t,
const char * name,
struct type * field,
int alignment )

◆ append_composite_type_field_raw()

struct field * append_composite_type_field_raw ( struct type * t,
const char * name,
struct type * field )

◆ append_flags_type_field()

void append_flags_type_field ( struct type * type,
int start_bitpos,
int nr_bits,
struct type * field_type,
const char * name )

◆ append_flags_type_flag()

void append_flags_type_flag ( struct type * type,
int bitpos,
const char * name )

◆ arch_composite_type()

struct type * arch_composite_type ( struct gdbarch * gdbarch,
const char * name,
enum type_code code )

◆ arch_flags_type()

struct type * arch_flags_type ( struct gdbarch * gdbarch,
const char * name,
int bit )

◆ array_type_has_dynamic_stride()

static int array_type_has_dynamic_stride ( struct type * type)
static

◆ builtin_type() [1/2]

const struct builtin_type * builtin_type ( struct gdbarch * gdbarch)

Return the type table for the specified architecture.

Definition at line 6168 of file gdbtypes.c.

References create_gdbtypes_data(), gdbtypes_data, registry< T >::get(), and registry< T >::set().

Referenced by aarch64_pseudo_register_type(), aarch64_push_dummy_call(), aarch64_stap_parse_special_token(), aarch64_vnb_type(), aarch64_vnd_type(), aarch64_vnh_type(), aarch64_vnq_type(), aarch64_vns_type(), aarch64_vnv_type(), ada_atr_enum_rep(), ada_get_tcb_types_info(), ada_pos_atr(), ada_tasks_inferior_data_sniffer(), ada_unop_atr(), ada_value_print_num(), dwarf2_cu::addr_type(), address_from_register(), alpha_push_dummy_call(), alpha_register_type(), alpha_store_return_value(), amd64_dtrace_parse_probe_argument(), amd64_get_longjmp_target(), amd64_x32_pseudo_register_type(), amd_dbgapi_register_type_to_gdb_type(), archpy_integer_type(), arm_neon_double_type(), arm_neon_quad_type(), arm_register_type(), arm_stap_parse_special_token(), expr::assign_component(), avr_register_type(), basic_type(), bfin_register_type(), binop_promote(), BP_MANIPULATION(), bpf_register_type(), bsd_uthread_read_memory_address(), build_d_types(), build_fortran_types(), build_go_types(), build_std_type_info_type(), builtin_type(), c_language_arch_info(), call_function_by_hand_dummy(), procfs_target::can_use_hw_breakpoint(), compile_cplus_convert_func(), compile_object_load(), compile_probe_arg(), convert_func(), convert_symbol_bmsym(), convert_symbol_bmsym(), convert_type_basic(), create_gdbtypes_data(), cris_register_type(), crisv32_register_type(), csky_register_type(), csky_vector_type(), darwin_current_sos(), darwin_load_image_infos(), darwin_read_exec_load_addr_from_dyld(), darwin_solib_read_all_image_info_addr(), dbx_lookup_type(), decode_base_type(), decode_type(), default_auxv_parse(), define_symbol(), die_type(), do_examine(), expr::internalvar_operation::do_generate_ax(), expr::unop_sizeof_operation::do_generate_ax(), expr::assign_modify_operation::do_generate_ax(), expr::logical_and_operation::do_generate_ax(), expr::logical_or_operation::do_generate_ax(), dtrace_process_dof_probe(), dwarf2_init_complex_target_type(), dwarf2_init_integer_type(), elf_gnu_ifunc_resolve_addr(), elf_gnu_ifunc_resolve_by_got(), elf_gnu_ifunc_resolver_return_stop(), elf_locate_base(), elf_rel_plt_read(), error_type(), eval_op_alignof(), eval_op_objc_msgcall(), eval_op_objc_selector(), eval_op_sub(), expr::objc_msgcall_operation::evaluate(), expr::var_value_operation::evaluate_for_sizeof(), expr::var_msym_value_operation::evaluate_for_sizeof(), expr::subscript_operation::evaluate_for_sizeof(), expr::unop_ind_base_operation::evaluate_for_sizeof(), evaluate_subexp_for_sizeof_base(), fbsd_get_thread_local_address(), dwarf_expr_context::fetch_result(), finalize_symtab(), find_command(), find_minsym_type_and_address(), float_type_from_length(), frv_register_type(), ft32_register_type(), gdb_bfd_scan_elf_dyntag(), gdbscm_arch_builtin_type(), gen_expr_binop_rest(), gen_integral_promotions(), generic_auxv_parse(), dwarf_expr_context::get_base_type(), ravenscar_thread_target::get_fpu_state(), get_gdb_vtable_type(), get_running_thread_id(), get_signed_type(), get_unsigned_type(), gnuv3_baseclass_offset(), gnuv3_decode_method_ptr(), gnuv3_make_method_ptr(), gnuv3_method_ptr_size(), h8300_register_type(), handle_stap_probe(), hppa32_convert_from_func_ptr_addr(), hppa32_register_type(), hppa64_register_type(), hppa_skip_trampoline_code(), i386_bnd_type(), i386_mmx_type(), i386_mpx_get_bt_entry(), i386_mpx_info_bounds(), i386_mpx_set_bounds(), i386_pseudo_register_read_into_value(), i386_pseudo_register_type(), i386_pseudo_register_write(), i386_stap_parse_special_token_three_arg_disp(), i386_stap_parse_special_token_triplet(), i386_ymm_type(), i386_zmm_type(), ia64_register_type(), iq2000_register_type(), call_site_target::iterate_over_addresses(), jit_read_code_entry(), jit_read_descriptor(), ada_language::language_arch_info(), cplus_language::language_arch_info(), pascal_language::language_arch_info(), rust_language::language_arch_info(), ld_so_xfer_auxv(), lm32_register_type(), lm_info_read(), locexpr_get_frame_base(), loclist_get_frame_base(), lookup_array_range_type(), lookup_child_selector(), lookup_objc_class(), m32r_register_type(), m68hc11_register_type(), m68k_register_type(), make_gdb_type(), mep_register_type(), mi_cmd_data_read_memory(), microblaze_register_type(), mips_print_fp_register(), mips_pseudo_register_type(), mips_register_type(), mn10300_register_type(), moxie_register_type(), msp430_register_type(), msp430x_register_type(), nbsd_get_siginfo_type(), nios2_register_type(), open_symbol_file_object(), parse_symbol(), ppscm_print_string_repr(), print_scalar_formatted(), print_string_repr(), printf_floating(), proc_watchpoint_address(), processInt(), procfs_address_to_host_pointer(), read_array_type(), read_range_type(), read_subroutine_type(), read_tag_string_type(), language_defn::read_var_value(), selftests::register_to_value_test(), resolve_msgsend(), resolve_msgsend_stret(), resolve_msgsend_super(), resolve_msgsend_super_stret(), riscv_arg_location(), riscv_fpreg_d_type(), riscv_pseudo_register_type(), riscv_register_type(), rs6000_aix_extract_ld_info(), rs6000_builtin_type(), rs6000_builtin_type_vec128(), rs6000_builtin_type_vec64(), rs6000_pseudo_register_type(), s12z_register_type(), s390_pseudo_register_type(), safe_parse_type(), set_next_address(), sh_default_register_type(), sh_sh2a_register_type(), sh_sh3e_register_type(), sh_sh4_register_type(), shell_internal_fn(), solib_svr4_r_brk(), solib_svr4_r_ldsomap(), solib_svr4_r_map(), solib_svr4_r_next(), sparc32_pseudo_register_type(), sparc32_register_type(), sparc64_pseudo_register_type(), sparc64_register_type(), stap_get_expected_argument_type(), stap_modify_semaphore(), stap_parse_register_operand(), stap_parse_single_operand(), svr4_auxv_parse(), tdesc_register_type(), tic6x_register_type(), tilegx_register_type(), unop_promote(), selftests::unpack::unpack_field_as_long_tests(), upgrade_type(), v850_register_type(), val_print_type_code_flags(), value_arg_coerce(), value_nsstring(), value_of_builtin_frame_fp_reg(), value_of_builtin_frame_pc_reg(), varobj_value_get_print_value(), vax_register_type(), vlscm_convert_bytevector(), vlscm_convert_number(), xstormy16_register_type(), xtensa_push_dummy_call(), xtensa_register_type(), and z80_register_type().

◆ builtin_type() [2/2]

const struct builtin_type * builtin_type ( struct objfile * objfile)

Return the type table for the specified objfile.

Definition at line 6180 of file gdbtypes.c.

References objfile::arch(), and builtin_type().

◆ can_create_complex_type()

bool can_create_complex_type ( struct type * target_type)

Definition at line 3439 of file gdbtypes.c.

References type::code(), and type::target_type().

Referenced by complex_binop(), and init_complex_type().

◆ can_dereference()

int can_dereference ( struct type * t)

Definition at line 3642 of file gdbtypes.c.

References check_typedef(), type::code(), and type::target_type().

Referenced by print_value_flags().

◆ check_stub_method()

static void check_stub_method ( struct type * type,
int method_id,
int signature_id )
static

◆ check_stub_method_group()

void check_stub_method_group ( struct type * type,
int method_id )

◆ check_typedef()

struct type * check_typedef ( struct type * type)

Definition at line 2966 of file gdbtypes.c.

References type::arch(), check_typedef(), type::code(), currently_reading_symtab, type::instance_flags(), type::is_stub(), type::length(), lookup_symbol(), lookup_transparent_type(), make_qualified_type(), name, type::name(), type_allocator::new_type(), type::objfile_owner(), opaque_type_resolution, type::set_length(), type::set_target_is_stub(), type::set_target_type(), STRUCT_DOMAIN, stub_noname_complaint(), block_symbol::symbol, type::target_is_stub(), type::target_type(), type, symbol::type(), TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL, TYPE_INSTANCE_FLAG_CODE_SPACE, TYPE_INSTANCE_FLAG_DATA_SPACE, TYPE_IS_OPAQUE, and update_static_array_size().

Referenced by aapcs_is_vfp_call_or_return_candidate_1(), aarch64_push_dummy_call(), aarch64_return_in_memory(), aarch64_type_align(), ada_array_bound(), ada_array_bound_from_type(), ada_array_length(), ada_check_typedef(), ada_get_field_index(), ada_is_redundant_index_type_desc(), ada_tasks_inferior_data_sniffer(), ada_val_print_ref(), ada_value_ptr_subscript(), expr::add_struct_fields(), add_symbol_overload_list_adl_namespace(), adjust_value_for_child_access(), value::allocate_lazy(), alpha_push_dummy_call(), amd64_classify_aggregate(), amd64_classify_aggregate_field(), amd64_has_unaligned_fields(), riscv_struct_info::analyse_inner(), arc_type_align(), arm_push_dummy_call(), arm_return_in_memory(), arm_type_align(), arm_vfp_abi_for_function(), arm_vfp_cprc_sub_candidate(), expr::ada_aggregate_operation::assign_aggregate(), expr::assign_component(), avr_push_dummy_call(), bfin_push_dummy_call(), binop_promote(), binop_types_user_defined_p(), BP_MANIPULATION(), BP_MANIPULATION(), bpfinishpy_init(), c_get_string(), c_is_string_type_p(), c_print_type_1(), c_print_typedef(), c_textual_element_type(), c_type_print_base_1(), c_value_of_variable(), c_value_print(), c_value_print_array(), c_value_print_inner(), c_value_print_ptr(), c_value_print_struct(), calculate_limited_array_length(), call_function_by_hand_dummy(), can_dereference(), can_use_hardware_watchpoint(), ppc_linux_nat_target::check_condition(), check_field(), check_parameter_typelist(), check_typedef(), check_types_equal(), cimag_internal_fn(), classify_inner_name(), classify_inner_name(), classify_type(), coerce_array(), coerce_pieced_ref(), coerce_ref(), coerce_ref_if_computed(), collection_list::collect_symbol(), common_val_print(), compile_cplus_convert_typedef(), compile_object_load(), expr::structop_base_operation::complete(), complex_binop(), compute_struct_member(), compute_vtable_size(), constrained_packed_array_type(), value::contents_eq(), expr::convert_char_literal(), compile_c_instance::convert_type(), cp_find_class_member(), cp_find_type_baseclass_by_name(), cp_lookup_bare_symbol(), cp_lookup_nested_symbol(), cp_lookup_nested_symbol_1(), cp_lookup_rtti_type(), cp_print_static_field(), cp_print_value(), cp_print_value_fields(), creal_internal_fn(), create_range_type(), create_value(), csky_push_dummy_call(), d_lookup_nested_symbol(), d_lookup_symbol(), d_value_print_inner(), decode_constrained_packed_array_type(), fortran_array_printer_impl::dimension_contents_eq(), distance_to_ancestor(), python_xmethod_worker::do_get_result_type(), do_ppc_sysv_return_value(), dwarf2_evaluate_property(), dynamic_array_type(), encode_actions_1(), entry_data_value_coerce_ref(), eval_multi_subscript(), eval_op_f_allocated(), eval_op_f_rank(), eval_op_ind(), eval_op_m2_high(), eval_op_m2_subscript(), eval_op_member(), eval_op_objc_msgcall(), eval_op_repeat(), eval_op_subscript(), expr::ada_concat_operation::evaluate(), expr::c_string_operation::evaluate(), expr::opencl_structop_operation::evaluate(), expr::opencl_logical_binop_operation::evaluate(), expr::opencl_ternop_cond_operation::evaluate(), expr::unop_ind_base_operation::evaluate(), expr::array_operation::evaluate(), expr::fortran_undetermined::evaluate(), expr::fortran_bound_2arg::evaluate(), expr::fortran_bound_3arg::evaluate(), expr::subscript_operation::evaluate_for_sizeof(), expr::unop_ind_base_operation::evaluate_for_sizeof(), expr::structop_member_base::evaluate_funcall(), expr::array_operation::evaluate_struct_tuple(), evaluate_subexp_for_address_base(), evaluate_subexp_for_sizeof_base(), expr::var_value_operation::evaluate_with_coercion(), f77_get_dynamic_length_of_aggregate(), f_language::f_type_print_base(), fake_method::fake_method(), value::fetch_lazy_memory(), value::fetch_lazy_register(), dwarf_expr_context::fetch_result(), find_array_element_type(), find_function_addr(), find_gnu_ifunc_target_type(), find_method(), find_method_list(), find_methods(), find_overload_match(), find_parallel_type_by_descriptive_type(), find_size_for_pointer_math(), find_symbol_in_baseclass(), finish_command(), fixed_point_binop(), type::fixed_point_type_base_type(), fortran_adjust_dynamic_array_base_address_hack(), fortran_array_offset_calculator::fortran_array_offset_calculator(), fortran_array_shape(), fortran_array_size(), fortran_associated(), fortran_bounds_all_dims(), fortran_bounds_for_dimension(), fortran_require_array(), fp_register_arg_p(), frv_push_dummy_call(), gccgo_string_p(), gdbpy_create_lazy_string_object(), gdbscm_type_sizeof(), gdbscm_type_strip_typedefs(), gdbscm_value_call(), gdbscm_value_dynamic_type(), gdbscm_value_referenced_value(), gdbscm_value_subscript(), gdbscm_value_to_bool(), gdbscm_value_to_bytevector(), gdbscm_value_to_integer(), gdbscm_value_to_lazy_string(), gdbscm_value_to_real(), gen_bitfield_ref(), gen_cast(), gen_deref(), gen_expr_binop_rest(), gen_int_literal(), gen_struct_ref(), gen_struct_ref_recursive(), gen_trace_static_fields(), gen_traced_pop(), gen_usual_arithmetic(), gen_var_ref(), expr::operation::generate_ax(), generate_register_struct(), generate_vla_size(), generic_val_print_array(), generic_val_print_ref(), generic_value_print(), generic_value_print_bool(), generic_value_print_char(), generic_value_print_memberptr(), generic_value_print_ptr(), get_baseclass_offset(), get_discrete_high_bound(), get_discrete_low_bound(), get_internalvar_integer(), get_out_value_type(), get_pointer_type_max(), get_regs_type(), get_return_value(), get_signed_type_minmax(), get_symbol_field_type(), get_target_type(), get_type(), get_unsigned_type_max(), get_value_at(), get_vptr_fieldno(), gnuv2_baseclass_offset(), gnuv2_value_rtti_type(), gnuv2_virtual_fn_field(), gnuv3_dynamic_class(), gnuv3_get_typeid(), gnuv3_get_vtable(), gnuv3_method_ptr_to_value(), gnuv3_pass_by_reference(), gnuv3_print_vtable(), gnuv3_rtti_type(), gnuv3_virtual_fn_field(), go_classify_struct_type(), hppa32_push_dummy_call(), i386_16_byte_align_p(), i386_darwin_arg_type_alignment(), i386_reg_struct_return_p(), i386_return_value(), i386_type_align(), i386_windows_push_dummy_call(), ia64_push_dummy_call(), indirect_pieced_value(), info_scope_command(), inspect_type(), internal_type_vptr_basetype(), internal_type_vptr_fieldno(), python_xmethod_worker::invoke(), is_copy_or_move_constructor_type(), is_dynamic_type_internal(), is_fixed_point_type(), is_float_or_hfa_type_recurse(), is_floating_type(), is_floating_value(), is_integral_or_integral_reference(), is_integral_type(), is_scalar_type(), is_scalar_type_recursive(), f_language::is_string_type_p(), go_language::is_string_type_p(), unknown_language::is_string_type_p(), m2_language::is_string_type_p(), rust_language::is_string_type_p(), is_unique_ancestor_worker(), list_arg_or_local(), lookup_function_type_with_arguments(), lookup_struct_elt(), lookup_symbol_aux(), lookup_typename(), loongarch_push_dummy_call(), lsscm_elt_type(), lsscm_safe_lazy_string_to_value(), lval_func_check_synthetic_pointer(), lval_func_read(), lval_func_write(), m2_get_discrete_bounds(), m2_print_array_contents(), m2_print_long_set(), m2_print_type(), m2_print_unbounded_array(), m68k_reg_struct_return_p(), m68k_svr4_return_value(), mi_simple_type_p(), mips_eabi_push_dummy_call(), mips_eabi_return_value(), mips_n32n64_fp_arg_chunk_p(), mips_n32n64_push_dummy_call(), mips_n32n64_return_value(), mips_o32_push_dummy_call(), mips_o64_push_dummy_call(), mn10300_type_align(), mn10300_use_struct_convention(), msp430_push_dummy_call(), nds32_check_calling_use_fpr(), nios2_push_dummy_call(), nios2_type_align(), opencl_component_ref(), opencl_logical_not(), opencl_relop(), opencl_value_cast(), or1k_push_dummy_call(), pack_long(), pack_unsigned_long(), pascal_object_print_static_field(), pascal_object_print_value(), pascal_object_print_value_fields(), pass_in_v_vfp_candidate(), ppc64_aggregate_candidate(), ppc64_sysv_abi_push_dummy_call(), ppc64_sysv_abi_push_param(), ppc64_sysv_abi_return_value(), ppc_sysv_abi_push_dummy_call(), ppc_sysv_use_opencl_abi(), value::primitive_field(), rust_language::print_enum(), print_formatted(), print_one_vtable(), print_return_value(), print_symbol(), go_language::print_type(), opencl_language::print_type(), pascal_language::print_type(), print_type_scalar(), f_language::print_typedef(), m2_language::print_typedef(), pascal_language::print_typedef(), rust_language::print_typedef(), print_unpacked_pointer(), print_variable_at_address(), pascal_language::printstr(), ptrmath_type_p(), py_print_type(), rank_one_type(), read_enumeration_type(), read_frame_register_value(), read_one_struct_field(), read_subrange_type(), read_tag_ptr_to_member_type(), language_defn::read_var_value(), require_rvalue(), resolve_dynamic_array_or_string(), resolve_dynamic_array_or_string_1(), resolve_dynamic_struct(), resolve_dynamic_type(), resolve_dynamic_type_internal(), resolve_dynamic_union(), riscv_push_dummy_call(), riscv_return_value(), riscv_type_align(), rs6000_lynx178_push_dummy_call(), rs6000_push_dummy_call(), rust_get_trait_object_pointer(), rust_internal_print_type(), rust_slice_to_array(), rust_subscript(), rust_val_print_slice(), rx_push_dummy_call(), s390_effective_inner_type(), s390_handle_arg(), s390_push_dummy_call(), s390_return_value(), s390_value_from_register(), scalar_binop(), struct_field_searcher::search(), search_struct_method(), set_internalvar(), set_type_vptr_basetype(), set_type_vptr_fieldno(), setting_cmd(), sh_is_renesas_calling_convention(), shell_internal_fn(), finish_command_fsm::should_stop(), slot_alignment_is_next_even(), sparc32_struct_return_from_sym(), sparc64_16_byte_align_p(), sparc64_extract_floating_fields(), sparc64_store_floating_fields(), sparc_arg_by_memory_p(), sparc_structure_return_p(), store_regs(), stpy_convert_to_value(), stpy_lazy_string_elt_type(), tic6x_arg_type_alignment(), tic6x_push_dummy_call(), tic6x_return_value(), tlb_value_read(), type_align(), type_name_or_error(), pascal_language::type_print_base(), type_to_type_object(), typecmp(), types_equal(), typy_fields_items(), typy_get_composite(), typy_get_sizeof(), typy_is_array_like(), typy_is_string_like(), typy_strip_typedefs(), typy_template_argument(), tyscm_get_composite(), unop_promote(), unop_user_defined_p(), unpack_bits_as_long(), unpack_long(), print_offset_data::update(), update_static_array_size(), update_watchpoint(), v850_eight_byte_align_p(), val_print_packed_array_elements(), val_print_scalar_type_p(), rust_language::val_print_struct(), valprint_check_validity(), valpy_binop_throw(), valpy_call(), valpy_float(), valpy_get_dynamic_type(), valpy_getitem(), valpy_lazy_string(), valpy_long(), valpy_nonzero(), valpy_referenced_value(), valpy_to_array(), value_actual_type(), value_addr(), value_arg_coerce(), value_args_as_target_float(), value_as_mpz(), value_assign(), value_assign_to_component(), value_binop(), value_cast(), value_cast_pointers(), value_cast_structs(), value_coerce_array(), value_coerce_to_target(), value_complement(), value_concat(), value_dynamic_cast(), value_equal(), value_equal_contents(), value_find_oload_method_list(), value_from_contents_and_address(), value_from_mpz(), value_from_pointer(), value_from_register(), value_has_field(), value_imaginary_part(), value_ind(), value_less(), value_logical_not(), value_must_coerce_to_target(), value_neg(), value_of_dwarf_reg_entry(), value_one(), value_pos(), rust_language::value_print(), value_print_array_elements(), f_language::value_print_inner(), go_language::value_print_inner(), m2_language::value_print_inner(), pascal_language::value_print_inner(), rust_language::value_print_inner(), value_print_scalar_formatted(), value_ptradd(), value_ptrdiff(), value_real_part(), value_ref(), value_reinterpret_cast(), value_rtti_indirect_type(), value_rtti_type(), value_slice(), value_struct_element_index(), value_struct_elt(), value_struct_elt_bitpos(), value_struct_elt_for_reference(), expr::fortran_undetermined::value_subarray(), value_subscript(), value_subscripted_rvalue(), value_to_array(), value_to_gdb_mpq(), value_vector_widen(), value_x_binop(), value_x_unop(), varobj_get_value_type(), vector_binop(), vector_relop(), vlscm_binop_gdbthrow(), vlscm_convert_bytevector(), fortran_array_walker< Impl >::walk_1(), language_defn::watch_location_expression(), ada_language::watch_location_expression(), rust_language::watch_location_expression(), whatis_exp(), xtensa_push_dummy_call(), and yyparse().

◆ check_types_equal()

static bool check_types_equal ( struct type * type1,
struct type * type2,
std::vector< type_equality_entry > * worklist )
static

◆ check_types_worklist()

static bool check_types_worklist ( std::vector< type_equality_entry > * worklist,
gdb::bcache * cache )
static

Definition at line 4315 of file gdbtypes.c.

References check_types_equal(), and gdb::bcache::insert().

Referenced by types_deeply_equal().

◆ class_or_union_p()

int class_or_union_p ( const struct type * t)

Definition at line 3747 of file gdbtypes.c.

References type::code().

Referenced by call_function_by_hand_dummy(), and get_call_return_value().

◆ class_types_same_p()

int class_types_same_p ( const struct type * a,
const struct type * b )

◆ compare_badness()

int compare_badness ( const badness_vector & a,
const badness_vector & b )

Definition at line 3976 of file gdbtypes.c.

References compare_ranks(), and INVALID_CONVERSION.

Referenced by find_oload_champ(), and find_overload_match().

◆ compare_maybe_null_strings()

static bool compare_maybe_null_strings ( const char * s,
const char * t )
static

Definition at line 4196 of file gdbtypes.c.

Referenced by check_types_equal().

◆ compare_ranks()

int compare_ranks ( struct rank a,
struct rank b )

Definition at line 3948 of file gdbtypes.c.

References rank::rank, and rank::subrank.

Referenced by classify_oload_match(), compare_badness(), and compare_parameters().

◆ compute_variant_fields()

static void compute_variant_fields ( struct type * type,
struct type * resolved_type,
struct property_addr_info * addr_stack,
const gdb::array_view< variant_part > & parts )
static

◆ compute_variant_fields_inner()

static void compute_variant_fields_inner ( struct type * type,
struct property_addr_info * addr_stack,
const variant_part & part,
std::vector< bool > & flags )
static

◆ compute_variant_fields_recurse()

static void compute_variant_fields_recurse ( struct type * type,
struct property_addr_info * addr_stack,
const variant & variant,
std::vector< bool > & flags,
bool enabled )
static

◆ copy_dynamic_prop_list()

static struct dynamic_prop_list * copy_dynamic_prop_list ( struct obstack * storage,
struct dynamic_prop_list * list )
static

◆ copy_type()

struct type * copy_type ( const struct type * type)

◆ copy_type_recursive()

struct type * copy_type_recursive ( struct type * type,
htab_t copied_types )

Definition at line 5502 of file gdbtypes.c.

References type::alloc_fields(), type::arch(), type::arch_owner(), field::bitsize(), type::bounds(), type::code(), copy_dynamic_prop_list(), copy_type_recursive(), main_type::dyn_prop_list, type::field(), FIELD_LOC_KIND_BITPOS, FIELD_LOC_KIND_DWARF_BLOCK, FIELD_LOC_KIND_ENUMVAL, FIELD_LOC_KIND_PHYSADDR, FIELD_LOC_KIND_PHYSNAME, type::fixed_point_info(), gdbarch_obstack(), INIT_CPLUS_SPECIFIC, INIT_FIXED_POINT_SPECIFIC, INIT_FUNC_SPECIFIC, INIT_GNAT_SPECIFIC, type::instance_flags(), field::is_artificial(), type::is_objfile_owned(), type::length(), field::loc_bitpos(), field::loc_dwarf_block(), field::loc_enumval(), field::loc_kind(), field::loc_physaddr(), field::loc_physname(), type::main_type, field::name(), type::name(), type_allocator::new_type(), new_type(), nullptr, type::num_fields(), fixed_point_type_info::scaling_factor, field::set_bitsize(), type::set_bounds(), type::set_instance_flags(), field::set_is_artificial(), type::set_length(), field::set_loc_bitpos(), field::set_loc_dwarf_block(), field::set_loc_enumval(), field::set_loc_physaddr(), field::set_loc_physname(), field::set_name(), type::set_name(), type::set_owner(), type::set_target_type(), field::set_type(), set_type_self_type(), type::target_type(), field::type(), type, TYPE_ALLOC, TYPE_CALLING_CONVENTION, TYPE_FLOATFORMAT, TYPE_MAIN_TYPE, TYPE_NO_RETURN, type_pair::type_pair(), TYPE_SELF_TYPE, TYPE_SPECIFIC_CPLUS_STUFF, TYPE_SPECIFIC_FIELD, TYPE_SPECIFIC_FIXED_POINT, TYPE_SPECIFIC_FLOATFORMAT, TYPE_SPECIFIC_FUNC, TYPE_SPECIFIC_GNAT_STUFF, TYPE_SPECIFIC_INT, TYPE_SPECIFIC_NONE, TYPE_SPECIFIC_SELF_TYPE, and TYPE_TAIL_CALL_LIST.

Referenced by copy_type_recursive(), create_copied_type_recursive(), typy_deleter::operator()(), value::preserve(), preserve_one_internalvar(), preserve_one_varobj(), and tyscm_copy_type_recursive().

◆ create_array_type()

struct type * create_array_type ( type_allocator & alloc,
struct type * element_type,
struct type * range_type )

◆ create_array_type_with_stride()

struct type * create_array_type_with_stride ( type_allocator & alloc,
struct type * element_type,
struct type * range_type,
struct dynamic_prop * byte_stride_prop,
unsigned int bit_stride )

◆ create_copied_types_hash()

htab_up create_copied_types_hash ( )

◆ create_gdbtypes_data()

static struct builtin_type * create_gdbtypes_data ( struct gdbarch * gdbarch)
static

Definition at line 5970 of file gdbtypes.c.

References builtin_type::builtin_bfloat16, builtin_type::builtin_bool, builtin_type::builtin_char, builtin_type::builtin_char16, builtin_type::builtin_char32, builtin_type::builtin_complex, builtin_type::builtin_core_addr, builtin_type::builtin_data_ptr, builtin_type::builtin_decdouble, builtin_type::builtin_decfloat, builtin_type::builtin_declong, builtin_type::builtin_double, builtin_type::builtin_double_complex, builtin_type::builtin_error, builtin_type::builtin_float, builtin_type::builtin_func_func, builtin_type::builtin_func_ptr, builtin_type::builtin_half, builtin_type::builtin_int, builtin_type::builtin_int0, builtin_type::builtin_int128, builtin_type::builtin_int16, builtin_type::builtin_int24, builtin_type::builtin_int32, builtin_type::builtin_int64, builtin_type::builtin_int8, builtin_type::builtin_long, builtin_type::builtin_long_double, builtin_type::builtin_long_long, builtin_type::builtin_short, builtin_type::builtin_signed_char, builtin_type::builtin_string, builtin_type::builtin_true_char, builtin_type::builtin_true_unsigned_char, builtin_type(), builtin_type::builtin_uint128, builtin_type::builtin_uint16, builtin_type::builtin_uint24, builtin_type::builtin_uint32, builtin_type::builtin_uint64, builtin_type::builtin_uint8, builtin_type::builtin_unsigned_char, builtin_type::builtin_unsigned_int, builtin_type::builtin_unsigned_long, builtin_type::builtin_unsigned_long_long, builtin_type::builtin_unsigned_short, builtin_type::builtin_void, builtin_type::builtin_wchar, gdbarch_addr_bit(), gdbarch_bfloat16_bit(), gdbarch_bfloat16_format(), gdbarch_char_signed(), gdbarch_double_bit(), gdbarch_double_format(), gdbarch_float_bit(), gdbarch_float_format(), gdbarch_half_bit(), gdbarch_half_format(), gdbarch_int_bit(), gdbarch_long_bit(), gdbarch_long_double_bit(), gdbarch_long_double_format(), gdbarch_long_long_bit(), gdbarch_short_bit(), gdbarch_wchar_bit(), gdbarch_wchar_signed(), init_boolean_type(), init_character_type(), init_complex_type(), init_decfloat_type(), init_float_type(), init_integer_type(), init_pointer_type(), type::instance_flags(), builtin_type::internal_fn, lookup_function_type(), lookup_pointer_type(), type_allocator::new_type(), builtin_type::nodebug_data_symbol, builtin_type::nodebug_got_plt_symbol, builtin_type::nodebug_text_gnu_ifunc_symbol, builtin_type::nodebug_text_symbol, builtin_type::nodebug_tls_symbol, builtin_type::nodebug_unknown_symbol, type::set_has_no_signedness(), type::set_instance_flags(), type::set_is_gnu_ifunc(), TYPE_INSTANCE_FLAG_NOTTEXT, and builtin_type::xmethod.

Referenced by builtin_type().

◆ create_range_type()

struct type * create_range_type ( type_allocator & alloc,
struct type * index_type,
const struct dynamic_prop * low_bound,
const struct dynamic_prop * high_bound,
LONGEST bias )

◆ create_range_type_with_stride()

struct type * create_range_type_with_stride ( type_allocator & alloc,
struct type * index_type,
const struct dynamic_prop * low_bound,
const struct dynamic_prop * high_bound,
LONGEST bias,
const struct dynamic_prop * stride,
bool byte_stride_p )

◆ create_set_type()

struct type * create_set_type ( type_allocator & alloc,
struct type * domain_type )

◆ create_static_range_type()

struct type * create_static_range_type ( type_allocator & alloc,
struct type * index_type,
LONGEST low_bound,
LONGEST high_bound )

◆ create_string_type()

struct type * create_string_type ( type_allocator & alloc,
struct type * string_char_type,
struct type * range_type )

Definition at line 1415 of file gdbtypes.c.

References create_array_type(), and type::set_code().

Referenced by read_tag_string_type().

◆ discrete_position()

gdb::optional< LONGEST > discrete_position ( struct type * type,
LONGEST val )

◆ distance_to_ancestor()

static int distance_to_ancestor ( struct type * base,
struct type * dclass,
int is_public )
static

◆ dump_dynamic_prop()

static void dump_dynamic_prop ( dynamic_prop const & prop)
static

◆ dump_fn_fieldlists()

static void dump_fn_fieldlists ( struct type * type,
int spaces )
static

◆ floatformat_from_type()

const struct floatformat * floatformat_from_type ( const struct type * type)

◆ get_array_bounds()

bool get_array_bounds ( struct type * type,
LONGEST * low_bound,
LONGEST * high_bound )

◆ get_discrete_bounds()

bool get_discrete_bounds ( struct type * type,
LONGEST * lowp,
LONGEST * highp )

◆ get_discrete_high_bound()

gdb::optional< LONGEST > get_discrete_high_bound ( struct type * type)

◆ get_discrete_low_bound()

gdb::optional< LONGEST > get_discrete_low_bound ( struct type * type)

◆ get_pointer_type_max()

CORE_ADDR get_pointer_type_max ( struct type * type)

Definition at line 1895 of file gdbtypes.c.

References check_typedef(), type::code(), and type::length().

Referenced by vlscm_convert_typed_number().

◆ get_signed_type_minmax()

void get_signed_type_minmax ( struct type * type,
LONGEST * min,
LONGEST * max )

◆ get_target_type()

struct type * get_target_type ( struct type * type)

This returns the target type (or NULL) of TYPE, also skipping past typedefs.

Definition at line 293 of file gdbtypes.c.

References check_typedef(), type::target_type(), and type.

Referenced by adjust_value_for_child_access(), c_describe_child(), c_number_of_children(), and varobj_get_value_type().

◆ get_unsigned_type_max()

ULONGEST get_unsigned_type_max ( struct type * type)

◆ get_vptr_fieldno()

int get_vptr_fieldno ( struct type * type,
struct type ** basetypep )

◆ has_static_range()

static bool has_static_range ( const struct range_bounds * bounds)
static

◆ init_boolean_type()

struct type * init_boolean_type ( type_allocator & alloc,
int bit,
int unsigned_p,
const char * name )

◆ init_character_type()

struct type * init_character_type ( type_allocator & alloc,
int bit,
int unsigned_p,
const char * name )

◆ init_complex_type()

struct type * init_complex_type ( const char * name,
struct type * target_type )

◆ init_decfloat_type()

struct type * init_decfloat_type ( type_allocator & alloc,
int bit,
const char * name )

Definition at line 3431 of file gdbtypes.c.

References bit, name, and type_allocator::new_type().

Referenced by create_gdbtypes_data(), and read_base_type().

◆ init_fixed_point_type()

struct type * init_fixed_point_type ( type_allocator & alloc,
int bit,
int unsigned_p,
const char * name )

Definition at line 3502 of file gdbtypes.c.

References bit, name, type_allocator::new_type(), and type::set_is_unsigned().

Referenced by read_base_type().

◆ init_float_type()

struct type * init_float_type ( type_allocator & alloc,
int bit,
const char * name,
const struct floatformat ** floatformats,
enum bfd_endian byte_order )

◆ init_integer_type()

struct type * init_integer_type ( type_allocator & alloc,
int bit,
int unsigned_p,
const char * name )

◆ init_pointer_type()

struct type * init_pointer_type ( type_allocator & alloc,
int bit,
const char * name,
struct type * target_type )

◆ init_vector_type()

struct type * init_vector_type ( struct type * elt_type,
int n )

◆ integer_types_same_name_p()

static int integer_types_same_name_p ( const char * first,
const char * second )
static

Definition at line 4077 of file gdbtypes.c.

Referenced by rank_one_type_parm_int().

◆ internal_type_self_type()

struct type * internal_type_self_type ( struct type * type)

◆ internal_type_vptr_basetype()

struct type * internal_type_vptr_basetype ( struct type * type)

◆ internal_type_vptr_fieldno()

int internal_type_vptr_fieldno ( struct type * type)

Definition at line 1915 of file gdbtypes.c.

References check_typedef(), type::code(), HAVE_CPLUS_STRUCT, and TYPE_RAW_CPLUS_SPECIFIC.

◆ is_ancestor()

int is_ancestor ( struct type * base,
struct type * dclass )

Definition at line 3818 of file gdbtypes.c.

References distance_to_ancestor().

Referenced by value_dynamic_cast().

◆ is_dynamic_type()

int is_dynamic_type ( struct type * type)

◆ is_dynamic_type_internal()

static int is_dynamic_type_internal ( struct type * type,
int top_level )
static

◆ is_fixed_point_type()

bool is_fixed_point_type ( struct type * type)

◆ is_floating_type()

int is_floating_type ( struct type * t)

◆ is_integral_type()

int is_integral_type ( struct type * t)

◆ is_nocall_function()

bool is_nocall_function ( const struct type * type)

Definition at line 3920 of file gdbtypes.c.

References type::code(), and TYPE_CALLING_CONVENTION.

Referenced by call_function_by_hand_dummy(), and get_return_value().

◆ is_public_ancestor()

int is_public_ancestor ( struct type * base,
struct type * dclass )

Definition at line 3827 of file gdbtypes.c.

References distance_to_ancestor().

Referenced by value_dynamic_cast().

◆ is_scalar_type()

int is_scalar_type ( struct type * type)

◆ is_scalar_type_recursive()

int is_scalar_type_recursive ( struct type * t)

◆ is_unique_ancestor()

int is_unique_ancestor ( struct type * base,
struct value * val )

◆ is_unique_ancestor_worker()

static int is_unique_ancestor_worker ( struct type * base,
struct type * dclass,
int * offset,
const gdb_byte * valaddr,
int embedded_offset,
CORE_ADDR address,
struct value * val )
static

◆ lookup_array_range_type()

struct type * lookup_array_range_type ( struct type * element_type,
LONGEST low_bound,
LONGEST high_bound )

◆ lookup_enum()

struct type * lookup_enum ( const char * name,
const struct block * block )

◆ lookup_function_type()

struct type * lookup_function_type ( struct type * type)

◆ lookup_function_type_with_arguments()

struct type * lookup_function_type_with_arguments ( struct type * type,
int nparams,
struct type ** param_types )

◆ lookup_lvalue_reference_type()

struct type * lookup_lvalue_reference_type ( struct type * type)

◆ lookup_memberptr_type()

struct type * lookup_memberptr_type ( struct type * type,
struct type * domain )

◆ lookup_methodptr_type()

struct type * lookup_methodptr_type ( struct type * to_type)

◆ lookup_pointer_type()

struct type * lookup_pointer_type ( struct type * type)

Definition at line 430 of file gdbtypes.c.

References make_pointer_type().

Referenced by aarch64_push_dummy_call(), aarch64_stap_parse_special_token(), ada_get_tsd_from_tag(), ada_tag_value_at_base_address(), ada_type_of_array(), ada_val_print_ref(), ada_value_ptr_subscript(), ada_varobj_ind(), dwarf2_cu::addr_type(), address_of_variable(), alpha_push_dummy_call(), arm_stap_parse_special_token(), call_function_by_hand_dummy(), check_stub_method(), compile_object_run(), create_gdbtypes_data(), decode_type(), define_symbol(), desc_bounds(), python_xmethod_worker::do_get_arg_types(), python_xmethod_worker::do_get_result_type(), do_module_cleanup(), eval_op_member(), eval_op_objc_msgcall(), expr::ada_unop_ind_operation::evaluate(), expr::var_value_operation::evaluate_for_address(), expr::var_msym_value_operation::evaluate_for_address(), expr::unop_memval_operation::evaluate_for_address(), expr::unop_memval_type_operation::evaluate_for_address(), expr::structop_base_operation::evaluate_funcall(), expr::structop_member_base::evaluate_funcall(), evaluate_subexp_for_address_base(), expr::var_value_operation::evaluate_with_coercion(), fbsd_get_siginfo_type(), find_function_in_inferior(), type_stack::follow_types(), gdbscm_type_pointer(), gdbscm_value_dynamic_type(), gen_address_of(), gen_usual_unary(), ravenscar_thread_target::get_fpu_state(), gnuv2_virtual_fn_field(), gnuv3_baseclass_offset(), gnuv3_get_virtual_fn(), gnuv3_get_vtable(), gnuv3_method_ptr_to_value(), i386_stap_parse_special_token_three_arg_disp(), i386_stap_parse_special_token_triplet(), python_xmethod_worker::invoke(), ada_language::language_arch_info(), linux_get_siginfo_type_with_fields(), nbsd_get_siginfo_type(), rust_parser::parse_function_type(), rust_parser::parse_pointer_type(), rust_parser::parse_slice_type(), ppc_sysv_get_return_buf_addr(), quirk_ada_thick_pointer(), quirk_ada_thick_pointer_struct(), read_tag_pointer_type(), language_defn::read_var_value(), resolve_dynamic_struct(), rust_get_trait_object_pointer(), rust_slice_type(), sect_variable_value(), sparc32_store_arguments(), sparc64_store_arguments(), stap_parse_register_operand(), thin_data_pntr(), typy_lookup_type(), typy_pointer(), upgrade_type(), valpy_get_dynamic_type(), valpy_getitem(), value_addr(), value_arg_coerce(), value_coerce_array(), value_coerce_function(), value_fn_field(), value_nsstring(), value_reinterpret_cast(), value_rtti_indirect_type(), value_struct_elt_for_reference(), windows_get_tlb_type(), x_command(), and yyparse().

◆ lookup_reference_type()

struct type * lookup_reference_type ( struct type * type,
enum type_code refcode )

◆ lookup_rvalue_reference_type()

struct type * lookup_rvalue_reference_type ( struct type * type)

Definition at line 526 of file gdbtypes.c.

References lookup_reference_type().

Referenced by type_stack::follow_types(), typy_lookup_type(), and valpy_getitem().

◆ lookup_signed_typename()

struct type * lookup_signed_typename ( const struct language_defn * language,
const char * name )

Definition at line 1685 of file gdbtypes.c.

References lookup_typename(), and name.

Referenced by binop_promote(), and yyparse().

◆ lookup_string_range_type()

struct type * lookup_string_range_type ( struct type * string_char_type,
LONGEST low_bound,
LONGEST high_bound )

Definition at line 1427 of file gdbtypes.c.

References lookup_array_range_type(), and type::set_code().

Referenced by value_string().

◆ lookup_struct()

struct type * lookup_struct ( const char * name,
const struct block * block )

◆ lookup_struct_elt()

struct_elt lookup_struct_elt ( struct type * type,
const char * name,
int noerr )

◆ lookup_struct_elt_type()

struct type * lookup_struct_elt_type ( struct type * type,
const char * name,
int noerr )

◆ lookup_template_type()

struct type * lookup_template_type ( const char * name,
struct type * type,
const struct block * block )

Definition at line 1764 of file gdbtypes.c.

References type::code(), lookup_symbol(), name, type::name(), block_symbol::symbol, symbol::type(), and VAR_DOMAIN.

Referenced by yyparse().

◆ lookup_typename()

struct type * lookup_typename ( const struct language_defn * language,
const char * name,
const struct block * block,
int noerr )

◆ lookup_union()

struct type * lookup_union ( const char * name,
const struct block * block )

◆ lookup_unsigned_typename()

struct type * lookup_unsigned_typename ( const struct language_defn * language,
const char * name )

Definition at line 1673 of file gdbtypes.c.

References lookup_typename(), and name.

Referenced by binop_promote(), and yyparse().

◆ make_atomic_type()

struct type * make_atomic_type ( struct type * type)

◆ make_cv_type()

struct type * make_cv_type ( int cnst,
int voltl,
struct type * type,
struct type ** typeptr )

◆ make_function_type()

struct type * make_function_type ( struct type * type,
struct type ** typeptr )

◆ make_pointer_type()

struct type * make_pointer_type ( struct type * type,
struct type ** typeptr )

◆ make_qualified_type()

static struct type * make_qualified_type ( struct type * type,
type_instance_flags new_flags,
struct type * storage )
static

◆ make_reference_type()

struct type * make_reference_type ( struct type * type,
struct type ** typeptr,
enum type_code refcode )

◆ make_restrict_type()

struct type * make_restrict_type ( struct type * type)

◆ make_type_with_address_space()

struct type * make_type_with_address_space ( struct type * type,
type_instance_flags space_flag )

◆ make_unqualified_type()

struct type * make_unqualified_type ( struct type * type)

◆ make_vector_type()

void make_vector_type ( struct type * array_type)

◆ operator==() [1/2]

bool operator== ( const dynamic_prop & l,
const dynamic_prop & r )

◆ operator==() [2/2]

bool operator== ( const range_bounds & l,
const range_bounds & r )

Definition at line 920 of file gdbtypes.c.

References FIELD_EQ.

◆ print_args()

static void print_args ( struct field * args,
int nargs,
int spaces )
static

◆ print_bit_vector()

static void print_bit_vector ( B_TYPE * bits,
int nbits )
static

Definition at line 4889 of file gdbtypes.c.

References B_TST, bits, gdb_printf(), and gdb_puts().

Referenced by print_cplus_stuff().

◆ print_cplus_stuff()

static void print_cplus_stuff ( struct type * type,
int spaces )
static

◆ print_fixed_point_type_info()

static void print_fixed_point_type_info ( struct type * type,
int spaces )
static

Definition at line 5071 of file gdbtypes.c.

References type::fixed_point_scaling_factor(), gdb_printf(), and gdb_mpq::str().

Referenced by recursive_dump_type().

◆ print_gnat_stuff()

static void print_gnat_stuff ( struct type * type,
int spaces )
static

Definition at line 5054 of file gdbtypes.c.

References gdb_printf(), recursive_dump_type(), and TYPE_DESCRIPTIVE_TYPE.

Referenced by recursive_dump_type().

◆ rank_function()

badness_vector rank_function ( gdb::array_view< type * > parms,
gdb::array_view< value * > args )

◆ rank_one_type()

struct rank rank_one_type ( struct type * parm,
struct type * arg,
struct value * value )

◆ rank_one_type_parm_array()

static struct rank rank_one_type_parm_array ( struct type * parm,
struct type * arg,
struct value * value )
static

Definition at line 4453 of file gdbtypes.c.

References type::code(), INCOMPATIBLE_TYPE_BADNESS, rank_one_type(), and type::target_type().

Referenced by rank_one_type().

◆ rank_one_type_parm_bool()

static struct rank rank_one_type_parm_bool ( struct type * parm,
struct type * arg,
struct value * value )
static

◆ rank_one_type_parm_char()

static struct rank rank_one_type_parm_char ( struct type * parm,
struct type * arg,
struct value * value )
static

◆ rank_one_type_parm_complex()

static struct rank rank_one_type_parm_complex ( struct type * parm,
struct type * arg,
struct value * value )
static

◆ rank_one_type_parm_enum()

static struct rank rank_one_type_parm_enum ( struct type * parm,
struct type * arg,
struct value * value )
static

◆ rank_one_type_parm_float()

static struct rank rank_one_type_parm_float ( struct type * parm,
struct type * arg,
struct value * value )
static

◆ rank_one_type_parm_func()

static struct rank rank_one_type_parm_func ( struct type * parm,
struct type * arg,
struct value * value )
static

Definition at line 4469 of file gdbtypes.c.

References type::code(), INCOMPATIBLE_TYPE_BADNESS, rank_one_type(), and type::target_type().

Referenced by rank_one_type().

◆ rank_one_type_parm_int()

static struct rank rank_one_type_parm_int ( struct type * parm,
struct type * arg,
struct value * value )
static

◆ rank_one_type_parm_ptr()

static struct rank rank_one_type_parm_ptr ( struct type * parm,
struct type * arg,
struct value * value )
static

◆ rank_one_type_parm_range()

static struct rank rank_one_type_parm_range ( struct type * parm,
struct type * arg,
struct value * value )
static

◆ rank_one_type_parm_set()

static struct rank rank_one_type_parm_set ( struct type * parm,
struct type * arg,
struct value * value )
static

Definition at line 4753 of file gdbtypes.c.

References type::code(), type::field(), INCOMPATIBLE_TYPE_BADNESS, rank_one_type(), and field::type().

Referenced by rank_one_type().

◆ rank_one_type_parm_struct()

static struct rank rank_one_type_parm_struct ( struct type * parm,
struct type * arg,
struct value * value )
static

◆ recursive_dump_type()

void recursive_dump_type ( struct type * type,
int spaces )

Definition at line 5103 of file gdbtypes.c.

References type::arch_owner(), type::bit_offset(), type::bit_size(), type::bit_size_differs_p(), field::bitsize(), type::bounds(), type::code(), dont_print_type_obstack, dump_dynamic_prop(), type::endianity_is_not_default(), type::field(), type::fields(), gdb_printf(), gdb_puts(), type::has_no_signedness(), type::has_varargs(), HAVE_CPLUS_STRUCT, range_bounds::high, type::instance_flags(), type::is_fixed_instance(), type::is_objfile_owned(), type::is_prototyped(), type::is_stub(), type::is_unsigned(), type::is_vector(), type::length(), field::loc_bitpos(), field::loc_enumval(), range_bounds::low, name, field::name(), type::name(), type::num_fields(), type::objfile_owner(), print_cplus_stuff(), print_fixed_point_type_info(), print_gnat_stuff(), recursive_dump_type(), type::stub_is_supported(), type::target_is_stub(), type::target_type(), field::type(), TYPE_ADDRESS_CLASS_1, TYPE_ADDRESS_CLASS_2, TYPE_ALLOCATED_PROP, TYPE_ASSOCIATED_PROP, TYPE_ATOMIC, TYPE_CALLING_CONVENTION, TYPE_CHAIN, TYPE_CODE_SPACE, TYPE_CODE_UNDEF, TYPE_CONST, TYPE_CPLUS_SPECIFIC, TYPE_DATA_SPACE, TYPE_FLOATFORMAT, TYPE_GNAT_SPECIFIC, TYPE_NFN_FIELDS, TYPE_NOTTEXT, TYPE_POINTER_TYPE, TYPE_REFERENCE_TYPE, TYPE_RESTRICT, TYPE_SELF_TYPE, TYPE_SPECIFIC_CPLUS_STUFF, TYPE_SPECIFIC_FIELD, TYPE_SPECIFIC_FIXED_POINT, TYPE_SPECIFIC_FLOATFORMAT, TYPE_SPECIFIC_FUNC, TYPE_SPECIFIC_GNAT_STUFF, TYPE_SPECIFIC_INT, TYPE_SPECIFIC_SELF_TYPE, and TYPE_VOLATILE.

Referenced by dump_fn_fieldlists(), maintenance_print_type(), print_args(), print_cplus_stuff(), print_gnat_stuff(), and recursive_dump_type().

◆ replace_type()

void replace_type ( struct type * ntype,
struct type * type )

◆ resolve_dynamic_array_or_string()

static struct type * resolve_dynamic_array_or_string ( struct type * type,
struct property_addr_info * addr_stack,
const frame_info_ptr & frame )
static

◆ resolve_dynamic_array_or_string_1()

static struct type * resolve_dynamic_array_or_string_1 ( struct type * type,
struct property_addr_info * addr_stack,
const frame_info_ptr & frame,
int rank,
bool resolve_p )
static

◆ resolve_dynamic_range()

static struct type * resolve_dynamic_range ( struct type * dyn_range_type,
struct property_addr_info * addr_stack,
const frame_info_ptr & frame,
int rank,
bool resolve_p = true )
static

◆ resolve_dynamic_struct()

static struct type * resolve_dynamic_struct ( struct type * type,
struct property_addr_info * addr_stack,
const frame_info_ptr & frame )
static

◆ resolve_dynamic_type()

struct type * resolve_dynamic_type ( struct type * type,
gdb::array_view< const gdb_byte > valaddr,
CORE_ADDR addr,
const frame_info_ptr * frame = nullptr )

Resolve all dynamic values of a type e.g. array bounds to static values. ADDR specifies the location of the variable the type is bound to. If TYPE has no dynamic properties return TYPE; otherwise a new type with static properties is returned.

If FRAME is given, it is used when evaluating dynamic properties. This can be important when a static link is seen. If not given, the selected frame is used.

For an array type, if the element type is dynamic, then that will not be resolved. This is done because each individual element may have a different type when resolved (depending on the contents of memory). In this situation, 'is_dynamic_type' will still return true for the return value of this function.

Definition at line 2857 of file gdbtypes.c.

References property_addr_info::addr, check_typedef(), resolve_dynamic_type_internal(), and property_addr_info::valaddr.

Referenced by ada_discrete_type_high_bound(), ada_discrete_type_low_bound(), ada_value_primitive_packed_val(), ada_value_print_inner(), decode_constrained_packed_array(), expr::fortran_structop_operation::evaluate(), expr::rust_struct_anon::evaluate(), expr::rust_structop::evaluate(), rust_language::print_enum(), language_defn::read_var_value(), readjust_indirect_value_type(), value_from_contents_and_address(), value_subscripted_rvalue(), value_tag_from_contents_and_address(), and fortran_array_walker< Impl >::walk_1().

◆ resolve_dynamic_type_internal()

static struct type * resolve_dynamic_type_internal ( struct type * type,
struct property_addr_info * addr_stack,
const frame_info_ptr & frame,
int top_level )
static

◆ resolve_dynamic_union()

static struct type * resolve_dynamic_union ( struct type * type,
struct property_addr_info * addr_stack,
const frame_info_ptr & frame )
static

◆ safe_parse_type()

static struct type * safe_parse_type ( struct gdbarch * gdbarch,
const char * p,
int length )
static

◆ set_type_align()

bool set_type_align ( struct type * type,
ULONGEST align )

Set the alignment of the type. The alignment must be a power of

  1. Returns false if the given value does not fit in the available space in struct type.

Definition at line 3619 of file gdbtypes.c.

References type::align_log2, and TYPE_ALIGN_BITS.

Referenced by maybe_set_alignment(), read_enumeration_type(), and read_tag_pointer_type().

◆ set_type_code()

static void set_type_code ( struct type * type,
enum type_code code )
static

◆ set_type_self_type()

void set_type_self_type ( struct type * type,
struct type * self_type )

◆ set_type_vptr_basetype()

void set_type_vptr_basetype ( struct type * type,
struct type * basetype )

◆ set_type_vptr_fieldno()

void set_type_vptr_fieldno ( struct type * type,
int fieldno )

◆ show_opaque_type_resolution()

static void show_opaque_type_resolution ( struct ui_file * file,
int from_tty,
struct cmd_list_element * c,
const char * value )
static

Definition at line 149 of file gdbtypes.c.

References gdb_printf().

◆ show_overload_debug()

static void show_overload_debug ( struct ui_file * file,
int from_tty,
struct cmd_list_element * c,
const char * value )
static

Definition at line 161 of file gdbtypes.c.

References gdb_printf().

◆ show_strict_type_checking()

static void show_strict_type_checking ( struct ui_file * file,
int from_tty,
struct cmd_list_element * c,
const char * value )
static

Definition at line 171 of file gdbtypes.c.

References gdb_printf().

◆ smash_to_memberptr_type()

void smash_to_memberptr_type ( struct type * type,
struct type * self_type,
struct type * to_type )

◆ smash_to_method_type()

void smash_to_method_type ( struct type * type,
struct type * self_type,
struct type * to_type,
struct field * args,
int nargs,
int varargs )

◆ smash_to_methodptr_type()

void smash_to_methodptr_type ( struct type * type,
struct type * to_type )

◆ smash_type()

static void smash_type ( struct type * type)
static

◆ stub_noname_complaint()

static void stub_noname_complaint ( void )
static

Definition at line 2021 of file gdbtypes.c.

References complaint.

Referenced by check_typedef().

◆ sum_ranks()

struct rank sum_ranks ( struct rank a,
struct rank b )

Definition at line 3934 of file gdbtypes.c.

References rank::rank, and rank::subrank.

Referenced by rank_one_type(), rank_one_type_parm_ptr(), and rank_one_type_parm_struct().

◆ type_align()

unsigned type_align ( struct type * type)

Return the alignment of the type in target addressable memory units. Return 0 if the alignment cannot be determined; but note that this makes an effort to compute the alignment even it it was not specified in the debug info.

Definition at line 3527 of file gdbtypes.c.

References type::arch(), check_typedef(), type::code(), type::field(), gdbarch_type_align(), field::is_static(), type::num_fields(), type::target_type(), field::type(), type_align(), type_length_units(), and type_raw_align().

Referenced by amd64_has_unaligned_fields(), arm_push_dummy_call(), eval_op_alignof(), jit_read_code_entry(), loongarch_push_dummy_call(), m68k_reg_struct_return_p(), nds32_push_dummy_call(), pass_on_stack(), quirk_ada_thick_pointer(), riscv_arg_location(), rust_composite_type(), set_gdbarch_type_align(), type_align(), and typy_get_alignof().

◆ type_byte_order()

enum bfd_endian type_byte_order ( const struct type * type)

When the type includes explicit byte ordering, return that. Otherwise, the byte ordering from gdbarch_byte_order for the type's arch is returned.

Definition at line 3900 of file gdbtypes.c.

References type::arch(), type::endianity_is_not_default(), and gdbarch_byte_order().

Referenced by ada_val_print_string(), ada_value_assign(), ada_value_primitive_packed_val(), address_to_signed_pointer(), c_get_string(), c_value_print_array(), value::contents_copy_raw_bitwise(), cp_print_class_member(), darwin_current_sos(), decode_constrained_packed_array(), default_print_one_register_info(), default_value_from_register(), fixed_point_binop(), value::from_component_bitsize(), generic_emit_char(), generic_printstr(), generic_val_print_fixed_point(), f_language::get_encoding(), gnuv3_make_method_ptr(), match_endianness(), modify_field(), pack_long(), pack_unsigned_long(), ppc64_sysv_abi_return_value_base(), print_scalar_formatted(), pascal_language::printstr(), printstr(), processInt(), language_defn::read_var_value(), riscv_print_one_register_info(), riscv_return_value(), rw_pieced_value(), scalar_binop(), signed_pointer_to_address(), solib_svr4_r_ldsomap(), solib_svr4_r_next(), stap_modify_semaphore(), target_float_same_format_p(), value::unpack_bitfield(), unpack_bits_as_long(), unpack_long(), unsigned_address_to_pointer(), unsigned_pointer_to_address(), val_print_string(), value_as_mpz(), value_assign_to_component(), value_bit_index(), value_cast(), value_cast_to_fixed_point(), value_from_mpz(), value_pointer(), pascal_language::value_print_inner(), and value_to_gdb_mpq().

◆ type_length_units()

unsigned int type_length_units ( struct type * type)

◆ type_name_or_error()

const char * type_name_or_error ( struct type * type)

◆ type_not_allocated()

int type_not_allocated ( const struct type * type)

◆ type_not_associated()

int type_not_associated ( const struct type * type)

◆ type_pair_eq()

static int type_pair_eq ( const void * item_lhs,
const void * item_rhs )
static

Definition at line 5452 of file gdbtypes.c.

References type_pair::old.

Referenced by create_copied_types_hash().

◆ type_pair_hash()

static hashval_t type_pair_hash ( const void * item)
static

Definition at line 5444 of file gdbtypes.c.

References type_pair::old.

Referenced by create_copied_types_hash().

◆ type_raw_align()

unsigned type_raw_align ( struct type * type)

Return the alignment of the type in target addressable memory units, or 0 if no alignment was specified.

Definition at line 3517 of file gdbtypes.c.

References type::align_log2.

Referenced by type_align().

◆ types_deeply_equal()

bool types_deeply_equal ( struct type * type1,
struct type * type2 )

◆ types_equal()

bool types_equal ( struct type * a,
struct type * b )

◆ update_static_array_size()

static bool update_static_array_size ( struct type * type)
static

◆ verify_floatformat()

static int verify_floatformat ( int bit,
const struct floatformat * floatformat )
static

Definition at line 3328 of file gdbtypes.c.

References bit.

Referenced by init_float_type().

Variable Documentation

◆ BASE_CONVERSION_BADNESS

const struct rank BASE_CONVERSION_BADNESS = {2,0}

Badness of converting derived to base class.

Definition at line 73 of file gdbtypes.c.

Referenced by rank_one_type_parm_struct().

◆ BASE_PTR_CONVERSION_BADNESS

const struct rank BASE_PTR_CONVERSION_BADNESS = {1,0}

Badness of converting a derived class pointer to a base class pointer.

Definition at line 66 of file gdbtypes.c.

Referenced by rank_one_type_parm_ptr().

◆ BOOL_CONVERSION_BADNESS

const struct rank BOOL_CONVERSION_BADNESS = {3,0}

Badness of conversion to boolean.

Definition at line 72 of file gdbtypes.c.

Referenced by rank_one_type_parm_bool().

◆ cplus_struct_default

const struct cplus_struct_type cplus_struct_default = { }

The default value of TYPE_CPLUS_SPECIFIC(T) points to this shared static structure.

Definition at line 3291 of file gdbtypes.c.

Referenced by allocate_cplus_struct_type().

◆ CV_CONVERSION_BADNESS

const struct rank CV_CONVERSION_BADNESS = {1, 0}

Badness of cv-conversion. Subrank is a flag describing the conversions being done.

Definition at line 67 of file gdbtypes.c.

Referenced by rank_one_type(), and rank_one_type_parm_ptr().

◆ dont_print_type_obstack

struct obstack dont_print_type_obstack
static

Definition at line 5077 of file gdbtypes.c.

Referenced by recursive_dump_type().

◆ EXACT_MATCH_BADNESS

const struct rank EXACT_MATCH_BADNESS = {0,0}

◆ fixed_point_objfile_key

const struct registry< objfile >::key<fixed_point_type_storage> fixed_point_objfile_key
static

Definition at line 5829 of file gdbtypes.c.

Referenced by allocate_fixed_point_type_info().

◆ FLOAT_CONVERSION_BADNESS

const struct rank FLOAT_CONVERSION_BADNESS = {2,0}

Badness of floating conversion.

Definition at line 69 of file gdbtypes.c.

Referenced by rank_one_type_parm_float().

◆ FLOAT_PROMOTION_BADNESS

const struct rank FLOAT_PROMOTION_BADNESS = {1,0}

Badness of floating promotion.

Definition at line 65 of file gdbtypes.c.

Referenced by rank_one_type_parm_complex(), and rank_one_type_parm_float().

◆ floatformats_arm_ext

const struct floatformat* floatformats_arm_ext[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_arm_ext_big,
&floatformat_arm_ext_littlebyte_bigword
}

Definition at line 109 of file gdbtypes.c.

Referenced by arm_ext_type(), and make_gdb_type().

◆ floatformats_bfloat16

const struct floatformat* floatformats_bfloat16[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_bfloat16_big,
&floatformat_bfloat16_little
}

Definition at line 129 of file gdbtypes.c.

Referenced by i386_gdbarch_init(), and make_gdb_type().

◆ floatformats_i387_ext

const struct floatformat* floatformats_i387_ext[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_i387_ext,
&floatformat_i387_ext
}

Definition at line 101 of file gdbtypes.c.

Referenced by i386_gdbarch_init(), ia64_gdbarch_init(), and make_gdb_type().

◆ floatformats_ia64_spill

const struct floatformat* floatformats_ia64_spill[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_ia64_spill_big,
&floatformat_ia64_spill_little
}

Definition at line 113 of file gdbtypes.c.

◆ floatformats_ibm_long_double

const struct floatformat* floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_ibm_long_double_big,
&floatformat_ibm_long_double_little
}

Definition at line 125 of file gdbtypes.c.

Referenced by do_ppc_sysv_return_value(), mips_gdbarch_init(), ppc64_sysv_abi_push_freg(), ppc64_sysv_abi_return_value_base(), ppc_floatformat_for_type(), ppc_linux_init_abi(), and ppc_sysv_abi_push_dummy_call().

◆ floatformats_ieee_double

const struct floatformat* floatformats_ieee_double[BFD_ENDIAN_UNKNOWN]

◆ floatformats_ieee_double_littlebyte_bigword

const struct floatformat* floatformats_ieee_double_littlebyte_bigword[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_ieee_double_big,
&floatformat_ieee_double_littlebyte_bigword
}

Definition at line 97 of file gdbtypes.c.

Referenced by arm_gdbarch_init(), and sh_littlebyte_bigword_type().

◆ floatformats_ieee_half

const struct floatformat* floatformats_ieee_half[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_ieee_half_big,
&floatformat_ieee_half_little
}

Definition at line 81 of file gdbtypes.c.

Referenced by opencl_language::language_arch_info(), and make_gdb_type().

◆ floatformats_ieee_quad

const struct floatformat* floatformats_ieee_quad[BFD_ENDIAN_UNKNOWN]

◆ floatformats_ieee_single

const struct floatformat* floatformats_ieee_single[BFD_ENDIAN_UNKNOWN]

◆ floatformats_m68881_ext

const struct floatformat* floatformats_m68881_ext[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_m68881_ext,
&floatformat_m68881_ext
}

Definition at line 105 of file gdbtypes.c.

Referenced by m68881_ext_type(), and m68k_gdbarch_init().

◆ floatformats_vax_d

const struct floatformat* floatformats_vax_d[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_vax_d,
&floatformat_vax_d
}

Definition at line 121 of file gdbtypes.c.

Referenced by vax_gdbarch_init().

◆ floatformats_vax_f

const struct floatformat* floatformats_vax_f[BFD_ENDIAN_UNKNOWN]
Initial value:
= {
&floatformat_vax_f,
&floatformat_vax_f
}

Definition at line 117 of file gdbtypes.c.

Referenced by vax_gdbarch_init().

◆ gdbtypes_data

const registry<gdbarch>::key<struct builtin_type> gdbtypes_data
static

Definition at line 5967 of file gdbtypes.c.

Referenced by builtin_type().

◆ gnat_aux_default

const struct gnat_aux_type gnat_aux_default
Initial value:
=
{ NULL }

Definition at line 3307 of file gdbtypes.c.

Referenced by allocate_gnat_aux_type().

◆ INCOMPATIBLE_TYPE_BADNESS

const struct rank INCOMPATIBLE_TYPE_BADNESS = {INVALID_CONVERSION,0}

◆ INT_FLOAT_CONVERSION_BADNESS

const struct rank INT_FLOAT_CONVERSION_BADNESS = {2,0}

Badness of integer<->floating conversions.

Definition at line 70 of file gdbtypes.c.

Referenced by rank_one_type_parm_char(), rank_one_type_parm_enum(), rank_one_type_parm_float(), rank_one_type_parm_int(), and rank_one_type_parm_range().

◆ INTEGER_CONVERSION_BADNESS

const struct rank INTEGER_CONVERSION_BADNESS = {2,0}

Badness of integral conversion.

Definition at line 68 of file gdbtypes.c.

Referenced by rank_one_type_parm_char(), rank_one_type_parm_enum(), rank_one_type_parm_int(), and rank_one_type_parm_range().

◆ INTEGER_PROMOTION_BADNESS

const struct rank INTEGER_PROMOTION_BADNESS = {1,0}

Badness of integral promotion.

Definition at line 64 of file gdbtypes.c.

Referenced by rank_one_type_parm_char(), and rank_one_type_parm_int().

◆ LENGTH_MISMATCH_BADNESS

const struct rank LENGTH_MISMATCH_BADNESS = {INVALID_CONVERSION,0}

Badness if parameter list length doesn't match arg list length.

Definition at line 57 of file gdbtypes.c.

Referenced by rank_function().

◆ NS_INTEGER_POINTER_CONVERSION_BADNESS

const struct rank NS_INTEGER_POINTER_CONVERSION_BADNESS = {3,0}

Badness of converting a (non-zero) integer constant to a pointer.

Definition at line 78 of file gdbtypes.c.

Referenced by rank_one_type_parm_ptr().

◆ NS_POINTER_CONVERSION_BADNESS

const struct rank NS_POINTER_CONVERSION_BADNESS = {10,0}

Converting a pointer to an int is usually OK.

Definition at line 77 of file gdbtypes.c.

Referenced by classify_oload_match(), and rank_one_type_parm_int().

◆ NULL_POINTER_CONVERSION_BADNESS

const struct rank NULL_POINTER_CONVERSION_BADNESS = {2,0}

Definition at line 76 of file gdbtypes.c.

Referenced by rank_one_type_parm_ptr().

◆ opaque_type_resolution

bool opaque_type_resolution = true
static

Definition at line 136 of file gdbtypes.c.

Referenced by check_typedef().

◆ overload_debug

unsigned int overload_debug = 0

Definition at line 140 of file gdbtypes.c.

Referenced by find_oload_champ(), and rank_one_type().

◆ REFERENCE_CONVERSION_BADNESS

const struct rank REFERENCE_CONVERSION_BADNESS = {2,0}

Badness of converting from non-reference to reference. Subrank is the type of reference conversion being done.

Definition at line 74 of file gdbtypes.c.

Referenced by rank_one_type().

◆ REFERENCE_SEE_THROUGH_BADNESS

const struct rank REFERENCE_SEE_THROUGH_BADNESS = {0,1}

Definition at line 75 of file gdbtypes.c.

Referenced by rank_one_type().

◆ strict_type_checking

bool strict_type_checking = true
static

Definition at line 144 of file gdbtypes.c.

Referenced by rank_one_type_parm_ptr().

◆ TOO_FEW_PARAMS_BADNESS

const struct rank TOO_FEW_PARAMS_BADNESS = {INVALID_CONVERSION,0}

Dummy badness value for nonexistent parameter positions.

Definition at line 59 of file gdbtypes.c.

Referenced by rank_function().

◆ VOID_PTR_CONVERSION_BADNESS

const struct rank VOID_PTR_CONVERSION_BADNESS = {2,0}

Badness of conversion of pointer to void pointer.

Definition at line 71 of file gdbtypes.c.

Referenced by rank_one_type_parm_ptr().