Patchwork [vms/committed] : avoid wrong output by vmsdbgout.c for long path

login
register
mail settings
Submitter Tristan Gingold
Date April 21, 2011, 12:59 p.m.
Message ID <C77415C9-6C56-47D7-8675-7894E76C9FB1@adacore.com>
Download mbox | patch
Permalink /patch/92409/
State New
Headers show

Comments

Tristan Gingold - April 21, 2011, 12:59 p.m.
Hi,

vmsdbgout could generate buggy records for long path.  This happened while cross-compiling.

Committed on trunk.

Tristan.

2011-04-21  Tristan Gingold  <gingold@adacore.com>

	* vmsdbgout.c (write_srccorr): Compute file length from the string.
	(dst_file_info_struct): Remove flen field.
	(lookup_filename): Remove code that set flen field.

Patch

Index: gcc/vmsdbgout.c
===================================================================
--- gcc/vmsdbgout.c	(revision 172821)
+++ gcc/vmsdbgout.c	(working copy)
@@ -71,7 +71,6 @@ 
   long ebk;
   short ffb;
   char rfo;
-  char flen;
 }
 dst_file_info_entry;
 
@@ -932,7 +931,7 @@ 
   int src_command_size;
   int linesleft = file_info_entry.max_line;
   int linestart = file_info_entry.listing_line_start;
-  int flen = file_info_entry.flen;
+  int flen = strlen (file_info_entry.file_name);
   int linestodo = 0;
   DST_SOURCE_CORR src_header;
   DST_SRC_COMMAND src_command;
@@ -977,7 +976,7 @@ 
   src_command.dst_a_src_cmd_fields.dst_a_src_decl_src.dst_b_src_df_rms_rfo
     = file_info_entry.rfo;
   src_command.dst_a_src_cmd_fields.dst_a_src_decl_src.dst_b_src_df_filename
-    = file_info_entry.flen;
+    = flen;
 
   src_header.dst_a_source_corr_header.dst__header_length.dst_w_length
     = DST_K_SOURCE_CORR_HEADER_SIZE + src_command_size - 1;
@@ -1332,7 +1331,6 @@ 
   register char *fn;
   register unsigned i;
   const char *fnam;
-  char flen;
   long long cdt = 0;
   long ebk = 0;
   short ffb = 0;
@@ -1341,7 +1339,6 @@ 
   int ver = 0;
 
   fnam = full_name (file_name);
-  flen = strlen (fnam);
 
   /* Check to see if the file name that was searched on the previous call
      matches this file name. If so, return the index.  */
@@ -1386,7 +1383,6 @@ 
   file_info_table[file_info_table_in_use].ebk = ebk;
   file_info_table[file_info_table_in_use].ffb = ffb;
   file_info_table[file_info_table_in_use].rfo = rfo;
-  file_info_table[file_info_table_in_use].flen = flen;
 
   last_file_lookup_index = file_info_table_in_use++;
   return last_file_lookup_index;