{ bfd_set_error (bfd_error_no_memory); return (const bfd_target *) NULL; }
return (const bfd_target *) NULL;
ieee_archive_p (abfd)     bfd *abfd;{  char *library;  boolean loop;  unsigned int i;  unsigned char buffer[512];  struct obstack ob;  file_ptr buffer_offset = 0;  ieee_ar_data_type *save = abfd->tdata.ieee_ar_data;  ieee_ar_data_type *ieee;  abfd->tdata.ieee_ar_data = (ieee_ar_data_type *) bfd_alloc (abfd, sizeof (ieee_ar_data_type));  if (!abfd->tdata.ieee_ar_data)    {      bfd_set_error (bfd_error_no_memory);      return NULL;    }  ieee = IEEE_AR_DATA (abfd);  /* 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.first_byte = buffer;  ieee->h.input_p = buffer;  ieee->h.abfd = abfd;  if (this_byte (&(ieee->h)) != Module_Beginning)    {      abfd->tdata.ieee_ar_data = save;      return (const bfd_target *) NULL;    }  next_byte (&(ieee->h));  library = read_id (&(ieee->h));  if (strcmp (library, "LIBRARY") != 0)    {      bfd_release (abfd, ieee);      abfd->tdata.ieee_ar_data = save;      return (const bfd_target *) NULL;    }  /* Throw away the filename */  read_id (&(ieee->h));  /* This must be an IEEE archive, so we'll buy some space to do     things */  if (!obstack_begin (&ob, 128))    {      bfd_set_error (bfd_error_no_memory);      return (const bfd_target *) NULL;    }  ieee->element_count = 0;  ieee->element_index = 0;  next_byte (&(ieee->h));	/* Drop the ad part */  must_parse_int (&(ieee->h));	/* And the two dummy numbers */  must_parse_int (&(ieee->h));  loop = true;  /* Read the index of the BB table */  while (loop)    {      ieee_ar_obstack_type t;      int rec = read_2bytes (&(ieee->h));      if (rec == (int) ieee_assign_value_to_variable_enum)	{	  must_parse_int (&(ieee->h));	  t.file_offset = must_parse_int (&(ieee->h));	  t.abfd = (bfd *) NULL;	  ieee->element_count++;	  obstack_grow (&ob, (PTR) & t, sizeof (t));	  /* Make sure that we don't go over the end of the buffer */	  if ((size_t) ieee_pos (abfd) > sizeof (buffer) / 2)	    {	      /* Past half way, reseek and reprime */	      buffer_offset += ieee_pos (abfd);	      if (bfd_seek (abfd, buffer_offset, SEEK_SET) != 0)		return NULL;	      /* 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.first_byte = buffer;	      ieee->h.input_p = buffer;	    }	}      else	loop = false;    }  ieee->elements = (ieee_ar_obstack_type *) obstack_finish (&ob);  if (!ieee->elements)    {      bfd_set_error (bfd_error_no_memory);      return (const bfd_target *) NULL;    }  /* Now scan the area again, and replace BB offsets with file */  /* offsets */  for (i = 2; i < ieee->element_count; i++)    {      if (bfd_seek (abfd, ieee->elements[i].file_offset, SEEK_SET) != 0)	return NULL;      /* 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.first_byte = buffer;      ieee->h.input_p = buffer;      next_byte (&(ieee->h));	/* Drop F8 */      next_byte (&(ieee->h));	/* Drop 14 */      must_parse_int (&(ieee->h));	/* Drop size of block */      if (must_parse_int (&(ieee->h)) != 0)	{	  /* This object has been deleted */	  ieee->elements[i].file_offset = 0;	}      else	{	  ieee->elements[i].file_offset = must_parse_int (&(ieee->h));	}    }/*  abfd->has_armap = ;*/  return abfd->xvec;}