|| discard_locals == locals_all))
|| discard_locals == locals_all || convert_debugging))
setup_section (ibfd, isection, obfdarg)     bfd *ibfd;     sec_ptr isection;     PTR obfdarg;{  bfd *obfd = (bfd *) obfdarg;  struct section_list *p;  sec_ptr osection;  bfd_vma vma;  bfd_vma lma;  flagword flags;  char *err;  if ((bfd_get_section_flags (ibfd, isection) & SEC_DEBUGGING) != 0      && (strip_symbols == strip_debug	  || strip_symbols == strip_unneeded	  || strip_symbols == strip_all	  || discard_locals == locals_all))    return;  p = find_section_list (bfd_section_name (ibfd, isection), false);  if (p != NULL)    p->used = true;  if (p != NULL && p->remove)    return;  osection = bfd_make_section_anyway (obfd, bfd_section_name (ibfd, isection));  if (osection == NULL)    {      err = "making";      goto loser;    }  if (!bfd_set_section_size (obfd,			     osection,			     bfd_section_size (ibfd, isection)))    {      err = "size";      goto loser;    }  vma = bfd_section_vma (ibfd, isection);  if (p != NULL && p->adjust == adjust_vma)    vma += p->val;  else if (p != NULL && p->adjust == set_vma)    vma = p->val;  else    vma += adjust_section_vma;  if (! bfd_set_section_vma (obfd, osection, vma))    {      err = "vma";      goto loser;    }  lma = isection->lma;  if (p != NULL && p->adjust == adjust_vma)    lma += p->val;  else if (p != NULL && p->adjust == set_vma)    lma = p->val;  else    lma += adjust_section_vma;  osection->lma = lma;  if (bfd_set_section_alignment (obfd,				 osection,				 bfd_section_alignment (ibfd, isection))      == false)    {      err = "alignment";      goto loser;    }  flags = bfd_get_section_flags (ibfd, isection);  if (p != NULL && p->set_flags)    flags = p->flags | (flags & SEC_HAS_CONTENTS);  if (!bfd_set_section_flags (obfd, osection, flags))    {      err = "flags";      goto loser;    }  /* This used to be mangle_section; we do here to avoid using     bfd_get_section_by_name since some formats allow multiple     sections with the same name.  */  isection->output_section = osection;  isection->output_offset = 0;  /* Allow the BFD backend to copy any private data it understands     from the input section to the output section.  */  if (!bfd_copy_private_section_data (ibfd, isection, obfd, osection))    {      err = "private data";      goto loser;    }  /* All went well */  return;loser:  fprintf (stderr, "%s: %s: section `%s': error in %s: %s\n",	   program_name,	   bfd_get_filename (ibfd), bfd_section_name (ibfd, isection),	   err, bfd_errmsg (bfd_get_error ()));  status = 1;}