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]

[PATCH] add FreeBSD-specific `ld' emulations


2002-02-17  David O'Brien  <obrien@FreeBSD.org>

	* 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.
	* emulparams/i386freebsd.sh: Likewise.



Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/ld/Makefile.in,v
retrieving revision 1.95
diff -u -r1.95 Makefile.in
--- Makefile.in	2002/02/11 05:18:20	1.95
+++ Makefile.in	2002/02/18 05:25:51
@@ -226,6 +226,7 @@
 	earmaoutl.o \
 	earmcoff.o \
 	earmelf.o \
+	earmelf_fbsd.o \
 	earmelf_linux.o \
 	earmelf_nbsd.o \
 	earmelf_oabi.o \
@@ -268,12 +269,14 @@
 	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_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_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 @@
 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 @@
 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 @@
   $(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_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)"
Index: configure.tgt
===================================================================
RCS file: /cvs/src/src/ld/configure.tgt,v
retrieving revision 1.81
diff -u -r1.81 configure.tgt
--- configure.tgt	2002/02/08 12:12:12	1.81
+++ configure.tgt	2002/02/18 05:25:51
@@ -44,8 +44,8 @@
 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-*-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-*-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 @@
 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 @@
 			;;
 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 @@
 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/'`
 			;;
Index: emulparams/armelf_fbsd.sh
===================================================================
RCS file: armelf_fbsd.sh
diff -N armelf_fbsd.sh
--- /dev/null	Tue May  5 13:32:27 1998
+++ armelf_fbsd.sh	Sun Feb 17 21:25:51 2002
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/armelf.sh
+. ${srcdir}/emulparams/elf_fbsd.sh
Index: emulparams/elf32ppc_fbsd.sh
===================================================================
RCS file: elf32ppc_fbsd.sh
diff -N elf32ppc_fbsd.sh
--- /dev/null	Tue May  5 13:32:27 1998
+++ elf32ppc_fbsd.sh	Sun Feb 17 21:25:51 2002
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf32ppc.sh
+. ${srcdir}/emulparams/elf_fbsd.sh
Index: emulparams/elf64_ia64_fbsd.sh
===================================================================
RCS file: elf64_ia64_fbsd.sh
diff -N elf64_ia64_fbsd.sh
--- /dev/null	Tue May  5 13:32:27 1998
+++ elf64_ia64_fbsd.sh	Sun Feb 17 21:25:51 2002
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf64_ia64.sh
+. ${srcdir}/emulparams/elf_fbsd.sh
Index: emulparams/elf64_sparc_fbsd.sh
===================================================================
RCS file: elf64_sparc_fbsd.sh
diff -N elf64_sparc_fbsd.sh
--- /dev/null	Tue May  5 13:32:27 1998
+++ elf64_sparc_fbsd.sh	Sun Feb 17 21:25:51 2002
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf64_sparc.sh
+. ${srcdir}/emulparams/elf_fbsd.sh
Index: emulparams/elf64alpha_fbsd.sh
===================================================================
RCS file: elf64alpha_fbsd.sh
diff -N elf64alpha_fbsd.sh
--- /dev/null	Tue May  5 13:32:27 1998
+++ elf64alpha_fbsd.sh	Sun Feb 17 21:25:51 2002
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf64alpha.sh
+. ${srcdir}/emulparams/elf_fbsd.sh
Index: emulparams/elf_fbsd.sh
===================================================================
RCS file: elf_fbsd.sh
diff -N elf_fbsd.sh
--- /dev/null	Tue May  5 13:32:27 1998
+++ elf_fbsd.sh	Sun Feb 17 21:25:51 2002
@@ -0,0 +1 @@
+ELF_INTERPRETER_NAME=\"/usr/libexec/ld-elf.so.1\"
Index: emulparams/elf_i386_fbsd.sh
===================================================================
RCS file: elf_i386_fbsd.sh
diff -N elf_i386_fbsd.sh
--- /dev/null	Tue May  5 13:32:27 1998
+++ elf_i386_fbsd.sh	Sun Feb 17 21:25:51 2002
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf_i386.sh
+. ${srcdir}/emulparams/elf_fbsd.sh
Index: emulparams/elf_x86_64_fbsd.sh
===================================================================
RCS file: elf_x86_64_fbsd.sh
diff -N elf_x86_64_fbsd.sh
--- /dev/null	Tue May  5 13:32:27 1998
+++ elf_x86_64_fbsd.sh	Sun Feb 17 21:25:51 2002
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf_x86_64.sh
+. ${srcdir}/emulparams/elf_fbsd.sh


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