Hi, vmsdbgout could generate buggy records for long path. This happened while cross-compiling.
Committed on trunk. Tristan. 2011-04-21 Tristan Gingold <ging...@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. 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;