144 lines
5.0 KiB
Diff
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)
|