aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Booth <neil@daikokuya.demon.co.uk>2001-01-07 03:25:07 +0000
committerNeil Booth <neil@gcc.gnu.org>2001-01-07 03:25:07 +0000
commit65289a3a42e60ebfe23f858ccfa0e66b13e844ed (patch)
tree2c0fbef84f707d26233ad70de66c06425970b8f8
parentf759eb8bf0d98603f2e6930126e517ed995a64a8 (diff)
downloadgcc-65289a3a42e60ebfe23f858ccfa0e66b13e844ed.zip
gcc-65289a3a42e60ebfe23f858ccfa0e66b13e844ed.tar.gz
gcc-65289a3a42e60ebfe23f858ccfa0e66b13e844ed.tar.bz2
c-lex.c (init_c_lex): Request #define / #undef callbacks for verbose DWARF[2] debugging.
* c-lex.c (init_c_lex): Request #define / #undef callbacks for verbose DWARF[2] debugging. (cb_define, cb_undef): The new callbacks. * toplev.h (debug_define, debug_undef): Make const correct. * toplev.c (debug_define, debug_undef): Similarly. Do not perform the verbosity tests here anymore. From-SVN: r38756
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/c-lex.c28
-rw-r--r--gcc/toplev.c20
-rw-r--r--gcc/toplev.h4
4 files changed, 47 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e912ed0..2e6206c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2001-01-07 Neil Booth <neil@daikokuya.demon.co.uk>
+
+ * c-lex.c (init_c_lex): Request #define / #undef callbacks
+ for verbose DWARF[2] debugging.
+ (cb_define, cb_undef): The new callbacks.
+ * toplev.h (debug_define, debug_undef): Make const correct.
+ * toplev.c (debug_define, debug_undef): Similarly. Do not
+ perform the verbosity tests here anymore.
+
2001-01-07 Alexandre Oliva <aoliva@redhat.com>
* reload.c (subst_reloads): Take INSN argument. When
diff --git a/gcc/c-lex.c b/gcc/c-lex.c
index 4dee1ef..0cddf7e 100644
--- a/gcc/c-lex.c
+++ b/gcc/c-lex.c
@@ -92,6 +92,8 @@ static int dump_one_header PARAMS ((splay_tree_node, void *));
static void cb_ident PARAMS ((cpp_reader *, const cpp_string *));
static void cb_file_change PARAMS ((cpp_reader *, const cpp_file_change *));
static void cb_def_pragma PARAMS ((cpp_reader *));
+static void cb_define PARAMS ((cpp_reader *, cpp_hashnode *));
+static void cb_undef PARAMS ((cpp_reader *, cpp_hashnode *));
const char *
init_c_lex (filename)
@@ -123,6 +125,14 @@ init_c_lex (filename)
parse_in->cb.file_change = cb_file_change;
parse_in->cb.def_pragma = cb_def_pragma;
+ /* Set the debug callbacks if we can use them. */
+ if (debug_info_level == DINFO_LEVEL_VERBOSE
+ && (write_symbols == DWARF_DEBUG || write_symbols == DWARF2_DEBUG))
+ {
+ parse_in->cb.define = cb_define;
+ parse_in->cb.undef = cb_undef;
+ }
+
if (filename == 0 || !strcmp (filename, "-"))
filename = "stdin";
@@ -317,6 +327,24 @@ cb_def_pragma (pfile)
}
}
+/* #define callback for DWARF and DWARF2 debug info. */
+static void
+cb_define (pfile, node)
+ cpp_reader *pfile;
+ cpp_hashnode *node;
+{
+ debug_define (lineno, (const char *) cpp_macro_definition (pfile, node));
+}
+
+/* #undef callback for DWARF and DWARF2 debug info. */
+static void
+cb_undef (pfile, node)
+ cpp_reader *pfile ATTRIBUTE_UNUSED;
+ cpp_hashnode *node;
+{
+ debug_undef (lineno, (const char *) node->name);
+}
+
/* Parse a '\uNNNN' or '\UNNNNNNNN' sequence.
[lex.charset]: The character designated by the universal-character-name
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 671ce2c..1608137 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -5109,44 +5109,40 @@ debug_end_source_file (lineno)
#endif
}
-/* Called from check_newline in c-parse.y. The `buffer' parameter contains
+/* Called from cb_define in c-lex.c. The `buffer' parameter contains
the tail part of the directive line, i.e. the part which is past the
initial whitespace, #, whitespace, directive-name, whitespace part. */
void
debug_define (lineno, buffer)
register unsigned lineno ATTRIBUTE_UNUSED;
- register char *buffer ATTRIBUTE_UNUSED;
+ register const char *buffer ATTRIBUTE_UNUSED;
{
#ifdef DWARF_DEBUGGING_INFO
- if (debug_info_level == DINFO_LEVEL_VERBOSE
- && write_symbols == DWARF_DEBUG)
+ if (write_symbols == DWARF_DEBUG)
dwarfout_define (lineno, buffer);
#endif /* DWARF_DEBUGGING_INFO */
#ifdef DWARF2_DEBUGGING_INFO
- if (debug_info_level == DINFO_LEVEL_VERBOSE
- && write_symbols == DWARF2_DEBUG)
+ if (write_symbols == DWARF2_DEBUG)
dwarf2out_define (lineno, buffer);
#endif /* DWARF2_DEBUGGING_INFO */
}
-/* Called from check_newline in c-parse.y. The `buffer' parameter contains
+/* Called from cb_undef in c-lex.c. The `buffer' parameter contains
the tail part of the directive line, i.e. the part which is past the
initial whitespace, #, whitespace, directive-name, whitespace part. */
void
debug_undef (lineno, buffer)
register unsigned lineno ATTRIBUTE_UNUSED;
- register char *buffer ATTRIBUTE_UNUSED;
+ register const char *buffer ATTRIBUTE_UNUSED;
{
#ifdef DWARF_DEBUGGING_INFO
- if (debug_info_level == DINFO_LEVEL_VERBOSE
- && write_symbols == DWARF_DEBUG)
+ if (write_symbols == DWARF_DEBUG)
dwarfout_undef (lineno, buffer);
#endif /* DWARF_DEBUGGING_INFO */
#ifdef DWARF2_DEBUGGING_INFO
- if (debug_info_level == DINFO_LEVEL_VERBOSE
- && write_symbols == DWARF2_DEBUG)
+ if (write_symbols == DWARF2_DEBUG)
dwarf2out_undef (lineno, buffer);
#endif /* DWARF2_DEBUGGING_INFO */
}
diff --git a/gcc/toplev.h b/gcc/toplev.h
index 99669ec..4e029c0 100644
--- a/gcc/toplev.h
+++ b/gcc/toplev.h
@@ -39,8 +39,8 @@ extern char *file_name_nondirectory PARAMS ((const char *));
extern void print_time PARAMS ((const char *, long));
extern void debug_start_source_file PARAMS ((const char *));
extern void debug_end_source_file PARAMS ((unsigned));
-extern void debug_define PARAMS ((unsigned, char *));
-extern void debug_undef PARAMS ((unsigned, char *));
+extern void debug_define PARAMS ((unsigned, const char *));
+extern void debug_undef PARAMS ((unsigned, const char *));
extern int debug_ignore_block PARAMS ((union tree_node *));
extern void fatal PARAMS ((const char *, ...))
ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;