Commit 528b7aa4 by Douglas B Rupp Committed by Douglas Rupp

vmsdbgout.c (vmsdbgout_begin_epilogue): Declare

	* vmsdbgout.c (vmsdbgout_begin_epilogue): Declare
	(vmsdbgout_type_decl): Declare
	(vmsdbg_debug_hooks): Add entry for type_decl and begin_epilogue.
	(FUNC_EPILOGUE_LABEL): New macro
	(vmsdbgout_begin_epilogue): New function.
	(vmsdbgout_type_decl): New function.

From-SVN: r161553
parent cb488ce1
2010-06-29 Douglas B Rupp <rupp@gnat.com> 2010-06-29 Douglas B Rupp <rupp@gnat.com>
* vmsdbgout.c (vmsdbgout_begin_epilogue): Declare
(vmsdbgout_type_decl): Declare
(vmsdbg_debug_hooks): Add entry for type_decl and begin_epilogue.
(FUNC_EPILOGUE_LABEL): New macro
(vmsdbgout_begin_epilogue): New function.
(vmsdbgout_type_decl): New function.
2010-06-29 Douglas B Rupp <rupp@gnat.com>
* vmsdbg.h: Update copyright. * vmsdbg.h: Update copyright.
2010-06-29 Douglas B Rupp <rupp@gnat.com> 2010-06-29 Douglas B Rupp <rupp@gnat.com>
......
...@@ -179,10 +179,12 @@ static void vmsdbgout_source_line (unsigned int, const char *, int, bool); ...@@ -179,10 +179,12 @@ static void vmsdbgout_source_line (unsigned int, const char *, int, bool);
static void vmsdbgout_begin_prologue (unsigned int, const char *); static void vmsdbgout_begin_prologue (unsigned int, const char *);
static void vmsdbgout_end_prologue (unsigned int, const char *); static void vmsdbgout_end_prologue (unsigned int, const char *);
static void vmsdbgout_end_function (unsigned int); static void vmsdbgout_end_function (unsigned int);
static void vmsdbgout_begin_epilogue (unsigned int, const char *);
static void vmsdbgout_end_epilogue (unsigned int, const char *); static void vmsdbgout_end_epilogue (unsigned int, const char *);
static void vmsdbgout_begin_function (tree); static void vmsdbgout_begin_function (tree);
static void vmsdbgout_decl (tree); static void vmsdbgout_decl (tree);
static void vmsdbgout_global_decl (tree); static void vmsdbgout_global_decl (tree);
static void vmsdbgout_type_decl (tree, int);
static void vmsdbgout_abstract_function (tree); static void vmsdbgout_abstract_function (tree);
/* The debug hooks structure. */ /* The debug hooks structure. */
...@@ -201,13 +203,13 @@ const struct gcc_debug_hooks vmsdbg_debug_hooks ...@@ -201,13 +203,13 @@ const struct gcc_debug_hooks vmsdbg_debug_hooks
vmsdbgout_source_line, vmsdbgout_source_line,
vmsdbgout_begin_prologue, vmsdbgout_begin_prologue,
vmsdbgout_end_prologue, vmsdbgout_end_prologue,
debug_nothing_int_charstar, /* begin_epilogue */ vmsdbgout_begin_epilogue,
vmsdbgout_end_epilogue, vmsdbgout_end_epilogue,
vmsdbgout_begin_function, vmsdbgout_begin_function,
vmsdbgout_end_function, vmsdbgout_end_function,
vmsdbgout_decl, vmsdbgout_decl,
vmsdbgout_global_decl, vmsdbgout_global_decl,
debug_nothing_tree_int, /* type_decl */ vmsdbgout_type_decl, /* type_decl */
debug_nothing_tree_tree_tree_bool, /* imported_module_or_decl */ debug_nothing_tree_tree_tree_bool, /* imported_module_or_decl */
debug_nothing_tree, /* deferred_inline_function */ debug_nothing_tree, /* deferred_inline_function */
vmsdbgout_abstract_function, vmsdbgout_abstract_function,
...@@ -285,6 +287,9 @@ static char text_end_label[MAX_ARTIFICIAL_LABEL_BYTES]; ...@@ -285,6 +287,9 @@ static char text_end_label[MAX_ARTIFICIAL_LABEL_BYTES];
#ifndef FUNC_PROLOG_LABEL #ifndef FUNC_PROLOG_LABEL
#define FUNC_PROLOG_LABEL "LVFP" #define FUNC_PROLOG_LABEL "LVFP"
#endif #endif
#ifndef FUNC_EPILOG_LABEL
#define FUNC_EPILOG_LABEL "LVEB"
#endif
#ifndef FUNC_END_LABEL #ifndef FUNC_END_LABEL
#define FUNC_END_LABEL "LVFE" #define FUNC_END_LABEL "LVFE"
#endif #endif
...@@ -1188,6 +1193,38 @@ vmsdbgout_end_function (unsigned int line) ...@@ -1188,6 +1193,38 @@ vmsdbgout_end_function (unsigned int line)
(*dwarf2_debug_hooks.end_function) (line); (*dwarf2_debug_hooks.end_function) (line);
} }
/* Output a marker (i.e. a label) for the beginning of the epilogue.
This gets called *before* the epilogue code has been generated. */
static void
vmsdbgout_begin_epilogue (unsigned int line, const char *file)
{
char label[MAX_ARTIFICIAL_LABEL_BYTES];
static int save_current_function_funcdef_no = -1;
if (write_symbols == VMS_AND_DWARF2_DEBUG)
(*dwarf2_debug_hooks.begin_epilogue) (line, file);
if (debug_info_level > DINFO_LEVEL_NONE)
{
if (save_current_function_funcdef_no != current_function_funcdef_no)
{
/* Output a label to mark the endpoint of the code generated for this
function. */
ASM_GENERATE_INTERNAL_LABEL (label, FUNC_EPILOG_LABEL,
current_function_funcdef_no);
ASM_OUTPUT_LABEL (asm_out_file, label);
save_current_function_funcdef_no = current_function_funcdef_no;
/* VMS PCA expects every PC range to correlate to some line and
file. */
vmsdbgout_source_line (line, file, 0, true);
}
}
}
/* Output a marker (i.e. a label) for the absolute end of the generated code /* Output a marker (i.e. a label) for the absolute end of the generated code
for a function definition. This gets called *after* the epilogue code has for a function definition. This gets called *after* the epilogue code has
been generated. */ been generated. */
...@@ -1536,6 +1573,15 @@ vmsdbgout_global_decl (tree decl) ...@@ -1536,6 +1573,15 @@ vmsdbgout_global_decl (tree decl)
/* Not implemented in VMS Debug. */ /* Not implemented in VMS Debug. */
static void static void
vmsdbgout_type_decl (tree decl, int local)
{
if (write_symbols == VMS_AND_DWARF2_DEBUG)
(*dwarf2_debug_hooks.type_decl) (decl, local);
}
/* Not implemented in VMS Debug. */
static void
vmsdbgout_abstract_function (tree decl) vmsdbgout_abstract_function (tree decl)
{ {
if (write_symbols == VMS_AND_DWARF2_DEBUG) if (write_symbols == VMS_AND_DWARF2_DEBUG)
......
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