From 8cfe231d8f1bd893c4f90f48e1ca3b356c7bf727 Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Wed, 18 Feb 2004 01:09:03 +0000 Subject: * stabsread.c (read_type): If we find any type numbers that are forward references, complain if the references aren't resolved by the time we're finished reading. (cleanup_undefined_types): Make error message more appropriate for a complaint. --- gdb/stabsread.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'gdb/stabsread.c') diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 021c19e..5cee516 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -1446,11 +1446,21 @@ read_type (char **pp, struct objfile *objfile) if (read_type_number (pp, typenums) != 0) return error_type (pp, objfile); - /* Type is not being defined here. Either it already exists, - or this is a forward reference to it. dbx_alloc_type handles - both cases. */ if (**pp != '=') - return dbx_alloc_type (typenums, objfile); + { + /* Type is not being defined here. Either it already + exists, or this is a forward reference to it. + dbx_alloc_type handles both cases. */ + type = dbx_alloc_type (typenums, objfile); + + /* If this is a forward reference, arrange to complain if it + doesn't get patched up by the time we're done + reading. */ + if (TYPE_CODE (type) == TYPE_CODE_UNDEF) + add_undefined_type (type); + + return type; + } /* Type is being defined here. */ /* Skip the '='. @@ -4197,7 +4207,8 @@ cleanup_undefined_types (void) default: { complaint (&symfile_complaints, - "GDB internal error. cleanup_undefined_types with bad type %d.", + "forward-referenced types left unresolved, " + "type code %d.", TYPE_CODE (*type)); } break; -- cgit v1.1