diff --git a/ld/ChangeLog b/ld/ChangeLog index b72009cbe7..97ddebbb77 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,22 @@ +2002-02-18 David O'Brien + + * Makefile.in: Add new files earmelf_fbsd, eelf32ppc_fbsd, + eelf_i386_fbsd, eelf64_ia64_fbsd, eelf_x86_64_fbsd, eelf64_sparc_fbsd, + and eelf64alpha_fbsd. + * configure.tgt(sparc64-*-freebsd, ia64-*-freebsd, i[3456]86-*-freebsd, + x86_64-*-freebsd, arm-*-freebsd, alpha*-*-freebsd, powerpc-*-freebsd): + use a FreeBSD-specific emulation rather than the psABI one. + * emulparams/elf_fbsd.sh (ELF_INTERPRETER_NAME): Set appropriate value + for all FreeBSD ELF systems. + * emulparams/armelf_fbsd.sh: Bridge elf_fbsd.sh and the "native" psABI + emulation. + * emulparams/elf32ppc_fbsd.sh: Likewise. + * emulparams/elf64_ia64_fbsd.sh: Likewise. + * emulparams/elf64_sparc_fbsd.sh: Likewise. + * emulparams/elf64alpha_fbsd.sh: Likewise. + * emulparams/elf_i386_fbsd.sh: Likewise. + * emulparams/elf_x86_64_fbsd.sh: Likewise. + 2002-02-18 Nick Clifton * po/tr.po: Updated version. diff --git a/ld/Makefile.in b/ld/Makefile.in index 9282d06951..ff6ac371f5 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -226,6 +226,7 @@ ALL_EMULATIONS = \ earmaoutl.o \ earmcoff.o \ earmelf.o \ + earmelf_fbsd.o \ earmelf_linux.o \ earmelf_nbsd.o \ earmelf_oabi.o \ @@ -268,12 +269,14 @@ ALL_EMULATIONS = \ eelf32mcore.o \ eelf32openrisc.o \ eelf32ppc.o \ + eelf32ppc_fbsd.o \ eelf32ppclinux.o \ eelf32ppcsim.o \ eelf32xstormy16.o \ eelf_i386.o \ eelf_i386_be.o \ eelf_i386_chaos.o \ + eelf_i386_fbsd.o \ eelf_i386_ldso.o \ eelf_s390.o \ egld960.o \ @@ -378,12 +381,16 @@ ALL_EMULATIONS = \ ALL_64_EMULATIONS = \ eelf64_aix.o \ eelf64_ia64.o \ + eelf64_ia64_fbsd.o \ eshelf64.o \ eshlelf64.o \ eelf_x86_64.o \ + eelf_x86_64_fbsd.o \ eelf64_s390.o \ eelf64_sparc.o \ + eelf64_sparc_fbsd.o \ eelf64alpha.o \ + eelf64alpha_fbsd.o \ eelf64alpha_nbsd.o \ eelf64bmip.o \ eelf64btsmip.o \ @@ -1086,6 +1093,11 @@ earmelf.c: $(srcdir)/emulparams/armelf.sh \ earmelf_oabi.c: $(srcdir)/emulparams/armelf_oabi.sh \ $(srcdir)/emultempl/armelf_oabi.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} armelf_oabi "$(tdir_armelf)" +earmelf_fbsd.c: $(srcdir)/emulparams/armelf_fbsd.sh \ + $(srcdir)/emulparams/armelf.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} armelf_fbsd "$(tdir_armelf_fbsd)" earmelf_linux.c: $(srcdir)/emulparams/armelf_linux.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1253,6 +1265,10 @@ eelf32openrisc.c: $(srcdir)/emulparams/elf32openrisc.sh \ eelf32ppc.c: $(srcdir)/emulparams/elf32ppc.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf32ppc "$(tdir_elf32ppc)" +eelf32ppc_fbsd.c: $(srcdir)/emulparams/elf32ppc_fbsd.sh \ + $(srcdir)/emulparams/elf32ppc.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf32ppc_fbsd "$(tdir_elf32ppc_fbsd)" eelf32ppcsim.c: $(srcdir)/emulparams/elf32ppcsim.sh \ $(srcdir)/emulparams/elf32ppc.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1274,6 +1290,10 @@ eelf32i370.c: $(srcdir)/emulparams/elf32i370.sh \ eelf64alpha.c: $(srcdir)/emulparams/elf64alpha.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64alpha "$(tdir_elf64alpha)" +eelf64alpha_fbsd.c: $(srcdir)/emulparams/elf64alpha_fbsd.sh \ + $(srcdir)/emulparams/elf64alpha.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64alpha_fbsd "$(tdir_elf64alpha_fbsd)" eelf64alpha_nbsd.c: $(srcdir)/emulparams/elf64alpha_nbsd.sh \ $(srcdir)/emulparams/elf64alpha.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1289,12 +1309,21 @@ eelf64_ia64.c: $(srcdir)/emulparams/elf64_ia64.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64_ia64 "$(tdir_elf64_ia64)" +eelf64_ia64_fbsd.c: $(srcdir)/emulparams/elf64_ia64_fbsd.sh \ + $(srcdir)/emulparams/elf64_ia64.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64_ia64_fbsd "$(tdir_elf64_ia64_fbsd)" eelf64_s390.c: $(srcdir)/emulparams/elf64_s390.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64_s390 "$(tdir_elf64_s390)" eelf64_sparc.c: $(srcdir)/emulparams/elf64_sparc.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64_sparc "$(tdir_elf64_sparc)" +eelf64_sparc_fbsd.c: $(srcdir)/emulparams/elf64_sparc_fbsd.sh \ + $(srcdir)/emulparams/elf64_sparc.sh \ + $(srcdir)/emultempl/elf32.em $(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/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1321,12 +1350,20 @@ eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \ eelf_x86_64.c: $(srcdir)/emulparams/elf_x86_64.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_x86_64 "$(tdir_elf_x86_64)" +eelf_x86_64_fbsd.c: $(srcdir)/emulparams/elf_x86_64_fbsd.sh \ + $(srcdir)/emulparams/elf_x86_64.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf_x86_64_fbsd "$(tdir_elf_x86_64_fbsd)" eelf_i386_be.c: $(srcdir)/emulparams/elf_i386_be.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_i386_be "$(tdir_elf_i386_be)" eelf_i386_chaos.c: $(srcdir)/emulparams/elf_i386_chaos.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_i386_chaos "$(tdir_elf_i386_chaos)" +eelf_i386_fbsd.c: $(srcdir)/emulparams/elf_i386_fbsd.sh \ + $(srcdir)/emulparams/elf_i386.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf_i386_fbsd "$(tdir_elf_i386_fbsd)" eelf_i386_ldso.c: $(srcdir)/emulparams/elf_i386_ldso.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_i386_ldso "$(tdir_elf_i386_ldso)" diff --git a/ld/configure.tgt b/ld/configure.tgt index 1833c0524b..7828832e1d 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -44,8 +44,8 @@ sparc*-*-coff) targ_emul=coff_sparc ;; sparc*-*-elf) targ_emul=elf32_sparc ;; sparc*-*-sysv4*) targ_emul=elf32_sparc ;; sparc64-*-freebsd* | sparcv9-*-freebsd*) - targ_emul=elf64_sparc - targ_extra_emuls="elf32_sparc" + targ_emul=elf64_sparc_fbsd + targ_extra_emuls="elf64_sparc elf32_sparc" targ_extra_libpath=$targ_extra_emuls tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'` ;; @@ -102,7 +102,8 @@ i960-intel-nindy) targ_emul=gld960 ;; i960-*-rtems*) targ_emul=gld960coff ;; i960-*-elf*) targ_emul=elf32_i960 ;; ia64-*-elf*) targ_emul=elf64_ia64 ;; -ia64-*-freebsd*) targ_emul=elf64_ia64 ;; +ia64-*-freebsd*) targ_emul=elf64_ia64_fbsd + targ_extra_emuls="elf64_ia64" ;; ia64-*-netbsd*) targ_emul=elf64_ia64 ;; ia64-*-linux*) targ_emul=elf64_ia64 ;; ia64-*-aix*) targ_emul=elf64_aix ;; @@ -176,10 +177,12 @@ i[3456]86-*-netware) targ_emul=i386nw ;; i[3456]86-*-elf*) targ_emul=elf_i386 ;; i[3456]86-*-freebsdaout* | i[3456]86-*-freebsd[12].* | i[3456]86-*-freebsd[12]) targ_emul=i386bsd ;; -i[3456]86-*-freebsd*) targ_emul=elf_i386 ;; -x86_64-*-freebsd*) targ_emul=elf_x86_64 - targ_extra_emuls=elf_i386 - tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'` +i[3456]86-*-freebsd*) targ_emul=elf_i386_fbsd + targ_extra_emuls="elf_i386 i386bsd" ;; +x86_64-*-freebsd*) targ_emul=elf_x86_64_fbsd + targ_extra_emuls="elf_i386_fbsd elf_x86_64 elf_i386" + tdir_elf_i386=`echo ${targ_alias} \ + | sed -e 's/x86_64/i386/'` ;; i[3456]86-*-sysv*) targ_emul=i386coff ;; i[3456]86-*-ptx*) targ_emul=i386coff ;; @@ -210,7 +213,8 @@ arm-*-aout | armel-*-aout) targ_emul=armaoutl ;; armeb-*-aout) targ_emul=armaoutb ;; arm-*-coff) targ_emul=armcoff ;; arm-*-vxworks) targ_emul=armcoff ;; -arm-*-freebsd*) targ_emul=armelf ;; +arm-*-freebsd*) targ_emul=armelf_fbsd + targ_extra_emuls="armelf" ;; arm-*-netbsdelf*) targ_emul=armelf_nbsd; targ_extra_emuls="armelf armnbsd" ;; arm-*-netbsd*) targ_emul=armnbsd; @@ -356,8 +360,8 @@ mmix-*-*) targ_emul=mmo ;; mn10200-*-*) targ_emul=mn10200 ;; mn10300-*-*) targ_emul=mn10300 ;; -alpha*-*-freebsd*) targ_emul=elf64alpha - targ_extra_emuls=alpha +alpha*-*-freebsd*) targ_emul=elf64alpha_fbsd + targ_extra_emuls="elf64alpha alpha" tdir_alpha=`echo ${targ_alias} | sed -e 's/freebsd/freebsdecoff/'` ;; alpha*-*-linuxecoff*) targ_emul=alpha targ_extra_emuls=elf64alpha @@ -380,8 +384,8 @@ or32-*-rtems) targ_emul=or32 ;; pdp11-*-*) targ_emul=pdp11 ;; pjl*-*-*) targ_emul=pjlelf ; targ_extra_emuls="elf_i386" ;; pj*-*-*) targ_emul=pjelf ;; -powerpc-*-freebsd*) targ_emul=elf32ppc; - targ_extra_emuls=elf32ppcsim; +powerpc-*-freebsd*) targ_emul=elf32ppc_fbsd; + targ_extra_emuls="elf32ppc elf32ppcsim"; targ_extra_libpath=elf32ppc; tdir_elf32ppcsim=`echo ${targ_alias} | sed -e 's/ppc/ppcsim/'` ;; diff --git a/ld/emulparams/armelf_fbsd.sh b/ld/emulparams/armelf_fbsd.sh new file mode 100644 index 0000000000..52da34557d --- /dev/null +++ b/ld/emulparams/armelf_fbsd.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/armelf.sh +. ${srcdir}/emulparams/elf_fbsd.sh diff --git a/ld/emulparams/elf32ppc_fbsd.sh b/ld/emulparams/elf32ppc_fbsd.sh new file mode 100644 index 0000000000..2bac85c738 --- /dev/null +++ b/ld/emulparams/elf32ppc_fbsd.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/elf32ppc.sh +. ${srcdir}/emulparams/elf_fbsd.sh diff --git a/ld/emulparams/elf64_ia64_fbsd.sh b/ld/emulparams/elf64_ia64_fbsd.sh new file mode 100644 index 0000000000..d9c9600482 --- /dev/null +++ b/ld/emulparams/elf64_ia64_fbsd.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/elf64_ia64.sh +. ${srcdir}/emulparams/elf_fbsd.sh diff --git a/ld/emulparams/elf64_sparc_fbsd.sh b/ld/emulparams/elf64_sparc_fbsd.sh new file mode 100644 index 0000000000..232a32143b --- /dev/null +++ b/ld/emulparams/elf64_sparc_fbsd.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/elf64_sparc.sh +. ${srcdir}/emulparams/elf_fbsd.sh diff --git a/ld/emulparams/elf64alpha_fbsd.sh b/ld/emulparams/elf64alpha_fbsd.sh new file mode 100644 index 0000000000..37fbfa26eb --- /dev/null +++ b/ld/emulparams/elf64alpha_fbsd.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/elf64alpha.sh +. ${srcdir}/emulparams/elf_fbsd.sh diff --git a/ld/emulparams/elf_fbsd.sh b/ld/emulparams/elf_fbsd.sh new file mode 100644 index 0000000000..2ea646e953 --- /dev/null +++ b/ld/emulparams/elf_fbsd.sh @@ -0,0 +1 @@ +ELF_INTERPRETER_NAME=\"/usr/libexec/ld-elf.so.1\" diff --git a/ld/emulparams/elf_i386_fbsd.sh b/ld/emulparams/elf_i386_fbsd.sh new file mode 100644 index 0000000000..237145a21b --- /dev/null +++ b/ld/emulparams/elf_i386_fbsd.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/elf_i386.sh +. ${srcdir}/emulparams/elf_fbsd.sh diff --git a/ld/emulparams/elf_x86_64_fbsd.sh b/ld/emulparams/elf_x86_64_fbsd.sh new file mode 100644 index 0000000000..34258cb928 --- /dev/null +++ b/ld/emulparams/elf_x86_64_fbsd.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/elf_x86_64.sh +. ${srcdir}/emulparams/elf_fbsd.sh