mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-17 16:09:47 +00:00
* 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.
This commit is contained in:
parent
b0718b7bcb
commit
568f87394b
@ -1,3 +1,10 @@
|
||||
2002-11-07 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.
|
||||
|
||||
2002-11-07 Joel Brobecker <brobecker@gnat.com>
|
||||
|
||||
* PROBLEMS: Document gdb/816 (unable to read core file on alpha-osf).
|
||||
|
@ -1871,7 +1871,7 @@ macrocmd.o: macrocmd.c $(defs_h) $(macrotab_h) $(macroexp_h) $(macroscope_h) \
|
||||
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)
|
||||
$(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)
|
||||
|
@ -27,12 +27,13 @@
|
||||
#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;
|
||||
struct macro_source_file *main, *inclusion;
|
||||
struct macro_scope *ms;
|
||||
|
||||
if (! sal.symtab
|
||||
@ -42,17 +43,37 @@ sal_macro_scope (struct symtab_and_line sal)
|
||||
ms = (struct macro_scope *) xmalloc (sizeof (*ms));
|
||||
|
||||
main = macro_main (sal.symtab->macro_table);
|
||||
ms->file = macro_lookup_inclusion (main, sal.symtab->filename);
|
||||
inclusion = 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);
|
||||
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.
|
||||
|
||||
ms->line = sal.line;
|
||||
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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user