* config/obj-coff.c (yank_symbols): Check that FNAME_OFFSET is
authorIan Lance Taylor <ian@airs.com>
Tue, 7 May 1996 15:34:25 +0000 (15:34 +0000)
committerIan Lance Taylor <ian@airs.com>
Tue, 7 May 1996 15:34:25 +0000 (15:34 +0000)
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
gas/config/obj-coff.c

index db0548cb55d4e09f19fa750fb3f33d848c3c0153..aa6b94cf36d792fe0b0b51074a018dc2c358814d 100644 (file)
@@ -1,3 +1,13 @@
+Tue May  7 11:24:10 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * 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
index 0639d6b44a0c6c419679101c4d60a8dc0cec018a..424feecaa5132908fdf8d548972df0b544e6a4ce 100644 (file)
@@ -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;