1999-05-10 DJ Delorie <dj@cygnus.com>
[deliverable/binutils-gdb.git] / bfd / ieee.c
index beefe92b09c9ef1a3f9fff724bf2eca8d66a51a2..126b136d3378a7bc10051efee818bace83d9df13 100644 (file)
@@ -805,6 +805,44 @@ ieee_slurp_external_symbols (abfd)
                parse_int (&(ieee->h), &value);
                parse_int (&(ieee->h), &value);
                break;
+             case ieee_atn_record_enum:
+               /* We may get call optimization information here,
+                  which we just ignore.  The format is
+                  {$F1}${CE}{index}{$00}{$3F}{$3F}{#_of_ASNs} */
+               parse_int (&ieee->h, &value);
+               parse_int (&ieee->h, &value);
+               parse_int (&ieee->h, &value);
+               if (value != 0x3f)
+                 {
+                   (*_bfd_error_handler)
+                     (_("%s: unexpected ATN type %d in external part"),
+                        bfd_get_filename (abfd), (int) value);
+                   bfd_set_error (bfd_error_bad_value);
+                   return false;
+                 }
+               parse_int (&ieee->h, &value);
+               parse_int (&ieee->h, &value);
+               while (value > 0)
+                 {
+                   bfd_vma val1;
+
+                   --value;
+
+                   switch (read_2bytes (ieee))
+                     {
+                     case ieee_asn_record_enum:
+                       parse_int (&ieee->h, &val1);
+                       parse_int (&ieee->h, &val1);
+                       break;
+
+                     default:
+                       (*_bfd_error_handler)
+                         (_("%s: unexpected type after ATN"),
+                            bfd_get_filename (abfd));
+                       bfd_set_error (bfd_error_bad_value);
+                       return false;
+                     }
+                 }
              }
          }
          break;
@@ -3520,10 +3558,22 @@ ieee_write_processor (abfd)
 
     case bfd_arch_m68k:
       {
-       char ab[20];
+       const char *id;
+
+       switch (arch->mach)
+         {
+         default:              id = "68020"; break;
+         case bfd_mach_m68000: id = "68000"; break;
+         case bfd_mach_m68008: id = "68008"; break;
+         case bfd_mach_m68010: id = "68010"; break;
+         case bfd_mach_m68020: id = "68020"; break;
+         case bfd_mach_m68030: id = "68030"; break;
+         case bfd_mach_m68040: id = "68040"; break;
+         case bfd_mach_m68060: id = "68060"; break;
+         case bfd_mach_cpu32:  id = "cpu32"; break;
+         }
 
-       sprintf (ab, "%lu", arch->mach);
-       if (! ieee_write_id (abfd, ab))
+       if (! ieee_write_id (abfd, id))
          return false;
       }
       break;
@@ -3716,9 +3766,9 @@ ieee_find_nearest_line (abfd,
      asection *section;
      asymbol **symbols;
      bfd_vma offset;
-     char **filename_ptr;
-     char **functionname_ptr;
-     int *line_ptr;
+     const char **filename_ptr;
+     const char **functionname_ptr;
+     unsigned int *line_ptr;
 {
   return false;
 }
This page took 0.024062 seconds and 4 git commands to generate.