commit 661bdd13f99f6f7af6dcfe8e0db872205e866865 Author: Brandon Bergren Date: Thu Sep 24 15:50:18 2020 -0500 Add powerpc64le-unknown-freebsd target. diff --git a/bfd/config.bfd b/bfd/config.bfd index 4900735958..18776ed7a5 100644 --- a/bfd/config.bfd +++ b/bfd/config.bfd @@ -1085,6 +1085,11 @@ case "${targ}" in targ_selvecs="powerpc_elf64_vec powerpc_elf32_vec powerpc_elf32_fbsd_vec powerpc_elf32_le_vec rs6000_xcoff_vec rs6000_xcoff64_vec rs6000_xcoff64_aix_vec" want64=true ;; + powerpc64le-*-freebsd*) + targ_defvec=powerpc_elf64_fbsd_le_vec + targ_selvecs="powerpc_elf64_vec powerpc_elf32_vec powerpc_elf32_fbsd_vec powerpc_elf32_le_vec rs6000_xcoff_vec rs6000_xcoff64_vec rs6000_xcoff64_aix_vec" + want64=true + ;; powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux* | \ powerpc64-*-*bsd*) targ_defvec=powerpc_elf64_vec diff --git a/bfd/configure b/bfd/configure index a9c4fd9366..636f338569 100755 --- a/bfd/configure +++ b/bfd/configure @@ -14914,6 +14914,7 @@ do powerpc_elf64_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;; powerpc_elf64_le_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; powerpc_elf64_fbsd_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; + powerpc_elf64_fbsd_le_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; powerpc_xcoff_vec) tb="$tb coff-rs6000.lo $xcoff" ;; pru_elf32_vec) tb="$tb elf32-pru.lo elf32.lo $elf" ;; riscv_elf32_vec) tb="$tb elf32-riscv.lo elfxx-riscv.lo elf32.lo $elf" ;; diff --git a/bfd/configure.ac b/bfd/configure.ac index f62659acd7..cecb0fbb76 100644 --- a/bfd/configure.ac +++ b/bfd/configure.ac @@ -620,6 +620,7 @@ do powerpc_elf64_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;; powerpc_elf64_le_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; powerpc_elf64_fbsd_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; + powerpc_elf64_fbsd_le_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;; powerpc_xcoff_vec) tb="$tb coff-rs6000.lo $xcoff" ;; pru_elf32_vec) tb="$tb elf32-pru.lo elf32.lo $elf" ;; riscv_elf32_vec) tb="$tb elf32-riscv.lo elfxx-riscv.lo elf32.lo $elf" ;; diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 4194802d48..4d927033a1 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -17714,7 +17714,9 @@ ppc64_elf_finish_dynamic_sections (bfd *output_bfd, /* FreeBSD support */ #undef TARGET_LITTLE_SYM +#define TARGET_LITTLE_SYM powerpc_elf64_fbsd_le_vec #undef TARGET_LITTLE_NAME +#define TARGET_LITTLE_NAME "elf64-powerpcle-freebsd" #undef TARGET_BIG_SYM #define TARGET_BIG_SYM powerpc_elf64_fbsd_vec diff --git a/bfd/targets.c b/bfd/targets.c index 35492b92bb..b18800928c 100644 --- a/bfd/targets.c +++ b/bfd/targets.c @@ -838,6 +838,7 @@ extern const bfd_target powerpc_elf32_vxworks_vec; extern const bfd_target powerpc_elf64_vec; extern const bfd_target powerpc_elf64_le_vec; extern const bfd_target powerpc_elf64_fbsd_vec; +extern const bfd_target powerpc_elf64_fbsd_le_vec; extern const bfd_target powerpc_xcoff_vec; extern const bfd_target pru_elf32_vec; extern const bfd_target riscv_elf32_vec; @@ -1224,6 +1225,7 @@ static const bfd_target * const _bfd_target_vector[] = &powerpc_elf64_vec, &powerpc_elf64_le_vec, &powerpc_elf64_fbsd_vec, + &powerpc_elf64_fbsd_le_vec, #endif #if 0 /* This has the same magic number as RS/6000. */ diff --git a/ld/Makefile.am b/ld/Makefile.am index e5b19203d1..41db0c6016 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -431,6 +431,7 @@ ALL_64_EMULATION_SOURCES = \ eelf64btsmip_fbsd.c \ eelf64hppa.c \ eelf64lppc.c \ + eelf64lppc_fbsd.c \ eelf64lriscv.c \ eelf64lriscv_lp64f.c \ eelf64lriscv_lp64.c \ @@ -911,6 +912,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS) @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64btsmip_fbsd.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64hppa.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lppc.Pc@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lppc_fbsd.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lriscv.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lriscv_lp64f.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lriscv_lp64.Pc@am__quote@ diff --git a/ld/Makefile.in b/ld/Makefile.in index 48ecc75690..712e3f4480 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -915,6 +915,7 @@ ALL_64_EMULATION_SOURCES = \ eelf64btsmip_fbsd.c \ eelf64hppa.c \ eelf64lppc.c \ + eelf64lppc_fbsd.c \ eelf64lriscv.c \ eelf64lriscv_lp64f.c \ eelf64lriscv_lp64.c \ @@ -1355,6 +1356,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64btsmip_fbsd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64hppa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lppc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lppc_fbsd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lriscv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lriscv_lp64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lriscv_lp64f.Po@am__quote@ @@ -2506,6 +2508,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS) @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64btsmip_fbsd.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64hppa.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lppc.Pc@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lppc_fbsd.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lriscv.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lriscv_lp64f.Pc@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf64lriscv_lp64.Pc@am__quote@ diff --git a/ld/configure.tgt b/ld/configure.tgt index 32f17d2402..70359301b5 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -636,6 +636,10 @@ powerpc64-*-freebsd*) tdir_elf32ppc=`echo "${targ_alias}" | sed -e 's/64//'` tdir_elf32ppc_fbsd=$tdir_elf32ppc ;; +powerpc64le-*-freebsd*) + targ_emul=elf64lppc_fbsd + targ_extra_emuls="elf64lppc" + ;; powerpc-*-vxworks*) targ_emul=elf32ppcvxworks targ_extra_emuls="elf32ppc elf32ppclinux elf32ppcsim" diff --git a/ld/emulparams/elf64lppc_fbsd.sh b/ld/emulparams/elf64lppc_fbsd.sh new file mode 100644 index 0000000000..5e70ab694a --- /dev/null +++ b/ld/emulparams/elf64lppc_fbsd.sh @@ -0,0 +1,6 @@ +source_sh ${srcdir}/emulparams/elf64lppc.sh +source_sh ${srcdir}/emulparams/elf_fbsd.sh + +OUTPUT_FORMAT="elf64-powerpcle-freebsd" +DEFAULT_PLT_STATIC_CHAIN=1 + diff --git a/ld/po/BLD-POTFILES.in b/ld/po/BLD-POTFILES.in index a954e775f6..2d6a30f89a 100644 --- a/ld/po/BLD-POTFILES.in +++ b/ld/po/BLD-POTFILES.in @@ -177,6 +177,7 @@ eelf64btsmip.c eelf64btsmip_fbsd.c eelf64hppa.c eelf64lppc.c +eelf64lppc_fbsd.c eelf64lriscv.c eelf64lriscv_lp64.c eelf64lriscv_lp64f.c