- Backport changes from binutils-cvs needed to support 32- and 64-bit

powerpc

PR:		ports/163041
Submitted by:	andreast@
Approved by:	maintainer timeouet (3 weeks)
This commit is contained in:
Beat Gaetzi 2011-12-24 14:20:41 +00:00
parent daa6d85477
commit a5123c5f6c
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=287969
11 changed files with 231 additions and 0 deletions

View file

@ -0,0 +1,26 @@
--- ./bfd/config.bfd.orig 2011-07-29 00:35:13.000000000 +0200
+++ ./bfd/config.bfd 2011-12-21 09:44:40.000000000 +0100
@@ -1128,6 +1128,11 @@
targ_selvecs=rs6000coff_vec
want64=true
;;
+ powerpc64-*-freebsd*)
+ targ_defvec=bfd_elf64_powerpc_freebsd_vec
+ targ_selvecs="bfd_elf64_powerpc_vec bfd_elf32_powerpc_vec bfd_elf32_powerpc_freebsd_vec bfd_elf32_powerpcle_vec rs6000coff_vec rs6000coff64_vec aix5coff64_vec"
+ want64=true
+ ;;
powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux* | \
powerpc64-*-*bsd*)
targ_defvec=bfd_elf64_powerpc_vec
@@ -1140,6 +1145,11 @@
want64=true
;;
#endif
+ powerpc-*-*freebsd*)
+ targ_defvec=bfd_elf32_powerpc_freebsd_vec
+ targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec bfd_elf32_powerpcle_vec ppcboot_vec"
+ targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec bfd_elf64_powerpc_freebsd_vec"
+ ;;
powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
powerpc-*-solaris2* | powerpc-*-linux-* | powerpc-*-rtems* | \
powerpc-*-chorus*)

View file

@ -0,0 +1,18 @@
--- ./bfd/configure.orig 2011-11-21 12:55:48.000000000 +0100
+++ ./bfd/configure 2011-12-21 09:44:40.000000000 +0100
@@ -15262,6 +15262,7 @@
bfd_elf32_pjl_vec) tb="$tb elf32-pj.lo elf32.lo $elf";;
bfd_elf32_powerpc_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;;
bfd_elf32_powerpcle_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;;
+ bfd_elf32_powerpc_freebsd_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;;
bfd_elf32_powerpc_vxworks_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;;
bfd_elf32_rx_le_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;;
bfd_elf32_rx_be_vec) tb="$tb elf32-rx.lo elf32.lo $elf" ;;
@@ -15327,6 +15328,7 @@
bfd_elf64_mmix_vec) tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;
bfd_elf64_powerpc_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_powerpcle_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
+ bfd_elf64_powerpc_freebsd_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
bfd_elf64_s390_vec) tb="$tb elf64-s390.lo elf64.lo $elf"; target_size=64 ;;
bfd_elf64_sh64_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
bfd_elf64_sh64l_vec) tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;

View file

@ -0,0 +1,36 @@
--- ./bfd/elf32-ppc.c.orig 2011-11-21 10:29:21.000000000 +0100
+++ ./bfd/elf32-ppc.c 2011-12-21 09:44:40.000000000 +0100
@@ -9127,6 +9127,24 @@
#include "elf32-target.h"
+/* FreeBSD Target */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+
+#undef TARGET_BIG_SYM
+#define TARGET_BIG_SYM bfd_elf32_powerpc_freebsd_vec
+#undef TARGET_BIG_NAME
+#define TARGET_BIG_NAME "elf32-powerpc-freebsd"
+
+#undef ELF_OSABI
+#define ELF_OSABI ELFOSABI_FREEBSD
+
+#undef elf32_bed
+#define elf32_bed elf32_powerpc_fbsd_bed
+
+#include "elf32-target.h"
+
/* VxWorks Target */
#undef TARGET_LITTLE_SYM
@@ -9137,6 +9155,8 @@
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-powerpc-vxworks"
+#undef ELF_OSABI
+
/* VxWorks uses the elf default section flags for .plt. */
static const struct bfd_elf_special_section *
ppc_elf_vxworks_get_sec_type_attr (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)

View file

@ -0,0 +1,25 @@
--- ./bfd/elf64-ppc.c.orig 2011-11-21 10:29:24.000000000 +0100
+++ ./bfd/elf64-ppc.c 2011-12-21 09:44:40.000000000 +0100
@@ -13897,3 +13897,22 @@
}
#include "elf64-target.h"
+
+/* FreeBSD support */
+
+#undef TARGET_LITTLE_SYM
+#undef TARGET_LITTLE_NAME
+
+#undef TARGET_BIG_SYM
+#define TARGET_BIG_SYM bfd_elf64_powerpc_freebsd_vec
+#undef TARGET_BIG_NAME
+#define TARGET_BIG_NAME "elf64-powerpc-freebsd"
+
+#undef ELF_OSABI
+#define ELF_OSABI ELFOSABI_FREEBSD
+
+#undef elf64_bed
+#define elf64_bed elf64_powerpc_fbsd_bed
+
+#include "elf64-target.h"
+

View file

@ -0,0 +1,34 @@
--- ./bfd/targets.c.orig 2011-08-17 02:39:38.000000000 +0200
+++ ./bfd/targets.c 2011-12-21 09:44:40.000000000 +0100
@@ -667,6 +667,7 @@
extern const bfd_target bfd_elf32_pjl_vec;
extern const bfd_target bfd_elf32_powerpc_vec;
extern const bfd_target bfd_elf32_powerpcle_vec;
+extern const bfd_target bfd_elf32_powerpc_freebsd_vec;
extern const bfd_target bfd_elf32_powerpc_vxworks_vec;
extern const bfd_target bfd_elf32_rx_le_vec;
extern const bfd_target bfd_elf32_rx_be_vec;
@@ -729,6 +730,7 @@
extern const bfd_target bfd_elf64_mmix_vec;
extern const bfd_target bfd_elf64_powerpc_vec;
extern const bfd_target bfd_elf64_powerpcle_vec;
+extern const bfd_target bfd_elf64_powerpc_freebsd_vec;
extern const bfd_target bfd_elf64_s390_vec;
extern const bfd_target bfd_elf64_sh64_vec;
extern const bfd_target bfd_elf64_sh64l_vec;
@@ -1033,6 +1035,7 @@
&bfd_elf32_powerpc_vec,
&bfd_elf32_powerpc_vxworks_vec,
&bfd_elf32_powerpcle_vec,
+ &bfd_elf32_powerpc_freebsd_vec,
&bfd_elf32_rx_be_vec,
&bfd_elf32_rx_be_ns_vec,
&bfd_elf32_rx_le_vec,
@@ -1095,6 +1098,7 @@
&bfd_elf64_mmix_vec,
&bfd_elf64_powerpc_vec,
&bfd_elf64_powerpcle_vec,
+ &bfd_elf64_powerpc_freebsd_vec,
&bfd_elf64_s390_vec,
&bfd_elf64_sh64_vec,
&bfd_elf64_sh64l_vec,

View file

@ -0,0 +1,13 @@
--- ./gas/config/tc-ppc.c.orig 2011-06-14 11:03:51.000000000 +0200
+++ ./gas/config/tc-ppc.c 2011-12-21 09:44:40.000000000 +0100
@@ -1370,7 +1370,9 @@
#endif
#endif
#ifdef OBJ_ELF
-# ifdef TE_VXWORKS
+# ifdef TE_FreeBSD
+ return (ppc_obj64 ? "elf64-powerpc-freebsd" : "elf32-powerpc-freebsd");
+# elif defined (TE_VXWORKS)
return "elf32-powerpc-vxworks";
# else
return (target_big_endian

View file

@ -0,0 +1,29 @@
--- ./ld/Makefile.in.orig 2011-07-22 22:22:37.000000000 +0200
+++ ./ld/Makefile.in 2011-12-21 09:44:40.000000000 +0100
@@ -783,6 +783,7 @@
eelf64ltsmip_fbsd.c \
eelf64mmix.c \
eelf64ppc.c \
+ eelf64ppc_fbsd.c \
eelf64tilegx.c \
eelf_l1om.c \
eelf_l1om_fbsd.c \
@@ -1180,6 +1181,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@
@@ -3425,6 +3427,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}

View file

@ -0,0 +1,22 @@
--- ./ld/configure.tgt.orig 2011-11-21 10:29:37.000000000 +0100
+++ ./ld/configure.tgt 2011-12-21 09:44:40.000000000 +0100
@@ -453,10 +453,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"

View file

@ -0,0 +1,8 @@
--- ./ld/emulparams/elf32ppc_fbsd.sh.orig 2002-02-18 10:38:01.000000000 +0100
+++ ./ld/emulparams/elf32ppc_fbsd.sh 2011-12-21 09:44:40.000000000 +0100
@@ -1,2 +1,5 @@
. ${srcdir}/emulparams/elf32ppc.sh
. ${srcdir}/emulparams/elf_fbsd.sh
+
+OUTPUT_FORMAT="elf32-powerpc-freebsd"
+

View file

@ -0,0 +1,9 @@
--- ./ld/emulparams/elf64ppc_fbsd.sh.orig 2011-12-21 09:44:40.000000000 +0100
+++ ./ld/emulparams/elf64ppc_fbsd.sh 2011-12-21 09:44:40.000000000 +0100
@@ -0,0 +1,6 @@
+. ${srcdir}/emulparams/elf64ppc.sh
+. ${srcdir}/emulparams/elf_fbsd.sh
+
+OUTPUT_FORMAT="elf64-powerpc-freebsd"
+DEFAULT_PLT_STATIC_CHAIN=1
+

View file

@ -0,0 +1,11 @@
--- ./ld/emultempl/ppc64elf.em.orig 2011-11-21 10:29:39.000000000 +0100
+++ ./ld/emultempl/ppc64elf.em 2011-12-21 09:44:40.000000000 +0100
@@ -62,7 +62,7 @@
static int no_toc_sort = 0;
/* Set if PLT call stubs should load r11. */
-static int plt_static_chain = 0;
+static int plt_static_chain = ${DEFAULT_PLT_STATIC_CHAIN-0};
/* Whether to emit symbols for stubs. */
static int emit_stub_syms = -1;