aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/c-opts.c5
-rw-r--r--gcc/dwarf2out.c9
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c13
4 files changed, 33 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 23672a3..b6765ac 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2005-03-03 Daniel Berlin <dberlin@dbrelin.org>
+
+ Fix PR debug/20253
+
+ * c-opts.c (c_common_parse_file): Call start_source_file
+ and end_source_file at the approriate times.
+
+ * dwarf2out.c (dwarf2out_finish): Don't auto-end
+ the main file, it will be done for us now.
+
2005-03-04 Kazu Hirata <kazu@cs.umass.edu>
* fold-const.c (fold_ternary): New.
diff --git a/gcc/c-opts.c b/gcc/c-opts.c
index 575ff4d..d2abeb5 100644
--- a/gcc/c-opts.c
+++ b/gcc/c-opts.c
@@ -1089,13 +1089,16 @@ c_common_parse_file (int set_yydebug)
i = 0;
for (;;)
{
+ /* Start the main input file */
+ (*debug_hooks->start_source_file) (0, this_input_filename);
finish_options ();
pch_init ();
push_file_scope ();
c_parse_file ();
finish_file ();
pop_file_scope ();
-
+ /* And end the main input file. */
+ (*debug_hooks->end_source_file) (0);
if (++i >= num_in_fnames)
break;
cpp_undef_all (parse_in);
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 76661ba..5157ae3 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -10497,8 +10497,12 @@ add_abstract_origin_attribute (dw_die_ref die, tree origin)
if (TYPE_P (fn))
fn = TYPE_STUB_DECL (fn);
+
+ /* TYPE_STUB_DECL may have given us a NULL, which decl_function_context
+ won't like. */
+ if (fn)
+ fn = decl_function_context (fn);
- fn = decl_function_context (fn);
if (fn)
dwarf2out_abstract_function (fn);
}
@@ -13795,11 +13799,10 @@ dwarf2out_finish (const char *filename)
output_ranges ();
}
- /* Have to end the primary source file. */
+ /* Have to end the macro section. */
if (debug_info_level >= DINFO_LEVEL_VERBOSE)
{
named_section_flags (DEBUG_MACINFO_SECTION, SECTION_DEBUG);
- dw2_asm_output_data (1, DW_MACINFO_end_file, "End file");
dw2_asm_output_data (1, 0, "End compilation unit");
}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
new file mode 100644
index 0000000..45e9373
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
@@ -0,0 +1,13 @@
+/* Test to make sure the mcaro info includes a start file command for the main source */
+/* { dg-do compile */
+/* { dg-options "-g3 -gdwarf-2 -dA -fverbose-asm" } */
+/* { dg-final { scan-assembler "Start new file" } } */
+
+#define ADD(x) (M + x)
+
+int main (void)
+{
+#define N 28
+#define M 42
+ return ADD(N);
+}