From 6648d3ae63fc1ca92996db8585ddfd3b43dbe3dd Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 7 May 1996 15:34:25 +0000 Subject: [PATCH] * config/obj-coff.c (yank_symbols): Check that FNAME_OFFSET is non-zero before assuming this is a long file name. (w_strings): Likewise. (c_dot_file_symbol): Set FNAME_OFFSET to 1 for a long file name. * config/obj-coff.c (w_strings): Move declaration of i inside #ifdef block which uses it. --- gas/ChangeLog | 10 ++++++++++ gas/config/obj-coff.c | 35 ++++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index db0548c..aa6b94c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +Tue May 7 11:24:10 1996 Ian Lance Taylor + + * config/obj-coff.c (yank_symbols): Check that FNAME_OFFSET is + non-zero before assuming this is a long file name. + (w_strings): Likewise. + (c_dot_file_symbol): Set FNAME_OFFSET to 1 for a long file name. + + * config/obj-coff.c (w_strings): Move declaration of i inside + #ifdef block which uses it. + Tue May 7 00:49:58 1996 Jeffrey A Law (law@cygnus.com) * config/tc-h8300.c (do_a_fix_imm): Rename last argument to diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c index 0639d6b..424feec 100644 --- a/gas/config/obj-coff.c +++ b/gas/config/obj-coff.c @@ -2726,7 +2726,8 @@ yank_symbols () { /* If the filename was too long to fit in the auxent, put it in the string table */ - if (SA_GET_FILE_FNAME_ZEROS (symbolP) == 0) + if (SA_GET_FILE_FNAME_ZEROS (symbolP) == 0 + && SA_GET_FILE_FNAME_OFFSET (symbolP) != 0) { SA_SET_FILE_FNAME_OFFSET (symbolP, string_byte_count); string_byte_count += strlen (filename_list_scan->filename) + 1; @@ -2942,7 +2943,6 @@ w_strings (where) { symbolS *symbolP; struct filename_list *filename_list_scan = filename_list_head; - unsigned int i; /* Gotta do md_ byte-ordering stuff for string_byte_count first - KWK */ md_number_to_chars (where, (valueT) string_byte_count, 4); @@ -2951,18 +2951,22 @@ w_strings (where) #ifdef COFF_LONG_SECTION_NAMES /* Support long section names as found in PE. This code must coordinate with that in coff_header_append and write_object_file. */ - for (i = SEG_E0; i < SEG_LAST; i++) - { - if (segment_info[i].scnhdr.s_name[0] - && strlen (segment_info[i].name) > SCNNMLEN) - { - unsigned int size; + { + unsigned int i; - size = strlen (segment_info[i].name) + 1; - memcpy (where, segment_info[i].name, size); - where += size; - } - } + for (i = SEG_E0; i < SEG_LAST; i++) + { + if (segment_info[i].scnhdr.s_name[0] + && strlen (segment_info[i].name) > SCNNMLEN) + { + unsigned int size; + + size = strlen (segment_info[i].name) + 1; + memcpy (where, segment_info[i].name, size); + where += size; + } + } + } #endif /* COFF_LONG_SECTION_NAMES */ for (symbolP = symbol_rootP; @@ -2978,7 +2982,8 @@ w_strings (where) where += size; } if (S_GET_STORAGE_CLASS (symbolP) == C_FILE - && SA_GET_FILE_FNAME_ZEROS (symbolP) == 0) + && SA_GET_FILE_FNAME_ZEROS (symbolP) == 0 + && SA_GET_FILE_FNAME_OFFSET (symbolP) != 0) { size = strlen (filename_list_scan->filename) + 1; memcpy (where, filename_list_scan->filename, size); @@ -3535,7 +3540,7 @@ c_dot_file_symbol (filename) f->next = 0; SA_SET_FILE_FNAME_ZEROS (symbolP, 0); - SA_SET_FILE_FNAME_OFFSET (symbolP, 0); + SA_SET_FILE_FNAME_OFFSET (symbolP, 1); if (filename_list_tail) filename_list_tail->next = f; -- 2.7.4