This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[mips patch' rfa] remove MIPS ld --embedded-relocs support.


This patch removes MIPS support for --embedded-relocs.  It's an
updated version of my previous patch.

Specifically, now I've addressed:

> anyway, one issue with the patch as-is: since there was stuff that I
> didn't understand remaining in emultempl/mipsecoff.em, I felt that I
> had to leave that as is.

as discussed with Ian on this last.


As before:

> tested w/ configure+make+make check for binutils/gas/ld host x86-linux
> targets mips-elf, mips-linux, and mips-ecoff.  No change in results
> before/after change, other than for the removed tests.



chris

[ bfd/ChangeLog ]
2004-04-21  Chris Demetriou  <cgd@broadcom.com>

	* coff-mips.c (bfd_mips_ecoff_create_embedded_relocs): Remove.
	* elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Remove.
	* bfd-in.h (bfd_mips_ecoff_create_embedded_relocs)
	(bfd_mips_elf32_create_embedded_relocs): Remove prototypes
	* bfd-in2.h: Regenerate.

[ ld/ChangeLog ]
2004-04-21  Chris Demetriou  <cgd@broadcom.com>

	* ld.texinfo: Remove MIPS --embedded-relocs documentation.
	* emulparams/elf32bmip.sh (EXTRA_EM_FILE): Remove definition.
	* emulparams/mipsidt.sh (TEMPLATE_NAME): Use generic.em.
	(EXTRA_EM_FILE): Use mipsecoff.em
	* emulparams/mipsidtl.sh (TEMPLATE_NAME): Use generic.em.
	(EXTRA_EM_FILE): Use mipsecoff.em
	* emultempl/mipsecoff.em: Restructure to be included as an
	extra emulation file.
	(check_sections, gld${EMULATION_NAME}_after_open)
	(gld${EMULATION_NAME}_after_allocation)
	(gld${EMULATION_NAME}_get_script)
	(ld_${EMULATION_NAME}_emulation): Remove
	(gld${EMULATION_NAME}_before_parse): Rename to...
	(mipsecoff_before_parse): This.
	(LDEMUL_BEFORE_PARSE): Define.
	* emultempl/mipself.em: Remove file.
	* scripttempl/mips.sc (.rel.sdata): Do not include in output.
	(__runtime_reloc_start, __runtime_reloc_stop): Stop providing
	these symbols.
	* Makefile.am: Remove dependencies on emultempl/mipself.em.
	* Makefile.in: Regenerate.

[ ld/testsuite/ChangeLog ]
2004-04-21  Chris Demetriou  <cgd@broadcom.com>

	* ld-empic/run.c: Removed as part of MIPS --embedded-relocs removal.
	* ld-empic/empic.exp: Likewise.
	* ld-empic/relax.t: Likewise.
	* ld-empic/relax1.c: Likewise.
	* ld-empic/relax2.c: Likewise.
	* ld-empic/relax3.c: Likewise.
	* ld-empic/relax4.c: Likewise.
	* ld-empic/runtest1.c: Likewise.
	* ld-empic/runtest2.c: Likewise.
	* ld-empic/runtesti.s: Likewise.
	* ld-mips-elf/empic1-ln.d: Likewise.
	* ld-mips-elf/empic1-lp.d: Likewise.
	* ld-mips-elf/empic1-mn.d: Likewise.
	* ld-mips-elf/empic1-mp.d: Likewise.
	* ld-mips-elf/empic1-ref.s: Likewise.
	* ld-mips-elf/empic1-sn.d: Likewise.
	* ld-mips-elf/empic1-sp.d: Likewise.
	* ld-mips-elf/empic1-space.s: Likewise.
	* ld-mips-elf/empic1-tgt.s: Likewise.
	* ld-mips-elf/empic2-fwd-0.d: Likewise.
	* ld-mips-elf/empic2-fwd-1.d: Likewise.
	* ld-mips-elf/empic2-fwd-tgt.s: Likewise.
	* ld-mips-elf/empic2-ref.s: Likewise.
	* ld-mips-elf/empic2-rev-0.d: Likewise.
	* ld-mips-elf/empic2-rev-1.d: Likewise.
	* ld-mips-elf/empic2-rev-tgt.s: Likewise.
	* ld-mips-elf/empic2-space.s: Likewise.
	* ld-mips-elf/emrelocs-eb.d: Likewise.
	* ld-mips-elf/emrelocs-el.d: Likewise.
	* ld-mips-elf/emrelocs.ld: Likewise.
	* ld-mips-elf/emrelocs1.s: Likewise.
	* ld-mips-elf/emrelocs2.s: Likewise.
	* ld-mips-elf/mips-elf.exp: Don't run now-removed tests.

Index: bfd/bfd-in.h
===================================================================
RCS file: /cvs/src/src/bfd/bfd-in.h,v
retrieving revision 1.78
diff -u -p -r1.78 bfd-in.h
--- bfd/bfd-in.h	1 Apr 2004 11:20:01 -0000	1.78
+++ bfd/bfd-in.h	21 Apr 2004 19:03:46 -0000
@@ -587,8 +587,6 @@ extern bfd_boolean bfd_ecoff_write_accum
   (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
    const struct ecoff_debug_swap *swap,
    struct bfd_link_info *info, file_ptr where);
-extern bfd_boolean bfd_mips_ecoff_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
 
 /* Externally visible ELF routines.  */
 
@@ -669,8 +667,6 @@ extern struct bfd_section *_bfd_elf_tls_
   (bfd *, struct bfd_link_info *);
 
 extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
-extern bfd_boolean bfd_mips_elf32_create_embedded_relocs
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
 
 /* SunOS shared library support routines for the linker.  */
Index: bfd/bfd-in2.h
===================================================================
RCS file: /cvs/src/src/bfd/bfd-in2.h,v
retrieving revision 1.267
diff -u -p -r1.267 bfd-in2.h
--- bfd/bfd-in2.h	20 Apr 2004 12:17:13 -0000	1.267
+++ bfd/bfd-in2.h	21 Apr 2004 19:03:46 -0000
@@ -594,8 +594,6 @@ extern bfd_boolean bfd_ecoff_write_accum
   (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
    const struct ecoff_debug_swap *swap,
    struct bfd_link_info *info, file_ptr where);
-extern bfd_boolean bfd_mips_ecoff_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
 
 /* Externally visible ELF routines.  */
 
@@ -676,8 +674,6 @@ extern struct bfd_section *_bfd_elf_tls_
   (bfd *, struct bfd_link_info *);
 
 extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
-  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
-extern bfd_boolean bfd_mips_elf32_create_embedded_relocs
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
 
 /* SunOS shared library support routines for the linker.  */
Index: bfd/coff-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/coff-mips.c,v
retrieving revision 1.21
diff -u -p -r1.21 coff-mips.c
--- bfd/coff-mips.c	25 Jun 2003 06:40:18 -0000	1.21
+++ bfd/coff-mips.c	21 Apr 2004 19:03:46 -0000
@@ -2323,132 +2323,6 @@ mips_relax_pcrel16 (info, input_bfd, inp
 
   return TRUE;
 }
-
-/* Given a .sdata section and a .rel.sdata in-memory section, store
-   relocation information into the .rel.sdata section which can be
-   used at runtime to relocate the section.  This is called by the
-   linker when the --embedded-relocs switch is used.  This is called
-   after the add_symbols entry point has been called for all the
-   objects, and before the final_link entry point is called.  This
-   function presumes that the object was compiled using
-   -membedded-pic.  */
-
-bfd_boolean
-bfd_mips_ecoff_create_embedded_relocs (abfd, info, datasec, relsec, errmsg)
-     bfd *abfd;
-     struct bfd_link_info *info;
-     asection *datasec;
-     asection *relsec;
-     char **errmsg;
-{
-  struct ecoff_link_hash_entry **sym_hashes;
-  struct ecoff_section_tdata *section_tdata;
-  struct external_reloc *ext_rel;
-  struct external_reloc *ext_rel_end;
-  bfd_byte *p;
-  bfd_size_type amt;
-
-  BFD_ASSERT (! info->relocatable);
-
-  *errmsg = NULL;
-
-  if (datasec->reloc_count == 0)
-    return TRUE;
-
-  sym_hashes = ecoff_data (abfd)->sym_hashes;
-
-  if (! mips_read_relocs (abfd, datasec))
-    return FALSE;
-
-  amt = (bfd_size_type) datasec->reloc_count * 4;
-  relsec->contents = (bfd_byte *) bfd_alloc (abfd, amt);
-  if (relsec->contents == NULL)
-    return FALSE;
-
-  p = relsec->contents;
-
-  section_tdata = ecoff_section_data (abfd, datasec);
-  ext_rel = (struct external_reloc *) section_tdata->external_relocs;
-  ext_rel_end = ext_rel + datasec->reloc_count;
-  for (; ext_rel < ext_rel_end; ext_rel++, p += 4)
-    {
-      struct internal_reloc int_rel;
-      bfd_boolean text_relative;
-
-      mips_ecoff_swap_reloc_in (abfd, (PTR) ext_rel, &int_rel);
-
-      /* We are going to write a four byte word into the runtime reloc
-	 section.  The word will be the address in the data section
-	 which must be relocated.  This must be on a word boundary,
-	 which means the lower two bits must be zero.  We use the
-	 least significant bit to indicate how the value in the data
-	 section must be relocated.  A 0 means that the value is
-	 relative to the text section, while a 1 indicates that the
-	 value is relative to the data section.  Given that we are
-	 assuming the code was compiled using -membedded-pic, there
-	 should not be any other possibilities.  */
-
-      /* We can only relocate REFWORD relocs at run time.  */
-      if (int_rel.r_type != MIPS_R_REFWORD)
-	{
-	  *errmsg = _("unsupported reloc type");
-	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
-	}
-
-      if (int_rel.r_extern)
-	{
-	  struct ecoff_link_hash_entry *h;
-
-	  h = sym_hashes[int_rel.r_symndx];
-	  /* If h is NULL, that means that there is a reloc against an
-	     external symbol which we thought was just a debugging
-	     symbol.  This should not happen.  */
-	  if (h == (struct ecoff_link_hash_entry *) NULL)
-	    abort ();
-	  if ((h->root.type == bfd_link_hash_defined
-	       || h->root.type == bfd_link_hash_defweak)
-	      && (h->root.u.def.section->flags & SEC_CODE) != 0)
-	    text_relative = TRUE;
-	  else
-	    text_relative = FALSE;
-	}
-      else
-	{
-	  switch (int_rel.r_symndx)
-	    {
-	    case RELOC_SECTION_TEXT:
-	      text_relative = TRUE;
-	      break;
-	    case RELOC_SECTION_SDATA:
-	    case RELOC_SECTION_SBSS:
-	    case RELOC_SECTION_LIT8:
-	      text_relative = FALSE;
-	      break;
-	    default:
-	      /* No other sections should appear in -membedded-pic
-                 code.  */
-	      *errmsg = _("reloc against unsupported section");
-	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
-	    }
-	}
-
-      if ((int_rel.r_offset & 3) != 0)
-	{
-	  *errmsg = _("reloc not properly aligned");
-	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
-	}
-
-      bfd_put_32 (abfd,
-		  (int_rel.r_vaddr - datasec->vma + datasec->output_offset
-		   + (text_relative ? 0 : 1)),
-		  p);
-    }
-
-  return TRUE;
-}
 
 /* This is the ECOFF backend structure.  The backend field of the
    target vector points to this.  */
Index: bfd/elf32-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-mips.c,v
retrieving revision 1.173
diff -u -p -r1.173 elf32-mips.c
--- bfd/elf32-mips.c	5 Jan 2004 22:09:38 -0000	1.173
+++ bfd/elf32-mips.c	21 Apr 2004 19:03:46 -0000
@@ -1335,139 +1335,6 @@ elf32_mips_irix_compat (bfd *abfd)
     return ict_none;
 }
 
-/* Given a data section and an in-memory embedded reloc section, store
-   relocation information into the embedded reloc section which can be
-   used at runtime to relocate the data section.  This is called by the
-   linker when the --embedded-relocs switch is used.  This is called
-   after the add_symbols entry point has been called for all the
-   objects, and before the final_link entry point is called.  */
-
-bfd_boolean
-bfd_mips_elf32_create_embedded_relocs (bfd *abfd, struct bfd_link_info *info,
-				       asection *datasec, asection *relsec,
-				       char **errmsg)
-{
-  Elf_Internal_Shdr *symtab_hdr;
-  Elf_Internal_Sym *isymbuf = NULL;
-  Elf_Internal_Rela *internal_relocs = NULL;
-  Elf_Internal_Rela *irel, *irelend;
-  bfd_byte *p;
-
-  BFD_ASSERT (! info->relocatable);
-
-  *errmsg = NULL;
-
-  if (datasec->reloc_count == 0)
-    return TRUE;
-
-  /* Read this BFD's symbols if we haven't done so already, or get the cached
-     copy if it exists.  */
-  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-  if (symtab_hdr->sh_info != 0)
-    {
-      isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
-      if (isymbuf == NULL)
-	isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr,
-					symtab_hdr->sh_info, 0,
-					NULL, NULL, NULL);
-      if (isymbuf == NULL)
-	goto error_return;
-    }
-
-  /* Get a copy of the native relocations.  */
-  internal_relocs = _bfd_elf_link_read_relocs (abfd, datasec, NULL, NULL,
-					       info->keep_memory);
-  if (internal_relocs == NULL)
-    goto error_return;
-
-  relsec->contents = bfd_alloc (abfd, datasec->reloc_count * 12);
-  if (relsec->contents == NULL)
-    goto error_return;
-
-  p = relsec->contents;
-
-  irelend = internal_relocs + datasec->reloc_count;
-
-  for (irel = internal_relocs; irel < irelend; irel++, p += 12)
-    {
-      asection *targetsec;
-
-      /* We are going to write a four byte longword into the runtime
-	 reloc section.  The longword will be the address in the data
-	 section which must be relocated.  It is followed by the name
-	 of the target section NUL-padded or truncated to 8
-	 characters.  */
-
-      /* We can only relocate absolute longword relocs at run time.  */
-      if ((ELF32_R_TYPE (irel->r_info) != (int) R_MIPS_32) &&
-	  (ELF32_R_TYPE (irel->r_info) != (int) R_MIPS_64))
-	{
-	  *errmsg = _("unsupported reloc type");
-	  bfd_set_error (bfd_error_bad_value);
-	  goto error_return;
-	}
-      /* Get the target section referred to by the reloc.  */
-      if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info)
-	{
-          Elf_Internal_Sym *isym;
-
-          /* A local symbol.  */
-	  isym = isymbuf + ELF32_R_SYM (irel->r_info);
-	  targetsec = bfd_section_from_elf_index (abfd, isym->st_shndx);
-	}
-      else
-	{
-	  unsigned long indx;
-	  struct elf_link_hash_entry *h;
-
-	  /* An external symbol.  */
-	  indx = ELF32_R_SYM (irel->r_info);
-	  h = elf_sym_hashes (abfd)[indx];
-	  targetsec = NULL;
-	  /*
-	     For some reason, in certain programs, the symbol will
-	     not be in the hash table.  It seems to happen when you
-	     declare a static table of pointers to const external structures.
-	     In this case, the relocs are relative to data, not
-	     text, so just treating it like an undefined link
-	     should be sufficient.  */
-	  BFD_ASSERT(h != NULL);
-	  if (h->root.type == bfd_link_hash_defined
-	      || h->root.type == bfd_link_hash_defweak)
-	    targetsec = h->root.u.def.section;
-	}
-
-
-      /*
-         Set the low bit of the relocation offset if it's a MIPS64 reloc.
-         Relocations will always be on (at least) 32-bit boundaries.  */
-
-      bfd_put_32 (abfd, ((irel->r_offset + datasec->output_offset) +
-		  ((ELF32_R_TYPE (irel->r_info) == (int) R_MIPS_64) ? 1 : 0)),
-		  p);
-      memset (p + 4, 0, 8);
-      if (targetsec != NULL)
-	strncpy (p + 4, targetsec->output_section->name, 8);
-    }
-
-  if (internal_relocs != NULL
-      && elf_section_data (datasec)->relocs != internal_relocs)
-    free (internal_relocs);
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
-    free (isymbuf);
-  return TRUE;
-
- error_return:
-  if (internal_relocs != NULL
-      && elf_section_data (datasec)->relocs != internal_relocs)
-    free (internal_relocs);
-  if (isymbuf != NULL
-      && symtab_hdr->contents != (unsigned char *) isymbuf)
-    free (isymbuf);
-  return FALSE;
-}
-
 /* ECOFF swapping routines.  These are used when dealing with the
    .mdebug section, which is in the ECOFF debugging format.  */
 static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = {
Index: ld/Makefile.am
===================================================================
RCS file: /cvs/src/src/ld/Makefile.am,v
retrieving revision 1.152
diff -u -p -r1.152 Makefile.am
--- ld/Makefile.am	8 Apr 2004 14:52:44 -0000	1.152
+++ ld/Makefile.am	21 Apr 2004 19:03:46 -0000
@@ -627,7 +627,7 @@ eelf32_i960.c: $(srcdir)/emulparams/elf3
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32_i960 "$(tdir_elf32_i960)"
 eelf32b4300.c: $(srcdir)/emulparams/elf32b4300.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32b4300 "$(tdir_elf32b4300)"
 eelf32cr16c.c: $(srcdir)/emulparams/elf32cr16c.sh \
@@ -635,7 +635,6 @@ eelf32cr16c.c: $(srcdir)/emulparams/elf3
   $(srcdir)/scripttempl/elf32cr16c.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32cr16c "$(tdir_elf32cr16c)"
 eelf32bmip.c: $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32bmip "$(tdir_elf32bmip)"
 eelf32bsmip.c: $(srcdir)/emulparams/elf32bsmip.sh \
@@ -643,30 +642,27 @@ eelf32bsmip.c: $(srcdir)/emulparams/elf3
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32bsmip "$(tdir_elf32bsmip)"
 eelf32btsmip.c: $(srcdir)/emulparams/elf32btsmip.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32btsmip "$(tdir_elf32btsmip)"
 eelf32btsmipn32.c: $(srcdir)/emulparams/elf32btsmipn32.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32btsmipn32 "$(tdir_elf32btsmipn32)"
 eelf32ltsmip.c: $(srcdir)/emulparams/elf32ltsmip.sh \
   $(srcdir)/emulparams/elf32btsmip.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32ltsmip "$(tdir_elf32ltsmip)"
 eelf32ltsmipn32.c: $(srcdir)/emulparams/elf32ltsmipn32.sh \
   $(srcdir)/emulparams/elf32btsmip.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32ltsmipn32 "$(tdir_elf32ltsmipn32)"
 eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)"
 eelf32elmip.c: $(srcdir)/emulparams/elf32elmip.sh \
   $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32elmip "$(tdir_elf32elmip)"
 eelf32bmipn32.c: $(srcdir)/emulparams/elf32bmipn32.sh \
@@ -675,11 +671,10 @@ eelf32bmipn32.c: $(srcdir)/emulparams/el
 	${GENSCRIPTS} elf32bmipn32 "$(tdir_elf32bmipn32)"
 eelf32l4300.c: $(srcdir)/emulparams/elf32l4300.sh \
   $(srcdir)/emulparams/elf32b4300.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32l4300 "$(tdir_elf32l4300)"
 eelf32lmip.c: $(srcdir)/emulparams/elf32lmip.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32lmip "$(tdir_elf32lmip)"
 eelf32mipswindiss.c: $(srcdir)/emulparams/elf32mipswindiss.sh \
@@ -707,7 +702,6 @@ eelf32ppcwindiss.c: $(srcdir)/emulparams
 	${GENSCRIPTS} elf32ppcwindiss "$(tdir_elf32ppcwindiss)"
 eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \
   $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32lsmip "$(tdir_elf32lsmip)"
 eelf32openrisc.c: $(srcdir)/emulparams/elf32openrisc.sh \
Index: ld/Makefile.in
===================================================================
RCS file: /cvs/src/src/ld/Makefile.in,v
retrieving revision 1.164
diff -u -p -r1.164 Makefile.in
--- ld/Makefile.in	8 Apr 2004 14:52:44 -0000	1.164
+++ ld/Makefile.in	21 Apr 2004 19:03:46 -0000
@@ -1353,7 +1353,7 @@ eelf32_i960.c: $(srcdir)/emulparams/elf3
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32_i960 "$(tdir_elf32_i960)"
 eelf32b4300.c: $(srcdir)/emulparams/elf32b4300.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32b4300 "$(tdir_elf32b4300)"
 eelf32cr16c.c: $(srcdir)/emulparams/elf32cr16c.sh \
@@ -1361,7 +1361,6 @@ eelf32cr16c.c: $(srcdir)/emulparams/elf3
   $(srcdir)/scripttempl/elf32cr16c.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32cr16c "$(tdir_elf32cr16c)"
 eelf32bmip.c: $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32bmip "$(tdir_elf32bmip)"
 eelf32bsmip.c: $(srcdir)/emulparams/elf32bsmip.sh \
@@ -1369,30 +1368,27 @@ eelf32bsmip.c: $(srcdir)/emulparams/elf3
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32bsmip "$(tdir_elf32bsmip)"
 eelf32btsmip.c: $(srcdir)/emulparams/elf32btsmip.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32btsmip "$(tdir_elf32btsmip)"
 eelf32btsmipn32.c: $(srcdir)/emulparams/elf32btsmipn32.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32btsmipn32 "$(tdir_elf32btsmipn32)"
 eelf32ltsmip.c: $(srcdir)/emulparams/elf32ltsmip.sh \
   $(srcdir)/emulparams/elf32btsmip.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32ltsmip "$(tdir_elf32ltsmip)"
 eelf32ltsmipn32.c: $(srcdir)/emulparams/elf32ltsmipn32.sh \
   $(srcdir)/emulparams/elf32btsmip.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32ltsmipn32 "$(tdir_elf32ltsmipn32)"
 eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)"
 eelf32elmip.c: $(srcdir)/emulparams/elf32elmip.sh \
   $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32elmip "$(tdir_elf32elmip)"
 eelf32bmipn32.c: $(srcdir)/emulparams/elf32bmipn32.sh \
@@ -1401,11 +1397,10 @@ eelf32bmipn32.c: $(srcdir)/emulparams/el
 	${GENSCRIPTS} elf32bmipn32 "$(tdir_elf32bmipn32)"
 eelf32l4300.c: $(srcdir)/emulparams/elf32l4300.sh \
   $(srcdir)/emulparams/elf32b4300.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32l4300 "$(tdir_elf32l4300)"
 eelf32lmip.c: $(srcdir)/emulparams/elf32lmip.sh \
-  $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/mipself.em \
+  $(srcdir)/emulparams/elf32bmip.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32lmip "$(tdir_elf32lmip)"
 eelf32mipswindiss.c: $(srcdir)/emulparams/elf32mipswindiss.sh \
@@ -1433,7 +1428,6 @@ eelf32ppcwindiss.c: $(srcdir)/emulparams
 	${GENSCRIPTS} elf32ppcwindiss "$(tdir_elf32ppcwindiss)"
 eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \
   $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \
-  $(srcdir)/emultempl/mipself.em \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
 	${GENSCRIPTS} elf32lsmip "$(tdir_elf32lsmip)"
 eelf32openrisc.c: $(srcdir)/emulparams/elf32openrisc.sh \
Index: ld/ld.texinfo
===================================================================
RCS file: /cvs/src/src/ld/ld.texinfo,v
retrieving revision 1.108
diff -u -p -r1.108 ld.texinfo
--- ld/ld.texinfo	1 Apr 2004 11:20:04 -0000	1.108
+++ ld/ld.texinfo	21 Apr 2004 19:03:46 -0000
@@ -1113,15 +1113,6 @@ generating dynamically linked ELF execut
 linker is normally correct; don't use this unless you know what you are
 doing.
 
-@cindex MIPS embedded PIC code
-@kindex --embedded-relocs
-@item --embedded-relocs
-This option is only meaningful when linking MIPS embedded PIC code,
-generated by the -membedded-pic option to the @sc{gnu} compiler and
-assembler.  It causes the linker to create a table which may be used at
-runtime to relocate any data which was statically initialized to pointer
-values.  See the code in testsuite/ld-empic for details.
-
 
 @kindex --fatal-warnings
 @item --fatal-warnings
Index: ld/emulparams/elf32bmip.sh
===================================================================
RCS file: /cvs/src/src/ld/emulparams/elf32bmip.sh,v
retrieving revision 1.5
diff -u -p -r1.5 elf32bmip.sh
--- ld/emulparams/elf32bmip.sh	9 Feb 2004 17:54:24 -0000	1.5
+++ ld/emulparams/elf32bmip.sh	21 Apr 2004 19:03:46 -0000
@@ -33,5 +33,4 @@ OTHER_SECTIONS='
 ARCH=mips
 MACHINE=
 TEMPLATE_NAME=elf32
-EXTRA_EM_FILE=mipself
 GENERATE_SHLIB_SCRIPT=yes
Index: ld/emulparams/mipsidt.sh
===================================================================
RCS file: /cvs/src/src/ld/emulparams/mipsidt.sh,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 mipsidt.sh
--- ld/emulparams/mipsidt.sh	3 May 1999 07:29:07 -0000	1.1.1.1
+++ ld/emulparams/mipsidt.sh	21 Apr 2004 19:03:46 -0000
@@ -7,5 +7,6 @@ ARCH=mips
 ENTRY=start
 TEXT_START_ADDR=0xa0012000
 DATA_ADDR=.
-TEMPLATE_NAME=mipsecoff
+TEMPLATE_NAME=generic
+EXTRA_EM_FILE=mipsecoff
 EMBEDDED=yes
Index: ld/emulparams/mipsidtl.sh
===================================================================
RCS file: /cvs/src/src/ld/emulparams/mipsidtl.sh,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 mipsidtl.sh
--- ld/emulparams/mipsidtl.sh	3 May 1999 07:29:07 -0000	1.1.1.1
+++ ld/emulparams/mipsidtl.sh	21 Apr 2004 19:03:46 -0000
@@ -7,5 +7,6 @@ ARCH=mips
 ENTRY=start
 TEXT_START_ADDR=0xa0012000
 DATA_ADDR=.
-TEMPLATE_NAME=mipsecoff
+TEMPLATE_NAME=generic
+EXTRA_EM_FILE=mipsecoff
 EMBEDDED=yes
Index: ld/emultempl/mipsecoff.em
===================================================================
RCS file: /cvs/src/src/ld/emultempl/mipsecoff.em,v
retrieving revision 1.14
diff -u -p -r1.14 mipsecoff.em
--- ld/emultempl/mipsecoff.em	3 Jan 2004 11:09:07 -0000	1.14
+++ ld/emultempl/mipsecoff.em	21 Apr 2004 19:03:46 -0000
@@ -1,51 +1,30 @@
 # This shell script emits a C file. -*- C -*-
-# It does some substitutions.
+#   Copyright 1994, 1995, 1997, 2000, 2002, 2003, 2004
+#   Free Software Foundation, Inc.
+#
+# This file is part of GLD, the Gnu Linker.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
 if [ -z "$MACHINE" ]; then
   OUTPUT_ARCH=${ARCH}
 else
   OUTPUT_ARCH=${ARCH}:${MACHINE}
 fi
-cat >e${EMULATION_NAME}.c <<EOF
-/* This file is is generated by a shell script.  DO NOT EDIT! */
-
-/* Handle embedded relocs for MIPS.
-   Copyright 1994, 1995, 1997, 2000, 2002, 2003, 2004
-   Free Software Foundation, Inc.
-   Written by Ian Lance Taylor <ian@cygnus.com> based on generic.em.
-
-This file is part of GLD, the Gnu Linker.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#define TARGET_IS_${EMULATION_NAME}
-
-#include "bfd.h"
-#include "sysdep.h"
-#include "bfdlink.h"
-
-#include "ld.h"
-#include "ldmain.h"
-#include "ldmisc.h"
-
-#include "ldexp.h"
-#include "ldlang.h"
-#include "ldfile.h"
-#include "ldemul.h"
-
-static void check_sections (bfd *, asection *, void *);
-
+cat >>e${EMULATION_NAME}.c <<EOF
 static void
 gld${EMULATION_NAME}_before_parse (void)
 {
@@ -53,196 +32,6 @@ gld${EMULATION_NAME}_before_parse (void)
   ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
 #endif /* not TARGET_ */
 }
-
-/* This function is run after all the input files have been opened.
-   We create a .rel.sdata section for each input file with a non zero
-   .sdata section.  The BFD backend will fill in these sections with
-   magic numbers which can be used to relocate the data section at run
-   time.  This will only do the right thing if all the input files
-   have been compiled using -membedded-pic.  */
-
-static void
-gld${EMULATION_NAME}_after_open (void)
-{
-  bfd *abfd;
-
-  if (! command_line.embedded_relocs
-      || link_info.relocatable)
-    return;
-
-  for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next)
-    {
-      asection *datasec;
-
-      /* As first-order business, make sure that each input BFD is ECOFF. It
-         better be, as we are directly calling an ECOFF backend function.  */
-      if (bfd_get_flavour (abfd) != bfd_target_ecoff_flavour)
-	einfo ("%F%B: all input objects must be ECOFF for --embedded-relocs\n");
-
-      datasec = bfd_get_section_by_name (abfd, ".sdata");
-
-      /* Note that we assume that the reloc_count field has already
-         been set up.  We could call bfd_get_reloc_upper_bound, but
-         that returns the size of a memory buffer rather than a reloc
-         count.  We do not want to call bfd_canonicalize_reloc,
-         because although it would always work it would force us to
-         read in the relocs into BFD canonical form, which would waste
-         a significant amount of time and memory.  */
-      if (datasec != NULL && datasec->reloc_count > 0)
-	{
-	  asection *relsec;
-
-	  relsec = bfd_make_section (abfd, ".rel.sdata");
-	  if (relsec == NULL
-	      || ! bfd_set_section_flags (abfd, relsec,
-					  (SEC_ALLOC
-					   | SEC_LOAD
-					   | SEC_HAS_CONTENTS
-					   | SEC_IN_MEMORY))
-	      || ! bfd_set_section_alignment (abfd, relsec, 2)
-	      || ! bfd_set_section_size (abfd, relsec,
-					 datasec->reloc_count * 4))
-	    einfo ("%F%B: can not create .rel.sdata section: %E\n");
-	}
-
-      /* Double check that all other data sections are empty, as is
-         required for embedded PIC code.  */
-      bfd_map_over_sections (abfd, check_sections, datasec);
-    }
-}
-
-/* Check that of the data sections, only the .sdata section has
-   relocs.  This is called via bfd_map_over_sections.  */
-
-static void
-check_sections (bfd *abfd, asection *sec, void *sdatasec)
-{
-  if ((bfd_get_section_flags (abfd, sec) & SEC_CODE) == 0
-      && sec != sdatasec
-      && sec->reloc_count != 0)
-    einfo ("%B%X: section %s has relocs; can not use --embedded-relocs\n",
-	   abfd, bfd_get_section_name (abfd, sec));
-}
-
-/* This function is called after the section sizes and offsets have
-   been set.  If we are generating embedded relocs, it calls a special
-   BFD backend routine to do the work.  */
-
-static void
-gld${EMULATION_NAME}_after_allocation (void)
-{
-  bfd *abfd;
-
-  if (! command_line.embedded_relocs
-      || link_info.relocatable)
-    return;
-
-  for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next)
-    {
-      asection *datasec, *relsec;
-      char *errmsg;
-
-      datasec = bfd_get_section_by_name (abfd, ".sdata");
-
-      if (datasec == NULL || datasec->reloc_count == 0)
-	continue;
-
-      relsec = bfd_get_section_by_name (abfd, ".rel.sdata");
-      ASSERT (relsec != NULL);
-
-      if (! bfd_mips_ecoff_create_embedded_relocs (abfd, &link_info,
-						   datasec, relsec,
-						   &errmsg))
-	{
-	  if (errmsg == NULL)
-	    einfo ("%B%X: can not create runtime reloc information: %E\n",
-		   abfd);
-	  else
-	    einfo ("%X%B: can not create runtime reloc information: %s\n",
-		   abfd, errmsg);
-	}
-    }
-}
-
-static char *
-gld${EMULATION_NAME}_get_script (int *isfile)
 EOF
 
-if test -n "$COMPILE_IN"
-then
-# Scripts compiled in.
-
-# sed commands to quote an ld script as a C string.
-sc="-f stringify.sed"
-
-cat >>e${EMULATION_NAME}.c <<EOF
-{
-  *isfile = 0;
-
-  if (link_info.relocatable && config.build_constructors)
-    return
-EOF
-sed $sc ldscripts/${EMULATION_NAME}.xu                 >> e${EMULATION_NAME}.c
-echo '  ; else if (link_info.relocatable) return'     >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.xr                 >> e${EMULATION_NAME}.c
-echo '  ; else if (!config.text_read_only) return'     >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.xbn                >> e${EMULATION_NAME}.c
-echo '  ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.xn                 >> e${EMULATION_NAME}.c
-echo '  ; else return'                                 >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.x                  >> e${EMULATION_NAME}.c
-echo '; }'                                             >> e${EMULATION_NAME}.c
-
-else
-# Scripts read from the filesystem.
-
-cat >>e${EMULATION_NAME}.c <<EOF
-{
-  *isfile = 1;
-
-  if (link_info.relocatable && config.build_constructors)
-    return "ldscripts/${EMULATION_NAME}.xu";
-  else if (link_info.relocatable)
-    return "ldscripts/${EMULATION_NAME}.xr";
-  else if (!config.text_read_only)
-    return "ldscripts/${EMULATION_NAME}.xbn";
-  else if (!config.magic_demand_paged)
-    return "ldscripts/${EMULATION_NAME}.xn";
-  else
-    return "ldscripts/${EMULATION_NAME}.x";
-}
-EOF
-
-fi
-
-cat >>e${EMULATION_NAME}.c <<EOF
-
-struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
-{
-  gld${EMULATION_NAME}_before_parse,
-  syslib_default,
-  hll_default,
-  after_parse_default,
-  gld${EMULATION_NAME}_after_open,
-  gld${EMULATION_NAME}_after_allocation,
-  set_output_arch_default,
-  ldemul_default_target,
-  before_allocation_default,
-  gld${EMULATION_NAME}_get_script,
-  "${EMULATION_NAME}",
-  "${OUTPUT_FORMAT}",
-  NULL,	/* finish */
-  NULL,	/* create output section statements */
-  NULL,	/* open dynamic archive */
-  NULL,	/* place orphan */
-  NULL,	/* set symbols */
-  NULL,	/* parse args */
-  NULL,	/* add_options */
-  NULL,	/* handle_option */
-  NULL,	/* unrecognized file */
-  NULL,	/* list options */
-  NULL,	/* recognized file */
-  NULL,	/* find_potential_libraries */
-  NULL	/* new_vers_pattern */
-};
-EOF
+LDEMUL_BEFORE_PARSE=gld${EMULATION_NAME}_before_parse
Index: ld/emultempl/mipself.em
===================================================================
RCS file: ld/emultempl/mipself.em
diff -N ld/emultempl/mipself.em
--- ld/emultempl/mipself.em	27 Jun 2003 00:38:25 -0000	1.5
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,177 +0,0 @@
-# This shell script emits a C file. -*- C -*-
-# Copyright 2002, 2003 Free Software Foundation, Inc.
-#   Written by Mitch Lichtenberg <mpl@broadcom.com> and
-#   Chris Demetriou <cgd@broadcom.com> based on m68kelf.em and mipsecoff.em.
-#
-# This file is part of GLD, the Gnu Linker.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-
-# This file is sourced from elf32.em, and defines some extra routines for m68k
-# embedded systems using ELF and for some other systems using m68k ELF.  While
-# it is sourced from elf32.em for all m68k ELF configurations, here we include
-# only the features we want depending on the configuration.
-
-case ${target} in
-  mips*-*-elf)
-    echo "#define SUPPORT_EMBEDDED_RELOCS" >>e${EMULATION_NAME}.c
-    ;;
-esac
-
-cat >>e${EMULATION_NAME}.c <<EOF
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-static void mips_elf${ELFSIZE}_check_sections (bfd *, asection *, void *);
-#endif
-
-/* This function is run after all the input files have been opened.  */
-
-static void
-mips_elf${ELFSIZE}_after_open (void)
-{
-  /* Call the standard elf routine.  */
-  gld${EMULATION_NAME}_after_open ();
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-  if (command_line.embedded_relocs && (! link_info.relocatable))
-    {  
-      bfd *abfd;
-
-      /* In the embedded relocs mode we create a .rel.sdata section for
-	 each input file with a .sdata section which has has
-	 relocations.  The BFD backend will fill in these sections
-	 with magic numbers which can be used to relocate the data
-	 section at run time.  */
-      for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next)
-        {
-          asection *datasec;
-
-	  /* As first-order business, make sure that each input BFD is
-	     ELF.  We need to call a special BFD backend function to
-	     generate the embedded relocs, and we have that function
-	     only for ELF */
-
-          if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
-	    einfo ("%F%B: all input objects must be ELF for --embedded-relocs\n");
-
-	  if (bfd_get_arch_size (abfd) != ${ELFSIZE})
-	    einfo ("%F%B: all input objects must be ${ELFSIZE}-bit ELF for --embedded-relocs\n");
-
-          datasec = bfd_get_section_by_name (abfd, ".sdata");
-  
-          /* Note that we assume that the reloc_count field has already
-             been set up.  We could call bfd_get_reloc_upper_bound, but
-             that returns the size of a memory buffer rather than a reloc
-             count.  We do not want to call bfd_canonicalize_reloc,
-             because although it would always work it would force us to
-             read in the relocs into BFD canonical form, which would waste
-             a significant amount of time and memory.  */
-
-          if (datasec != NULL && datasec->reloc_count > 0)
- 	    {
-              asection *relsec;
- 
-	      relsec = bfd_make_section (abfd, ".rel.sdata");
-	      if (relsec == NULL
-	          || ! bfd_set_section_flags (abfd, relsec,
-					      (SEC_ALLOC
-					       | SEC_LOAD
-					       | SEC_HAS_CONTENTS
-					       | SEC_IN_MEMORY))
-                  || ! bfd_set_section_alignment (abfd, relsec,
-						  (${ELFSIZE} == 32) ? 2 : 3)
-	          || ! bfd_set_section_size (abfd, relsec,
-		  			     datasec->reloc_count
-					     * ((${ELFSIZE} / 8) + 8)))
-	        einfo ("%F%B: cannot create .rel.sdata section: %E\n");
-	    }
-
-          /* Double check that all other data sections have no relocs,
-             as is required for embedded PIC code.  */
-          bfd_map_over_sections (abfd, mips_elf${ELFSIZE}_check_sections,
-				 datasec);
-        }
-    }
-#endif /* SUPPORT_EMBEDDED_RELOCS */
-}
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-/* Check that of the data sections, only the .sdata section has
-   relocs.  This is called via bfd_map_over_sections.  */
-
-static void
-mips_elf${ELFSIZE}_check_sections (bfd *abfd, asection *sec, void *sdatasec)
-{
-  if ((bfd_get_section_flags (abfd, sec) & SEC_DATA)
-      && sec != sdatasec
-      && sec->reloc_count != 0)
-    einfo ("%B%X: section %s has relocs; cannot use --embedded-relocs\n",
-	   abfd, bfd_get_section_name (abfd, sec));
-}
-#endif /* SUPPORT_EMBEDDED_RELOCS */
-
-/* This function is called after the section sizes and offsets have
-   been set.  If we are generating embedded relocs, it calls a special
-   BFD backend routine to do the work.  */
-
-static void
-mips_elf${ELFSIZE}_after_allocation (void)
-{
-  /* Call the standard elf routine.  */
-  after_allocation_default ();
-
-#ifdef SUPPORT_EMBEDDED_RELOCS
-  if (command_line.embedded_relocs && (! link_info.relocatable))
-    {
-      bfd *abfd;
-      
-      for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link_next)
-	{
-	  asection *datasec, *relsec;
-	  char *errmsg;
-
-	  datasec = bfd_get_section_by_name (abfd, ".sdata");
-
-	  if (datasec == NULL || datasec->reloc_count == 0)
-	    continue;
-
-	  relsec = bfd_get_section_by_name (abfd, ".rel.sdata");
-	  ASSERT (relsec != NULL);
-
-	  if (! bfd_mips_elf${ELFSIZE}_create_embedded_relocs (abfd,
-							       &link_info,
-							       datasec,
-							       relsec,
-							       &errmsg))
-	    {
-	      if (errmsg == NULL)
-		einfo ("%B%X: can not create runtime reloc information: %E\n",
-		       abfd);
-	      else
-		einfo ("%X%B: can not create runtime reloc information: %s\n",
-		       abfd, errmsg);
-	    }
-	}
-    }
-#endif /* SUPPORT_EMBEDDED_RELOCS */
-}
-
-EOF
-
-# We have our own after_open and after_allocation functions, but they call
-# the standard routines, so give them a different name.
-LDEMUL_AFTER_OPEN=mips_elf${ELFSIZE}_after_open
-LDEMUL_AFTER_ALLOCATION=mips_elf${ELFSIZE}_after_allocation
Index: ld/scripttempl/mips.sc
===================================================================
RCS file: /cvs/src/src/ld/scripttempl/mips.sc,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 mips.sc
--- ld/scripttempl/mips.sc	3 May 1999 07:29:08 -0000	1.1.1.1
+++ ld/scripttempl/mips.sc	21 Apr 2004 19:03:46 -0000
@@ -29,9 +29,6 @@ SECTIONS
     *(.init)
     ${RELOCATING+ eprol  =  .};
     *(.text)
-    ${RELOCATING+PROVIDE (__runtime_reloc_start = .);}
-    *(.rel.sdata)
-    ${RELOCATING+PROVIDE (__runtime_reloc_stop = .);}
     *(.fini)
     ${RELOCATING+ etext  =  .};
     ${RELOCATING+ _etext  =  .};
Index: ld/testsuite/ld-empic/empic.exp
===================================================================
RCS file: ld/testsuite/ld-empic/empic.exp
diff -N ld/testsuite/ld-empic/empic.exp
--- ld/testsuite/ld-empic/empic.exp	24 Jul 2001 11:07:08 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,263 +0,0 @@
-# Expect script for ld-empic tests
-#   Copyright 1994, 1995, 1996 Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# Written by Ian Lance Taylor (ian@cygnus.com)
-#
-
-# Test the handling of MIPS embedded PIC code.  This test essentially
-# tests the compiler and assembler as well as the linker, since MIPS
-# embedded PIC is a GNU enhancement to standard MIPS tools.
-
-# Embedded PIC is only supported for MIPS ECOFF targets.
-if ![istarget mips*-*-ecoff*] {
-    return
-}
-
-set testname relax
-
-if { [which $CC] == 0 } {
-    untested $testname
-    return
-}
-
-# Test that relaxation works correctly.  This testsuite was composed
-# (by experimentation) to force the linker to relax twice--that is,
-# the first relaxation pass will force another call to be out of
-# range, requiring a second relaxation pass.
-if { ![ld_compile "$CC $CFLAGS -membedded-pic" $srcdir/$subdir/relax1.c tmpdir/relax1.o]
-     || ![ld_compile "$CC $CFLAGS -membedded-pic" $srcdir/$subdir/relax2.c tmpdir/relax2.o]
-     || ![ld_compile "$CC $CFLAGS -membedded-pic" $srcdir/$subdir/relax3.c tmpdir/relax3.o]
-     || ![ld_compile "$CC $CFLAGS -membedded-pic" $srcdir/$subdir/relax4.c tmpdir/relax4.o] } {
-    unresolved $testname
-    return
-}
-
-if ![ld_simple_link $ld tmpdir/relax "--relax -T $srcdir/$subdir/relax.t tmpdir/relax1.o tmpdir/relax2.o tmpdir/relax3.o tmpdir/relax4.o"] {
-    fail $testname
-} else {
-    # Check that the relaxation produced the correct result.  Check
-    # each bal instruction.  Some will go directly to the start of a
-    # function, which is OK.  Some will form part of the five
-    # instruction expanded call sequence, in which case we compute the
-    # real destination and make sure it is the start of a function.
-    # Some bal instructions are used to locate the start of the
-    # function in order to do position independent addressing into the
-    # text section, in which case we just check that it correctly
-    # computes the start of the function.
-
-    # Get the symbol table.
-    if ![ld_nm $nm "" tmpdir/relax] {
-	unresolved $testname
-	return
-    }
-
-    # Get a disassembly.
-    send_log "$objdump -d tmpdir/relax >tmpdir/relax.dis\n"
-    verbose "$objdump -d tmpdir/relax >tmpdir/relax.dis"
-    catch "exec $objdump -d tmpdir/relax >tmpdir/relax.dis" exec_output
-    if ![string match "" $exec_output] {
-	send_log "$exec_output\n"
-	verbose $exec_output
-	unresolved $testname
-	return
-    }
-
-    set balcnt 0
-    set file [open tmpdir/relax.dis r]
-    while { [gets $file line] != -1 } {
-	verbose "$line" 2
-
-	if ![string match "*bal*" $line] {
-	    continue
-	}
-
-	verbose "$line"
-
-	incr balcnt
-
-	if ![regexp "^(\[0-9a-fA-F\]+) (<\[a-z+0-9A-Z.\]+>)? bal (\[0-9a-fA-F\]+)" $line whole addr label dest] {
-	    perror "unrecognized format for $line"
-	    unresolved $testname
-	    return
-	}
-
-	if "0x$addr + 8 != 0x$dest" {
-	    # This is a straight function call.  All function calls in
-	    # this example are to either foo or bar.
-	    if "0x$dest != $nm_output(foo) && 0x$dest != $nm_output(bar)" {
-		send_log "fail 1\n"
-		send_log "$line\n"
-		fail $testname
-		return
-	    }
-	} else {
-	    # Pick up the next line.  If it is sll, this is a switch
-	    # prologue, and there is not much we can do to test it.
-	    # Otherwise, it should be lui, and the next instruction
-	    # should be an addiu, followed by an addu to $31.
-	    if { [gets $file l] == -1 } {
-		send_log "fail 2\n"
-		send_log "$line\n"
-		fail $testname
-		return
-	    }
-	    verbose $l
-
-	    if [string match "*sll*" $l] {
-		continue
-	    }
-	    if ![regexp "lui (\[\$a-z0-9\]+),(\[0-9a-fA-Fx\]+)" $l whole reg upper] {
-		send_log "fail 3\n"
-		send_log "$line\n"
-		send_log "$l\n"
-		fail $testname
-		return
-	    }
-
-	    if { [gets $file l] == -1 } {
-		send_log "fail 4\n"
-		send_log "$line\n"
-		fail $testname
-		return
-	    }
-	    verbose "$l"
-	    if ![regexp "addiu \\$reg,\\$reg,(\[-0-9\]+)" $l whole lower] {
-		send_log "fail 5\n"
-		send_log "$line\n"
-		send_log "$l\n"
-		send_log "addiu \\$reg,\\$reg,(\[-0-9\]+)\n"
-		fail $testname
-		return
-	    }
-
-	    if { [gets $file l] == -1 } {
-		send_log "fail 6\n"
-		send_log "$line\n"
-		fail $testname
-		return
-	    }
-	    verbose "$l"
-	    if ![regexp "addu \\$reg,\\$reg,\\\$ra" $l] {
-		send_log "fail 7\n"
-		send_log "$line\n"
-		send_log "$l\n"
-		fail $testname
-		return
-	    }
-
-	    # The next line will be jalr in the case of an expanded
-	    # call.  Otherwise, the code is getting the start of the
-	    # function, and the next line can be anything.
-
-	    if { [gets $file l] == -1 } {
-		send_log "fail 8\n"
-		send_log "$line\n"
-		fail $testname
-		return
-	    }
-	    verbose "$l"	
-	    if [string match "*jalr*" $l] {
-		set dest [expr 0x$addr + 8 + ($upper << 16) + $lower]
-		if { $dest != $nm_output(foo) && $dest != $nm_output(bar) } {
-		    send_log "fail 9\n"
-		    send_log "$line\n"
-		    fail $testname
-		    return
-		}
-	    } else {
-		set dest [expr ($upper << 16) + $lower]
-		if ![regexp "<(\[.a-z\]+)\\+(\[0-9a-fA-F\]+)>" $label whole base offset] {
-		    send_log "fail 10\n"
-		    send_log "$line\n"
-		    fail $testname
-		    return
-		}
-		set offset 0x$offset
-		if { $base == ".foo" } {
-		    set offset [expr $offset - ($nm_output(foo) - 0x30)]
-		}
-		if { $offset + 8 != - $dest } {
-		    send_log "fail 11\n"
-		    send_log "$line\n"
-		    fail $testname
-		    return
-		}
-	    }
-	}
-    }
-
-    close $file
-
-    if {$balcnt < 10} {
-	send_log "fail 12\n"
-	fail $testname
-    } else {
-	verbose "$balcnt bal instructions"
-	pass $testname
-    }
-}
-
-# We now test actually running embedded MIPS PIC code.  This can only
-# be done on a MIPS host with the same endianness as our target.
-if [istarget mipsel-*-*] {
-    if ![ishost mips*-*-ultrix*] {
-	return
-    }
-} else {
-    if ![ishost mips*-*-irix*] {
-	return
-    }
-}
-
-set testname "run embedded PIC code"
-
-# Compile the program which will run the test.  This code must be
-# compiled for the host, not the target.
-send_log "$CC_FOR_HOST $CFLAGS_FOR_HOST -o tmpdir/run $srcdir/$subdir/run.c\n"
-verbose "$CC_FOR_HOST $CFLAGS_FOR_HOST -o tmpdir/run $srcdir/$subdir/run.c"
-catch "exec $CC_FOR_HOST $CFLAGS_FOR_HOST -o tmpdir/run $srcdir/$subdir/run.c" exec_output
-if ![string match "" $exec_output] {
-    send_log "$exec_output\n"
-    verbose "$exec_output"
-    unresolved $testname
-    return
-}
-
-# Compile and link the test.
-if { ![ld_compile "$CC $CFLAGS -membedded-pic" $srcdir/$subdir/runtesti.s tmpdir/runtesti.o]
-     || ![ld_compile "$CC $CFLAGS -membedded-pic" $srcdir/$subdir/runtest1.c tmpdir/runtest1.o]
-     || ![ld_compile "$CC $CFLAGS -membedded-pic" $srcdir/$subdir/runtest2.c tmpdir/runtest2.o] } {
-    unresolved $testname
-    return
-}
-if ![ld_simple_link $ld tmpdir/runtest "--embedded-relocs tmpdir/runtesti.o tmpdir/runtest1.o tmpdir/runtest2.o"] {
-    fail $testname
-} else {
-    # Now run the test.
-    send_log "tmpdir/run tmpdir/runtest\n"
-    verbose "tmpdir/run tmpdir/runtest"
-    catch "exec tmpdir/run tmpdir/runtest" exec_output
-    if [string match "*ran and returned 0*" $exec_output] {
-	send_log "$exec_output\n"
-	verbose "$exec_output"
-	pass $testname
-    } else {
-	send_log "$exec_output\n"
-	verbose "$exec_output"
-	fail $testname
-    }
-}
Index: ld/testsuite/ld-empic/relax.t
===================================================================
RCS file: ld/testsuite/ld-empic/relax.t
diff -N ld/testsuite/ld-empic/relax.t
--- ld/testsuite/ld-empic/relax.t	3 May 1999 07:29:08 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,49 +0,0 @@
-OUTPUT_FORMAT("ecoff-bigmips")
-SECTIONS
-{
-  .foo 0x30 : {
-    tmpdir/relax3.o(.text)
-    tmpdir/relax1.o(.text)
-  }
-  .text  0x20000 : {
-     _ftext = . ;
-    *(.init)
-     eprol  =  .;
-    tmpdir/relax4.o(.text)
-    *(.text)
-    *(.fini)
-     etext  =  .;
-     _etext  =  .;
-  }
-  .rdata  . : {
-    *(.rdata)
-  }
-   _fdata = .;
-  .data  . : {
-    *(.data)
-    CONSTRUCTORS
-  }
-   _gp = . + 0x8000;
-  .lit8  . : {
-    *(.lit8)
-  }
-  .lit4  . : {
-    *(.lit4)
-  }
-  .sdata  . : {
-    *(.sdata)
-  }
-   edata  =  .;
-   _edata  =  .;
-   _fbss = .;
-  .sbss  . : {
-    *(.sbss)
-    *(.scommon)
-  }
-  .bss  . : {
-    *(.bss)
-    *(COMMON)
-  }
-   end = .;
-   _end = .;
-}
Index: ld/testsuite/ld-empic/relax1.c
===================================================================
RCS file: ld/testsuite/ld-empic/relax1.c
diff -N ld/testsuite/ld-empic/relax1.c
--- ld/testsuite/ld-empic/relax1.c	3 May 1999 07:29:08 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,22 +0,0 @@
-/* First source file in relaxation test.  */
-
-extern int bar ();
-static int foo2 ();
-
-int foo (int i)
-{
-  switch (i)
-    {
-    case 0: bar (0); break;
-    case 1: bar (1); break;
-    case 2: bar (2); break;
-    case 3: bar (3); break;
-    case 4: bar (foo2); break;
-    case 5: bar (bar); break;
-    }
-  while (1)
-    if (i)
-      return bar ();
-}
-
-static int foo2 () { }
Index: ld/testsuite/ld-empic/relax2.c
===================================================================
RCS file: ld/testsuite/ld-empic/relax2.c
diff -N ld/testsuite/ld-empic/relax2.c
--- ld/testsuite/ld-empic/relax2.c	3 May 1999 07:29:08 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,19 +0,0 @@
-/* Second source file in relaxation test.  */
-
-int bar2 ()
-{
-  int i;
-
-  for (i = 0; i < 100; i++)
-    foo ();
-  return foo () + foo () + foo () + foo ();
-}
-
-int bar (int i)
-{
-  while (1)
-    if (i)
-      return foo ();
-    else
-      return foo ();
-}
Index: ld/testsuite/ld-empic/relax3.c
===================================================================
RCS file: ld/testsuite/ld-empic/relax3.c
diff -N ld/testsuite/ld-empic/relax3.c
--- ld/testsuite/ld-empic/relax3.c	3 May 1999 07:29:08 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,3 +0,0 @@
-/* Third source file in relaxation test.  */
-
-int quux () { return 0; }
Index: ld/testsuite/ld-empic/relax4.c
===================================================================
RCS file: ld/testsuite/ld-empic/relax4.c
diff -N ld/testsuite/ld-empic/relax4.c
--- ld/testsuite/ld-empic/relax4.c	3 May 1999 07:29:08 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,3 +0,0 @@
-/* Fourth source file in relaxation test.  */
-
-int xyzzy () { return 0; }
Index: ld/testsuite/ld-empic/run.c
===================================================================
RCS file: ld/testsuite/ld-empic/run.c
diff -N ld/testsuite/ld-empic/run.c
--- ld/testsuite/ld-empic/run.c	3 May 1999 07:29:08 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,160 +0,0 @@
-/* Load and run a MIPS position independent ECOFF file.
-   Written by Ian Lance Taylor <ian@cygnus.com>
-   Public domain.  */
-
-/* This program will load an ECOFF file into memory and execute it.
-   The file must have been compiled using the GNU -membedded-pic
-   switch to produce position independent code.  This will only work
-   if this program is run on a MIPS system with the same endianness as
-   the ECOFF file.  The ECOFF file must be complete.  System calls may
-   not work correctly.
-
-   There are further restrictions on the file (they could be removed
-   by doing some additional programming).  The file must be aligned
-   such that it does not require any gaps introduced in the data
-   segment; the GNU linker produces such files by default.  However,
-   the file must not assume that the text or data segment is aligned
-   on a page boundary.  The start address must be at the start of the
-   text segment.
-
-   The ECOFF file is run by calling it as though it were a function.
-   The address of the data segment is passed as the only argument.
-   The file is expected to return an integer value, which will be
-   printed.  */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-/* Structures used in ECOFF files.  We assume that a short is two
-   bytes and an int is four bytes.  This is not much of an assumption,
-   since we already assume that we are running on a MIPS host with the
-   same endianness as the file we are examining.  */
-
-struct ecoff_filehdr {
-  unsigned short f_magic;	/* magic number                 */
-  unsigned short f_nscns;	/* number of sections           */
-  unsigned int f_timdat;	/* time & date stamp            */
-  unsigned int f_symptr;	/* file pointer to symtab       */
-  unsigned int f_nsyms;		/* number of symtab entries     */
-  unsigned short f_opthdr;	/* sizeof(optional hdr)         */
-  unsigned short f_flags;	/* flags                        */
-};
-
-struct ecoff_aouthdr
-{
-  unsigned short magic;		/* type of file				*/
-  unsigned short vstamp;	/* version stamp			*/
-  unsigned int tsize;		/* text size in bytes, padded to FW bdry*/
-  unsigned int dsize;		/* initialized data "  "		*/
-  unsigned int bsize;		/* uninitialized data "   "		*/
-  unsigned int entry;		/* entry pt.				*/
-  unsigned int text_start;	/* base of text used for this file */
-  unsigned int data_start;	/* base of data used for this file */
-  unsigned int bss_start;	/* base of bss used for this file */
-  unsigned int gprmask;		/* ?? */
-  unsigned int cprmask[4];	/* ?? */
-  unsigned int gp_value;	/* value for gp register */
-};
-
-#define ECOFF_SCNHDR_SIZE (40)
-
-static void
-die (s)
-     char *s;
-{
-  perror (s);
-  exit (1);
-}
-
-int
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  FILE *f;
-  struct stat s;
-  char *z;
-  struct ecoff_filehdr *fh;
-  struct ecoff_aouthdr *ah;
-  unsigned int toff;
-  char *t, *d;
-  int (*pfn) ();
-  int ret;
-
-  if (argc != 2)
-    {
-      fprintf (stderr, "Usage: %s file\n", argv[0]);
-      exit (1);
-    }
-
-  f = fopen (argv[1], "r");
-  if (f == NULL)
-    die (argv[1]);
-
-  if (stat (argv[1], &s) < 0)
-    die ("stat");
-
-  z = (char *) malloc (s.st_size);
-  if (z == NULL)
-    die ("malloc");
-
-  if (fread (z, 1, s.st_size, f) != s.st_size)
-    die ("fread");
-
-  /* We need to figure out the start of the text segment, which is the
-     location we are going to call, and the start of the data segment,
-     which we are going to pass as an argument.  We also need the size
-     and start address of the bss segment.  This information is all in
-     the ECOFF a.out header.  */
-
-  fh = (struct ecoff_filehdr *) z;
-  if (fh->f_opthdr != sizeof (struct ecoff_aouthdr))
-    {
-      fprintf (stderr, "%s: unexpected opthdr size: is %u, want %u\n",
-	       argv[1], (unsigned int) fh->f_opthdr,
-	       (unsigned int) sizeof (struct ecoff_aouthdr));
-      exit (1);
-    }
-
-  ah = (struct ecoff_aouthdr *) (z + sizeof (struct ecoff_filehdr));
-  if (ah->magic != 0413)
-    {
-      fprintf (stderr, "%s: bad aouthdr magic number 0%o (want 0413)\n",
-	       argv[1], (unsigned int) ah->magic);
-      exit (1);
-    }
-
-  /* We should clear the bss segment at this point.  This is the
-     ah->bsize bytes starting at ah->bss_start, To do this correctly,
-     we would have to make sure our memory block is large enough.  It
-     so happens that our test case does not have any additional pages
-     for the bss segment--it is contained within the data segment.
-     So, we don't bother.  */
-  if (ah->bsize != 0)
-    {
-      fprintf (stderr,
-	       "%s: bss segment is %u bytes; non-zero sizes not supported\n",
-	       argv[1], ah->bsize);
-      exit (1);
-    }
-
-  /* The text section starts just after all the headers, rounded to a
-     16 byte boundary.  */
-  toff = (sizeof (struct ecoff_filehdr) + sizeof (struct ecoff_aouthdr)
-	  + fh->f_nscns * ECOFF_SCNHDR_SIZE);
-  toff += 15;
-  toff &=~ 15;
-  t = z + toff;
-
-  /* The tsize field gives us the start of the data segment.  */
-  d = z + ah->tsize;
-
-  /* Call the code as a function.  */
-  pfn = (int (*) ()) t;
-  ret = (*pfn) (d);
-
-  printf ("%s ran and returned %d\n", argv[1], ret);
-
-  exit (0);
-}
Index: ld/testsuite/ld-empic/runtest1.c
===================================================================
RCS file: ld/testsuite/ld-empic/runtest1.c
diff -N ld/testsuite/ld-empic/runtest1.c
--- ld/testsuite/ld-empic/runtest1.c	3 May 1999 07:29:08 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,117 +0,0 @@
-/* First C source file for actual execution test.  */
-
-/* The main point of this test is to make sure that the code and data
-   are truly position independent.  We statically initialize several
-   global variables, and make sure that they are correctly adjusted at
-   runtime.  */
-
-int i = 1;
-int j = 0;
-extern int k;
-int l;
-char small_buf[] = "aaaa";
-char *small_pointer = small_buf;
-char big_buf[] = "aaaaaaaaaaaaaaaa";
-char *big_pointer = big_buf;
-
-extern int bar ();
-int (*pbar) () = bar;
-
-static int
-foo2 (arg)
-     int arg;
-{
-  l = arg;
-  return i + j;
-}
-
-int (*pfoo2) () = foo2;
-
-int
-chkstr (z, c)
-     char *z;
-     int c;
-{
-  /* Switch statements need extra effort to be position independent,
-     so we run one here, even though most of the cases will never be
-     taken.  */
-  switch (c)
-    {
-    case 1:
-    case 2:
-    case 3:
-      return i - 1;
-    case 4:
-      break;
-    case 5:
-    case 6:
-    case 7:
-    case 8:
-    case 9:
-      return i * j;
-    case 10:
-    case 11:
-    case 12:
-    case 13:
-    case 14:
-    case 15:
-      return j;
-    case 16:
-      break;
-    default:
-      return 0;
-    }
-
-  while (c-- != 0)
-    if (*z++ != 'a')
-      return 0;
-
-  return *z == '\0';
-}
-
-/* This function is called by the assembler startup routine.  It tries
-   to test that everything was correctly initialized.  It returns 0 on
-   success, something else on failure.  */
-
-int
-foo ()
-{
-  if (i != 1)
-    return 1;
-  if (j != 0)
-    return 2;
-  if (! chkstr (small_buf, 4))
-    return 3;
-  if (! chkstr (small_pointer, 4))
-    return 4;
-  if (! chkstr (big_buf, 16))
-    return 5;
-  if (! chkstr (big_pointer, 16))
-    return 6;
-
-  if (l != 0)
-    return 7;
-  if (foo2 (1) != 1)
-    return 8;
-  if (l != 1)
-    return 9;
-  if ((*pfoo2) (2) != 1)
-    return 10;
-  if (l != 2)
-    return 11;
-
-  if (bar (1) != 0)
-    return 12;
-  if (bar (-1) != 1)
-    return 13;
-  if ((*pbar) (0xa5a5a5a5) != -1)
-    return 14;
-  if (k != 0xa5a5a5a5)
-    return 15;
-  if ((*pbar) (0) != 0xa5a5a5a5)
-    return 16;
-  if (k != 0)
-    return 17;
-
-  return 0;
-}
Index: ld/testsuite/ld-empic/runtest2.c
===================================================================
RCS file: ld/testsuite/ld-empic/runtest2.c
diff -N ld/testsuite/ld-empic/runtest2.c
--- ld/testsuite/ld-empic/runtest2.c	3 May 1999 07:29:08 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,26 +0,0 @@
-/* Second C source file for actual execution test.  */
-
-int k;
-extern int i;
-extern int j;
-extern char small_buf[];
-extern char *small_pointer;
-
-extern int chkstr ();
-
-int
-bar (n)
-     int n;
-{
-  int r;
-
-  if (i != 1
-      || j != 0
-      || ! chkstr (small_buf, 4)
-      || ! chkstr (small_pointer, 4))
-    return k + 1;
-
-  r = k;
-  k = n;
-  return r;
-}
Index: ld/testsuite/ld-empic/runtesti.s
===================================================================
RCS file: ld/testsuite/ld-empic/runtesti.s
diff -N ld/testsuite/ld-empic/runtesti.s
--- ld/testsuite/ld-empic/runtesti.s	3 May 1999 07:29:08 -0000	1.1.1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,94 +0,0 @@
-# Assembler initialization code for actual execution test.
-	
-# This code becomes the start of the execution test program.  It is
-# responsible for initializing the static data, invoking the C code,
-# and returning the result.  It is called as though it were a C
-# function with an argument of the address of the data segment.
-
-# We need to know the value of _ftext and _fdata at link time, but we
-# have no way to actually get that at runtime.  This is because when
-# this code is compiled with -membedded-pic, the la instruction will
-# be turned into an addiu $gp instruction.  We work around this by
-# storing the information in words in the .data section.  We then load
-# the values of these words *before* doing the runtime relocation.
-	.sdata
-text_start:
-	.word	_ftext
-data_start:
-	.word	_fdata
-
-	.globl	start
-	.text
-start:
-	# Grab some space on the stack, just as though we were a real
-	# function.
-	addiu	$sp,$sp,-8
-	sw	$31,0($sp)
-
-	# Save the $gp register, and set it up for our data section.
-	sw	$gp,4($sp)
-
-	addu	$gp,$4,0x8000		# macro
-
-	# The start of the data segment is in $4.
-
-	# Get the address of start into $5 in a position independent
-	# fashion.
-	.set	noreorder
-	$LF1 = . + 8
-	bal	$LF1
-	la	$5,start-$LF1		# macro
-	.set	reorder
-	addu	$5,$5,$31
-
-	# Now get the address of _ftext into $6.
-	la	$6,_ftext-start		# macro
-	addu	$6,$6,$5
-
-	# Get the value of _ftext used to link into $7.
-	lw	$7,text_start		# macro
-
-	# Get the value of _fdata used to link into $8.
-	lw	$8,data_start		# macro
-
-	# Get the address of __runtime_reloc_start into $9.
-	la	$9,__runtime_reloc_start-start	# macro
-	addu	$9,$9,$5
-
-	# Get the address of __runtime_reloc_stop into $10.
-	la	$10,__runtime_reloc_stop-start	# macro
-	addu	$10,$10,$5
-
-	# The words between $9 and $10 are the runtime initialization
-	# instructions.  Step through and relocate them.  First set
-	# $11 and $12 to the values to add to text and data sections,
-	# respectively.
-	subu	$11,$6,$7
-	subu	$12,$4,$8
-
-1:	
-	bge	$9,$10,3f		# macro
-	lw	$13,0($9)
-	and	$14,$13,0xfffffffe	# macro
-	move	$15,$11
-	beq	$13,$14,2f
-	move	$15,$12
-2:	
-	addu	$14,$14,$4
-	lw	$24,0($14)
-	addu	$24,$24,$15
-	sw	$24,0($14)
-	addiu	$9,$9,4
-	b	1b
-3:	
-
-	# Now the statically initialized data has been relocated
-	# correctly, and we can call the C code which does the actual
-	# testing.
-	bal	foo
-
-	# We return the value returned by the C code.
-	lw	$31,0($sp)
-	lw	$gp,4($sp)
-	addu	$sp,$sp,8
-	j	$31
Index: ld/testsuite/ld-mips-elf/empic1-ln.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic1-ln.d
diff -N ld/testsuite/ld-mips-elf/empic1-ln.d
--- ld/testsuite/ld-mips-elf/empic1-ln.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,27 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #1-ln (large negative)
-#as: -membedded-pic -mips3
-#source: empic1-tgt.s
-#source: empic1-space.s
-#source: empic1-space.s
-#source: empic1-ref.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-SYMBOL TABLE:
-#...
-0+410020 g     F .text	[0-9a-f]+ foo
-#...
-0+400000 g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-	...
-	...
-	...
-0+410020 <[^>]*> 00000000 	nop
-0+410024 <[^>]*> 3c02ffff 	lui	v0,0xffff
-0+410028 <[^>]*> 6442ffe0 	daddiu	v0,v0,-32
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic1-lp.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic1-lp.d
diff -N ld/testsuite/ld-mips-elf/empic1-lp.d
--- ld/testsuite/ld-mips-elf/empic1-lp.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,26 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #1-lp (large positive)
-#as: -membedded-pic -mips3
-#source: empic1-ref.s
-#source: empic1-space.s
-#source: empic1-space.s
-#source: empic1-tgt.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-SYMBOL TABLE:
-#...
-0+400000 g     F .text	[0-9a-f]+ foo
-#...
-0+410020 g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-0+400000 <[^>]*> 00000000 	nop
-0+400004 <[^>]*> 3c020001 	lui	v0,0x1
-0+400008 <[^>]*> 64420020 	daddiu	v0,v0,32
-	...
-	...
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic1-mn.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic1-mn.d
diff -N ld/testsuite/ld-mips-elf/empic1-mn.d
--- ld/testsuite/ld-mips-elf/empic1-mn.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,25 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #1-mn (medium negative)
-#as: -membedded-pic -mips3
-#source: empic1-tgt.s
-#source: empic1-space.s
-#source: empic1-ref.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-SYMBOL TABLE:
-#...
-0+408020 g     F .text	[0-9a-f]+ foo
-#...
-0+400000 g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-	...
-	...
-0+408020 <[^>]*> 00000000 	nop
-0+408024 <[^>]*> 3c02ffff 	lui	v0,0xffff
-0+408028 <[^>]*> 64427fe0 	daddiu	v0,v0,32736
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic1-mp.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic1-mp.d
diff -N ld/testsuite/ld-mips-elf/empic1-mp.d
--- ld/testsuite/ld-mips-elf/empic1-mp.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,25 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #1-mp (medium positive)
-#as: -membedded-pic -mips3
-#source: empic1-ref.s
-#source: empic1-space.s
-#source: empic1-tgt.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-SYMBOL TABLE:
-#...
-0+400000 g     F .text	[0-9a-f]+ foo
-#...
-0+408020 g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-0+400000 <[^>]*> 00000000 	nop
-0+400004 <[^>]*> 3c020001 	lui	v0,0x1
-0+400008 <[^>]*> 64428020 	daddiu	v0,v0,-32736
-	...
-	...
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic1-ref.s
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic1-ref.s
diff -N ld/testsuite/ld-mips-elf/empic1-ref.s
--- ld/testsuite/ld-mips-elf/empic1-ref.s	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
-
-	.globl	foo
-	.ent	foo
-foo:
-	nop
-	la	$2, bar - foo
-	.end	foo
-
-	.p2align 5
Index: ld/testsuite/ld-mips-elf/empic1-sn.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic1-sn.d
diff -N ld/testsuite/ld-mips-elf/empic1-sn.d
--- ld/testsuite/ld-mips-elf/empic1-sn.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,23 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #1-sn (small negative)
-#as: -membedded-pic -mips3
-#source: empic1-tgt.s
-#source: empic1-ref.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-SYMBOL TABLE:
-#...
-0+400020 g     F .text	[0-9a-f]+ foo
-#...
-0+400000 g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-	...
-0+400020 <[^>]*> 00000000 	nop
-0+400024 <[^>]*> 3c020000 	lui	v0,0x0
-0+400028 <[^>]*> 6442ffe0 	daddiu	v0,v0,-32
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic1-sp.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic1-sp.d
diff -N ld/testsuite/ld-mips-elf/empic1-sp.d
--- ld/testsuite/ld-mips-elf/empic1-sp.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,23 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #1-sp (small positive)
-#as: -membedded-pic -mips3
-#source: empic1-ref.s
-#source: empic1-tgt.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-SYMBOL TABLE:
-#...
-0+400000 g     F .text	[0-9a-f]+ foo
-#...
-0+400020 g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-0+400000 <[^>]*> 00000000 	nop
-0+400004 <[^>]*> 3c020000 	lui	v0,0x0
-0+400008 <[^>]*> 64420020 	daddiu	v0,v0,32
-	...
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic1-space.s
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic1-space.s
diff -N ld/testsuite/ld-mips-elf/empic1-space.s
--- ld/testsuite/ld-mips-elf/empic1-space.s	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,5 +0,0 @@
-
-	.ent	space
-space:
-	.space	(32 * 1024)
-	.end	space
Index: ld/testsuite/ld-mips-elf/empic1-tgt.s
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic1-tgt.s
diff -N ld/testsuite/ld-mips-elf/empic1-tgt.s
--- ld/testsuite/ld-mips-elf/empic1-tgt.s	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,8 +0,0 @@
-
-	.globl	bar
-	.ent	bar
-bar:
-	nop
-	.end	bar
-
-	.p2align 5
Index: ld/testsuite/ld-mips-elf/empic2-fwd-0.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic2-fwd-0.d
diff -N ld/testsuite/ld-mips-elf/empic2-fwd-0.d
--- ld/testsuite/ld-mips-elf/empic2-fwd-0.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,20 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #2-fwd-0 (0x7ffc forward edge case)
-#as: -membedded-pic -mips3
-#source: empic2-ref.s
-#source: empic2-fwd-tgt.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-#...
-0+400000 g     F .text	[0-9a-f]+ foo
-#...
-0+407ffc g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-0+400000 <[^>]*> 3c020000 	lui	v0,0x0
-0+400004 <[^>]*> 64427ffc 	daddiu	v0,v0,32764
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic2-fwd-1.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic2-fwd-1.d
diff -N ld/testsuite/ld-mips-elf/empic2-fwd-1.d
--- ld/testsuite/ld-mips-elf/empic2-fwd-1.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #2-fwd-1 (0xfffc forward edge case)
-#as: -membedded-pic -mips3
-#source: empic2-ref.s
-#source: empic2-space.s
-#source: empic2-fwd-tgt.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-#...
-0+400000 g     F .text	[0-9a-f]+ foo
-#...
-0+40fffc g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-0+400000 <[^>]*> 3c020001 	lui	v0,0x1
-0+400004 <[^>]*> 6442fffc 	daddiu	v0,v0,-4
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic2-fwd-tgt.s
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic2-fwd-tgt.s
diff -N ld/testsuite/ld-mips-elf/empic2-fwd-tgt.s
--- ld/testsuite/ld-mips-elf/empic2-fwd-tgt.s	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
-
-	.space (32768 - 16 - 4)		# 16..32764
-
-	.globl	bar
-	.ent	bar
-bar:
-	.end	bar
Index: ld/testsuite/ld-mips-elf/empic2-ref.s
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic2-ref.s
diff -N ld/testsuite/ld-mips-elf/empic2-ref.s
--- ld/testsuite/ld-mips-elf/empic2-ref.s	19 Jun 2002 01:48:10 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
-	.globl	foo
-	.ent	foo
-foo:
-	la	$2,bar-foo
-	.end	foo
-
-	.p2align 4
Index: ld/testsuite/ld-mips-elf/empic2-rev-0.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic2-rev-0.d
diff -N ld/testsuite/ld-mips-elf/empic2-rev-0.d
--- ld/testsuite/ld-mips-elf/empic2-rev-0.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,22 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #2-rev-0 (0x0004 backward edge case)
-#as: -membedded-pic -mips3
-#source: empic2-rev-tgt.s
-#source: empic2-ref.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-#...
-0+408000 g     F .text	[0-9a-f]+ foo
-#...
-0+407ffc g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-	...
-0+407ffc <[^>]*> 00000000 	nop
-0+408000 <[^>]*> 3c020000 	lui	v0,0x0
-0+408004 <[^>]*> 6442fffc 	daddiu	v0,v0,-4
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic2-rev-1.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic2-rev-1.d
diff -N ld/testsuite/ld-mips-elf/empic2-rev-1.d
--- ld/testsuite/ld-mips-elf/empic2-rev-1.d	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,24 +0,0 @@
-#name: MIPS 32-bit ELF embedded-pic relocs #2-rev-1 (0x8004 backward edge case)
-#as: -membedded-pic -mips3
-#source: empic2-rev-tgt.s
-#source: empic2-space.s
-#source: empic2-ref.s
-#objdump: --prefix-addresses -tdr --show-raw-insn -mmips:4000
-#ld: -Ttext 0x400000 -e 0x400000
-
-.*:     file format elf.*mips.*
-
-#...
-0+410000 g     F .text	[0-9a-f]+ foo
-#...
-0+407ffc g     F .text	[0-9a-f]+ bar
-#...
-
-Disassembly of section \.text:
-	...
-0+407ffc <[^>]*> 00000000 	nop
-	...
-0+410000 <[^>]*> 3c02ffff 	lui	v0,0xffff
-0+410004 <[^>]*> 64427ffc 	daddiu	v0,v0,32764
-	...
-#pass
Index: ld/testsuite/ld-mips-elf/empic2-rev-tgt.s
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic2-rev-tgt.s
diff -N ld/testsuite/ld-mips-elf/empic2-rev-tgt.s
--- ld/testsuite/ld-mips-elf/empic2-rev-tgt.s	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,8 +0,0 @@
-
-	.space (32768 - 4)
-
-	.globl	bar
-	.ent	bar
-bar:
-	.space	4
-	.end	bar
Index: ld/testsuite/ld-mips-elf/empic2-space.s
===================================================================
RCS file: ld/testsuite/ld-mips-elf/empic2-space.s
diff -N ld/testsuite/ld-mips-elf/empic2-space.s
--- ld/testsuite/ld-mips-elf/empic2-space.s	2 Jan 2002 18:59:32 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,5 +0,0 @@
-
-	.ent	space
-space:
-	.space	(32 * 1024)
-	.end	space
Index: ld/testsuite/ld-mips-elf/emrelocs-eb.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/emrelocs-eb.d
diff -N ld/testsuite/ld-mips-elf/emrelocs-eb.d
--- ld/testsuite/ld-mips-elf/emrelocs-eb.d	30 Jan 2002 02:20:13 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,25 +0,0 @@
-#name: MIPS 32-bit ELF embedded relocs (big endian)
-#source: emrelocs1.s -EB
-#source: emrelocs2.s -EB
-#ld: -EB --embedded-relocs -T $srcdir/$subdir/emrelocs.ld
-#objdump: -s
-
-.*:     file format elf.*mips.*
-
-Contents of section \.text:
- 100000 00000000 00000001 00000000 00000000  .*
- 100010 00000000 00000000 00000003 00000000  .*
-Contents of section \.data:
- 200000 00000000 00000002 00000000 00000000  .*
- 200010 00000000 00000000 00000004 00000000  .*
- 200020 00100004 00200004 00100018 00200018  .*
- 200030 00000000 00100004 00000000 00200004  .*
- 200040 00000000 00100018 00000000 00200018  .*
-Contents of section \.rel\.sdata:
- 300000 00000020 2e746578 74000000 00000024  .*
- 300010 2e646174 61000000 00000028 2e746578  .*
- 300020 74000000 0000002c 2e646174 61000000  .*
- 300030 00000031 2e746578 74000000 00000039  .*
- 300040 2e646174 61000000 00000041 2e746578  .*
- 300050 74000000 00000049 2e646174 61000000  .*
-#pass
Index: ld/testsuite/ld-mips-elf/emrelocs-el.d
===================================================================
RCS file: ld/testsuite/ld-mips-elf/emrelocs-el.d
diff -N ld/testsuite/ld-mips-elf/emrelocs-el.d
--- ld/testsuite/ld-mips-elf/emrelocs-el.d	30 Jan 2002 02:20:13 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,25 +0,0 @@
-#name: MIPS 32-bit ELF embedded relocs (little endian)
-#source: emrelocs1.s -EL
-#source: emrelocs2.s -EL
-#ld: -EL --embedded-relocs -T $srcdir/$subdir/emrelocs.ld
-#objdump: -s
-
-.*:     file format elf.*mips.*
-
-Contents of section \.text:
- 100000 00000000 01000000 00000000 00000000  .*
- 100010 00000000 00000000 03000000 00000000  .*
-Contents of section \.data:
- 200000 00000000 02000000 00000000 00000000  .*
- 200010 00000000 00000000 04000000 00000000  .*
- 200020 04001000 04002000 18001000 18002000  .*
- 200030 04001000 00000000 04002000 00000000  .*
- 200040 18001000 00000000 18002000 00000000  .*
-Contents of section \.rel\.sdata:
- 300000 20000000 2e746578 74000000 24000000  .*
- 300010 2e646174 61000000 28000000 2e746578  .*
- 300020 74000000 2c000000 2e646174 61000000  .*
- 300030 31000000 2e746578 74000000 39000000  .*
- 300040 2e646174 61000000 41000000 2e746578  .*
- 300050 74000000 49000000 2e646174 61000000  .*
-#pass
Index: ld/testsuite/ld-mips-elf/emrelocs.ld
===================================================================
RCS file: ld/testsuite/ld-mips-elf/emrelocs.ld
diff -N ld/testsuite/ld-mips-elf/emrelocs.ld
--- ld/testsuite/ld-mips-elf/emrelocs.ld	30 Jan 2002 02:20:13 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,16 +0,0 @@
-ENTRY(ext_fun)
-SECTIONS
-{
-  .text 0x00100000: 
-  {
-    *(.text)
-  }
-  .data 0x00200000: 
-  {
-    *(.sdata)
-  }
-  .rel.sdata 0x00300000: 
-  {
-    *(.rel.sdata)
-  }
-}
Index: ld/testsuite/ld-mips-elf/emrelocs1.s
===================================================================
RCS file: ld/testsuite/ld-mips-elf/emrelocs1.s
diff -N ld/testsuite/ld-mips-elf/emrelocs1.s
--- ld/testsuite/ld-mips-elf/emrelocs1.s	30 Jan 2002 02:20:13 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,23 +0,0 @@
-# emrelocs1.s: some external symbols to be used in relocations.
-
-		.text
-		.p2align 4
-
-		# Pad things so addresses which are used for relocations
-		# are non-zero.  Zero simply isn't as much fun.
-		.word	0
-
-		.globl ext_fun
-		.ent ext_fun
-ext_fun:	.word	1
-		.end ext_fun
-
-
-		.sdata
-		.p2align 4
-
-		# Padding here, for same reason.
-		.word	0
-
-		.globl	ext_var
-ext_var:	.word	2
Index: ld/testsuite/ld-mips-elf/emrelocs2.s
===================================================================
RCS file: ld/testsuite/ld-mips-elf/emrelocs2.s
diff -N ld/testsuite/ld-mips-elf/emrelocs2.s
--- ld/testsuite/ld-mips-elf/emrelocs2.s	30 Jan 2002 02:20:13 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,30 +0,0 @@
-# emrelocs2.s: local symbols and data which causes relocations.
-
-		.text
-		.p2align 4
-
-		.word	0, 0
-
-		.ent lcl_fun
-lcl_fun:	.word	3
-		.end lcl_fun
-
-
-		.sdata
-		.p2align 4
-
-		.word	0, 0
-
-lcl_var:	.word	4
-
-		.p2align 4
-
-		.word	ext_fun
-		.word	ext_var
-		.word	lcl_fun
-		.word	lcl_var
-
-		.dword	ext_fun
-		.dword	ext_var
-		.dword	lcl_fun
-		.dword	lcl_var
Index: ld/testsuite/ld-mips-elf/mips-elf.exp
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-mips-elf/mips-elf.exp,v
retrieving revision 1.15
diff -u -p -r1.15 mips-elf.exp
--- ld/testsuite/ld-mips-elf/mips-elf.exp	18 Dec 2003 10:25:12 -0000	1.15
+++ ld/testsuite/ld-mips-elf/mips-elf.exp	21 Apr 2004 19:03:47 -0000
@@ -58,25 +58,6 @@ if { $linux_gnu } {
 }
 
 if { $embedded_elf } {
-    # Check basic Embedded-PIC PC-relative HI/LO relocs.
-    run_dump_test "empic1-ln"
-    run_dump_test "empic1-lp"
-    run_dump_test "empic1-mn"
-    run_dump_test "empic1-mp"
-    run_dump_test "empic1-sn"
-    run_dump_test "empic1-sp"
-
-    # Embedded-PIC PC-relative HI/LO reloc edge-case regression tests.
-    # As of 2001-12-26, the linker botches the fwd-0 and rev-1 tests.
-    run_dump_test "empic2-fwd-0"
-    run_dump_test "empic2-fwd-1"
-    run_dump_test "empic2-rev-0"
-    run_dump_test "empic2-rev-1"
-
-    # Check generation of embedded relocs section.
-    run_dump_test "emrelocs-eb"
-    run_dump_test "emrelocs-el"
-
     run_dump_test "region1"
 }
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]