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:
Douglas B Rupp 2001-12-02 09:38:07 -05:00 committed by Richard Kenner
parent e773246d9c
commit 7a0c8d7108
16 changed files with 2063 additions and 30 deletions

View File

@ -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

View File

@ -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 \

View File

@ -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;

View File

@ -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 $<

View 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:

View File

@ -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"

View File

@ -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 */

View File

@ -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

View File

@ -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 */

View File

@ -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. */

View File

@ -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));

View File

@ -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. */

View File

@ -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 ();

View File

@ -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
View 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

File diff suppressed because it is too large Load Diff