This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Add documentation to VMS debug info files


Wed Dec  5 07:27:42 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
			  Douglas B. Rupp  <rupp@gnat.com>
	
	* vmsdbg.h, vmsdbgout.c: Add documentation and minor cleanups.
	* doc/invoke.texi: Add -gvms.
	* doc/passes.texi: Add mention of vmsdbgout.c.
	* doc/tm.texi: Document VMS debugging output.

*** vmsdbg.h	2001/12/02 14:38:07	1.1
--- vmsdbg.h	2001/12/05 12:26:12
***************
*** 1,44 ****
! /* 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;
--- 1,71 ----
! /* Definitions for the data structures and codes used in VMS debugging.  */
!    Copyright (C) 2001 Free Software Foundation, Inc.
  
! This file is part of GCC.
! 
! GCC 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.
! 
! GCC 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 GCC; see the file COPYING.  If not, write to the Free
! Software Foundation, 59 Temple Place - Suite 330, Boston, MA
! 02111-1307, USA.  */
! 
! #ifndef GCC_VMSDBG_H
! #define GCC_VMSDBG_H 1
! 
! /*  We define types and constants used in VMS Debug output.  Note that the
!     structs only approximate the output that is written.  We write the output
!     explicitly, field by field.  This output would only agree with the
!     structs in this file if no padding were done.  The sizes after each
!     struct are the size actually written, which is usually smaller than the
!     size of the struct.  */
! 
! /* Header type codes.  */
! typedef enum _DST_TYPE {DST_K_SOURCE = 155, DST_K_PROLOG = 162,
! 			DST_K_BLKBEG = 176, DST_K_BLKEND = 177,
! 			DST_K_LINE_NUM = 185, DST_K_MODBEG = 188,
! 			DST_K_MODEND = 189, DST_K_RTNBEG = 190,
! 			DST_K_RTNEND = 191} DST_DTYPE;
! 
! /* Header.  */
! 
! typedef struct _DST_HEADER
! {
!   union
!     {
!       unsigned short int dst_w_length;
!       unsigned short int dst_x_length;
!     } dst__header_length;
!   union
!     {
!       ENUM_BITFIELD (_DST_DTYPE) dst_w_type : 16;
!       ENUM_BITFIELD (_DST_DTYPE) dst_x_type : 16;
!     } dst__header_type;
  } DST_HEADER;
! #define DST_K_DST_HEADER_SIZE sizeof 4
! 
! /* Language type codes. */
! typedef enum _DST_LANGUAGE {DST_K_FORTRAN = 1, DST_K_C = 7, DST_K_ADA = 9,
! 			    DST_K_UNKNOWN = 10, DST_K_CXX = 15} DST_LANGUAGE;
! 
! /* Module header (a module is the result of a single compilation). */
! 
! 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;
*************** typedef struct _DST_MODULE_BEGIN {
*** 48,71 ****
  } 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;
--- 75,110 ----
  } DST_MODULE_BEGIN;
  #define DST_K_MODBEG_SIZE 15
! 
! /* Module trailer.  */
! 
! 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 sizeof 4
! 
! /* Routine header. */
! 
! 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;
*************** typedef struct _DST_ROUTINE_BEGIN {
*** 73,77 ****
  } 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;
--- 112,120 ----
  } DST_ROUTINE_BEGIN;
  #define DST_K_RTNBEG_SIZE 14
! 
! /* Routine trailer */
! 
! typedef struct _DST_ROUTINE_END
! {
    DST_HEADER dst_a_rtnend_header;
    char dst_b_rtnend_unused;
*************** typedef struct _DST_ROUTINE_END {
*** 79,83 ****
  } 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;
--- 122,130 ----
  } DST_ROUTINE_END;
  #define DST_K_RTNEND_SIZE 9
! 
! /* Block header. */
! 
! typedef struct _DST_BLOCK_BEGIN
! {
    DST_HEADER dst_a_blkbeg_header;
    unsigned char dst_b_blkbeg_unused;
*************** typedef struct _DST_BLOCK_BEGIN {
*** 86,90 ****
  } 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;
--- 133,141 ----
  } DST_BLOCK_BEGIN;
  #define DST_K_BLKBEG_SIZE 10
! 
! /* Block trailer. */
! 
! typedef struct _DST_BLOCK_END
! {
    DST_HEADER dst_a_blkend_header;
    unsigned char dst_b_blkend_unused;
*************** typedef struct _DST_BLOCK_END {
*** 92,108 ****
  } 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
--- 143,170 ----
  } DST_BLOCK_END;
  #define DST_K_BLKEND_SIZE 9
! 
! /* Line number header.  */
! 
! 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
+ 
+ /* PC to Line number correlation.  */
  
! 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;
+ 
+ /* PC and Line number correlation codes.  */
+ 
  #define DST_K_PCLINE_COMMANDS_SIZE 5
  #define DST_K_PCLINE_COMMANDS_SIZE_MIN 2
*************** typedef struct _DST_PCLINE_COMMANDS {
*** 119,126 ****
  #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
--- 181,194 ----
  #define DST_K_SET_LINUM_B 19
  #define DST_K_SET_LINUM_L 20
! 
! /* Source file correlation header.  */
! 
! typedef struct _DST_SOURCE_CORR
! {
    DST_HEADER dst_a_source_corr_header;
  } DST_SOURCE_CORR;
  #define DST_K_SOURCE_CORR_HEADER_SIZE 4
+ 
+ /* Source file correlation codes.  */
  	
  #define DST_K_SRC_DECLFILE 1
*************** typedef struct _DST_SOURCE_CORR {
*** 136,169 ****
  #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;
--- 204,249 ----
  #define DST_K_SRC_MIN_CMD 1
  #define DST_K_SRC_MAX_CMD 16
! 
! /* Source file header.  */
! 
! 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
! 
! /* Source file trailer.  */
! 
! typedef struct _DST_SRC_CMDTRLR
! {
    unsigned char dst_b_src_df_libmodname;
  } DST_SRC_CMDTRLR;
  #define DST_K_SRC_CMDTRLR_SIZE 1
! 
! /* Prolog header.  */
! 
! typedef struct _DST_PROLOG
! {
    DST_HEADER dst_a_prolog_header;
    unsigned int dst_l_prolog_bkpt_addr;
*************** typedef struct _DST_PROLOG {
*** 171,173 ****
  #define DST_K_PROLOG_SIZE 8
  	
! #endif /* VMSDBG_H */
--- 251,253 ----
  #define DST_K_PROLOG_SIZE 8
  	
! #endif /* GCC_VMSDBG_H */
*** vmsdbgout.c	2001/12/02 22:19:02	1.2
--- vmsdbgout.c	2001/12/05 12:26:15
*************** static void vmsdbgout_global_decl	PARAMS
*** 172,176 ****
  static void vmsdbgout_abstract_function PARAMS ((tree));
  
- 
  /* The debug hooks structure.  */
  
--- 172,175 ----
*************** restart:
*** 524,527 ****
--- 523,530 ----
  }
  
+ /* Output the debug header HEADER.  Also output COMMENT if flag_verbose_asm is
+    set.  Return the header size.  Just return the size if DOSIZEONLY is
+    non-zero. */
+ 
  static int
  write_debug_header (header, comment, dosizeonly)
*************** write_debug_header (header, comment, dos
*** 530,553 ****
       int dosizeonly;
  {
!   if (dosizeonly)
!     return 4;
  
!   ASM_OUTPUT_DEBUG_DATA2 (asm_out_file,
! 			  header->dst__header_length.dst_w_length);
!   if (flag_verbose_asm)
!     fprintf (asm_out_file, "\t%s record length", ASM_COMMENT_START);
!   fputc ('\n', asm_out_file);
! 
!   ASM_OUTPUT_DEBUG_DATA2 (asm_out_file,
! 			  header->dst__header_type.dst_w_type);
!   if (flag_verbose_asm)
!     fprintf (asm_out_file, "\t%s record type (%s)", ASM_COMMENT_START,
! 	     comment);
  
!   fputc ('\n', asm_out_file);
  
    return 4;
  }
  
  static int
  write_debug_addr (symbol, comment, dosizeonly)
--- 533,562 ----
       int dosizeonly;
  {
!   if (!dosizeonly)
!     {
!       ASM_OUTPUT_DEBUG_DATA2 (asm_out_file,
! 			      header->dst__header_length.dst_w_length);
! 
!       if (flag_verbose_asm)
! 	fprintf (asm_out_file, "\t%s record length", ASM_COMMENT_START);
!       fputc ('\n', asm_out_file);
  
!       ASM_OUTPUT_DEBUG_DATA2 (asm_out_file,
! 			      header->dst__header_type.dst_w_type);
  
!       if (flag_verbose_asm)
! 	fprintf (asm_out_file, "\t%s record type (%s)", ASM_COMMENT_START,
! 		 comment);
! 
!       fputc ('\n', asm_out_file);
!     }
  
    return 4;
  }
  
+ /* Output the address of SYMBOL.  Also output COMMENT if flag_verbose_asm is
+    set.  Return the address size.  Just return the size if DOSIZEONLY is
+    non-zero. */
+ 
  static int
  write_debug_addr (symbol, comment, dosizeonly)
*************** write_debug_addr (symbol, comment, dosiz
*** 556,570 ****
       int dosizeonly;
  {
!   if (dosizeonly)
!     return PTR_SIZE;
  
-   ASM_OUTPUT_DEBUG_ADDR (asm_out_file, symbol);
-   if (flag_verbose_asm)
-     fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
-   fputc ('\n', asm_out_file);
-   
    return PTR_SIZE;
  }
  
  static int
  write_debug_data1 (data1, comment, dosizeonly)
--- 565,583 ----
       int dosizeonly;
  {
!   if (!dosizeonly)
!     {
!       ASM_OUTPUT_DEBUG_ADDR (asm_out_file, symbol);
!       if (flag_verbose_asm)
! 	fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
!       fputc ('\n', asm_out_file);
!     }
  
    return PTR_SIZE;
  }
  
+ /* Output the single byte DATA1.  Also output COMMENT if flag_verbose_asm is
+    set.  Return the data size.  Just return the size if DOSIZEONLY is
+    non-zero. */
+ 
  static int
  write_debug_data1 (data1, comment, dosizeonly)
*************** write_debug_data1 (data1, comment, dosiz
*** 573,587 ****
       int dosizeonly;
  {
!   if (dosizeonly)
!     return 1;
  
-   ASM_OUTPUT_DEBUG_DATA1 (asm_out_file, data1);
-   if (flag_verbose_asm)
-     fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
-   fputc ('\n', asm_out_file);
-   
    return 1;
  }
  
  static int
  write_debug_data2 (data2, comment, dosizeonly)
--- 586,604 ----
       int dosizeonly;
  {
!   if (!dosizeonly)
!     {
!       ASM_OUTPUT_DEBUG_DATA1 (asm_out_file, data1);
!       if (flag_verbose_asm)
! 	fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
!       fputc ('\n', asm_out_file);
!     }
  
    return 1;
  }
  
+ /* Output the single word DATA2.  Also output COMMENT if flag_verbose_asm is
+    set.  Return the data size.  Just return the size if DOSIZEONLY is
+    non-zero. */
+ 
  static int
  write_debug_data2 (data2, comment, dosizeonly)
*************** write_debug_data2 (data2, comment, dosiz
*** 590,604 ****
       int dosizeonly;
  {
!   if (dosizeonly)
!     return 2;
  
-   ASM_OUTPUT_DEBUG_DATA2 (asm_out_file, data2);
-   if (flag_verbose_asm)
-     fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
-   fputc ('\n', asm_out_file);
-   
    return 2;
  }
  
  static int
  write_debug_data4 (data4, comment, dosizeonly)
--- 607,624 ----
       int dosizeonly;
  {
!   if (!dosizeonly)
!     {
!       ASM_OUTPUT_DEBUG_DATA2 (asm_out_file, data2);
!       if (flag_verbose_asm)
! 	fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
!       fputc ('\n', asm_out_file);
!     }
  
    return 2;
  }
  
+ /* Output double word DATA4.  Also output COMMENT if flag_verbose_asm is set.
+    Return the data size.  Just return the size if DOSIZEONLY is non-zero. */
+ 
  static int
  write_debug_data4 (data4, comment, dosizeonly)
*************** write_debug_data4 (data4, comment, dosiz
*** 607,621 ****
       int dosizeonly;
  {
!   if (dosizeonly)
!     return 4;
! 
!   ASM_OUTPUT_DEBUG_DATA4 (asm_out_file, data4);
!   if (flag_verbose_asm)
!     fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
!   fputc ('\n', asm_out_file);
    
    return 4;
  }
  
  static int
  write_debug_data8 (data8, comment, dosizeonly)
--- 627,644 ----
       int dosizeonly;
  {
!   if (!dosizeonly)
!     {
!       ASM_OUTPUT_DEBUG_DATA4 (asm_out_file, data4);
!       if (flag_verbose_asm)
! 	fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
!       fputc ('\n', asm_out_file);
!     }
    
    return 4;
  }
  
+ /* Output quad word DATA8.  Also output COMMENT if flag_verbose_asm is set.
+    Return the data size.  Just return the size if DOSIZEONLY is non-zero.  */
+ 
  static int
  write_debug_data8 (data8, comment, dosizeonly)
*************** write_debug_data8 (data8, comment, dosiz
*** 624,638 ****
       int dosizeonly;
  {
!   if (dosizeonly)
!     return 8;
  
-   ASM_OUTPUT_DEBUG_DATA8 (asm_out_file, data8);
-   if (flag_verbose_asm)
-     fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
-   fputc ('\n', asm_out_file);
-   
    return 8;
  }
  
  static int
  write_debug_delta4 (label1, label2, comment, dosizeonly)
--- 647,665 ----
       int dosizeonly;
  {
!   if (!dosizeonly)
!     {
!       ASM_OUTPUT_DEBUG_DATA8 (asm_out_file, data8);
!       if (flag_verbose_asm)
! 	fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
!       fputc ('\n', asm_out_file);
!     }
  
    return 8;
  }
  
+ /* Output the difference between LABEL1 and LABEL2.  Also output COMMENT if
+    flag_verbose_asm is set.  Return the data size.  Just return the size if
+    DOSIZEONLY is non-zero. */
+ 
  static int
  write_debug_delta4 (label1, label2, comment, dosizeonly)
*************** write_debug_delta4 (label1, label2, comm
*** 642,656 ****
       int dosizeonly;
  {
!   if (dosizeonly)
!     return 4;
  
-   ASM_OUTPUT_DEBUG_DELTA4(asm_out_file, label1, label2);
-   if (flag_verbose_asm)
-     fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
-   fputc ('\n', asm_out_file);
-   
    return 4;
  }
  
  static int
  write_debug_string (string, comment, dosizeonly)
--- 669,687 ----
       int dosizeonly;
  {
!   if (!dosizeonly)
!     {
!       ASM_OUTPUT_DEBUG_DELTA4 (asm_out_file, label1, label2);
!       if (flag_verbose_asm)
! 	fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
!       fputc ('\n', asm_out_file);
!     }
  
    return 4;
  }
  
+ /* Output a character string STRING.  Also write COMMENT if flag_verbose_asm is
+    set.  Return the string length.  Just return the length if DOSIZEONLY is
+    non-zero. */
+ 
  static int
  write_debug_string (string, comment, dosizeonly)
*************** write_debug_string (string, comment, dos
*** 659,678 ****
       int dosizeonly;
  {
!   if (dosizeonly)
!     return strlen (string);
! 
!   ASM_OUTPUT_DEBUG_STRING (asm_out_file, string);
!   if (flag_verbose_asm)
!     fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
!   fputc ('\n', asm_out_file);
    
    return strlen (string);
  }
  
! static int
  write_modbeg (dosizeonly)
       int dosizeonly;
  {
- 
    DST_MODULE_BEGIN modbeg;
    DST_MB_TRLR mb_trlr;
--- 690,710 ----
       int dosizeonly;
  {
!   if (!dosizeonly)
!     {
!       ASM_OUTPUT_DEBUG_STRING (asm_out_file, string);
!       if (flag_verbose_asm)
! 	fprintf (asm_out_file, "\t%s %s", ASM_COMMENT_START, comment);
!       fputc ('\n', asm_out_file);
!     }
    
    return strlen (string);
  }
  
! /* Output a module begin header and return the header size.  Just return the
!    size if DOSIZEONLY is non-zero. */
! 
  write_modbeg (dosizeonly)
       int dosizeonly;
  {
    DST_MODULE_BEGIN modbeg;
    DST_MB_TRLR mb_trlr;
*************** write_modbeg (dosizeonly)
*** 732,735 ****
--- 764,770 ----
  }
  
+ /* Output a module end trailer and return the trailer size.   Just return
+    the size if DOSIZEONLY is non-zero. */
+ 
  static int
  write_modend (dosizeonly)
*************** write_modend (dosizeonly)
*** 749,752 ****
--- 784,790 ----
  }
  
+ /* Output a routine begin header routine RTNNUM and return the header size.
+    Just return the size if DOSIZEONLY is non-zero. */
+ 
  static int
  write_rtnbeg (rtnnum, dosizeonly)
*************** write_rtnbeg (rtnnum, dosizeonly)
*** 844,847 ****
--- 882,888 ----
  }
  
+ /* Output a routine end trailer for routine RTNNUM and return the header size.
+    Just return the size if DOSIZEONLY is non-zero. */
+ 
  static int
  write_rtnend (rtnnum, dosizeonly)
*************** write_rtnend (rtnnum, dosizeonly)
*** 885,888 ****
--- 926,932 ----
    : (I) < 65536 ? DST_K_INCR_LINUM_W : DST_K_INCR_LINUM_L)
  
+ /* Output the PC to line number correlations and return the size.  Just return
+    the size if DOSIZEONLY is non-zero */
+ 
  static int
  write_pclines (dosizeonly)
*************** write_pclines (dosizeonly)
*** 1012,1015 ****
--- 1056,1063 ----
  }
  
+ /* Output a source correlation for file FILEID using information saved in
+    FILE_INFO_ENTRY and return the size.  Just return the size if DOSIZEONLY is
+    non-zero. */
+ 
  static int
  write_srccorr (fileid, file_info_entry, dosizeonly)
*************** write_srccorr (fileid, file_info_entry, 
*** 1200,1203 ****
--- 1248,1254 ----
  }
  
+ /* Output all the source correlation entries and return the size.  Just return
+    the size if DOSIZEONLY is non-zero. */
+ 
  static int
  write_srccorrs (dosizeonly)
*************** write_srccorrs (dosizeonly)
*** 1212,1216 ****
    return totsize;
  }     
- 
  
  /* Output a marker (i.e. a label) for the beginning of a function, before
--- 1263,1266 ----
*************** vmsdbgout_end_block (line, blocknum)
*** 1304,1307 ****
--- 1354,1359 ----
  }
  
+ /* Not implemented in VMS Debug.  */
+ 
  static bool
  vmsdbgout_ignore_block (block)
*************** vmsdbgout_ignore_block (block)
*** 1316,1319 ****
--- 1368,1373 ----
  }
  
+ /* Add an entry for function DECL into the func_table.  */
+ 
  static void
  vmsdbgout_begin_function (decl)
*************** vmsdbgout_begin_function (decl)
*** 1338,1341 ****
--- 1392,1398 ----
  static char fullname_buff [4096];
  
+ /* Return the full file specification for FILENAME.  The specification must be
+    in VMS syntax in order to be processed by VMS Debug. */
+ 
  static char *
  full_name (filename)
*************** full_name (filename)
*** 1363,1369 ****
     vmsdbgout.c) and return its "index".  The index of each (known) filename is
     just a unique number which is associated with only that one filename.  We
!    need such numbers for the sake of generating labels (in the .debug_sfnames
!    section) and references to those files numbers (in the .debug_srcinfo
!    and.debug_macinfo sections).  If the filename given as an argument is not
     found in our current list, add it to the list and assign it the next
     available unique index number.  In order to speed up searches, we remember
--- 1420,1425 ----
     vmsdbgout.c) and return its "index".  The index of each (known) filename is
     just a unique number which is associated with only that one filename.  We
!    need such numbers for the sake of generating labels  and references
!    to those files numbers.  If the filename given as an argument is not
     found in our current list, add it to the list and assign it the next
     available unique index number.  In order to speed up searches, we remember
*************** vmsdbgout_init (main_input_filename)
*** 1576,1579 ****
--- 1632,1637 ----
  }
  
+ /* Not implemented in VMS Debug.  */
+ 
  static void
  vmsdbgout_define (lineno, buffer)
*************** vmsdbgout_define (lineno, buffer)
*** 1585,1588 ****
--- 1643,1648 ----
  }
  
+ /* Not implemented in VMS Debug.  */
+ 
  static void
  vmsdbgout_undef (lineno, buffer)
*************** vmsdbgout_undef (lineno, buffer)
*** 1594,1597 ****
--- 1654,1659 ----
  }
  
+ /* Not implemented in VMS Debug.  */
+ 
  static void
  vmsdbgout_decl (decl)
*************** vmsdbgout_decl (decl)
*** 1602,1605 ****
--- 1664,1669 ----
  }
  
+ /* Not implemented in VMS Debug.  */
+ 
  static void
  vmsdbgout_global_decl (decl)
*************** vmsdbgout_global_decl (decl)
*** 1610,1613 ****
--- 1674,1679 ----
  }
  
+ /* Not implemented in VMS Debug.  */
+ 
  static void
  vmsdbgout_abstract_function (decl)
*************** vmsdbgout_abstract_function (decl)
*** 1618,1623 ****
  }
  
! /* Output stuff that Debug requires at the end of every file,
!    and generate the VMS Debug debugging info.  */
  
  static void
--- 1684,1689 ----
  }
  
! /* Output stuff that Debug requires at the end of every file and generate the
!    VMS Debug debugging info.  */
  
  static void
*** doc/invoke.texi	2001/12/04 00:10:56	1.82
--- doc/invoke.texi	2001/12/05 12:26:36
*************** in the following sections.
*** 249,253 ****
  -fprofile-arcs  -ftest-coverage  -ftime-report @gol
  -g  -g@var{level}  -gcoff  -gdwarf  -gdwarf-1  -gdwarf-1+  -gdwarf-2 @gol
! -ggdb  -gstabs  -gstabs+  -gxcoff  -gxcoff+ @gol
  -p  -pg  -print-file-name=@var{library}  -print-libgcc-file-name @gol
  -print-multi-directory  -print-multi-lib @gol
--- 249,253 ----
  -fprofile-arcs  -ftest-coverage  -ftime-report @gol
  -g  -g@var{level}  -gcoff  -gdwarf  -gdwarf-1  -gdwarf-1+  -gdwarf-2 @gol
! -ggdb  -gstabs  -gstabs+  -gvms  -gxcoff  -gxcoff+ @gol
  -p  -pg  -print-file-name=@var{library}  -print-libgcc-file-name @gol
  -print-multi-directory  -print-multi-lib @gol
*************** crash or
*** 2609,2614 ****
  refuse to read the program.  If you want to control for certain whether
  to generate the extra information, use @option{-gstabs+}, @option{-gstabs},
! @option{-gxcoff+}, @option{-gxcoff}, @option{-gdwarf-1+}, or @option{-gdwarf-1}
! (see below).
  
  Unlike most other C compilers, GCC allows you to use @option{-g} with
--- 2609,2614 ----
  refuse to read the program.  If you want to control for certain whether
  to generate the extra information, use @option{-gstabs+}, @option{-gstabs},
! @option{-gxcoff+}, @option{-gxcoff}, @option{-gdwarf-1+}, @option{-gdwarf-1},
! or @option{-gvms} (see below).
  
  Unlike most other C compilers, GCC allows you to use @option{-g} with
*************** Produce debugging information in DWARF v
*** 2685,2688 ****
--- 2685,2693 ----
  supported).  This is the format used by DBX on IRIX 6.
  
+ @item -gvms
+ @opindex gvms
+ Produce debugging information in VMS debug format (if that is
+ supported).  This is the format used by DEBUG on VMS systems.
+ 
  @item -g@var{level}
  @itemx -ggdb@var{level}
*************** supported).  This is the format used by 
*** 2692,2695 ****
--- 2697,2701 ----
  @itemx -gdwarf@var{level}
  @itemx -gdwarf-2@var{level}
+ @itemx -gvms@var{level}
  Request debugging information and also use @var{level} to specify how
  much information.  The default level is 2.
*** doc/passes.texi	2001/11/28 00:45:26	1.3
--- doc/passes.texi	2001/12/05 12:26:36
*************** output the stack slot offsets for pseudo
*** 601,606 ****
  hard registers.  Source files are @file{dbxout.c} for DBX symbol table
  format, @file{sdbout.c} for SDB symbol table format,  @file{dwarfout.c}
! for DWARF symbol table format, and the files @file{dwarf2out.c} and
! @file{dwarf2asm.c} for DWARF2 symbol table format.
  @end itemize
  
--- 601,607 ----
  hard registers.  Source files are @file{dbxout.c} for DBX symbol table
  format, @file{sdbout.c} for SDB symbol table format,  @file{dwarfout.c}
! for DWARF symbol table format, files @file{dwarf2out.c} and
! @file{dwarf2asm.c} for DWARF2 symbol table format, and @file{vmsdbgout.c}
! for VMS debug symbol table format.
  @end itemize
  
*** doc/tm.texi	2001/11/28 09:47:24	1.71
--- doc/tm.texi	2001/12/05 12:26:45
*************** This describes how to specify debugging 
*** 7368,7371 ****
--- 7368,7372 ----
  * File Names and DBX:: Macros controlling output of file names in DBX format.
  * SDB and DWARF::      Macros for SDB (COFF) and DWARF formats.
+ * VMS Debug::          Macros for VMS debug format.
  @end menu
  
*************** produce when the user specifies just @op
*** 7418,7423 ****
  this if you have arranged for GCC to support more than one format of
  debugging output.  Currently, the allowable values are @code{DBX_DEBUG},
! @code{SDB_DEBUG}, @code{DWARF_DEBUG}, @code{DWARF2_DEBUG}, and
! @code{XCOFF_DEBUG}.
  
  When the user specifies @option{-ggdb}, GCC normally also uses the
--- 7419,7424 ----
  this if you have arranged for GCC to support more than one format of
  debugging output.  Currently, the allowable values are @code{DBX_DEBUG},
! @code{SDB_DEBUG}, @code{DWARF_DEBUG}, @code{DWARF2_DEBUG},
! @code{XCOFF_DEBUG}, @code{VMS_DEBUG}, and @code{VMS_AND_DWARF2_DEBUG}.
  
  When the user specifies @option{-ggdb}, GCC normally also uses the
*************** defined, GCC uses @code{DBX_DEBUG}.
*** 7430,7434 ****
  The value of this macro only affects the default debugging output; the
  user can always get a specific type of output by using @option{-gstabs},
! @option{-gcoff}, @option{-gdwarf-1}, @option{-gdwarf-2}, or @option{-gxcoff}.
  @end table
  
--- 7431,7436 ----
  The value of this macro only affects the default debugging output; the
  user can always get a specific type of output by using @option{-gstabs},
! @option{-gcoff}, @option{-gdwarf-1}, @option{-gdwarf-2}, @option{-gxcoff},
! or @option{-gvms}.
  @end table
  
*************** Define this macro to allow references to
*** 7818,7821 ****
--- 7820,7841 ----
  enumeration tags that have not yet been seen to be handled.  Some
  assemblers choke if forward tags are used, while some require it.
+ @end table
+ 
+ @need 2000
+ @node VMS Debug
+ @subsection Macros for VMS Debug Format
+ 
+ @c prevent bad page break with this line
+ Here are macros for VMS debug format.
+ 
+ @table @code
+ @findex VMS_DEBUGGING_INFO
+ @item VMS_DEBUGGING_INFO
+ Define this macro if GCC should produce debugging output for VMS
+ in response to the @option{-g} option.  The default behavior for VMS
+ is to generate minimal debug info for a traceback in the absence of
+ @option{-g} unless explicitly overridden with @option{-g0}.  This
+ behavior is controlled by @code{OPTIMIZATION_OPTIONS} and
+ @code{OVERRIDE_OPTIONS}.
  @end table
  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]