{ bfd_set_error (bfd_error_no_memory); goto fail; }
goto fail;
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;  memset ((PTR) ieee->section_table, 0, sizeof (ieee->section_table));  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;	}    }  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								+ 50);  if (!IEEE_DATA (abfd)->h.first_byte)    {      bfd_set_error (bfd_error_no_memory);      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 + 50, abfd);  ieee_slurp_sections (abfd);  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;}