--- ./ld/configure.tgt.orig	2021-05-13 08:26:36.765168000 +0900
+++ ./ld/configure.tgt	2021-05-13 08:40:35.679397000 +0900
@@ -787,6 +787,10 @@
 s12z-*-*)		targ_emul=m9s12zelf
 			targ_extra_ofiles=ldelfgen.o
 			;;
+s390x-*-freebsd*)	targ_emul=elf64_s390
+			targ_extra_emuls=elf_s390
+			targ_extra_libpath=$targ_extra_emuls
+			tdir_elf_s390=`echo ${targ_alias} | sed -e 's/s390x/s390/'` ;;
 s390x-*-linux*)		targ_emul=elf64_s390
 			targ_extra_emuls=elf_s390
 			targ_extra_libpath=$targ_extra_emuls
--- ./gas/configure.orig	2019-02-02 15:50:20.000000000 +0000
+++ ./gas/configure	2019-08-07 20:44:45.468441000 +0000
@@ -7095,6 +7095,7 @@ ia64-*-hpux*)
   ;;
 
 x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*freebsd*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -7125,6 +7126,9 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  powerpc64-*linux*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
+	  s390x-*freebsd*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
 	  s390x-*linux*)
 	    LD="${LD-ld} -m elf_s390"
 	    ;;
@@ -7146,6 +7150,9 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    ;;
 	  powerpc-*linux*)
 	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*freebsd*)
+	    LD="${LD-ld} -m elf64_s390"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
 	    LD="${LD-ld} -m elf64_s390"
--- ./bfd/config.bfd.orig	2019-08-07 20:35:52.161591000 +0000
+++ ./bfd/config.bfd	2019-08-07 20:40:33.579807000 +0000
@@ -1213,6 +1213,11 @@ case "${targ}" in
     want64=true
     ;;
 #ifdef BFD64
+  s390x-*-freebsd*)
+    targ_defvec=s390_elf64_vec
+    targ_selvecs=s390_elf32_vec
+    want64=true
+    ;;
   s390x-*-linux*)
     targ_defvec=s390_elf64_vec
     targ_selvecs=s390_elf32_vec