const bfd_arch_info_type *arch = bfd_scan_arch (processor);
const bfd_arch_info_type *arch; char family[10];   if ((processor[0] == '6') && (processor[1] == '8')) { if (processor[2] == '3')	     { switch (processor[3]) { case '0':			     case '2':			     case '5':			     strcpy (family, "68000");    break;  case '3':			     case '6':			     case '7':			     strcpy (family, "68332");    break;  case '4': if (processor[4] == '9')     strcpy (family, "68030");  else		             strcpy (family, "68332");  break;  default:			     strcpy (family, "68332");    } } else if (toupper (processor[3]) == 'F')    strcpy (family, "68332");	           else if ((toupper (processor[3]) == 'C')   && ((toupper (processor[2]) == 'E') || (toupper (processor[2]) == 'H') || (toupper (processor[2]) == 'L'))) { strcpy (family, "68"); strncat (family, processor + 4, 7); family[9] = '\0'; } else				  { strncpy (family, processor, 9); family[9] = '\0'; } } else if ((strncmp (processor, "cpu32", 5) == 0)  || (strncmp (processor, "CPU32", 5) == 0)) strcpy (family, "68332"); else { strncpy (family, processor, 9); family[9] = '\0'; }  arch = bfd_scan_arch (family);
ieee_object_p (abfd)     bfd *abfd;{  char *processor;  unsigned int part;  ieee_data_type *ieee;  unsigned char buffer[300];  ieee_data_type *save = IEEE_DATA (abfd);  abfd->tdata.ieee_data = 0;  ieee_mkobject (abfd);  ieee = IEEE_DATA (abfd);  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)    goto fail;  /* Read the first few bytes in to see if it makes sense */  /* FIXME: Check return value.  I'm not sure whether it needs to read     the entire buffer or not.  */  bfd_read ((PTR) buffer, 1, sizeof (buffer), abfd);  ieee->h.input_p = buffer;  if (this_byte_and_next (&(ieee->h)) != Module_Beginning)    goto got_wrong_format;  ieee->read_symbols = false;  ieee->read_data = false;  ieee->section_count = 0;  ieee->external_symbol_max_index = 0;  ieee->external_symbol_min_index = IEEE_PUBLIC_BASE;  ieee->external_reference_min_index = IEEE_REFERENCE_BASE;  ieee->external_reference_max_index = 0;  ieee->h.abfd = abfd;  ieee->section_table = NULL;  ieee->section_table_size = 0;  processor = ieee->mb.processor = read_id (&(ieee->h));  if (strcmp (processor, "LIBRARY") == 0)    goto got_wrong_format;  ieee->mb.module_name = read_id (&(ieee->h));  if (abfd->filename == (CONST char *) NULL)    {      abfd->filename = ieee->mb.module_name;    }  /* Determine the architecture and machine type of the object file.     */  {    const bfd_arch_info_type *arch = bfd_scan_arch (processor);    if (arch == 0)      goto got_wrong_format;    abfd->arch_info = arch;  }  if (this_byte (&(ieee->h)) != (int) ieee_address_descriptor_enum)    {      goto fail;    }  next_byte (&(ieee->h));  if (parse_int (&(ieee->h), &ieee->ad.number_of_bits_mau) == false)    {      goto fail;    }  if (parse_int (&(ieee->h), &ieee->ad.number_of_maus_in_address) == false)    {      goto fail;    }  /* If there is a byte order info, take it */  if (this_byte (&(ieee->h)) == (int) ieee_variable_L_enum ||      this_byte (&(ieee->h)) == (int) ieee_variable_M_enum)    next_byte (&(ieee->h));  for (part = 0; part < N_W_VARIABLES; part++)    {      boolean ok;      if (read_2bytes (&(ieee->h)) != (int) ieee_assign_value_to_variable_enum)	{	  goto fail;	}      if (this_byte_and_next (&(ieee->h)) != part)	{	  goto fail;	}      ieee->w.offset[part] = parse_i (&(ieee->h), &ok);      if (ok == false)	{	  goto fail;	}    }  if (ieee->w.r.external_part != 0)    abfd->flags = HAS_SYMS;  /* By now we know that this is a real IEEE file, we're going to read     the whole thing into memory so that we can run up and down it     quickly.  We can work out how big the file is from the trailer     record */  IEEE_DATA (abfd)->h.first_byte =    (unsigned char *) bfd_alloc (ieee->h.abfd, ieee->w.r.me_record + 1);  if (!IEEE_DATA (abfd)->h.first_byte)    goto fail;  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)    goto fail;  /* FIXME: Check return value.  I'm not sure whether it needs to read     the entire buffer or not.  */  bfd_read ((PTR) (IEEE_DATA (abfd)->h.first_byte), 1,	    ieee->w.r.me_record + 1, abfd);  ieee_slurp_sections (abfd);  if (! ieee_slurp_debug (abfd))    goto fail;  /* Parse section data to activate file and section flags implied by     section contents. */  if (! ieee_slurp_section_data (abfd))    goto fail;      return abfd->xvec;got_wrong_format:  bfd_set_error (bfd_error_wrong_format);fail:  (void) bfd_release (abfd, ieee);  abfd->tdata.ieee_data = save;  return (const bfd_target *) NULL;}