if (link_info.relocateable) return;
lang_set_startof (){  asection *s;  for (s = output_bfd->sections; s != NULL; s = s->next)    {      const char *secname;      char *buf;      struct bfd_link_hash_entry *h;      secname = bfd_get_section_name (output_bfd, s);      buf = xmalloc (10 + strlen (secname));      sprintf (buf, ".startof.%s", secname);      h = bfd_link_hash_lookup (link_info.hash, buf, false, false, true);      if (h != NULL && h->type == bfd_link_hash_undefined)	{	  h->type = bfd_link_hash_defined;	  h->u.def.value = bfd_get_section_vma (output_bfd, s);	  h->u.def.section = bfd_abs_section_ptr;	}      sprintf (buf, ".sizeof.%s", secname);      h = bfd_link_hash_lookup (link_info.hash, buf, false, false, true);      if (h != NULL && h->type == bfd_link_hash_undefined)	{	  h->type = bfd_link_hash_defined;	  if (s->_cooked_size != 0)	    h->u.def.value = s->_cooked_size;	  else	    h->u.def.value = s->_raw_size;	  h->u.def.section = bfd_abs_section_ptr;	}      free (buf);    }}