diff options
author | Douglas B Rupp <rupp@gnat.com> | 2010-06-16 19:40:46 +0000 |
---|---|---|
committer | Douglas Rupp <rupp@gcc.gnu.org> | 2010-06-16 19:40:46 +0000 |
commit | 67ad2ae729dc1e164675261f354699ca5410a0f0 (patch) | |
tree | eef98f370a10307f3f44fbf4305711f9f3f71b89 /gcc/dwarf2asm.c | |
parent | ed5c4a103307764b5a4199caa9ebd70ce3d76a26 (diff) | |
download | gcc-67ad2ae729dc1e164675261f354699ca5410a0f0.zip gcc-67ad2ae729dc1e164675261f354699ca5410a0f0.tar.gz gcc-67ad2ae729dc1e164675261f354699ca5410a0f0.tar.bz2 |
This patch adds the end prologue and begin epilogue markers in Dwarf2
that are needed by the VMS debugger on I64.
* config/ia64/vms.h (ASM_OUTPUT_DWARF_DELTA_UNITS): Remove.
(ASM_OUTPUT_DWARF_VMS_DELTA: Define new macro.
* dbxout.c (gcc_debug_hooks): New entry begin_epilogue.
* debug.c: Likewise.
* sdbout.c: Likewise.
* vmsdbgout.c: Likewise.
* debug.h: Likewise. (dwarf2out_vms_{begin,end}_prologue): Declare.
* doc/tm.texi (ASM_OUTPUT_DWARF_VMS_DELTA): Document.
* dwarf2asm.c (dw2_asm_output_vms_delta): New function.
(ASM_OUTPUT_DWARF_VMS_DELTA): Call it.
* dwarf2asm.h (dw2_asm_output_vms_delta): Declare.
* dwarf2out.c (dw_fde_struct): New fields
dw_fde_vms_{end,begin}_prologue.
(PROLOGUE_END_LABEL, EPILOGUE_BEGIN_LABEL): New macros.
(dwarf2out_begin_prologue): Set dw_fde_struct defaults for above.
(dwarf2out_vms_end_prologue): New function.
(dwarf2out_vms_begin_epilogue): New function.
(dw_val_struct): New value dw_val_class_vms_delta.
(gcc_debug_hooks): New entry begin_epilogue. Set end_prologue,
begin_epilogue for VMS.
(AT_vms_delta1, AT_vms_delta2, add_AT_vms_delta): Declare
new static functions.
(dwarf_attr_name): New cases DW_AT_HP_{prologue,epilogue}.
(AT_vms_delta1, AT_vms_delta2, add_AT_vms_delta): New
static functions.
(print_die): New case dw_val_class_vms_delta.
(attr_checksum): Likewise.
(same_dw_val_p: Likewise.
(size_of_die): Likewise.
(value_format): Likewise.
(output_die): Likewise.
(gen_subprogram_die): Call add_AT_vms_delta on VMS.
(dwarf2out_begin_epilogue): Rename to dwarf2out_cfi_begin_epilogue
* dwarf2out.h (dwarf2out_begin_epilogue): Rename to
dwarf2out_cfi_begin_epilogue
* final.c (final_scan_insn): Likewise. Call begin_epilogue.
From-SVN: r160858
Diffstat (limited to 'gcc/dwarf2asm.c')
-rw-r--r-- | gcc/dwarf2asm.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c index 8e16a21..84e8cad 100644 --- a/gcc/dwarf2asm.c +++ b/gcc/dwarf2asm.c @@ -152,6 +152,35 @@ dw2_asm_output_delta (int size, const char *lab1, const char *lab2, va_end (ap); } +/* Output the difference between two symbols in instruction units + in a given size. */ + +void +dw2_asm_output_vms_delta (int size ATTRIBUTE_UNUSED, + const char *lab1, const char *lab2, + const char *comment, ...) +{ + va_list ap; + + va_start (ap, comment); + +#ifndef ASM_OUTPUT_DWARF_VMS_DELTA + /* VMS Delta is only special on ia64-vms, but this funtion also gets + called on alpha-vms so it has to do something sane. */ + dw2_asm_output_delta (size, lab1, lab2, comment); +#else + ASM_OUTPUT_DWARF_VMS_DELTA (asm_out_file, size, lab1, lab2); + if (flag_debug_asm && comment) + { + fprintf (asm_out_file, "\t%s ", ASM_COMMENT_START); + vfprintf (asm_out_file, comment, ap); + } + fputc ('\n', asm_out_file); +#endif + + va_end (ap); +} + /* Output a section-relative reference to a LABEL, which was placed in BASE. In general this can only be done for debugging symbols. E.g. on most targets with the GNU linker, this is accomplished with |