diff options
author | Douglas B Rupp <rupp@gnat.com> | 2010-06-29 19:05:53 +0000 |
---|---|---|
committer | Douglas Rupp <rupp@gcc.gnu.org> | 2010-06-29 19:05:53 +0000 |
commit | 528b7aa42d97f794318ac9943973605d601a410c (patch) | |
tree | b20aa8edbbf74481338f6f7b21d85123f430831b | |
parent | cb488ce12e611e2f936c48a420c377a558196f8f (diff) | |
download | gcc-528b7aa42d97f794318ac9943973605d601a410c.zip gcc-528b7aa42d97f794318ac9943973605d601a410c.tar.gz gcc-528b7aa42d97f794318ac9943973605d601a410c.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/vmsdbgout.c | 50 |
2 files changed, 57 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7822e8c..ea4b468 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ 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. 2010-06-29 Douglas B Rupp <rupp@gnat.com> diff --git a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c index 2bf0aff..e6968a5 100644 --- a/gcc/vmsdbgout.c +++ b/gcc/vmsdbgout.c @@ -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_end_prologue (unsigned int, const char *); 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_begin_function (tree); static void vmsdbgout_decl (tree); static void vmsdbgout_global_decl (tree); +static void vmsdbgout_type_decl (tree, int); static void vmsdbgout_abstract_function (tree); /* The debug hooks structure. */ @@ -201,13 +203,13 @@ const struct gcc_debug_hooks vmsdbg_debug_hooks vmsdbgout_source_line, vmsdbgout_begin_prologue, vmsdbgout_end_prologue, - debug_nothing_int_charstar, /* begin_epilogue */ + vmsdbgout_begin_epilogue, vmsdbgout_end_epilogue, vmsdbgout_begin_function, vmsdbgout_end_function, vmsdbgout_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, /* deferred_inline_function */ vmsdbgout_abstract_function, @@ -285,6 +287,9 @@ static char text_end_label[MAX_ARTIFICIAL_LABEL_BYTES]; #ifndef FUNC_PROLOG_LABEL #define FUNC_PROLOG_LABEL "LVFP" #endif +#ifndef FUNC_EPILOG_LABEL +#define FUNC_EPILOG_LABEL "LVEB" +#endif #ifndef FUNC_END_LABEL #define FUNC_END_LABEL "LVFE" #endif @@ -1188,6 +1193,38 @@ vmsdbgout_end_function (unsigned int 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 for a function definition. This gets called *after* the epilogue code has been generated. */ @@ -1536,6 +1573,15 @@ vmsdbgout_global_decl (tree decl) /* Not implemented in VMS Debug. */ 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) { if (write_symbols == VMS_AND_DWARF2_DEBUG) |