mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 17:20:37 +08:00
vms.h (VMS_DEBUGGING_INFO): New macro.
* config/alpha/vms.h (VMS_DEBUGGING_INFO): New macro. (PREFERRED_DEBUGGING_TYPE): Define as VMS_AND_DWARF2_DEBUG. (ASM_SPEC): Don't redefine. (OPTIMIZATION_OPTIONS, OVERRIDE_OPTIONS, LINK_SPEC): Define. * config/alpha/t-vms (EXTRA_PARTS): Use; add rule for vms-dwarf2.asm. * config/alpha/vms-dwarf2.asm: New file. * Makefile.in (OBJS): Add vmsdbgout.c and its rule. * c-lex.c (init_c_lex): Test for VMS_AND_DWARF2_DEBUG. * debug.h (gcc_debug_hooks): Add vmsdbg_debug_hooks. (vmsdbgout_after_prologue): New declaration. * defaults.h (VMS_DEBUGGING_INFO): Add to PREFERRED_DEBUGGING_TYPE. * dwarf2.h (dwarf_attribute): New DW_AT_VMS_rtnbeg_pd_address. * dwarf2out.c (dwarf2out_do_frame): Test for VMS_AND_DWARF2_DEBUG. (dwarf2out_frame_finish): Test for VMS_AND_DWARF2_DEBUG. (dwarf_attr_name): Use DW_AT_VMS_rtnbeg_pd_address. (add_name_and_src_coords_attributes): Test VMS_DEBUGGING_INFO * final.c (final_start_function): Test for VMS_AND_DWARF2_DEBUG. Test VMS_DEBUGGING_INFO. (final_end_function): Test for VMS_AND_DWARF2_DEBUG. (final_scan_insn): Test for VMS_AND_DWARF2_DEBUG and VMS_DEBUG. * flags.h (debug_info_type): Add VMS_DEBUG and VMS_AND_DWARF2_DEBUG. * toplev.c (compile_file): Test VMS_DEBUGGING_INFO, VMS_DEBUG, and VMS_AND_DWARF2_DEBUG. (rest_of_type_compilation): Test for VMS_AND_DWARF2_DEBUG. (decode_g_option): Add "vms" to debug_type_names. (process_options): Set vmsdbg_debug_hooks if -gvms. (lang_independent_init): Emit line number for VMS unless -g0. * tree.c: (build_complex_type): Test for VMS_AND_DWARF2_DEBUG. * vmsdbg.h, vmsdbgout.c: New files. From-SVN: r47532
This commit is contained in:
parent
e773246d9c
commit
7a0c8d7108
@ -1,3 +1,36 @@
|
||||
Sun Dec 2 09:22:25 2001 Douglas B. Rupp <rupp@gnat.com>
|
||||
|
||||
* config/alpha/vms.h (VMS_DEBUGGING_INFO): New macro.
|
||||
(PREFERRED_DEBUGGING_TYPE): Define as VMS_AND_DWARF2_DEBUG.
|
||||
(ASM_SPEC): Don't redefine.
|
||||
(OPTIMIZATION_OPTIONS, OVERRIDE_OPTIONS, LINK_SPEC): Define.
|
||||
* config/alpha/t-vms (EXTRA_PARTS): Use; add rule for vms-dwarf2.asm.
|
||||
* config/alpha/vms-dwarf2.asm: New file.
|
||||
|
||||
* Makefile.in (OBJS): Add vmsdbgout.c and its rule.
|
||||
* c-lex.c (init_c_lex): Test for VMS_AND_DWARF2_DEBUG.
|
||||
* debug.h (gcc_debug_hooks): Add vmsdbg_debug_hooks.
|
||||
(vmsdbgout_after_prologue): New declaration.
|
||||
* defaults.h (VMS_DEBUGGING_INFO): Add to PREFERRED_DEBUGGING_TYPE.
|
||||
* dwarf2.h (dwarf_attribute): New DW_AT_VMS_rtnbeg_pd_address.
|
||||
* dwarf2out.c (dwarf2out_do_frame): Test for VMS_AND_DWARF2_DEBUG.
|
||||
(dwarf2out_frame_finish): Test for VMS_AND_DWARF2_DEBUG.
|
||||
(dwarf_attr_name): Use DW_AT_VMS_rtnbeg_pd_address.
|
||||
(add_name_and_src_coords_attributes): Test VMS_DEBUGGING_INFO
|
||||
* final.c (final_start_function): Test for VMS_AND_DWARF2_DEBUG.
|
||||
Test VMS_DEBUGGING_INFO.
|
||||
(final_end_function): Test for VMS_AND_DWARF2_DEBUG.
|
||||
(final_scan_insn): Test for VMS_AND_DWARF2_DEBUG and VMS_DEBUG.
|
||||
* flags.h (debug_info_type): Add VMS_DEBUG and VMS_AND_DWARF2_DEBUG.
|
||||
* toplev.c (compile_file): Test VMS_DEBUGGING_INFO, VMS_DEBUG, and
|
||||
VMS_AND_DWARF2_DEBUG.
|
||||
(rest_of_type_compilation): Test for VMS_AND_DWARF2_DEBUG.
|
||||
(decode_g_option): Add "vms" to debug_type_names.
|
||||
(process_options): Set vmsdbg_debug_hooks if -gvms.
|
||||
(lang_independent_init): Emit line number for VMS unless -g0.
|
||||
* tree.c: (build_complex_type): Test for VMS_AND_DWARF2_DEBUG.
|
||||
* vmsdbg.h, vmsdbgout.c: New files.
|
||||
|
||||
Sun Dec 2 09:03:06 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* cfgbuild.c (SET_STATE): Add cast to eliminate warning.a
|
||||
|
@ -728,7 +728,7 @@ OBJS = alias.o bb-reorder.o bitmap.o builtins.o caller-save.o calls.o \
|
||||
sbitmap.o sched-deps.o sched-ebb.o sched-rgn.o sched-vis.o sdbout.o \
|
||||
sibcall.o simplify-rtx.o ssa.o ssa-ccp.o ssa-dce.o stmt.o \
|
||||
stor-layout.o stringpool.o timevar.o toplev.o tree.o tree-dump.o \
|
||||
tree-inline.o unroll.o varasm.o varray.o version.o xcoffout.o \
|
||||
tree-inline.o unroll.o varasm.o varray.o version.o vmsdbgout.o xcoffout.o \
|
||||
$(GGC) $(out_object_file) $(EXTRA_OBJS)
|
||||
|
||||
BACKEND = main.o libbackend.a
|
||||
@ -1395,6 +1395,8 @@ dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf2.h \
|
||||
$(GGC_H) except.h dwarf2asm.h $(TM_P_H) langhooks.h
|
||||
dwarf2asm.o : dwarf2asm.c $(CONFIG_H) $(SYSTEM_H) flags.h $(RTL_H) $(TREE_H) \
|
||||
output.h dwarf2asm.h $(TM_P_H)
|
||||
vmsdbgout.o : vmsdbgout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
|
||||
output.h vmsdbg.h debug.h langhooks.h
|
||||
xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) xcoffout.h \
|
||||
flags.h toplev.h output.h dbxout.h $(GGC_H)
|
||||
emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
|
||||
|
@ -133,7 +133,8 @@ init_c_lex (filename)
|
||||
|
||||
/* Set the debug callbacks if we can use them. */
|
||||
if (debug_info_level == DINFO_LEVEL_VERBOSE
|
||||
&& (write_symbols == DWARF_DEBUG || write_symbols == DWARF2_DEBUG))
|
||||
&& (write_symbols == DWARF_DEBUG || write_symbols == DWARF2_DEBUG
|
||||
|| write_symbols == VMS_AND_DWARF2_DEBUG))
|
||||
{
|
||||
cb->define = cb_define;
|
||||
cb->undef = cb_undef;
|
||||
|
@ -1 +1,7 @@
|
||||
LIB2FUNCS_EXTRA = $(srcdir)/config/alpha/vms_tramp.asm
|
||||
EXTRA_PARTS = vms-dwarf2.o
|
||||
|
||||
# This object must be linked in in order to make the executable debuggable.
|
||||
# vms-ld handles it automatically when passed -g.
|
||||
vms-dwarf2.o : $(srcdir)/config/alpha/vms-dwarf2.asm
|
||||
gcc -c -x assembler $<
|
||||
|
82
gcc/config/alpha/vms-dwarf2.asm
Normal file
82
gcc/config/alpha/vms-dwarf2.asm
Normal file
@ -0,0 +1,82 @@
|
||||
/* VMS dwarf2 section sequentializer.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
Contributed by Douglas B. Rupp (rupp@gnat.com).
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
In addition to the permissions in the GNU General Public License, the
|
||||
Free Software Foundation gives you unlimited permission to link the
|
||||
compiled version of this file into combinations with other programs,
|
||||
and to distribute those combinations without any restriction coming
|
||||
from the use of this file. (The General Public License restrictions
|
||||
do apply in other respects; for example, they cover modification of
|
||||
the file, and distribution when not linked into a combine
|
||||
executable.)
|
||||
|
||||
GNU CC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Linking with this file forces Dwarf2 debug sections to be
|
||||
sequentially loaded by the VMS linker, enabling GDB to read them. */
|
||||
|
||||
.section .debug_abbrev,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_abbrev
|
||||
$dwarf2.debug_abbrev:
|
||||
|
||||
.section .debug_aranges,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_aranges
|
||||
$dwarf2.debug_aranges:
|
||||
|
||||
.section .debug_frame,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_frame
|
||||
$dwarf2.debug_frame:
|
||||
|
||||
.section .debug_info,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_info
|
||||
$dwarf2.debug_info:
|
||||
|
||||
.section .debug_line,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_line
|
||||
$dwarf2.debug_line:
|
||||
|
||||
.section .debug_loc,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_loc
|
||||
$dwarf2.debug_loc:
|
||||
|
||||
.section .debug_macinfo,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_macinfo
|
||||
$dwarf2.debug_macinfo:
|
||||
|
||||
.section .debug_pubnames,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_pubnames
|
||||
$dwarf2.debug_pubnames:
|
||||
|
||||
.section .debug_str,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_str
|
||||
$dwarf2.debug_str:
|
||||
|
||||
.section .debug_zzzzzz,NOWRT
|
||||
.align 0
|
||||
.globl $dwarf2.debug_zzzzzz
|
||||
$dwarf2.debug_zzzzzz:
|
@ -403,6 +403,7 @@ do { \
|
||||
#undef DBX_DEBUGGING_INFO
|
||||
|
||||
#define DWARF2_DEBUGGING_INFO
|
||||
#define VMS_DEBUGGING_INFO
|
||||
|
||||
/* This is how to output an assembler line
|
||||
that says to advance the location counter
|
||||
@ -425,7 +426,7 @@ do { \
|
||||
} while (0)
|
||||
|
||||
#undef PREFERRED_DEBUGGING_TYPE
|
||||
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
|
||||
#define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG
|
||||
|
||||
#undef ASM_FORMAT_PRIVATE_NAME
|
||||
#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO) \
|
||||
@ -437,10 +438,33 @@ do { \
|
||||
|
||||
#undef ASM_SPEC
|
||||
#undef ASM_FINAL_SPEC
|
||||
|
||||
/* The VMS convention is to always provide minimal debug info
|
||||
for a traceback unless specifically overridden. Defaulting this here
|
||||
is a kludge. */
|
||||
|
||||
#define OPTIMIZATION_OPTIONS(OPTIMIZE, OPTIMIZE_SIZE) \
|
||||
{ \
|
||||
write_symbols = VMS_DEBUG; \
|
||||
debug_info_level = (enum debug_info_level) 1; \
|
||||
}
|
||||
|
||||
/* Override traceback debug info on -g0. */
|
||||
#undef OVERRIDE_OPTIONS
|
||||
#define OVERRIDE_OPTIONS \
|
||||
{ \
|
||||
if (write_symbols == NO_DEBUG) \
|
||||
debug_info_level = (enum debug_info_level) 0; \
|
||||
override_options (); \
|
||||
}
|
||||
|
||||
/* Link with vms-dwarf2.o if -g (except -g0). This causes the
|
||||
VMS link to pull all the dwarf2 debug sections together. */
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "%{g:-g vms-dwarf2.o%s} %{g0} %{g1:-g1 vms-dwarf2.o%s} \
|
||||
%{g2:-g2 vms-dwarf2.o%s} %{g3:-g3 vms-dwarf2.o%s} %{shared} %{v} %{map}"
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define ASM_SPEC "-nocpp %{pg}"
|
||||
#define LINK_SPEC "%{g3:-g3} %{g0:-g0} %{shared:-shared} %{v:-v}"
|
||||
|
||||
/* Define the names of the division and modulus functions. */
|
||||
#define DIVSI3_LIBCALL "OTS$DIV_I"
|
||||
|
24
gcc/debug.h
24
gcc/debug.h
@ -133,22 +133,22 @@ extern struct gcc_debug_hooks sdb_debug_hooks;
|
||||
extern struct gcc_debug_hooks xcoff_debug_hooks;
|
||||
extern struct gcc_debug_hooks dwarf_debug_hooks;
|
||||
extern struct gcc_debug_hooks dwarf2_debug_hooks;
|
||||
extern struct gcc_debug_hooks vmsdbg_debug_hooks;
|
||||
|
||||
/* Dwarf2 frame information. */
|
||||
|
||||
/* FILE is NULL iff being called for frame information for non-dwarf
|
||||
debug output. */
|
||||
extern void dwarf2out_begin_prologue
|
||||
PARAMS ((unsigned int, const char * file));
|
||||
extern void dwarf2out_end_epilogue
|
||||
PARAMS ((void));
|
||||
extern void dwarf2out_frame_init
|
||||
PARAMS ((void));
|
||||
extern void dwarf2out_frame_finish
|
||||
PARAMS ((void));
|
||||
extern void dwarf2out_begin_prologue PARAMS ((unsigned int, const char *));
|
||||
extern void dwarf2out_end_epilogue PARAMS ((void));
|
||||
extern void dwarf2out_frame_init PARAMS ((void));
|
||||
extern void dwarf2out_frame_finish PARAMS ((void));
|
||||
/* Decide whether we want to emit frame unwind information for the current
|
||||
translation unit. */
|
||||
extern int dwarf2out_do_frame
|
||||
PARAMS ((void));
|
||||
extern int dwarf2out_do_frame PARAMS ((void));
|
||||
|
||||
/* When writing VMS debug info, output label after the prologue of the
|
||||
function. */
|
||||
extern void vmsdbgout_after_prologue PARAMS ((void));
|
||||
|
||||
|
||||
|
||||
#endif /* !GCC_DEBUG_H */
|
||||
|
@ -425,7 +425,7 @@ do { \
|
||||
PREFERRED_DEBUGGING_TYPE to choose a format in a system-dependent way.
|
||||
|
||||
This is one long line cause VAXC can't handle a \-newline. */
|
||||
#if 1 < (defined (DBX_DEBUGGING_INFO) + defined (SDB_DEBUGGING_INFO) + defined (DWARF_DEBUGGING_INFO) + defined (DWARF2_DEBUGGING_INFO) + defined (XCOFF_DEBUGGING_INFO))
|
||||
#if 1 < (defined (DBX_DEBUGGING_INFO) + defined (SDB_DEBUGGING_INFO) + defined (DWARF_DEBUGGING_INFO) + defined (DWARF2_DEBUGGING_INFO) + defined (XCOFF_DEBUGGING_INFO) + defined (VMS_DEBUGGING_INFO))
|
||||
#ifndef PREFERRED_DEBUGGING_TYPE
|
||||
You Lose! You must define PREFERRED_DEBUGGING_TYPE!
|
||||
#endif /* no PREFERRED_DEBUGGING_TYPE */
|
||||
@ -443,6 +443,9 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE!
|
||||
#ifdef DWARF2_DEBUGGING_INFO
|
||||
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
|
||||
#endif
|
||||
#ifdef VMS_DEBUGGING_INFO
|
||||
#define PREFERRED_DEBUGGING_TYPE VMS_AND_DWARF2_DEBUG
|
||||
#endif
|
||||
#ifdef XCOFF_DEBUGGING_INFO
|
||||
#define PREFERRED_DEBUGGING_TYPE XCOFF_DEBUG
|
||||
#endif
|
||||
|
@ -232,7 +232,9 @@ enum dwarf_attribute
|
||||
DW_AT_mac_info = 0x2103,
|
||||
DW_AT_src_coords = 0x2104,
|
||||
DW_AT_body_begin = 0x2105,
|
||||
DW_AT_body_end = 0x2106
|
||||
DW_AT_body_end = 0x2106,
|
||||
/* VMS Extensions */
|
||||
DW_AT_VMS_rtnbeg_pd_address = 0x2201
|
||||
};
|
||||
|
||||
#define DW_AT_lo_user 0x2000 /* implementation-defined range start */
|
||||
|
@ -91,6 +91,7 @@ int
|
||||
dwarf2out_do_frame ()
|
||||
{
|
||||
return (write_symbols == DWARF2_DEBUG
|
||||
|| write_symbols == VMS_AND_DWARF2_DEBUG
|
||||
#ifdef DWARF2_FRAME_INFO
|
||||
|| DWARF2_FRAME_INFO
|
||||
#endif
|
||||
@ -2115,7 +2116,7 @@ void
|
||||
dwarf2out_frame_finish ()
|
||||
{
|
||||
/* Output call frame information. */
|
||||
if (write_symbols == DWARF2_DEBUG)
|
||||
if (write_symbols == DWARF2_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG)
|
||||
output_call_frame_info (0);
|
||||
if (! USING_SJLJ_EXCEPTIONS && (flag_unwind_tables || flag_exceptions))
|
||||
output_call_frame_info (1);
|
||||
@ -4099,6 +4100,9 @@ dwarf_attr_name (attr)
|
||||
return "DW_AT_body_begin";
|
||||
case DW_AT_body_end:
|
||||
return "DW_AT_body_end";
|
||||
case DW_AT_VMS_rtnbeg_pd_address:
|
||||
return "DW_AT_VMS_rtnbeg_pd_address";
|
||||
|
||||
default:
|
||||
return "DW_AT_<unknown>";
|
||||
}
|
||||
@ -9311,6 +9315,15 @@ add_name_and_src_coords_attributes (die, decl)
|
||||
add_AT_string (die, DW_AT_MIPS_linkage_name,
|
||||
IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
|
||||
}
|
||||
|
||||
#ifdef VMS_DEBUGGING_INFO
|
||||
|
||||
/* Get the function's name, as described by its RTL. This may be different
|
||||
from the DECL_NAME name used in the source file. */
|
||||
if (TREE_CODE (decl) == FUNCTION_DECL && TREE_ASM_WRITTEN (decl))
|
||||
add_AT_string (die, DW_AT_VMS_rtnbeg_pd_address,
|
||||
xstrdup (XSTR (XEXP (DECL_RTL (decl), 0), 0)));
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Push a new declaration scope. */
|
||||
|
19
gcc/final.c
19
gcc/final.c
@ -1678,7 +1678,7 @@ final_start_function (first, file, optimize)
|
||||
(*debug_hooks->begin_prologue) (last_linenum, last_filename);
|
||||
|
||||
#if defined (DWARF2_UNWIND_INFO) || defined (IA64_UNWIND_INFO)
|
||||
if (write_symbols != DWARF2_DEBUG)
|
||||
if (write_symbols != DWARF2_DEBUG && write_symbols != VMS_AND_DWARF2_DEBUG)
|
||||
dwarf2out_begin_prologue (0, NULL);
|
||||
#endif
|
||||
|
||||
@ -1715,6 +1715,12 @@ final_start_function (first, file, optimize)
|
||||
/* First output the function prologue: code to set up the stack frame. */
|
||||
(*targetm.asm_out.function_prologue) (file, get_frame_size ());
|
||||
|
||||
#ifdef VMS_DEBUGGING_INFO
|
||||
/* Output label after the prologue of the function. */
|
||||
if (write_symbols == VMS_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG)
|
||||
vmsdbgout_after_prologue ();
|
||||
#endif
|
||||
|
||||
/* If the machine represents the prologue as RTL, the profiling code must
|
||||
be emitted when NOTE_INSN_PROLOGUE_END is scanned. */
|
||||
#ifdef HAVE_prologue
|
||||
@ -1846,7 +1852,8 @@ final_end_function ()
|
||||
(*debug_hooks->end_epilogue) ();
|
||||
|
||||
#if defined (DWARF2_UNWIND_INFO)
|
||||
if (write_symbols != DWARF2_DEBUG && dwarf2out_do_frame ())
|
||||
if (write_symbols != DWARF2_DEBUG && write_symbols != VMS_AND_DWARF2_DEBUG
|
||||
&& dwarf2out_do_frame ())
|
||||
dwarf2out_end_epilogue ();
|
||||
#endif
|
||||
|
||||
@ -2160,7 +2167,9 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
|
||||
if (debug_info_level == DINFO_LEVEL_NORMAL
|
||||
|| debug_info_level == DINFO_LEVEL_VERBOSE
|
||||
|| write_symbols == DWARF_DEBUG
|
||||
|| write_symbols == DWARF2_DEBUG)
|
||||
|| write_symbols == DWARF2_DEBUG
|
||||
|| write_symbols == VMS_AND_DWARF2_DEBUG
|
||||
|| write_symbols == VMS_DEBUG)
|
||||
{
|
||||
int n = BLOCK_NUMBER (NOTE_BLOCK (insn));
|
||||
|
||||
@ -2180,7 +2189,9 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
|
||||
if (debug_info_level == DINFO_LEVEL_NORMAL
|
||||
|| debug_info_level == DINFO_LEVEL_VERBOSE
|
||||
|| write_symbols == DWARF_DEBUG
|
||||
|| write_symbols == DWARF2_DEBUG)
|
||||
|| write_symbols == DWARF2_DEBUG
|
||||
|| write_symbols == VMS_AND_DWARF2_DEBUG
|
||||
|| write_symbols == VMS_DEBUG)
|
||||
{
|
||||
int n = BLOCK_NUMBER (NOTE_BLOCK (insn));
|
||||
|
||||
|
@ -32,7 +32,10 @@ enum debug_info_type
|
||||
SDB_DEBUG, /* Write COFF for (old) SDB (using sdbout.c). */
|
||||
DWARF_DEBUG, /* Write Dwarf debug info (using dwarfout.c). */
|
||||
DWARF2_DEBUG, /* Write Dwarf v2 debug info (using dwarf2out.c). */
|
||||
XCOFF_DEBUG /* Write IBM/Xcoff debug info (using dbxout.c). */
|
||||
XCOFF_DEBUG, /* Write IBM/Xcoff debug info (using dbxout.c). */
|
||||
VMS_DEBUG, /* Write VMS debug info (using vmsdbgout.c). */
|
||||
VMS_AND_DWARF2_DEBUG /* Write VMS debug info (using vmsdbgout.c).
|
||||
and DWARF v2 debug info (using dwarf2out.c). */
|
||||
};
|
||||
|
||||
/* Specify which kind of debugging info to generate. */
|
||||
|
18
gcc/toplev.c
18
gcc/toplev.c
@ -2332,7 +2332,9 @@ rest_of_type_compilation (type, toplev)
|
||||
sdbout_symbol (TYPE_STUB_DECL (type), !toplev);
|
||||
#endif
|
||||
#ifdef DWARF2_DEBUGGING_INFO
|
||||
if (write_symbols == DWARF2_DEBUG && toplev)
|
||||
if ((write_symbols == DWARF2_DEBUG
|
||||
|| write_symbols == VMS_AND_DWARF2_DEBUG)
|
||||
&& toplev)
|
||||
dwarf2out_decl (TYPE_STUB_DECL (type));
|
||||
#endif
|
||||
timevar_pop (TV_SYMOUT);
|
||||
@ -3974,7 +3976,7 @@ decode_g_option (arg)
|
||||
/* Indexed by enum debug_info_type. */
|
||||
static const char *const debug_type_names[] =
|
||||
{
|
||||
"none", "stabs", "coff", "dwarf-1", "dwarf-2", "xcoff"
|
||||
"none", "stabs", "coff", "dwarf-1", "dwarf-2", "xcoff", "vms"
|
||||
};
|
||||
|
||||
/* The maximum admissible debug level value. */
|
||||
@ -4937,6 +4939,10 @@ process_options ()
|
||||
if (write_symbols == DWARF2_DEBUG)
|
||||
debug_hooks = &dwarf2_debug_hooks;
|
||||
#endif
|
||||
#ifdef VMS_DEBUGGING_INFO
|
||||
if (write_symbols == VMS_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG)
|
||||
debug_hooks = &vmsdbg_debug_hooks;
|
||||
#endif
|
||||
|
||||
/* If auxiliary info generation is desired, open the output file.
|
||||
This goes in the same directory as the source file--unlike
|
||||
@ -4999,8 +5005,12 @@ lang_independent_init ()
|
||||
|
||||
init_emit_once (debug_info_level == DINFO_LEVEL_NORMAL
|
||||
|| debug_info_level == DINFO_LEVEL_VERBOSE
|
||||
|| flag_test_coverage
|
||||
|| warn_notreached);
|
||||
#ifdef VMS_DEBUGGING_INFO
|
||||
/* Enable line number info for traceback */
|
||||
|| debug_info_level > DINFO_LEVEL_NONE
|
||||
#endif
|
||||
|| flag_test_coverage
|
||||
|| warn_notreached);
|
||||
init_regs ();
|
||||
init_alias_once ();
|
||||
init_stmt ();
|
||||
|
@ -3997,7 +3997,8 @@ build_complex_type (component_type)
|
||||
|
||||
/* If we are writing Dwarf2 output we need to create a name,
|
||||
since complex is a fundamental type. */
|
||||
if (write_symbols == DWARF2_DEBUG && ! TYPE_NAME (t))
|
||||
if ((write_symbols == DWARF2_DEBUG || write_symbols == VMS_AND_DWARF2_DEBUG)
|
||||
&& ! TYPE_NAME (t))
|
||||
{
|
||||
const char *name;
|
||||
if (component_type == char_type_node)
|
||||
|
173
gcc/vmsdbg.h
Normal file
173
gcc/vmsdbg.h
Normal file
@ -0,0 +1,173 @@
|
||||
/* This file contains definitions for the data structures and codes used in
|
||||
VMS debugging information. */
|
||||
|
||||
#ifndef VMSDBG_H
|
||||
#define VMSDBG_H 1
|
||||
|
||||
typedef unsigned short int DST_DTYPE;
|
||||
#define DST_K_SOURCE 155
|
||||
#define DST_K_PROLOG 162
|
||||
#define DST_K_BLKBEG 176
|
||||
#define DST_K_BLKEND 177
|
||||
#define DST_K_LINE_NUM 185
|
||||
#define DST_K_MODBEG 188
|
||||
#define DST_K_MODEND 189
|
||||
#define DST_K_RTNBEG 190
|
||||
#define DST_K_RTNEND 191
|
||||
|
||||
typedef struct _DST_HEADER {
|
||||
union {
|
||||
unsigned short int dst_w_length;
|
||||
unsigned short int dst_x_length;
|
||||
} dst__header_length;
|
||||
union {
|
||||
DST_DTYPE dst_w_type;
|
||||
DST_DTYPE dst_x_type;
|
||||
} dst__header_type;
|
||||
} DST_HEADER;
|
||||
#define DST_K_DST_HEADER_SIZE 4
|
||||
|
||||
typedef unsigned int DST_LANGUAGE;
|
||||
#define DST_K_FORTRAN 1
|
||||
#define DST_K_C 7
|
||||
#define DST_K_ADA 9
|
||||
#define DST_K_UNKNOWN 10
|
||||
#define DST_K_CXX 15
|
||||
typedef struct _DST_MODULE_BEGIN {
|
||||
DST_HEADER dst_a_modbeg_header;
|
||||
struct {
|
||||
unsigned dst_v_modbeg_hide : 1;
|
||||
unsigned dst_v_modbeg_version : 1;
|
||||
unsigned dst_v_modbeg_unused : 6;
|
||||
} dst_b_modbeg_flags;
|
||||
unsigned char dst_b_modbeg_unused;
|
||||
DST_LANGUAGE dst_l_modbeg_language;
|
||||
unsigned short int dst_w_version_major;
|
||||
unsigned short int dst_w_version_minor;
|
||||
unsigned char dst_b_modbeg_name;
|
||||
} DST_MODULE_BEGIN;
|
||||
#define DST_K_MODBEG_SIZE 15
|
||||
|
||||
typedef struct _DST_MB_TRLR {
|
||||
unsigned char dst_b_compiler;
|
||||
} DST_MB_TRLR;
|
||||
#define DST_K_MB_TRLR_SIZE 1
|
||||
#define DST_K_VERSION_MAJOR 1
|
||||
#define DST_K_VERSION_MINOR 13
|
||||
typedef struct _DST_MODULE_END {
|
||||
DST_HEADER dst_a_modend_header;
|
||||
} DST_MODULE_END;
|
||||
#define DST_K_MODEND_SIZE 4
|
||||
typedef struct _DST_ROUTINE_BEGIN {
|
||||
DST_HEADER dst_a_rtnbeg_header;
|
||||
struct {
|
||||
unsigned dst_v_rtnbeg_unused : 4;
|
||||
unsigned dst_v_rtnbeg_unalloc : 1;
|
||||
unsigned dst_v_rtnbeg_prototype : 1;
|
||||
unsigned dst_v_rtnbeg_inlined : 1;
|
||||
unsigned dst_v_rtnbeg_no_call : 1;
|
||||
} dst_b_rtnbeg_flags;
|
||||
int *dst_l_rtnbeg_address;
|
||||
int *dst_l_rtnbeg_pd_address;
|
||||
unsigned char dst_b_rtnbeg_name;
|
||||
} DST_ROUTINE_BEGIN;
|
||||
#define DST_K_RTNBEG_SIZE 14
|
||||
typedef struct _DST_ROUTINE_END {
|
||||
DST_HEADER dst_a_rtnend_header;
|
||||
char dst_b_rtnend_unused;
|
||||
unsigned int dst_l_rtnend_size;
|
||||
} DST_ROUTINE_END;
|
||||
#define DST_K_RTNEND_SIZE 9
|
||||
typedef struct _DST_BLOCK_BEGIN {
|
||||
DST_HEADER dst_a_blkbeg_header;
|
||||
unsigned char dst_b_blkbeg_unused;
|
||||
int *dst_l_blkbeg_address;
|
||||
unsigned char dst_b_blkbeg_name;
|
||||
} DST_BLOCK_BEGIN;
|
||||
#define DST_K_BLKBEG_SIZE 10
|
||||
typedef struct _DST_BLOCK_END {
|
||||
DST_HEADER dst_a_blkend_header;
|
||||
unsigned char dst_b_blkend_unused;
|
||||
unsigned int dst_l_blkend_size;
|
||||
} DST_BLOCK_END;
|
||||
#define DST_K_BLKEND_SIZE 9
|
||||
typedef struct _DST_LINE_NUM_HEADER {
|
||||
DST_HEADER dst_a_line_num_header;
|
||||
} DST_LINE_NUM_HEADER;
|
||||
#define DST_K_LINE_NUM_HEADER_SIZE 4
|
||||
|
||||
typedef struct _DST_PCLINE_COMMANDS {
|
||||
char dst_b_pcline_command;
|
||||
union {
|
||||
unsigned int dst_l_pcline_unslong;
|
||||
unsigned short int dst_w_pcline_unsword;
|
||||
unsigned char dst_b_pcline_unsbyte;
|
||||
} dst_a_pcline_access_fields;
|
||||
} DST_PCLINE_COMMANDS;
|
||||
#define DST_K_PCLINE_COMMANDS_SIZE 5
|
||||
#define DST_K_PCLINE_COMMANDS_SIZE_MIN 2
|
||||
#define DST_K_PCLINE_COMMANDS_SIZE_MAX 5
|
||||
#define DST_K_DELTA_PC_LOW -128
|
||||
#define DST_K_DELTA_PC_HIGH 0
|
||||
#define DST_K_DELTA_PC_W 1
|
||||
#define DST_K_INCR_LINUM 2
|
||||
#define DST_K_INCR_LINUM_W 3
|
||||
#define DST_K_SET_LINUM 9
|
||||
#define DST_K_SET_ABS_PC 16
|
||||
#define DST_K_DELTA_PC_L 17
|
||||
#define DST_K_INCR_LINUM_L 18
|
||||
#define DST_K_SET_LINUM_B 19
|
||||
#define DST_K_SET_LINUM_L 20
|
||||
typedef struct _DST_SOURCE_CORR {
|
||||
DST_HEADER dst_a_source_corr_header;
|
||||
} DST_SOURCE_CORR;
|
||||
#define DST_K_SOURCE_CORR_HEADER_SIZE 4
|
||||
|
||||
#define DST_K_SRC_DECLFILE 1
|
||||
#define DST_K_SRC_SETFILE 2
|
||||
#define DST_K_SRC_SETREC_L 3
|
||||
#define DST_K_SRC_SETREC_W 4
|
||||
#define DST_K_SRC_SETLNUM_L 5
|
||||
#define DST_K_SRC_SETLNUM_W 6
|
||||
#define DST_K_SRC_INCRLNUM_B 7
|
||||
#define DST_K_SRC_DEFLINES_W 10
|
||||
#define DST_K_SRC_DEFLINES_B 11
|
||||
#define DST_K_SRC_FORMFEED 16
|
||||
#define DST_K_SRC_MIN_CMD 1
|
||||
#define DST_K_SRC_MAX_CMD 16
|
||||
typedef struct _DST_SRC_COMMAND {
|
||||
unsigned char dst_b_src_command;
|
||||
union {
|
||||
struct {
|
||||
unsigned char dst_b_src_df_length;
|
||||
unsigned char dst_b_src_df_flags;
|
||||
unsigned short int dst_w_src_df_fileid;
|
||||
#ifdef __GNUC__
|
||||
long long dst_q_src_df_rms_cdt;
|
||||
#else
|
||||
__int64 dst_q_src_df_rms_cdt;
|
||||
#endif
|
||||
unsigned int dst_l_src_df_rms_ebk;
|
||||
unsigned short int dst_w_src_df_rms_ffb;
|
||||
unsigned char dst_b_src_df_rms_rfo;
|
||||
unsigned char dst_b_src_df_filename;
|
||||
} dst_a_src_decl_src;
|
||||
unsigned int dst_l_src_unslong;
|
||||
unsigned short int dst_w_src_unsword;
|
||||
unsigned char dst_b_src_unsbyte;
|
||||
} dst_a_src_cmd_fields;
|
||||
} DST_SRC_COMMAND;
|
||||
#define DST_K_SRC_COMMAND_SIZE 21
|
||||
|
||||
typedef struct _DST_SRC_CMDTRLR {
|
||||
unsigned char dst_b_src_df_libmodname;
|
||||
} DST_SRC_CMDTRLR;
|
||||
#define DST_K_SRC_CMDTRLR_SIZE 1
|
||||
|
||||
typedef struct _DST_PROLOG {
|
||||
DST_HEADER dst_a_prolog_header;
|
||||
unsigned int dst_l_prolog_bkpt_addr;
|
||||
} DST_PROLOG;
|
||||
#define DST_K_PROLOG_SIZE 8
|
||||
|
||||
#endif /* VMSDBG_H */
|
1669
gcc/vmsdbgout.c
Normal file
1669
gcc/vmsdbgout.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user