{ bfd_set_error (bfd_error_no_memory); return false; }
return false;
bfd_section_from_phdr (abfd, hdr, index)     bfd *abfd;     Elf_Internal_Phdr *hdr;     int index;{  asection *newsect;  char *name;  char namebuf[64];  int split;  split = ((hdr->p_memsz > 0) &&	   (hdr->p_filesz > 0) &&	   (hdr->p_memsz > hdr->p_filesz));  sprintf (namebuf, split ? "segment%da" : "segment%d", index);  name = bfd_alloc (abfd, strlen (namebuf) + 1);  if (!name)    {      bfd_set_error (bfd_error_no_memory);      return false;    }  strcpy (name, namebuf);  newsect = bfd_make_section (abfd, name);  if (newsect == NULL)    return false;  newsect->vma = hdr->p_vaddr;  newsect->lma = hdr->p_paddr;  newsect->_raw_size = hdr->p_filesz;  newsect->filepos = hdr->p_offset;  newsect->flags |= SEC_HAS_CONTENTS;  if (hdr->p_type == PT_LOAD)    {      newsect->flags |= SEC_ALLOC;      newsect->flags |= SEC_LOAD;      if (hdr->p_flags & PF_X)	{	  /* FIXME: all we known is that it has execute PERMISSION,	     may be data. */	  newsect->flags |= SEC_CODE;	}    }  if (!(hdr->p_flags & PF_W))    {      newsect->flags |= SEC_READONLY;    }  if (split)    {      sprintf (namebuf, "segment%db", index);      name = bfd_alloc (abfd, strlen (namebuf) + 1);      if (!name)	{	  bfd_set_error (bfd_error_no_memory);	  return false;	}      strcpy (name, namebuf);      newsect = bfd_make_section (abfd, name);      if (newsect == NULL)	return false;      newsect->vma = hdr->p_vaddr + hdr->p_filesz;      newsect->lma = hdr->p_paddr + hdr->p_filesz;      newsect->_raw_size = hdr->p_memsz - hdr->p_filesz;      if (hdr->p_type == PT_LOAD)	{	  newsect->flags |= SEC_ALLOC;	  if (hdr->p_flags & PF_X)	    newsect->flags |= SEC_CODE;	}      if (!(hdr->p_flags & PF_W))	newsect->flags |= SEC_READONLY;    }  return true;}