From 6ccb916229b6180c23485cc27d06acd1715efbdd Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Tue, 4 Dec 2007 23:33:00 +0000 Subject: [PATCH] * coffread.c (decode_type): Use builtin_type_int32 instead of FT_INTEGER fundamental type for array range index type. (decode_base_type): Use builtin types of current_gdbarch instead of fundamental types. * dwarf2read.c (struct dwarf2_cu): Remove ftypes member. (read_file_scope): Do not initialize ftypes member. (dwarf_base_type, dwarf2_fundamental_types): Remove functions. (read_array_type): Use builtin_type_int32 instead of FT_INTEGER fundamental type for array range index type. (read_tag_string_type): Likewise for string range index type. Also, do not overwrite FT_CHAR type with new string type. (read_base_type): If DW_AT_name is missing, create unnamed type with given properties instead of looking for a fundamental type. Create new types as TYPE_TARGET_TYPE for DW_ATE_address and DW_ATE_complex_float types. (read_subrange_type): Create new type to represent missing DW_AT_type instead of looking for a fundamental type. (die_type): Use builtin type to represent "void" instead of looking for a fundamental type. * stabsread.c (define_symbol): Use builtin types to represent 'r' and 'i' floating-point and integer constants. * gdbtypes.c (lookup_fundamental_type): Remove. * gdbtypes.h (lookup_fundamental_type): Remove prototype. (FT_VOID, FT_BOOLEAN, FT_CHAR, FT_SIGNED_CHAR, FT_UNSIGNED_CHAR, FT_SHORT, FT_SIGNED_SHORT, FT_UNSIGNED_SHORT, FT_INTEGER, FT_SIGNED_INTEGER, FT_UNSIGNED_INTEGER, FT_LONG, FT_SIGNED_LONG, FT_UNSIGNED_LONG, FT_LONG_LONG, FT_SIGNED_LONG_LONG, FT_UNSIGNED_LONG_LONG, FT_FLOAT, FT_DBL_PREC_FLOAT, FT_EXT_PREC_FLOAT, FT_COMPLEX, FT_DBL_PREC_COMPLEX, FT_EXT_PREC_COMPLEX, FT_STRING, FT_FIXED_DECIMAL, FT_FLOAT_DECIMAL, FT_BYTE, FT_UNSIGNED_BYTE, FT_TEMPLATE_ARG, FT_DECFLOAT, FT_DBL_PREC_DECFLOAT, FT_EXT_PREC_DECFLOAT, FT_NUM_MEMBERS): Remove macros. * objfiles.c (struct objfile): Remove fundamental_types member. * symfile.c (reread_symbols): Do not clear fundamental_types. * language.h (struct language_defn): Remove la_fund_type member. (create_fundamental_type): Remove. * language.c (unk_lang_create_fundamental_type): Remove. (unknown_language_defn, auto_language_defn, local_language_defn): Adapt initializer. * ada-lang.c (ada_create_fundamental_type): Remove. (ada_language_defn): Adapt initializer. * c-lang.h (c_create_fundamental_type): Remove prototype. * c-lang.c (c_create_fundamental_type): Remove. (c_language_defn, cplus_language_defn, asm_language_defn, minimal_language_defn): Adapt initializer. * f-lang.c (f_create_fundamental_type): Remove. (f_language_defn): Adapt initializer. * jv-lang.c (java_create_fundamental_type): Remove. (java_language_defn): Adapt initializer. * m2-lang.c (m2_create_fundamental_type): Remove. (m2_language_defn): Adapt initializer. * objc-lang.c (objc_create_fundamental_type): Remove. (objc_language_defn): Adapt initializer. * p-lang.h (pascal_create_fundamental_type): Remove prototype. * p-lang.c (pascal_create_fundamental_type): Remove. (pascal_language_defn): Adapt initializer. * scm-lang.c (scm_language_defn): Adapt initializer. --- gdb/ChangeLog | 64 ++++++++++++ gdb/ada-lang.c | 148 -------------------------- gdb/c-lang.c | 203 ------------------------------------ gdb/c-lang.h | 2 - gdb/coffread.c | 34 +++--- gdb/dwarf2read.c | 263 +++++++++++------------------------------------ gdb/f-lang.c | 166 ------------------------------ gdb/gdbtypes.c | 59 ----------- gdb/gdbtypes.h | 45 -------- gdb/jv-lang.c | 32 ------ gdb/language.c | 11 -- gdb/language.h | 5 - gdb/m2-lang.c | 170 ------------------------------ gdb/objc-lang.c | 147 -------------------------- gdb/objfiles.h | 12 --- gdb/p-lang.c | 148 -------------------------- gdb/p-lang.h | 2 - gdb/scm-lang.c | 1 - gdb/stabsread.c | 34 ++---- gdb/symfile.c | 1 - 20 files changed, 146 insertions(+), 1401 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d3256ec852..1709fcb1ec 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,67 @@ +2007-12-04 Ulrich Weigand + + * coffread.c (decode_type): Use builtin_type_int32 instead + of FT_INTEGER fundamental type for array range index type. + (decode_base_type): Use builtin types of current_gdbarch + instead of fundamental types. + + * dwarf2read.c (struct dwarf2_cu): Remove ftypes member. + (read_file_scope): Do not initialize ftypes member. + (dwarf_base_type, dwarf2_fundamental_types): Remove functions. + (read_array_type): Use builtin_type_int32 instead of FT_INTEGER + fundamental type for array range index type. + (read_tag_string_type): Likewise for string range index type. + Also, do not overwrite FT_CHAR type with new string type. + (read_base_type): If DW_AT_name is missing, create unnamed type + with given properties instead of looking for a fundamental type. + Create new types as TYPE_TARGET_TYPE for DW_ATE_address and + DW_ATE_complex_float types. + (read_subrange_type): Create new type to represent missing + DW_AT_type instead of looking for a fundamental type. + (die_type): Use builtin type to represent "void" instead of + looking for a fundamental type. + + * stabsread.c (define_symbol): Use builtin types to represent + 'r' and 'i' floating-point and integer constants. + + * gdbtypes.c (lookup_fundamental_type): Remove. + * gdbtypes.h (lookup_fundamental_type): Remove prototype. + (FT_VOID, FT_BOOLEAN, FT_CHAR, FT_SIGNED_CHAR, FT_UNSIGNED_CHAR, + FT_SHORT, FT_SIGNED_SHORT, FT_UNSIGNED_SHORT, FT_INTEGER, + FT_SIGNED_INTEGER, FT_UNSIGNED_INTEGER, FT_LONG, FT_SIGNED_LONG, + FT_UNSIGNED_LONG, FT_LONG_LONG, FT_SIGNED_LONG_LONG, + FT_UNSIGNED_LONG_LONG, FT_FLOAT, FT_DBL_PREC_FLOAT, FT_EXT_PREC_FLOAT, + FT_COMPLEX, FT_DBL_PREC_COMPLEX, FT_EXT_PREC_COMPLEX, FT_STRING, + FT_FIXED_DECIMAL, FT_FLOAT_DECIMAL, FT_BYTE, FT_UNSIGNED_BYTE, + FT_TEMPLATE_ARG, FT_DECFLOAT, FT_DBL_PREC_DECFLOAT, + FT_EXT_PREC_DECFLOAT, FT_NUM_MEMBERS): Remove macros. + * objfiles.c (struct objfile): Remove fundamental_types member. + * symfile.c (reread_symbols): Do not clear fundamental_types. + + * language.h (struct language_defn): Remove la_fund_type member. + (create_fundamental_type): Remove. + * language.c (unk_lang_create_fundamental_type): Remove. + (unknown_language_defn, auto_language_defn, + local_language_defn): Adapt initializer. + * ada-lang.c (ada_create_fundamental_type): Remove. + (ada_language_defn): Adapt initializer. + * c-lang.h (c_create_fundamental_type): Remove prototype. + * c-lang.c (c_create_fundamental_type): Remove. + (c_language_defn, cplus_language_defn, asm_language_defn, + minimal_language_defn): Adapt initializer. + * f-lang.c (f_create_fundamental_type): Remove. + (f_language_defn): Adapt initializer. + * jv-lang.c (java_create_fundamental_type): Remove. + (java_language_defn): Adapt initializer. + * m2-lang.c (m2_create_fundamental_type): Remove. + (m2_language_defn): Adapt initializer. + * objc-lang.c (objc_create_fundamental_type): Remove. + (objc_language_defn): Adapt initializer. + * p-lang.h (pascal_create_fundamental_type): Remove prototype. + * p-lang.c (pascal_create_fundamental_type): Remove. + (pascal_language_defn): Adapt initializer. + * scm-lang.c (scm_language_defn): Adapt initializer. + 2007-12-04 Maciej W. Rozycki * features/mips-cpu.xml: Specify "regnum" for "r0" explicitly. diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index e7852c5b10..fa1068f831 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -71,8 +71,6 @@ static void extract_string (CORE_ADDR addr, char *buf); -static struct type *ada_create_fundamental_type (struct objfile *, int); - static void modify_general_field (char *, LONGEST, int, int); static struct type *desc_base_type (struct type *); @@ -10165,151 +10163,6 @@ static const struct op_print ada_op_print_tab[] = { {NULL, 0, 0, 0} }; - /* Fundamental Ada Types */ - -/* Create a fundamental Ada type using default reasonable for the current - target machine. - - Some object/debugging file formats (DWARF version 1, COFF, etc) do not - define fundamental types such as "int" or "double". Others (stabs or - DWARF version 2, etc) do define fundamental types. For the formats which - don't provide fundamental types, gdb can create such types using this - function. - - FIXME: Some compilers distinguish explicitly signed integral types - (signed short, signed int, signed long) from "regular" integral types - (short, int, long) in the debugging information. There is some dis- - agreement as to how useful this feature is. In particular, gcc does - not support this. Also, only some debugging formats allow the - distinction to be passed on to a debugger. For now, we always just - use "short", "int", or "long" as the type name, for both the implicit - and explicitly signed types. This also makes life easier for the - gdb test suite since we don't have to account for the differences - in output depending upon what the compiler and debugging format - support. We will probably have to re-examine the issue when gdb - starts taking it's fundamental type information directly from the - debugging information supplied by the compiler. fnf@cygnus.com */ - -static struct type * -ada_create_fundamental_type (struct objfile *objfile, int typeid) -{ - struct type *type = NULL; - - switch (typeid) - { - default: - /* FIXME: For now, if we are asked to produce a type not in this - language, create the equivalent of a C integer type with the - name "". When all the dust settles from the type - reconstruction work, this should probably become an error. */ - type = init_type (TYPE_CODE_INT, - gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "", objfile); - warning (_("internal error: no Ada fundamental type %d"), typeid); - break; - case FT_VOID: - type = init_type (TYPE_CODE_VOID, - TARGET_CHAR_BIT / TARGET_CHAR_BIT, - 0, "void", objfile); - break; - case FT_CHAR: - type = init_type (TYPE_CODE_INT, - TARGET_CHAR_BIT / TARGET_CHAR_BIT, - 0, "character", objfile); - break; - case FT_SIGNED_CHAR: - type = init_type (TYPE_CODE_INT, - TARGET_CHAR_BIT / TARGET_CHAR_BIT, - 0, "signed char", objfile); - break; - case FT_UNSIGNED_CHAR: - type = init_type (TYPE_CODE_INT, - TARGET_CHAR_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned char", objfile); - break; - case FT_SHORT: - type = init_type (TYPE_CODE_INT, - gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "short_integer", objfile); - break; - case FT_SIGNED_SHORT: - type = init_type (TYPE_CODE_INT, - gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "short_integer", objfile); - break; - case FT_UNSIGNED_SHORT: - type = init_type (TYPE_CODE_INT, - gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned short", objfile); - break; - case FT_INTEGER: - type = init_type (TYPE_CODE_INT, - gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "integer", objfile); - break; - case FT_SIGNED_INTEGER: - type = init_type (TYPE_CODE_INT, - gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "integer", objfile); /* FIXME -fnf */ - break; - case FT_UNSIGNED_INTEGER: - type = init_type (TYPE_CODE_INT, - gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned int", objfile); - break; - case FT_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "long_integer", objfile); - break; - case FT_SIGNED_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "long_integer", objfile); - break; - case FT_UNSIGNED_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_bit (current_gdbarch) / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned long", objfile); - break; - case FT_LONG_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_long_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "long_long_integer", objfile); - break; - case FT_SIGNED_LONG_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_long_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "long_long_integer", objfile); - break; - case FT_UNSIGNED_LONG_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_long_bit (current_gdbarch) - / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned long long", objfile); - break; - case FT_FLOAT: - type = init_type (TYPE_CODE_FLT, - gdbarch_float_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "float", objfile); - break; - case FT_DBL_PREC_FLOAT: - type = init_type (TYPE_CODE_FLT, - gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "long_float", objfile); - break; - case FT_EXT_PREC_FLOAT: - type = init_type (TYPE_CODE_FLT, - gdbarch_long_double_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "long_long_float", objfile); - break; - } - return (type); -} - enum ada_primitive_types { ada_primitive_type_int, ada_primitive_type_long, @@ -10423,7 +10276,6 @@ const struct language_defn ada_language_defn = { ada_printchar, /* Print a character constant */ ada_printstr, /* Function to print string constant */ emit_char, /* Function to print single char (not used) */ - ada_create_fundamental_type, /* Create fundamental type in this language */ ada_print_type, /* Print a type using appropriate syntax */ ada_val_print, /* Print a value using appropriate syntax */ ada_value_print, /* Print a top-level value */ diff --git a/gdb/c-lang.c b/gdb/c-lang.c index cc952a8c79..e3151b9345 100644 --- a/gdb/c-lang.c +++ b/gdb/c-lang.c @@ -180,205 +180,6 @@ c_printstr (struct ui_file *stream, const gdb_byte *string, if (force_ellipses || i < length) fputs_filtered ("...", stream); } - -/* Create a fundamental C type using default reasonable for the current - target machine. - - Some object/debugging file formats (DWARF version 1, COFF, etc) do not - define fundamental types such as "int" or "double". Others (stabs or - DWARF version 2, etc) do define fundamental types. For the formats which - don't provide fundamental types, gdb can create such types using this - function. - - FIXME: Some compilers distinguish explicitly signed integral types - (signed short, signed int, signed long) from "regular" integral types - (short, int, long) in the debugging information. There is some dis- - agreement as to how useful this feature is. In particular, gcc does - not support this. Also, only some debugging formats allow the - distinction to be passed on to a debugger. For now, we always just - use "short", "int", or "long" as the type name, for both the implicit - and explicitly signed types. This also makes life easier for the - gdb test suite since we don't have to account for the differences - in output depending upon what the compiler and debugging format - support. We will probably have to re-examine the issue when gdb - starts taking its fundamental type information directly from the - debugging information supplied by the compiler. fnf@cygnus.com */ - -struct type * -c_create_fundamental_type (struct objfile *objfile, int typeid) -{ - struct type *type = NULL; - - switch (typeid) - { - default: - /* FIXME: For now, if we are asked to produce a type not in this - language, create the equivalent of a C integer type with the - name "". When all the dust settles from the type - reconstruction work, this should probably become an error. */ - type = init_type (TYPE_CODE_INT, - gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "", objfile); - warning (_("internal error: no C/C++ fundamental type %d"), typeid); - break; - case FT_VOID: - type = init_type (TYPE_CODE_VOID, - TARGET_CHAR_BIT / TARGET_CHAR_BIT, - 0, "void", objfile); - break; - case FT_BOOLEAN: - type = init_type (TYPE_CODE_BOOL, - TARGET_CHAR_BIT / TARGET_CHAR_BIT, - 0, "bool", objfile); - break; - case FT_CHAR: - type = init_type (TYPE_CODE_INT, - TARGET_CHAR_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_NOSIGN, "char", objfile); - break; - case FT_SIGNED_CHAR: - type = init_type (TYPE_CODE_INT, - TARGET_CHAR_BIT / TARGET_CHAR_BIT, - 0, "signed char", objfile); - break; - case FT_UNSIGNED_CHAR: - type = init_type (TYPE_CODE_INT, - TARGET_CHAR_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned char", objfile); - break; - case FT_SHORT: - type = init_type (TYPE_CODE_INT, - gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "short", objfile); - break; - case FT_SIGNED_SHORT: - type = init_type (TYPE_CODE_INT, - gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "short", objfile); /* FIXME-fnf */ - break; - case FT_UNSIGNED_SHORT: - type = init_type (TYPE_CODE_INT, - gdbarch_short_bit (current_gdbarch) / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned short", objfile); - break; - case FT_INTEGER: - type = init_type (TYPE_CODE_INT, - gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "int", objfile); - break; - case FT_SIGNED_INTEGER: - type = init_type (TYPE_CODE_INT, - gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "int", objfile); /* FIXME -fnf */ - break; - case FT_UNSIGNED_INTEGER: - type = init_type (TYPE_CODE_INT, - gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned int", objfile); - break; - case FT_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "long", objfile); - break; - case FT_SIGNED_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "long", objfile); /* FIXME -fnf */ - break; - case FT_UNSIGNED_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_bit (current_gdbarch) / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned long", objfile); - break; - case FT_LONG_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_long_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "long long", objfile); - break; - case FT_SIGNED_LONG_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_long_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "signed long long", objfile); - break; - case FT_UNSIGNED_LONG_LONG: - type = init_type (TYPE_CODE_INT, - gdbarch_long_long_bit (current_gdbarch) - / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, "unsigned long long", objfile); - break; - case FT_FLOAT: - type = init_type (TYPE_CODE_FLT, - gdbarch_float_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "float", objfile); - break; - case FT_DBL_PREC_FLOAT: - type = init_type (TYPE_CODE_FLT, - gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "double", objfile); - break; - case FT_EXT_PREC_FLOAT: - type = init_type (TYPE_CODE_FLT, - gdbarch_long_double_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "long double", objfile); - break; - case FT_DECFLOAT: - type = init_type (TYPE_CODE_DECFLOAT, - 32 / 8, - 0, "decimal float", objfile); - break; - case FT_DBL_PREC_DECFLOAT: - type = init_type (TYPE_CODE_DECFLOAT, - 64 / 8, - 0, "decimal double", objfile); - break; - case FT_EXT_PREC_DECFLOAT: - type = init_type (TYPE_CODE_DECFLOAT, - 128 / 8, - 0, "decimal long double", objfile); - break; - case FT_COMPLEX: - type = init_type (TYPE_CODE_FLT, - 2 * gdbarch_float_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "complex float", objfile); - TYPE_TARGET_TYPE (type) - = init_type (TYPE_CODE_FLT, - gdbarch_float_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "float", objfile); - break; - case FT_DBL_PREC_COMPLEX: - type = init_type (TYPE_CODE_FLT, - 2 * gdbarch_double_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "complex double", objfile); - TYPE_TARGET_TYPE (type) - = init_type (TYPE_CODE_FLT, - gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT, - 0, "double", objfile); - break; - case FT_EXT_PREC_COMPLEX: - type = init_type (TYPE_CODE_FLT, - 2 * gdbarch_long_double_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "complex long double", objfile); - TYPE_TARGET_TYPE (type) - = init_type (TYPE_CODE_FLT, - gdbarch_long_double_bit (current_gdbarch) - / TARGET_CHAR_BIT, - 0, "long double", objfile); - break; - case FT_TEMPLATE_ARG: - type = init_type (TYPE_CODE_TEMPLATE_ARG, - 0, - 0, "