diff options
author | Fred Fish <fnf@specifix.com> | 1992-04-15 05:42:00 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1992-04-15 05:42:00 +0000 |
commit | 4a11eef2ebf99f527ee5452386a5f2a099ed6b8b (patch) | |
tree | 8a8e090f544dde28aaa060b49ac7c6eee14109b3 /gdb/gdbtypes.c | |
parent | e4b9dd935bd566dc1f46ee4c1a6f3c31755318d5 (diff) | |
download | gdb-4a11eef2ebf99f527ee5452386a5f2a099ed6b8b.zip gdb-4a11eef2ebf99f527ee5452386a5f2a099ed6b8b.tar.gz gdb-4a11eef2ebf99f527ee5452386a5f2a099ed6b8b.tar.bz2 |
Add TYPE_FLAG_FUND_TYPE bit to the flags member of the type structure,
and use it to decide when to print the actual type name rather than
trying to invent the name of a fundamental type. This clears up the
confusion between int/long when they are the same sizes, removes one
obstacle to multi-language support (previously valprint.c thought
everything was a C type), and allows gdb to support distinctions between
explicitly and implicitly signed types when the compiler supports such
distinction in the debug output (as does every ANSI compiler I tested
except for gcc).
Diffstat (limited to 'gdb/gdbtypes.c')
-rw-r--r-- | gdb/gdbtypes.c | 66 |
1 files changed, 38 insertions, 28 deletions
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 19dd66a..0d3782d 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -804,148 +804,158 @@ lookup_fundamental_type (objfile, typeid) case FT_VOID: type = init_type (TYPE_CODE_VOID, TARGET_CHAR_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "void", objfile); break; case FT_BOOLEAN: type = init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_UNSIGNED, "boolean", objfile); break; case FT_STRING: type = init_type (TYPE_CODE_PASCAL_ARRAY, TARGET_CHAR_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "string", objfile); break; case FT_CHAR: type = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "char", objfile); break; case FT_SIGNED_CHAR: type = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_SIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_SIGNED, "signed char", objfile); break; case FT_UNSIGNED_CHAR: type = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_UNSIGNED, "unsigned char", objfile); break; case FT_SHORT: type = init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "short", objfile); break; case FT_SIGNED_SHORT: type = init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_SIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_SIGNED, "signed short", objfile); break; case FT_UNSIGNED_SHORT: type = init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_UNSIGNED, "unsigned short", objfile); break; case FT_INTEGER: type = init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "int", objfile); break; case FT_SIGNED_INTEGER: type = init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_SIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_SIGNED, "signed int", objfile); break; case FT_UNSIGNED_INTEGER: type = init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_UNSIGNED, "unsigned int", objfile); break; + case FT_FIXED_DECIMAL: + type = init_type (TYPE_CODE_INT, + TARGET_INT_BIT / TARGET_CHAR_BIT, + TYPE_FLAG_FUND_TYPE, + "fixed decimal", objfile); + break; case FT_LONG: type = init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "long", objfile); break; case FT_SIGNED_LONG: type = init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_SIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_SIGNED, "signed long", objfile); break; case FT_UNSIGNED_LONG: type = init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_UNSIGNED, "unsigned long", objfile); break; case FT_LONG_LONG: type = init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "long long", objfile); break; case FT_SIGNED_LONG_LONG: type = init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_SIGNED, + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_SIGNED, "signed long long", objfile); break; case FT_UNSIGNED_LONG_LONG: type = init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT, - TYPE_FLAG_UNSIGNED, - "unsigned long long", - objfile); + TYPE_FLAG_FUND_TYPE | TYPE_FLAG_UNSIGNED, + "unsigned long long", objfile); break; case FT_FLOAT: type = init_type (TYPE_CODE_FLT, TARGET_FLOAT_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "float", objfile); break; case FT_DBL_PREC_FLOAT: type = init_type (TYPE_CODE_FLT, TARGET_DOUBLE_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "double", objfile); break; + case FT_FLOAT_DECIMAL: + type = init_type (TYPE_CODE_FLT, + TARGET_DOUBLE_BIT / TARGET_CHAR_BIT, + TYPE_FLAG_FUND_TYPE, + "floating decimal", objfile); + break; case FT_EXT_PREC_FLOAT: type = init_type (TYPE_CODE_FLT, TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "long double", objfile); break; case FT_COMPLEX: type = init_type (TYPE_CODE_FLT, TARGET_COMPLEX_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "complex", objfile); break; case FT_DBL_PREC_COMPLEX: type = init_type (TYPE_CODE_FLT, TARGET_DOUBLE_COMPLEX_BIT / TARGET_CHAR_BIT, - 0, + TYPE_FLAG_FUND_TYPE, "double complex", objfile); break; case FT_EXT_PREC_COMPLEX: type = init_type (TYPE_CODE_FLT, TARGET_DOUBLE_COMPLEX_BIT / TARGET_CHAR_BIT, - 0, - "long double complex", - objfile); + TYPE_FLAG_FUND_TYPE, + "long double complex", objfile); break; } /* Install the newly created type in the objfile's fundamental_types |