diff options
-rw-r--r-- | ld/ChangeLog | 33 | ||||
-rw-r--r-- | ld/Makefile.am | 116 | ||||
-rw-r--r-- | ld/Makefile.in | 116 | ||||
-rw-r--r-- | ld/emulparams/elf32bmip.sh | 1 | ||||
-rw-r--r-- | ld/emulparams/elf32bmipn32-defs.sh | 1 | ||||
-rw-r--r-- | ld/emultempl/irix.em | 1 | ||||
-rw-r--r-- | ld/emultempl/mipself.em | 37 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/hash1.s | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/hash1a.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/hash1b.d | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/hash1c.d | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/mips-elf.exp | 4 |
13 files changed, 218 insertions, 108 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index cc3c2cf..b0486f1 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,36 @@ +2006-07-29 Richard Sandiford <richard@codesourcery.com> + + * Makefile.am (eelf32b4300.c): Update dependencies. + (eelf32bmip.c): Likewise. + (eelf32bsmip.c): Likewise. + (eelf32btsmip.c): Likewise. + (eelf32btsmipn32.c): Likewise. + (eelf32ltsmip.c): Likewise. + (eelf32ltsmipn32.c): Likewise. + (eelf32ebmip.c): Likewise. + (eelf32ebmipvxworks.c): Likewise. + (eelf32elmip.c): Likewise. + (eelf32elmipvxworks.c): Likewise. + (eelf32bmipn32.c): Likewise. + (eelf32lmip.c): Likewise. + (eelf32mipswindiss.c): Likewise. + (eelf32lsmip.c): Likewise. + (eelf64bmip.c): Likewise. + (eelf64btsmip.c): Likewise. + (eelf64ltsmip.c): Likewise. + (emipsbig.c): Likewise. Canonicalize ${GENSCRIPTS} line. + (emipsbsd.c): Likewise. + (emipsidt.c): Update dependencies. + (emipsidtl.c): Likewise. + (emipslit.c): Likewise. + (emipslnews.c): Likewise. + (emipspe.c): Likewise. Fix ${GENSCRIPTS} invocation. + * Makefile.in: Regenerate. + * emulparams/elf32bmip.sh (EXTRA_EM_FILE): Define. + * emulparams/elf32bmipn32-defs.sh (EXTRA_EM_FILE): Likewise. + * emultempl/irix.em: Include emultempl/mipself.em. + * emultempl/mipself.em: New file. + 2006-07-26 Alan Modra <amodra@bigpond.net.au> * emultempl/elf-generic.em (map_segments): Reorganise loop so that diff --git a/ld/Makefile.am b/ld/Makefile.am index 6dd0e9a..51a89ee 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -708,72 +708,77 @@ eelf32_i960.c: $(srcdir)/emulparams/elf32_i960.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32_i960 "$(tdir_elf32_i960)" eelf32b4300.c: $(srcdir)/emulparams/elf32b4300.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32b4300 "$(tdir_elf32b4300)" eelf32cr16c.c: $(srcdir)/emulparams/elf32cr16c.sh \ $(ELF_DEPS) \ $(srcdir)/scripttempl/elf32cr16c.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32cr16c "$(tdir_elf32cr16c)" -eelf32bmip.c: $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} +eelf32bmip.c: $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32bmip "$(tdir_elf32bmip)" eelf32bsmip.c: $(srcdir)/emulparams/elf32bsmip.sh \ - $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/irix.em \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) $(srcdir)/emultempl/irix.em \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32bsmip "$(tdir_elf32bsmip)" eelf32btsmip.c: $(srcdir)/emulparams/elf32btsmip.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32btsmip "$(tdir_elf32btsmip)" eelf32crx.c: $(srcdir)/emulparams/elf32crx.sh \ $(ELF_DEPS) $(srcdir)/emultempl/crxelf.em \ $(srcdir)/scripttempl/elf32crx.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32crx "$(tdir_elf32crx)" eelf32btsmipn32.c: $(srcdir)/emulparams/elf32btsmipn32.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.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 \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(ELF_DEPS) $(srcdir)/emultempl/mipself.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 \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32btsmipn32.sh \ + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ltsmipn32 "$(tdir_elf32ltsmipn32)" eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)" eelf32ebmipvxworks.c: $(srcdir)/emulparams/elf32ebmipvxworks.sh \ - $(srcdir)/emulparams/elf32ebmip.sh $(srcdir)/emulparams/vxworks.sh \ - $(ELF_DEPS) $(srcdir)/emultempl/vxworks.em \ - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emulparams/vxworks.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/generic.em $(srcdir)/emultempl/mipself.em \ + $(srcdir)/emultempl/vxworks.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ebmipvxworks "$(tdir_elf32ebmipvxworks)" eelf32elmip.c: $(srcdir)/emulparams/elf32elmip.sh \ $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(ELF_DEPS) $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} elf32elmip "$(tdir_elf32elmip)" eelf32elmipvxworks.c: $(srcdir)/emulparams/elf32elmipvxworks.sh \ - $(srcdir)/emulparams/elf32elmip.sh $(srcdir)/emulparams/vxworks.sh \ - $(ELF_DEPS) $(srcdir)/emultempl/vxworks.em \ - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emulparams/vxworks.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/generic.em $(srcdir)/emultempl/mipself.em \ + $(srcdir)/emultempl/vxworks.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32elmipvxworks "$(tdir_elf32elmipvxworks)" eelf32bmipn32.c: $(srcdir)/emulparams/elf32bmipn32.sh \ - $(srcdir)/emultempl/irix.em \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/irix.em $(srcdir)/emultempl/mipself.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32bmipn32 "$(tdir_elf32bmipn32)" eelf32l4300.c: $(srcdir)/emulparams/elf32l4300.sh \ $(srcdir)/emulparams/elf32b4300.sh $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(ELF_DEPS) $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} elf32l4300 "$(tdir_elf32l4300)" eelf32lmip.c: $(srcdir)/emulparams/elf32lmip.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32lmip "$(tdir_elf32lmip)" -eelf32mipswindiss.c: $(srcdir)/emulparams/elf32mipswindiss.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} +eelf32mipswindiss.c: $(srcdir)/emulparams/elf32mipswindiss.sh $(ELF_DEPS) \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32mipswindiss "$(tdir_elf32mipswindiss)" eelf32m32c.c: $(srcdir)/emulparams/elf32m32c.sh \ $(ELF_DEPS) $(srcdir)/emultempl/needrelax.em \ @@ -812,7 +817,8 @@ eelf32ppcvxworks.c: $(srcdir)/emulparams/elf32ppcvxworks.sh \ ${GENSCRIPTS} elf32ppcvxworks "$(tdir_elf32ppcvxworks)" eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \ $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(ELF_DEPS) $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} elf32lsmip "$(tdir_elf32lsmip)" eelf32openrisc.c: $(srcdir)/emulparams/elf32openrisc.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -898,8 +904,9 @@ eelf64_sparc_fbsd.c: $(srcdir)/emulparams/elf64_sparc_fbsd.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64_sparc_fbsd "$(tdir_elf64_sparc_fbsd)" eelf64bmip.c: $(srcdir)/emulparams/elf64bmip.sh \ - $(srcdir)/emulparams/elf32bmipn32.sh $(srcdir)/emultempl/irix.em \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/irix.em $(srcdir)/emultempl/mipself.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64bmip "$(tdir_elf64bmip)" eelf64mmix.c: $(srcdir)/emulparams/elf64mmix.sh \ $(ELF_DEPS) $(srcdir)/emultempl/mmix-elfnmmo.em \ @@ -911,12 +918,13 @@ emmo.c: $(srcdir)/emulparams/mmo.sh $(srcdir)/emultempl/mmix-elfnmmo.em \ $(srcdir)/scripttempl/mmo.sc ${GEN_DEPENDS} ${GENSCRIPTS} mmo "$(tdir_mmo)" eelf64btsmip.c: $(srcdir)/emulparams/elf64btsmip.sh \ - $(srcdir)/emulparams/elf32bmipn32.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64btsmip "$(tdir_elf64btsmip)" eelf64ltsmip.c: $(srcdir)/emulparams/elf64ltsmip.sh \ - $(srcdir)/emulparams/elf64btsmip.sh $(srcdir)/emulparams/elf32bmipn32.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf64btsmip.sh \ + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64ltsmip "$(tdir_elf64ltsmip)" eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1146,29 +1154,29 @@ emaxqcoff.c: $(srcdir)/emulparams/maxqcoff.sh \ emcorepe.c: $(srcdir)/emulparams/mcorepe.sh \ $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS} ${GENSCRIPTS} mcorepe "$(tdir_mcorepe)" -emipsbig.c: $(srcdir)/emulparams/mipsbig.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} - ${GENSCRIPTS} mipsbig -emipsbsd.c: $(srcdir)/emulparams/mipsbsd.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/mipsbsd.sc ${GEN_DEPENDS} - ${GENSCRIPTS} mipsbsd -emipsidt.c: $(srcdir)/emulparams/mipsidt.sh \ - $(srcdir)/emultempl/mipsecoff.em $(srcdir)/emultempl/generic.em \ +emipsbig.c: $(srcdir)/emulparams/mipsbig.sh $(srcdir)/emultempl/generic.em \ $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} + ${GENSCRIPTS} mipsbig "$(tdir_mipsbig)" +emipsbsd.c: $(srcdir)/emulparams/mipsbsd.sh $(srcdir)/emultempl/generic.em \ + $(srcdir)/scripttempl/mipsbsd.sc ${GEN_DEPENDS} + ${GENSCRIPTS} mipsbsd "$(tdir_mipsbsd)" +emipsidt.c: $(srcdir)/emulparams/mipsidt.sh $(srcdir)/emultempl/generic.em \ + $(srcdir)/emultempl/mipsecoff.em $(srcdir)/scripttempl/mips.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} mipsidt "$(tdir_mipsidt)" -emipsidtl.c: $(srcdir)/emulparams/mipsidtl.sh \ - $(srcdir)/emultempl/mipsecoff.em $(srcdir)/emultempl/generic.em \ - $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} +emipsidtl.c: $(srcdir)/emulparams/mipsidtl.sh $(srcdir)/emultempl/generic.em \ + $(srcdir)/emultempl/mipsecoff.em $(srcdir)/scripttempl/mips.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} mipsidtl "$(tdir_mipsidtl)" -emipslit.c: $(srcdir)/emulparams/mipslit.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} +emipslit.c: $(srcdir)/emulparams/mipslit.sh $(srcdir)/emultempl/generic.em \ + $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} ${GENSCRIPTS} mipslit "$(tdir_mipslit)" -emipslnews.c: $(srcdir)/emulparams/mipslnews.sh \ +emipslnews.c: $(srcdir)/emulparams/mipslnews.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} - ${GENSCRIPTS} mipslnews -emipspe.c: $(srcdir)/emulparams/mipspe.sh \ - $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS} - ${GENSCRIPTS} mipspe "$(tdir_mips)" + ${GENSCRIPTS} mipslnews "$(tdir_mipslnews)" +emipspe.c: $(srcdir)/emulparams/mipspe.sh $(srcdir)/emultempl/pe.em \ + $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS} + ${GENSCRIPTS} mipspe "$(tdir_mipspe)" emn10300.c: $(srcdir)/emulparams/mn10300.sh \ $(srcdir)/emulparams/mn10200.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/ld/Makefile.in b/ld/Makefile.in index 83b7b39..83abf8f 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -1519,72 +1519,77 @@ eelf32_i960.c: $(srcdir)/emulparams/elf32_i960.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32_i960 "$(tdir_elf32_i960)" eelf32b4300.c: $(srcdir)/emulparams/elf32b4300.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32b4300 "$(tdir_elf32b4300)" eelf32cr16c.c: $(srcdir)/emulparams/elf32cr16c.sh \ $(ELF_DEPS) \ $(srcdir)/scripttempl/elf32cr16c.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32cr16c "$(tdir_elf32cr16c)" -eelf32bmip.c: $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} +eelf32bmip.c: $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32bmip "$(tdir_elf32bmip)" eelf32bsmip.c: $(srcdir)/emulparams/elf32bsmip.sh \ - $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emultempl/irix.em \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) $(srcdir)/emultempl/irix.em \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32bsmip "$(tdir_elf32bsmip)" eelf32btsmip.c: $(srcdir)/emulparams/elf32btsmip.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32btsmip "$(tdir_elf32btsmip)" eelf32crx.c: $(srcdir)/emulparams/elf32crx.sh \ $(ELF_DEPS) $(srcdir)/emultempl/crxelf.em \ $(srcdir)/scripttempl/elf32crx.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32crx "$(tdir_elf32crx)" eelf32btsmipn32.c: $(srcdir)/emulparams/elf32btsmipn32.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.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 \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(ELF_DEPS) $(srcdir)/emultempl/mipself.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 \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32btsmipn32.sh \ + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ltsmipn32 "$(tdir_elf32ltsmipn32)" eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)" eelf32ebmipvxworks.c: $(srcdir)/emulparams/elf32ebmipvxworks.sh \ - $(srcdir)/emulparams/elf32ebmip.sh $(srcdir)/emulparams/vxworks.sh \ - $(ELF_DEPS) $(srcdir)/emultempl/vxworks.em \ - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emulparams/vxworks.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/generic.em $(srcdir)/emultempl/mipself.em \ + $(srcdir)/emultempl/vxworks.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ebmipvxworks "$(tdir_elf32ebmipvxworks)" eelf32elmip.c: $(srcdir)/emulparams/elf32elmip.sh \ $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(ELF_DEPS) $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} elf32elmip "$(tdir_elf32elmip)" eelf32elmipvxworks.c: $(srcdir)/emulparams/elf32elmipvxworks.sh \ - $(srcdir)/emulparams/elf32elmip.sh $(srcdir)/emulparams/vxworks.sh \ - $(ELF_DEPS) $(srcdir)/emultempl/vxworks.em \ - $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(srcdir)/emulparams/vxworks.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/generic.em $(srcdir)/emultempl/mipself.em \ + $(srcdir)/emultempl/vxworks.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32elmipvxworks "$(tdir_elf32elmipvxworks)" eelf32bmipn32.c: $(srcdir)/emulparams/elf32bmipn32.sh \ - $(srcdir)/emultempl/irix.em \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/irix.em $(srcdir)/emultempl/mipself.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32bmipn32 "$(tdir_elf32bmipn32)" eelf32l4300.c: $(srcdir)/emulparams/elf32l4300.sh \ $(srcdir)/emulparams/elf32b4300.sh $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(ELF_DEPS) $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} elf32l4300 "$(tdir_elf32l4300)" eelf32lmip.c: $(srcdir)/emulparams/elf32lmip.sh \ - $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmip.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32lmip "$(tdir_elf32lmip)" -eelf32mipswindiss.c: $(srcdir)/emulparams/elf32mipswindiss.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} +eelf32mipswindiss.c: $(srcdir)/emulparams/elf32mipswindiss.sh $(ELF_DEPS) \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32mipswindiss "$(tdir_elf32mipswindiss)" eelf32m32c.c: $(srcdir)/emulparams/elf32m32c.sh \ $(ELF_DEPS) $(srcdir)/emultempl/needrelax.em \ @@ -1623,7 +1628,8 @@ eelf32ppcvxworks.c: $(srcdir)/emulparams/elf32ppcvxworks.sh \ ${GENSCRIPTS} elf32ppcvxworks "$(tdir_elf32ppcvxworks)" eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \ $(srcdir)/emulparams/elf32lmip.sh $(srcdir)/emulparams/elf32bmip.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(ELF_DEPS) $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} elf32lsmip "$(tdir_elf32lsmip)" eelf32openrisc.c: $(srcdir)/emulparams/elf32openrisc.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1709,8 +1715,9 @@ eelf64_sparc_fbsd.c: $(srcdir)/emulparams/elf64_sparc_fbsd.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64_sparc_fbsd "$(tdir_elf64_sparc_fbsd)" eelf64bmip.c: $(srcdir)/emulparams/elf64bmip.sh \ - $(srcdir)/emulparams/elf32bmipn32.sh $(srcdir)/emultempl/irix.em \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/irix.em $(srcdir)/emultempl/mipself.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64bmip "$(tdir_elf64bmip)" eelf64mmix.c: $(srcdir)/emulparams/elf64mmix.sh \ $(ELF_DEPS) $(srcdir)/emultempl/mmix-elfnmmo.em \ @@ -1722,12 +1729,13 @@ emmo.c: $(srcdir)/emulparams/mmo.sh $(srcdir)/emultempl/mmix-elfnmmo.em \ $(srcdir)/scripttempl/mmo.sc ${GEN_DEPENDS} ${GENSCRIPTS} mmo "$(tdir_mmo)" eelf64btsmip.c: $(srcdir)/emulparams/elf64btsmip.sh \ - $(srcdir)/emulparams/elf32bmipn32.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64btsmip "$(tdir_elf64btsmip)" eelf64ltsmip.c: $(srcdir)/emulparams/elf64ltsmip.sh \ - $(srcdir)/emulparams/elf64btsmip.sh $(srcdir)/emulparams/elf32bmipn32.sh \ - $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + $(srcdir)/emulparams/elf64btsmip.sh \ + $(srcdir)/emulparams/elf32bmipn32-defs.sh $(ELF_DEPS) \ + $(srcdir)/emultempl/mipself.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64ltsmip "$(tdir_elf64ltsmip)" eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1957,29 +1965,29 @@ emaxqcoff.c: $(srcdir)/emulparams/maxqcoff.sh \ emcorepe.c: $(srcdir)/emulparams/mcorepe.sh \ $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS} ${GENSCRIPTS} mcorepe "$(tdir_mcorepe)" -emipsbig.c: $(srcdir)/emulparams/mipsbig.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} - ${GENSCRIPTS} mipsbig -emipsbsd.c: $(srcdir)/emulparams/mipsbsd.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/mipsbsd.sc ${GEN_DEPENDS} - ${GENSCRIPTS} mipsbsd -emipsidt.c: $(srcdir)/emulparams/mipsidt.sh \ - $(srcdir)/emultempl/mipsecoff.em $(srcdir)/emultempl/generic.em \ +emipsbig.c: $(srcdir)/emulparams/mipsbig.sh $(srcdir)/emultempl/generic.em \ $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} + ${GENSCRIPTS} mipsbig "$(tdir_mipsbig)" +emipsbsd.c: $(srcdir)/emulparams/mipsbsd.sh $(srcdir)/emultempl/generic.em \ + $(srcdir)/scripttempl/mipsbsd.sc ${GEN_DEPENDS} + ${GENSCRIPTS} mipsbsd "$(tdir_mipsbsd)" +emipsidt.c: $(srcdir)/emulparams/mipsidt.sh $(srcdir)/emultempl/generic.em \ + $(srcdir)/emultempl/mipsecoff.em $(srcdir)/scripttempl/mips.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} mipsidt "$(tdir_mipsidt)" -emipsidtl.c: $(srcdir)/emulparams/mipsidtl.sh \ - $(srcdir)/emultempl/mipsecoff.em $(srcdir)/emultempl/generic.em \ - $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} +emipsidtl.c: $(srcdir)/emulparams/mipsidtl.sh $(srcdir)/emultempl/generic.em \ + $(srcdir)/emultempl/mipsecoff.em $(srcdir)/scripttempl/mips.sc \ + ${GEN_DEPENDS} ${GENSCRIPTS} mipsidtl "$(tdir_mipsidtl)" -emipslit.c: $(srcdir)/emulparams/mipslit.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} +emipslit.c: $(srcdir)/emulparams/mipslit.sh $(srcdir)/emultempl/generic.em \ + $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} ${GENSCRIPTS} mipslit "$(tdir_mipslit)" -emipslnews.c: $(srcdir)/emulparams/mipslnews.sh \ +emipslnews.c: $(srcdir)/emulparams/mipslnews.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/mips.sc ${GEN_DEPENDS} - ${GENSCRIPTS} mipslnews -emipspe.c: $(srcdir)/emulparams/mipspe.sh \ - $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS} - ${GENSCRIPTS} mipspe "$(tdir_mips)" + ${GENSCRIPTS} mipslnews "$(tdir_mipslnews)" +emipspe.c: $(srcdir)/emulparams/mipspe.sh $(srcdir)/emultempl/pe.em \ + $(srcdir)/scripttempl/pe.sc ${GEN_DEPENDS} + ${GENSCRIPTS} mipspe "$(tdir_mipspe)" emn10300.c: $(srcdir)/emulparams/mn10300.sh \ $(srcdir)/emulparams/mn10200.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/ld/emulparams/elf32bmip.sh b/ld/emulparams/elf32bmip.sh index 4f18cf7..3501ddf 100644 --- a/ld/emulparams/elf32bmip.sh +++ b/ld/emulparams/elf32bmip.sh @@ -46,5 +46,6 @@ OTHER_SECTIONS=' ARCH=mips MACHINE= TEMPLATE_NAME=elf32 +EXTRA_EM_FILE=mipself GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes diff --git a/ld/emulparams/elf32bmipn32-defs.sh b/ld/emulparams/elf32bmipn32-defs.sh index 8f56ccf..4c98340 100644 --- a/ld/emulparams/elf32bmipn32-defs.sh +++ b/ld/emulparams/elf32bmipn32-defs.sh @@ -11,6 +11,7 @@ BIG_OUTPUT_FORMAT="elf32-bigmips" LITTLE_OUTPUT_FORMAT="elf32-littlemips" TEMPLATE_NAME=elf32 +EXTRA_EM_FILE=mipself case "$EMULATION_NAME" in elf32*n32*) ELFSIZE=32 ;; diff --git a/ld/emultempl/irix.em b/ld/emultempl/irix.em index 5dfc2a4..0fd9be9 100644 --- a/ld/emultempl/irix.em +++ b/ld/emultempl/irix.em @@ -39,3 +39,4 @@ irix_after_open (void) EOF LDEMUL_AFTER_OPEN=irix_after_open +. "${srcdir}/emultempl/mipself.em" diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em new file mode 100644 index 0000000..846cdc5 --- /dev/null +++ b/ld/emultempl/mipself.em @@ -0,0 +1,37 @@ +# This shell script emits a C file. -*- C -*- +# Copyright 2006 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + +cat >>e${EMULATION_NAME}.c <<EOF +static void +mips_after_parse (void) +{ + /* .gnu.hash and the MIPS ABI require .dynsym to be sorted in different + ways. .gnu.hash needs symbols to be grouped by hash code whereas the + MIPS ABI requires a mapping between the GOT and the symbol table. */ + if (link_info.emit_gnu_hash) + { + einfo ("%X%P: .gnu.hash is incompatible with the MIPS ABI\n"); + link_info.emit_hash = TRUE; + link_info.emit_gnu_hash = FALSE; + } + after_parse_default (); +} +EOF + +LDEMUL_AFTER_PARSE=mips_after_parse diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 78601a3..92b8a2d 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2006-07-29 Richard Sandiford <richard@codesourcery.com> + + * ld-mips-elf/hash1.s, ld-mips-elf/hash1a.d, + * ld-mips-elf/hash1b.d, ld-mips-elf/hash1c.d: New tests. + * ld-mips-elf/mips-elf.exp: Run them. + 2006-07-26 Alan Modra <amodra@bigpond.net.au> * ld-scripts/overlay-size-map.d: Update. diff --git a/ld/testsuite/ld-mips-elf/hash1.s b/ld/testsuite/ld-mips-elf/hash1.s new file mode 100644 index 0000000..4e7fe2f --- /dev/null +++ b/ld/testsuite/ld-mips-elf/hash1.s @@ -0,0 +1 @@ + nop diff --git a/ld/testsuite/ld-mips-elf/hash1a.d b/ld/testsuite/ld-mips-elf/hash1a.d new file mode 100644 index 0000000..f3adaa8 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/hash1a.d @@ -0,0 +1,4 @@ +#source: hash1.s +#ld: -shared --hash-style=sysv +#objdump: -dr +#pass diff --git a/ld/testsuite/ld-mips-elf/hash1b.d b/ld/testsuite/ld-mips-elf/hash1b.d new file mode 100644 index 0000000..5af9037 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/hash1b.d @@ -0,0 +1,3 @@ +#source: hash1.s +#ld: -shared --hash-style=both +#error: .gnu.hash is incompatible with the MIPS ABI diff --git a/ld/testsuite/ld-mips-elf/hash1c.d b/ld/testsuite/ld-mips-elf/hash1c.d new file mode 100644 index 0000000..09bff3c --- /dev/null +++ b/ld/testsuite/ld-mips-elf/hash1c.d @@ -0,0 +1,3 @@ +#source: hash1.s +#ld: -shared --hash-style=gnu +#error: .gnu.hash is incompatible with the MIPS ABI diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp index aba416f..e0f0c8c 100644 --- a/ld/testsuite/ld-mips-elf/mips-elf.exp +++ b/ld/testsuite/ld-mips-elf/mips-elf.exp @@ -137,6 +137,10 @@ if $has_newabi { run_dump_test "emit-relocs-1" } +run_dump_test "hash1a" +run_dump_test "hash1b" +run_dump_test "hash1c" + if {[istarget mips*-*-linux*]} { # The number of symbols that are always included in the symbol table # for these tests. The 5 are: |