From: Jim Blandy <jimb@redhat.com>
To: gdb-patches@sources.redhat.com
Subject: RFA: Tolerate filenames present in symtabs but absent from macro info
Date: Wed, 06 Nov 2002 09:41:00 -0000 [thread overview]
Message-ID: <vt2y986fw2y.fsf@zenia.red-bean.com> (raw)
2002-11-01 Jim Blandy <jimb@redhat.com>
* 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)
next reply other threads:[~2002-11-06 17:41 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-11-06 9:41 Jim Blandy [this message]
2002-11-06 10:24 ` Andrew Cagney
2002-11-06 10:34 ` Andrew Cagney
2002-11-06 12:42 ` Jim Blandy
2002-11-06 12:51 ` Andrew Cagney
2002-11-07 12:44 ` Jim Blandy
2002-11-13 10:49 ` David Carlton
2002-11-13 11:26 ` Jim Blandy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=vt2y986fw2y.fsf@zenia.red-bean.com \
--to=jimb@redhat.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox