gcc/gcc44-pr40521-2.patch

144 lines
5.0 KiB
Diff

2009-10-16 Jakub Jelinek <jakub@redhat.com>
PR debug/40521
* debug.h (struct gcc_debug_hooks): Add assembly_start hook.
* cgraphunit.c (cgraph_optimize): Call it.
* dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
(dwarf2out_assembly_start): ... here. New hook.
(dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
* debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
hook.
* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
* sdbout.c (sdb_debug_hooks): Likewise.
* vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
(vmsdbgout_assembly_start): New hook.
--- gcc/debug.h.jj 2009-10-13 16:20:12.000000000 +0200
+++ gcc/debug.h 2009-10-16 17:48:10.000000000 +0200
@@ -31,6 +31,10 @@ struct gcc_debug_hooks
/* Output debug symbols. */
void (* finish) (const char *main_filename);
+ /* Called from cgraph_optimize before starting to assemble
+ functions/variables/toplevel asms. */
+ void (* assembly_start) (void);
+
/* Macro defined on line LINE with name and expansion TEXT. */
void (* define) (unsigned int line, const char *text);
--- gcc/cgraphunit.c.jj 2009-10-13 16:20:12.000000000 +0200
+++ gcc/cgraphunit.c 2009-10-16 17:57:06.000000000 +0200
@@ -1441,6 +1441,7 @@ cgraph_optimize (void)
timevar_pop (TV_CGRAPHOPT);
/* Output everything. */
+ (*debug_hooks->assembly_start) ();
if (!quiet_flag)
fprintf (stderr, "Assembling functions:\n");
#ifdef ENABLE_CHECKING
--- gcc/dwarf2out.c.jj 2009-10-16 01:51:02.000000000 +0200
+++ gcc/dwarf2out.c 2009-10-16 18:00:31.000000000 +0200
@@ -5401,6 +5401,7 @@ static int output_indirect_string (void
static void dwarf2out_init (const char *);
static void dwarf2out_finish (const char *);
+static void dwarf2out_assembly_start (void);
static void dwarf2out_define (unsigned int, const char *);
static void dwarf2out_undef (unsigned int, const char *);
static void dwarf2out_start_source_file (unsigned, const char *);
@@ -5427,6 +5428,7 @@ const struct gcc_debug_hooks dwarf2_debu
{
dwarf2out_init,
dwarf2out_finish,
+ dwarf2out_assembly_start,
dwarf2out_define,
dwarf2out_undef,
dwarf2out_start_source_file,
@@ -20392,6 +20394,14 @@ dwarf2out_init (const char *filename ATT
ASM_OUTPUT_LABEL (asm_out_file, cold_text_section_label);
}
+}
+
+/* Called before cgraph_optimize starts outputtting functions, variables
+ and toplevel asms into assembly. */
+
+static void
+dwarf2out_assembly_start (void)
+{
if (HAVE_GAS_CFI_SECTIONS_DIRECTIVE && dwarf2out_do_cfi_asm ())
{
#ifndef TARGET_UNWIND_INFO
--- gcc/debug.c.jj 2009-10-13 16:20:12.000000000 +0200
+++ gcc/debug.c 2009-10-16 17:49:02.000000000 +0200
@@ -27,6 +27,7 @@ const struct gcc_debug_hooks do_nothing_
{
debug_nothing_charstar,
debug_nothing_charstar,
+ debug_nothing_void,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
--- gcc/dbxout.c.jj 2009-10-13 16:20:12.000000000 +0200
+++ gcc/dbxout.c 2009-10-16 17:50:58.000000000 +0200
@@ -346,6 +346,7 @@ const struct gcc_debug_hooks dbx_debug_h
{
dbxout_init,
dbxout_finish,
+ debug_nothing_void,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
dbxout_start_source_file,
@@ -386,6 +387,7 @@ const struct gcc_debug_hooks xcoff_debug
{
dbxout_init,
dbxout_finish,
+ debug_nothing_void,
debug_nothing_int_charstar,
debug_nothing_int_charstar,
dbxout_start_source_file,
--- gcc/sdbout.c.jj 2009-10-13 16:20:12.000000000 +0200
+++ gcc/sdbout.c 2009-10-16 17:53:15.000000000 +0200
@@ -307,6 +307,7 @@ const struct gcc_debug_hooks sdb_debug_h
{
sdbout_init, /* init */
sdbout_finish, /* finish */
+ debug_nothing_void, /* assembly_start */
debug_nothing_int_charstar, /* define */
debug_nothing_int_charstar, /* undef */
sdbout_start_source_file, /* start_source_file */
--- gcc/vmsdbgout.c.jj 2009-10-13 16:20:11.000000000 +0200
+++ gcc/vmsdbgout.c 2009-10-16 18:01:46.000000000 +0200
@@ -168,6 +168,7 @@ static int write_srccorrs (int);
static void vmsdbgout_init (const char *);
static void vmsdbgout_finish (const char *);
+static void vmsdbgout_assembly_start (void);
static void vmsdbgout_define (unsigned int, const char *);
static void vmsdbgout_undef (unsigned int, const char *);
static void vmsdbgout_start_source_file (unsigned int, const char *);
@@ -190,6 +191,7 @@ static void vmsdbgout_abstract_function
const struct gcc_debug_hooks vmsdbg_debug_hooks
= {vmsdbgout_init,
vmsdbgout_finish,
+ vmsdbgout_assembly_start,
vmsdbgout_define,
vmsdbgout_undef,
vmsdbgout_start_source_file,
@@ -1618,6 +1620,15 @@ vmsdbgout_init (const char *main_input_f
/* Not implemented in VMS Debug. */
static void
+vmsdbgout_assembly_start (void)
+{
+ if (write_symbols == VMS_AND_DWARF2_DEBUG)
+ (*dwarf2_debug_hooks.assembly_start) ();
+}
+
+/* Not implemented in VMS Debug. */
+
+static void
vmsdbgout_define (unsigned int lineno, const char *buffer)
{
if (write_symbols == VMS_AND_DWARF2_DEBUG)