aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>1993-02-23 19:30:22 +0000
committerFred Fish <fnf@specifix.com>1993-02-23 19:30:22 +0000
commitb6236d6ec4f9d7f02e363da16f24c4f1e5a58fea (patch)
treeb279dfd69da6764416c85903610c7756b83270ed /gdb
parentba7f177aeb38d378795851fec10745697cd7fd29 (diff)
downloadfsf-binutils-gdb-b6236d6ec4f9d7f02e363da16f24c4f1e5a58fea.zip
fsf-binutils-gdb-b6236d6ec4f9d7f02e363da16f24c4f1e5a58fea.tar.gz
fsf-binutils-gdb-b6236d6ec4f9d7f02e363da16f24c4f1e5a58fea.tar.bz2
* ch-lang.c (chill_create_fundamental_type): Track compiler
change that now emits debugging info with the type long for Chill longs. * dwarfread.c (read_tag_string_type): Rewrite to allow forward references of TAG_string_type DIEs in user defined types.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/ch-lang.c8
-rw-r--r--gdb/dwarfread.c43
3 files changed, 40 insertions, 19 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3cb822a..734394b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+Tue Feb 23 11:21:33 1993 Fred Fish (fnf@cygnus.com)
+
+ * ch-lang.c (chill_create_fundamental_type): Track compiler
+ change that now emits debugging info with the type long for Chill
+ longs.
+ * dwarfread.c (read_tag_string_type): Rewrite to allow forward
+ references of TAG_string_type DIEs in user defined types.
+
Mon Feb 22 15:21:54 1993 Ian Lance Taylor (ian@cygnus.com)
* remote-mips.c: New file; implements MIPS remote debugging
diff --git a/gdb/ch-lang.c b/gdb/ch-lang.c
index 78a2067..6467647 100644
--- a/gdb/ch-lang.c
+++ b/gdb/ch-lang.c
@@ -223,10 +223,14 @@ chill_create_fundamental_type (objfile, typeid)
case FT_UNSIGNED_SHORT: /* Chill ints are 2 bytes */
type = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED, "UINT", objfile);
break;
- case FT_INTEGER: /* Chill longs are 4 bytes */
+ case FT_INTEGER: /* FIXME? */
+ case FT_SIGNED_INTEGER: /* FIXME? */
+ case FT_LONG: /* Chill longs are 4 bytes */
+ case FT_SIGNED_LONG: /* Chill longs are 4 bytes */
type = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_SIGNED, "LONG", objfile);
break;
- case FT_UNSIGNED_INTEGER: /* Chill longs are 4 bytes */
+ case FT_UNSIGNED_INTEGER: /* FIXME? */
+ case FT_UNSIGNED_LONG: /* Chill longs are 4 bytes */
type = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED, "ULONG", objfile);
break;
case FT_FLOAT:
diff --git a/gdb/dwarfread.c b/gdb/dwarfread.c
index 688976a..c516800 100644
--- a/gdb/dwarfread.c
+++ b/gdb/dwarfread.c
@@ -1553,30 +1553,39 @@ read_tag_string_type (dip)
unsigned long lowbound = 0;
unsigned long highbound;
- if ((utype = lookup_utype (dip -> die_ref)) != NULL)
+ if (dip -> has_at_byte_size)
{
- /* Ack, someone has stuck a type in the slot we want. Complain
- about it. */
- complain (&dup_user_type_definition, DIE_ID, DIE_NAME);
+ /* A fixed bounds string */
+ highbound = dip -> at_byte_size - 1;
}
else
{
- if (dip -> has_at_byte_size)
- {
- /* A fixed bounds string */
- highbound = dip -> at_byte_size - 1;
- }
- else
+ /* A varying length string. Stub for now. (FIXME) */
+ highbound = 1;
+ }
+ indextype = dwarf_fundamental_type (current_objfile, FT_INTEGER);
+ rangetype = create_range_type ((struct type *) NULL, indextype, lowbound,
+ highbound);
+
+ utype = lookup_utype (dip -> die_ref);
+ if (utype == NULL)
+ {
+ /* No type defined, go ahead and create a blank one to use. */
+ utype = alloc_utype (dip -> die_ref, (struct type *) NULL);
+ }
+ else
+ {
+ /* Already a type in our slot due to a forward reference. Make sure it
+ is a blank one. If not, complain and leave it alone. */
+ if (TYPE_CODE (utype) != TYPE_CODE_UNDEF)
{
- /* A varying length string. Stub for now. (FIXME) */
- highbound = 1;
+ complain (&dup_user_type_definition, DIE_ID, DIE_NAME);
+ return;
}
- indextype = dwarf_fundamental_type (current_objfile, FT_INTEGER);
- rangetype = create_range_type ((struct type *) NULL, indextype,
- lowbound, highbound);
- utype = create_string_type ((struct type *) NULL, rangetype);
- alloc_utype (dip -> die_ref, utype);
}
+
+ /* Create the string type using the blank type we either found or created. */
+ utype = create_string_type (utype, rangetype);
}
/*