* coffcode.h (styp_to_sec_flags): Handle long symbol names
authorIan Lance Taylor <ian@airs.com>
Thu, 2 May 1996 02:56:14 +0000 (02:56 +0000)
committerIan Lance Taylor <ian@airs.com>
Thu, 2 May 1996 02:56:14 +0000 (02:56 +0000)
when looking for the section symbol.

bfd/ChangeLog
bfd/coffcode.h

index 40c0fe4..fe4e120 100644 (file)
@@ -6,6 +6,8 @@ Wed May  1 18:39:32 1996  Doug Evans  <dje@canuck.cygnus.com>
 Wed May  1 14:17:57 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        * coffcode.h (STRING_SIZE_SIZE): Define.
+       (styp_to_sec_flags): Handle long symbol names when looking for the
+       section symbol.
        (bfd_coff_backend_data): Add _bfd_coff_long_section_names field.
        (bfd_coff_long_section_names): Define.
        (coff_write_object_contents): Handle long section names.
index 2c716f6..82447d3 100644 (file)
@@ -585,15 +585,16 @@ styp_to_sec_flags (abfd, hdr, name)
 
              if (isym.n_sclass == C_STAT
                  && isym.n_type == T_NULL
-                 && isym.n_numaux == 1
-                 && isym._n._n_n._n_zeroes != 0)
+                 && isym.n_numaux == 1)
                {
                  char buf[SYMNMLEN + 1];
+                 const char *symname;
 
-                 memcpy (buf, isym._n._n_name, SYMNMLEN);
-                 buf[SYMNMLEN] = '\0';
+                 symname = _bfd_coff_internal_syment_name (abfd, &isym, buf);
+                 if (symname == NULL)
+                   abort ();
 
-                 if (strcmp (name, buf) == 0)
+                 if (strcmp (name, symname) == 0)
                    {
                      union internal_auxent aux;
 
@@ -2373,7 +2374,7 @@ coff_write_object_contents (abfd)
        if (len > SCNNMLEN)
          {
            memset (section.s_name, 0, SCNNMLEN);
-           sprintf (section.s_name, "/%d", string_size);
+           sprintf (section.s_name, "/%lu", (unsigned long) string_size);
            string_size += len + 1;
          }
       }