From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15139 invoked by alias); 6 Nov 2002 17:41:39 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 15074 invoked from network); 6 Nov 2002 17:41:35 -0000 Received: from unknown (HELO zenia.red-bean.com) (66.244.67.22) by sources.redhat.com with SMTP; 6 Nov 2002 17:41:35 -0000 Received: (from jimb@localhost) by zenia.red-bean.com (8.11.6/8.11.6) id gA6HQkV19424; Wed, 6 Nov 2002 12:26:46 -0500 To: gdb-patches@sources.redhat.com Subject: RFA: Tolerate filenames present in symtabs but absent from macro info From: Jim Blandy Date: Wed, 06 Nov 2002 09:41:00 -0000 Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2.90 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2002-11/txt/msg00103.txt.bz2 2002-11-01 Jim Blandy * macroscope.c: #include "complaints.h". (sal_macro_scope): Cope with filenames that appear in the symtabs, but not in the macro table. * Makefile.in (macroscope.o): Record dependency. Index: gdb/macroscope.c =================================================================== RCS file: /cvs/src/src/gdb/macroscope.c,v retrieving revision 1.4 diff -c -r1.4 macroscope.c *** gdb/macroscope.c 20 Sep 2002 14:58:58 -0000 1.4 --- gdb/macroscope.c 2 Nov 2002 17:42:00 -0000 *************** *** 27,38 **** #include "target.h" #include "frame.h" #include "inferior.h" struct macro_scope * sal_macro_scope (struct symtab_and_line sal) { ! struct macro_source_file *main; struct macro_scope *ms; if (! sal.symtab --- 27,39 ---- #include "target.h" #include "frame.h" #include "inferior.h" + #include "complaints.h" struct macro_scope * sal_macro_scope (struct symtab_and_line sal) { ! struct macro_source_file *main, *inclusion; struct macro_scope *ms; if (! sal.symtab *************** *** 42,58 **** ms = (struct macro_scope *) xmalloc (sizeof (*ms)); main = macro_main (sal.symtab->macro_table); ! ms->file = macro_lookup_inclusion (main, sal.symtab->filename); ! if (! ms->file) ! internal_error ! (__FILE__, __LINE__, ! "\n" ! "the symtab `%s' refers to a preprocessor macro table which doesn't\n" ! "have any record of processing a file by that name.\n", ! sal.symtab->filename); ! ! ms->line = sal.line; return ms; } --- 43,79 ---- ms = (struct macro_scope *) xmalloc (sizeof (*ms)); main = macro_main (sal.symtab->macro_table); ! inclusion = macro_lookup_inclusion (main, sal.symtab->filename); ! if (inclusion) ! { ! ms->file = inclusion; ! ms->line = sal.line; ! } ! else ! { ! /* There are, unfortunately, cases where a compilation unit can ! have a symtab for a source file that doesn't appear in the ! macro table. For example, at the moment, Dwarf doesn't have ! any way in the .debug_macinfo section to describe the effect ! of #line directives, so if you debug a YACC parser you'll get ! a macro table which only mentions the .c files generated by ! YACC, but symtabs that mention the .y files consumed by YACC. ! ! In the long run, we should extend the Dwarf macro info ! representation to handle #line directives, and get GCC to ! emit it. ! ! For the time being, though, we'll just treat these as ! occurring at the end of the main source file. */ ! ms->file = main; ! ms->line = -1; ! ! complaint (&symfile_complaints, ! "symtab found for `%s', but that file\n" ! "is not covered in the compilation unit's macro information", ! sal.symtab->filename); ! } return ms; } Index: gdb/Makefile.in =================================================================== RCS file: /cvs/src/src/gdb/Makefile.in,v retrieving revision 1.273 diff -c -r1.273 Makefile.in *** gdb/Makefile.in 25 Oct 2002 21:23:57 -0000 1.273 --- gdb/Makefile.in 2 Nov 2002 17:41:59 -0000 *************** *** 1869,1875 **** macroexp.o: macroexp.c $(defs_h) $(gdb_obstack_h) $(bcache_h) $(macrotab_h) \ $(macroexp_h) $(gdb_assert_h) macroscope.o: macroscope.c $(defs_h) $(macroscope_h) $(symtab_h) $(target_h) \ ! $(frame_h) $(inferior_h) $(source_h) macrotab.o: macrotab.c $(defs_h) $(gdb_obstack_h) $(splay_tree_h) \ $(symtab_h) $(symfile_h) $(objfiles_h) $(macrotab_h) $(gdb_assert_h) \ $(bcache_h) $(complaints_h) --- 1869,1875 ---- macroexp.o: macroexp.c $(defs_h) $(gdb_obstack_h) $(bcache_h) $(macrotab_h) \ $(macroexp_h) $(gdb_assert_h) macroscope.o: macroscope.c $(defs_h) $(macroscope_h) $(symtab_h) $(target_h) \ ! $(frame_h) $(inferior_h) $(source_h) $(complaints_h) macrotab.o: macrotab.c $(defs_h) $(gdb_obstack_h) $(splay_tree_h) \ $(symtab_h) $(symfile_h) $(objfiles_h) $(macrotab_h) $(gdb_assert_h) \ $(bcache_h) $(complaints_h)