Commit 8e7745dc by Douglas B Rupp Committed by Douglas Rupp

dwarf2out.c (dwarf2out_vms_debug_main_pointer): New function.

	* dwarf2out.c (dwarf2out_vms_debug_main_pointer): New function.
	* dwarf2out.h (dwarf2out_vms_debug_main_pointer): Declare new function.
	* config/ia64/ia64-protos.h (ia64_start_function): Declare.
	* config/ia64/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Move contents
	to ia64_start_function. Invoke it.
	* config/ia64/ia64.c (ia64_start_function): Call new function
	dwarf2out_vms_debug_main_pointer.

From-SVN: r161402
parent 5c8b27d7
2010-06-25 Douglas B Rupp <rupp@gnat.com>
* dwarf2out.c (dwarf2out_vms_debug_main_pointer): New function.
* dwarf2out.h (dwarf2out_vms_debug_main_pointer): Declare new function.
* config/ia64/ia64-protos.h (ia64_start_function): Declare.
* config/ia64/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Move contents
to ia64_start_function. Invoke it.
* config/ia64/ia64.c (ia64_start_function): Call new function
dwarf2out_vms_debug_main_pointer.
2010-06-25 Sebastian Pop <sebastian.pop@amd.com> 2010-06-25 Sebastian Pop <sebastian.pop@amd.com>
* tree-if-conv.c (insert_gimplified_predicates): Do not insert * tree-if-conv.c (insert_gimplified_predicates): Do not insert
......
/* Definitions of target machine for GNU compiler for IA-64. /* Definitions of target machine for GNU compiler for IA-64.
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2007 Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2007, 2010
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -79,6 +79,7 @@ extern void ia64_vms_output_aligned_decl_common (FILE *, tree, const char *, ...@@ -79,6 +79,7 @@ extern void ia64_vms_output_aligned_decl_common (FILE *, tree, const char *,
unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT,
unsigned int); unsigned int);
extern void ia64_vms_elf_asm_named_section (const char *, unsigned int, tree); extern void ia64_vms_elf_asm_named_section (const char *, unsigned int, tree);
extern void ia64_start_function (FILE *, const char *, tree);
#endif /* TREE_CODE */ #endif /* TREE_CODE */
extern int ia64_register_move_cost (enum machine_mode, enum reg_class, extern int ia64_register_move_cost (enum machine_mode, enum reg_class,
......
...@@ -3423,6 +3423,29 @@ ia64_expand_prologue (void) ...@@ -3423,6 +3423,29 @@ ia64_expand_prologue (void)
finish_spill_pointers (); finish_spill_pointers ();
} }
/* Output the textual info surrounding the prologue. */
void
ia64_start_function (FILE *file, const char *fnname,
tree decl ATTRIBUTE_UNUSED)
{
#if VMS_DEBUGGING_INFO
if (vms_debug_main
&& strncmp (vms_debug_main, fnname, strlen (vms_debug_main)) == 0)
{
targetm.asm_out.globalize_label (asm_out_file, VMS_DEBUG_MAIN_POINTER);
ASM_OUTPUT_DEF (asm_out_file, VMS_DEBUG_MAIN_POINTER, fnname);
dwarf2out_vms_debug_main_pointer ();
vms_debug_main = 0;
}
#endif
fputs ("\t.proc ", file);
assemble_name (file, fnname);
fputc ('\n', file);
ASM_OUTPUT_LABEL (file, fnname);
}
/* Called after register allocation to add any instructions needed for the /* Called after register allocation to add any instructions needed for the
epilogue. Using an epilogue insn is favored compared to putting all of the epilogue. Using an epilogue insn is favored compared to putting all of the
instructions in output_function_prologue(), since it allows the scheduler instructions in output_function_prologue(), since it allows the scheduler
......
/* Override definitions in elfos.h/svr4.h to be correct for IA64. /* Override definitions in elfos.h/svr4.h to be correct for IA64.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005,
2007 Free Software Foundation, Inc. 2007, 2010 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -127,12 +127,7 @@ do { \ ...@@ -127,12 +127,7 @@ do { \
#undef ASM_DECLARE_FUNCTION_NAME #undef ASM_DECLARE_FUNCTION_NAME
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
do { \ ia64_start_function(FILE,NAME,DECL)
fputs ("\t.proc ", FILE); \
assemble_name (FILE, NAME); \
fputc ('\n', FILE); \
ASM_OUTPUT_LABEL (FILE, NAME); \
} while (0)
/* We redefine this to use the ia64 .endp pseudo-op. */ /* We redefine this to use the ia64 .endp pseudo-op. */
......
...@@ -17414,6 +17414,39 @@ add_name_and_src_coords_attributes (dw_die_ref die, tree decl) ...@@ -17414,6 +17414,39 @@ add_name_and_src_coords_attributes (dw_die_ref die, tree decl)
#endif #endif
} }
#ifdef VMS_DEBUGGING_INFO
/* Output the debug main pointer die for VMS */
void
dwarf2out_vms_debug_main_pointer (void)
{
char label[MAX_ARTIFICIAL_LABEL_BYTES];
dw_die_ref die;
/* Allocate the VMS debug main subprogram die. */
die = ggc_alloc_cleared_die_node ();
die->die_tag = DW_TAG_subprogram;
add_name_attribute (die, VMS_DEBUG_MAIN_POINTER);
ASM_GENERATE_INTERNAL_LABEL (label, PROLOGUE_END_LABEL,
current_function_funcdef_no);
add_AT_lbl_id (die, DW_AT_entry_pc, label);
/* Make it the first child of comp_unit_die. */
die->die_parent = comp_unit_die;
if (comp_unit_die->die_child)
{
die->die_sib = comp_unit_die->die_child->die_sib;
comp_unit_die->die_child->die_sib = die;
}
else
{
die->die_sib = die;
comp_unit_die->die_child = die;
}
}
#endif
/* Push a new declaration scope. */ /* Push a new declaration scope. */
static void static void
......
...@@ -27,6 +27,9 @@ extern void debug_dwarf (void); ...@@ -27,6 +27,9 @@ extern void debug_dwarf (void);
struct die_struct; struct die_struct;
extern void debug_dwarf_die (struct die_struct *); extern void debug_dwarf_die (struct die_struct *);
extern void dwarf2out_set_demangle_name_func (const char *(*) (const char *)); extern void dwarf2out_set_demangle_name_func (const char *(*) (const char *));
#ifdef VMS_DEBUGGING_INFO
extern void dwarf2out_vms_debug_main_pointer (void);
#endif
struct array_descr_info struct array_descr_info
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment