From 6afcdeb3581e99e2d4ce06d0034c7c47292aeec1 Mon Sep 17 00:00:00 2001 From: Brandon Bergren Date: Tue, 6 Oct 2020 09:19:23 +1030 Subject: [PATCH] PR26667, Add powerpc64le-*-freebsd* support PR 26667 bfd/ * config.bfd: Add powerpc64le-*-freebsd*. * configure.ac: Add powerpc_elf64_fbsd_le_vec. * elf64-ppc.c (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Define for freebsd. * targets.c (powerpc_elf64_fbsd_le_vec): Declare. (_bfd_target_vector): Add it. * configure: Regenerate. ld/ * Makefile.am (ALL_64_EMULATION_SOURCES): Add eelf64lppc_fbsd.c. Include $(DEPDIR)/eelf64lppc_fbsd.Pc. * configure.tgt: Add powerpc64le-*-freebsd*. * emulparams/elf64lppc_fbsd.sh: New file. * Makefile.in: Regenerate. * po/BLD-POTFILES.in: Regenerate. --- bfd/ChangeLog | 10 ++++++++++ bfd/config.bfd | 5 +++++ bfd/configure | 1 + bfd/configure.ac | 1 + bfd/elf64-ppc.c | 2 ++ bfd/targets.c | 2 ++ ld/ChangeLog | 9 +++++++++ ld/Makefile.am | 2 ++ ld/Makefile.in | 3 +++ ld/configure.tgt | 4 ++++ ld/emulparams/elf64lppc_fbsd.sh | 6 ++++++ ld/po/BLD-POTFILES.in | 1 + 12 files changed, 46 insertions(+) create mode 100644 ld/emulparams/elf64lppc_fbsd.sh diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1517db98050..5121889969f 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,13 @@ +2020-10-06 Brandon Bergren + + * config.bfd: Add powerpc64le-*-freebsd*. + * configure.ac: Add powerpc_elf64_fbsd_le_vec. + * elf64-ppc.c (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Define for + freebsd. + * targets.c (powerpc_elf64_fbsd_le_vec): Declare. + (_bfd_target_vector): Add it. + * configure: Regenerate. + 2020-10-05 Kamil Rytarowski * config.bfd (aarch64-*-netbsd*, aarch64_be-*-netbsd*): Add target. diff --git a/bfd/config.bfd b/bfd/config.bfd index e2992a0df25..fdc6dbe3dda 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 a9c4fd93669..636f338569b 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 f62659acd7f..cecb0fbb761 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 35f3cbef1ef..fa0c7f96e79 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -17717,7 +17717,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 35492b92bbe..b18800928c4 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/ChangeLog b/ld/ChangeLog index c259b09c74a..62937a1b904 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,12 @@ +2020-10-06 Brandon Bergren + + * Makefile.am (ALL_64_EMULATION_SOURCES): Add eelf64lppc_fbsd.c. + Include $(DEPDIR)/eelf64lppc_fbsd.Pc. + * configure.tgt: Add powerpc64le-*-freebsd*. + * emulparams/elf64lppc_fbsd.sh: New file. + * Makefile.in: Regenerate. + * po/BLD-POTFILES.in: Regenerate. + 2020-10-05 T.K. Chia PR gas/26694 diff --git a/ld/Makefile.am b/ld/Makefile.am index e5b19203d14..41db0c6016c 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 48ecc756906..712e3f44809 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 32f17d24026..70359301b5e 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 00000000000..5e70ab694ac --- /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 a954e775f69..2d6a30f89a4 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 -- 2.30.2