diff options
author | Jim Blandy <jimb@codesourcery.com> | 2004-02-18 01:09:03 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2004-02-18 01:09:03 +0000 |
commit | 8cfe231d8f1bd893c4f90f48e1ca3b356c7bf727 (patch) | |
tree | 7a6405b657e1aea6fc1ba3b0a8fa0abd3906e1bc /gdb/stabsread.c | |
parent | 9d62932daa6c211b8ee8b4c22b79b4f8a5b26501 (diff) | |
download | gdb-8cfe231d8f1bd893c4f90f48e1ca3b356c7bf727.zip gdb-8cfe231d8f1bd893c4f90f48e1ca3b356c7bf727.tar.gz gdb-8cfe231d8f1bd893c4f90f48e1ca3b356c7bf727.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/stabsread.c')
-rw-r--r-- | gdb/stabsread.c | 21 |
1 files changed, 16 insertions, 5 deletions
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; |