Index: Makefile.am =================================================================== RCS file: /cvs/src/src/ld/Makefile.am,v retrieving revision 1.307 diff -u -r1.307 Makefile.am --- Makefile.am 2 Nov 2011 03:09:07 -0000 1.307 +++ Makefile.am 20 Nov 2011 20:39:56 -0000 @@ -480,6 +480,7 @@ eelf64ltsmip_fbsd.c \ eelf64mmix.c \ eelf64ppc.c \ + eelf64ppc_fbsd.c \ eelf64tilegx.c \ eelf_l1om.c \ eelf_l1om_fbsd.c \ @@ -1980,6 +1981,10 @@ ldemul-list.h \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64ppc "$(tdir_elf64ppc)" +eelf64ppc_fbsd.c: $(srcdir)/emulparams/elf64ppc_fbsd.sh \ + $(srcdir)/emultempl/ppc64elf.em ldemul-list.h \ + $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64ppc_fbsd "$(tdir_elf64ppc_fbsd)" eelf64tilegx.c: $(srcdir)/emulparams/elf64tilegx.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} Index: Makefile.in =================================================================== RCS file: /cvs/src/src/ld/Makefile.in,v retrieving revision 1.334 diff -u -r1.334 Makefile.in --- Makefile.in 2 Nov 2011 03:09:08 -0000 1.334 +++ Makefile.in 20 Nov 2011 20:39:57 -0000 @@ -785,6 +785,7 @@ eelf64ltsmip_fbsd.c \ eelf64mmix.c \ eelf64ppc.c \ + eelf64ppc_fbsd.c \ eelf64tilegx.c \ eelf_l1om.c \ eelf_l1om_fbsd.c \ @@ -1184,6 +1185,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64ltsmip_fbsd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64mmix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64ppc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64ppc_fbsd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64tilegx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_be.Po@am__quote@ @@ -3435,6 +3437,10 @@ ldemul-list.h \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf64ppc "$(tdir_elf64ppc)" +eelf64ppc_fbsd.c: $(srcdir)/emulparams/elf64ppc_fbsd.sh \ + $(srcdir)/emultempl/ppc64elf.em ldemul-list.h \ + $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf64ppc_fbsd "$(tdir_elf64ppc_fbsd)" eelf64tilegx.c: $(srcdir)/emulparams/elf64tilegx.sh \ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/needrelax.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} Index: configure.tgt =================================================================== RCS file: /cvs/src/src/ld/configure.tgt,v retrieving revision 1.255 diff -u -r1.255 configure.tgt --- configure.tgt 2 Nov 2011 15:28:17 -0000 1.255 +++ configure.tgt 20 Nov 2011 20:39:57 -0000 @@ -455,10 +455,17 @@ pj*-*-*) targ_emul=pjelf ;; powerpc-*-freebsd* | powerpc-*-kfreebsd*-gnu) - targ_emul=elf32ppc_fbsd; - targ_extra_emuls="elf32ppc elf32ppcsim"; + targ_emul=elf32ppc_fbsd + targ_extra_emuls="elf32ppc elf32ppcsim" targ_extra_libpath=elf32ppc; tdir_elf32ppcsim=`echo ${targ_alias} | sed -e 's/ppc/ppcsim/'` ;; +powerpc64-*-freebsd*) + targ_emul=elf64ppc_fbsd + targ_extra_emuls="elf64ppc elf32ppc_fbsd elf32ppc" + targ_extra_libpath="elf32ppc_fbsd elf32ppc" + tdir_elf32ppc=`echo "${targ_alias}" | sed -e 's/64//'` + tdir_elf32ppc_fbsd=$tdir_elf32ppc + ;; powerpc*-*-linux*) case "${targ}" in *64*) targ_emul=elf64ppc targ_extra_emuls="elf32ppclinux elf32ppc elf32ppcsim" Index: emultempl/ppc64elf.em =================================================================== RCS file: /cvs/src/src/ld/emultempl/ppc64elf.em,v retrieving revision 1.78 diff -u -r1.78 ppc64elf.em --- emultempl/ppc64elf.em 15 Oct 2011 09:22:42 -0000 1.78 +++ emultempl/ppc64elf.em 20 Nov 2011 20:39:57 -0000 @@ -62,7 +62,10 @@ static int no_toc_sort = 0; /* Set if PLT call stubs should load r11. */ -static int plt_static_chain = 0; +#ifndef DEFAULT_PLT_STATIC_CHAIN +#define DEFAULT_PLT_STATIC_CHAIN 0 +#endif +static int plt_static_chain = ${DEFAULT_PLT_STATIC_CHAIN-0}; /* Whether to emit symbols for stubs. */ static int emit_stub_syms = -1; Index: emulparams/elf32ppc_fbsd.sh =================================================================== RCS file: /cvs/src/src/ld/emulparams/elf32ppc_fbsd.sh,v retrieving revision 1.1 diff -u -r1.1 elf32ppc_fbsd.sh --- emulparams/elf32ppc_fbsd.sh 18 Feb 2002 09:38:01 -0000 1.1 +++ emulparams/elf32ppc_fbsd.sh 20 Nov 2011 20:39:57 -0000 @@ -1,2 +1,5 @@ . ${srcdir}/emulparams/elf32ppc.sh . ${srcdir}/emulparams/elf_fbsd.sh + +OUTPUT_FORMAT="elf32-powerpc-freebsd" + Index: emulparams/elf64ppc_fbsd.sh =================================================================== RCS file: emulparams/elf64ppc_fbsd.sh diff -N emulparams/elf64ppc_fbsd.sh --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ emulparams/elf64ppc_fbsd.sh 20 Nov 2011 20:39:57 -0000 @@ -0,0 +1,6 @@ +. ${srcdir}/emulparams/elf64ppc.sh +. ${srcdir}/emulparams/elf_fbsd.sh + +OUTPUT_FORMAT="elf64-powerpc-freebsd" +DEFAULT_PLT_STATIC_CHAIN=1 +