From 7ef893139cfc56fba6db4909dfbcbe210d7e8143 Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Fri, 12 Jan 1996 07:16:20 +0000 Subject: * symfile.c (decrement_reading_symtab): New function. * symfile.c, symtab.h (currently_reading_symtab): New variable. * symfile.c (psymtab_to_symtab): Adjust currently_reading_symtab. * gdbtypes.c (check_typedef): Don't call lookup_symbol if currently_reading_symtab (since that could infinitely recurse). This fixes PR chill/8793. --- gdb/symfile.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'gdb/symfile.c') diff --git a/gdb/symfile.c b/gdb/symfile.c index dd10f5f..7782a04 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -267,6 +267,17 @@ obconcat (obstackp, s1, s2, s3) return val; } +/* True if we are nested inside psymtab_to_symtab. */ + +int currently_reading_symtab = 0; + +static int +decrement_reading_symtab (dummy) + void *dummy; +{ + currently_reading_symtab--; +} + /* Get the symbol table that corresponds to a partial_symtab. This is fast after the first time you do it. In fact, there is an even faster macro PSYMTAB_TO_SYMTAB that does the fast @@ -283,7 +294,10 @@ psymtab_to_symtab (pst) /* If it has not yet been read in, read it. */ if (!pst->readin) { + struct cleanup *back_to = make_cleanup (decrement_reading_symtab, NULL); + currently_reading_symtab++; (*pst->read_symtab) (pst); + do_cleanups (back_to); } return pst->symtab; -- cgit v1.1