aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>1998-03-20 07:50:33 +0000
committerAndrew Cagney <cagney@redhat.com>1998-03-20 07:50:33 +0000
commit980714f9c8e5218c0184ad9c46d68843a945f228 (patch)
tree7f970d700770951e15472cd7e14a9ef367084025 /gdb
parent15752c5ba187ca91d696e43eb6f3201f09c6c752 (diff)
downloadgdb-980714f9c8e5218c0184ad9c46d68843a945f228.zip
gdb-980714f9c8e5218c0184ad9c46d68843a945f228.tar.gz
gdb-980714f9c8e5218c0184ad9c46d68843a945f228.tar.bz2
Add builtin explicitly sized 8, 16, 32, 64 and 128 bit int and
unsigned types. Specify size of r5900 FSR using 32 bit unsigned type. Correctly format mips registers when some are not 64 bits in size Check that REGISTER_{RAW,VIRTUAL}_SIZE are consistent when the target specifies that no conversion is needed when moving from one to the other.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog24
-rw-r--r--gdb/gdbtypes.c54
-rw-r--r--gdb/gdbtypes.h15
3 files changed, 93 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 36e0d08..65f4dec 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,27 @@
+Fri Mar 20 09:04:06 1998 Andrew Cagney <cagney@b1.cygnus.com>
+
+start-sanitize-r5900
+ * config/mips/tm-r5900.h (REGISTER_VIRTUAL_SIZE): Redefine as
+ expression from REGISTER_VIRTUAL_TYPE.
+ (REGISTER_RAW_SIZE): Ditto.
+ (REGISTER_VIRTUAL_TYPE): Redefine, use explicit size for 32 bit
+ registers.
+
+end-sanitize-r5900
+ * gdbtypes.h (builtin_type_{,u}int{8,16,32,64}): New gdb builtin
+ types.
+start-sanitize-r5900
+ (builtin_type_{,u}int128): Ditto.
+end-sanitize-r5900
+
+ * gdbtypes.c (_initialize_gdbtypes): Initialize new types.
+
+ * mips-tdep.c (do_gp_register_row): Pad register value when GP
+ register is smaller than MIPS_REGSIZE.
+
+ * findvar.c (value_of_register): When raw and virtual register
+ values identical, check that sizes are consistent.
+
Thu Mar 19 11:32:15 1998 Michael Snyder (msnyder@cleaver.cygnus.com)
* minsyms.c (compare_minimal_symbols): If addresses are identical,
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index d1bfa98..1c3bbf2 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -53,6 +53,18 @@ struct type *builtin_type_long_double;
struct type *builtin_type_complex;
struct type *builtin_type_double_complex;
struct type *builtin_type_string;
+struct type *builtin_type_int8;
+struct type *builtin_type_uint8;
+struct type *builtin_type_int16;
+struct type *builtin_type_uint16;
+struct type *builtin_type_int32;
+struct type *builtin_type_uint32;
+struct type *builtin_type_int64;
+struct type *builtin_type_uint64;
+/* start-sanitize-r5900 */
+struct type *builtin_type_int128;
+struct type *builtin_type_uint128;
+/* end-sanitize-r5900 */
struct extra { char str[128]; int len; }; /* maximum extention is 128! FIXME */
@@ -1922,4 +1934,46 @@ _initialize_gdbtypes ()
init_type (TYPE_CODE_STRING, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
0,
"string", (struct objfile *) NULL);
+ builtin_type_int8 =
+ init_type (TYPE_CODE_INT, 8 / 8,
+ 0,
+ "int8_t", (struct objfile *) NULL);
+ builtin_type_uint8 =
+ init_type (TYPE_CODE_INT, 8 / 8,
+ TYPE_FLAG_UNSIGNED,
+ "uint8_t", (struct objfile *) NULL);
+ builtin_type_int16 =
+ init_type (TYPE_CODE_INT, 16 / 8,
+ 0,
+ "int16_t", (struct objfile *) NULL);
+ builtin_type_uint16 =
+ init_type (TYPE_CODE_INT, 16 / 8,
+ TYPE_FLAG_UNSIGNED,
+ "uint16_t", (struct objfile *) NULL);
+ builtin_type_int32 =
+ init_type (TYPE_CODE_INT, 32 / 8,
+ 0,
+ "int32_t", (struct objfile *) NULL);
+ builtin_type_uint32 =
+ init_type (TYPE_CODE_INT, 32 / 8,
+ TYPE_FLAG_UNSIGNED,
+ "uint32_t", (struct objfile *) NULL);
+ builtin_type_int64 =
+ init_type (TYPE_CODE_INT, 64 / 8,
+ 0,
+ "int64_t", (struct objfile *) NULL);
+ builtin_type_uint64 =
+ init_type (TYPE_CODE_INT, 64 / 8,
+ TYPE_FLAG_UNSIGNED,
+ "uint64_t", (struct objfile *) NULL);
+ /* start-sanitize-r5900 */
+ builtin_type_int128 =
+ init_type (TYPE_CODE_INT, 128 / 8,
+ 0,
+ "int128_t", (struct objfile *) NULL);
+ builtin_type_uint128 =
+ init_type (TYPE_CODE_INT, 128 / 8,
+ TYPE_FLAG_UNSIGNED,
+ "uint128_t", (struct objfile *) NULL);
+ /* end-sanitize-r5900 */
}
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 37270f5..4c354fe 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -626,6 +626,7 @@ allocate_cplus_struct_type PARAMS ((struct type *));
#define TYPE_FN_FIELD_VIRTUAL_P(thisfn, n) ((thisfn)[n].voffset > 1)
#define TYPE_FN_FIELD_STATIC_P(thisfn, n) ((thisfn)[n].voffset == VOFFSET_STATIC)
+/* Implicit sizes */
extern struct type *builtin_type_void;
extern struct type *builtin_type_char;
extern struct type *builtin_type_short;
@@ -643,6 +644,20 @@ extern struct type *builtin_type_complex;
extern struct type *builtin_type_double_complex;
extern struct type *builtin_type_string;
+/* Explicit sizes - see <intypes.h> for naming schema */
+extern struct type *builtin_type_int8;
+extern struct type *builtin_type_uint8;
+extern struct type *builtin_type_int16;
+extern struct type *builtin_type_uint16;
+extern struct type *builtin_type_int32;
+extern struct type *builtin_type_uint32;
+extern struct type *builtin_type_int64;
+extern struct type *builtin_type_uint64;
+/* start-sanitize-r5900 */
+extern struct type *builtin_type_int128;
+extern struct type *builtin_type_uint128;
+/* end-sanitize-r5900 */
+
/* This type represents a type that was unrecognized in symbol
read-in. */