* buildsym.c (end_symtab): Document that end_symtab can return
NULL under non-error conditions. * dwarfread.c (read_file_scope): Guard against dereferencing NULL returned from end_symtab for empty compilation units.
This commit is contained in:
parent
a00721fc4a
commit
7b5d965008
@ -1,3 +1,10 @@
|
||||
Wed Aug 12 11:14:58 1992 Fred Fish (fnf@cygnus.com)
|
||||
|
||||
* buildsym.c (end_symtab): Document that end_symtab can return
|
||||
NULL under non-error conditions.
|
||||
* dwarfread.c (read_file_scope): Guard against dereferencing NULL
|
||||
returned from end_symtab for empty compilation units.
|
||||
|
||||
Tue Aug 11 02:49:39 1992 John Gilmore (gnu at cygnus.com)
|
||||
|
||||
* am29k-tdep.c: Lint from DECstation compiler.
|
||||
|
@ -549,7 +549,14 @@ start_symtab (name, dirname, start_addr)
|
||||
(creating struct block's for them), then make the struct symtab
|
||||
for that file and put it in the list of all such.
|
||||
|
||||
END_ADDR is the address of the end of the file's text. */
|
||||
END_ADDR is the address of the end of the file's text.
|
||||
|
||||
Note that it is possible for end_symtab() to return NULL. In particular,
|
||||
for the DWARF case at least, it will return NULL when it finds a
|
||||
compilation unit that has exactly one DIE, a TAG_compile_unit DIE. This
|
||||
can happen when we link in an object file that was compiled from an empty
|
||||
source file. Returning NULL is probably not the correct thing to do,
|
||||
because then gdb will never know about this empty file (FIXME). */
|
||||
|
||||
struct symtab *
|
||||
end_symtab (end_addr, sort_pending, sort_linevec, objfile)
|
||||
|
@ -1662,19 +1662,22 @@ read_file_scope (dip, thisdie, enddie, objfile)
|
||||
decode_line_numbers (lnbase);
|
||||
process_dies (thisdie + dip -> die_length, enddie, objfile);
|
||||
symtab = end_symtab (dip -> at_high_pc, 0, 0, objfile);
|
||||
/* FIXME: The following may need to be expanded for other languages */
|
||||
switch (dip -> at_language)
|
||||
if (symtab != NULL)
|
||||
{
|
||||
case LANG_C89:
|
||||
case LANG_C:
|
||||
symtab -> language = language_c;
|
||||
break;
|
||||
case LANG_C_PLUS_PLUS:
|
||||
symtab -> language = language_cplus;
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
/* FIXME: The following may need to be expanded for other languages */
|
||||
switch (dip -> at_language)
|
||||
{
|
||||
case LANG_C89:
|
||||
case LANG_C:
|
||||
symtab -> language = language_c;
|
||||
break;
|
||||
case LANG_C_PLUS_PLUS:
|
||||
symtab -> language = language_cplus;
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
}
|
||||
do_cleanups (back_to);
|
||||
utypes = NULL;
|
||||
numutypes = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user