⛏️ index : buildtools.git

author Alexander von Gluck IV <kallisti5@unixzen.com> 2021-08-24 22:08:45.0 -05:00:00
committer Alex von Gluck IV <kallisti5@unixzen.com> 2021-08-26 20:24:40.0 +00:00:00
commit
7c3988da64e4bf5ccc4aae6d02784921707488dd [patch]
tree
3fa4ff97e7869f98b93e11a532e929c3e1b6ef7a
parent
46e1ce6913af60e1a4b3b74a466b565579e89de2
download
7c3988da64e4bf5ccc4aae6d02784921707488dd.tar.gz

binutils: Apply Haiku patches to 2.36.1

* a82c1c - Base Haiku patches
* d113c7 - Fix powerpc gas target for Haiku
* e97614 - arm64 target support
* f91439 - don't require coff, we don't need it anyway
* c3903e - enable PE support for ARM
* f4963f - Add missing __exidx_* to fix arm bootstrap

Change-Id: I27d810fa49c38ed6e1548fc1f880bebb62ee0d64
Reviewed-on: https://review.haiku-os.org/c/buildtools/+/4374
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>

Diff

 binutils/configure                         |  2 +-
 binutils/configure.ac                      |  2 +-
 binutils/libtool.m4                        |  2 +-
 binutils/bfd/config.bfd                    | 34 ++++++++++++++++++++++++++++++++++
 binutils/bfd/configure                     |  2 +-
 binutils/binutils/configure                |  2 +-
 binutils/gas/configure                     |  2 +-
 binutils/gas/configure.tgt                 |  8 ++++++++
 binutils/gprof/configure                   |  2 +-
 binutils/ld/Makefile.am                    |  6 ++++++
 binutils/ld/Makefile.in                    | 12 ++++++++++++
 binutils/ld/configure                      |  4 ++--
 binutils/ld/configure.tgt                  | 20 ++++++++++++++++++++
 binutils/opcodes/configure                 |  2 +-
 binutils/gas/config/tc-i386.c              |  1 +
 binutils/gas/config/te-haiku.h             | 30 ++++++++++++++++++++++++++++++
 binutils/ld/emulparams/aarch64haiku.sh     | 39 +++++++++++++++++++++++++++++++++++++++
 binutils/ld/emulparams/armelf_haiku.sh     | 33 +++++++++++++++++++++++++++++++++
 binutils/ld/emulparams/elf32ppchaiku.sh    |  7 +++++++
 binutils/ld/emulparams/elf_haiku.sh        |  1 +
 binutils/ld/emulparams/elf_i386_haiku.sh   | 12 ++++++++++++
 binutils/ld/emulparams/elf_mipsel_haiku.sh |  3 +++
 binutils/ld/emulparams/elf_x86_64_haiku.sh |  2 ++
 23 files changed, 218 insertions(+), 10 deletions(-)

diff --git a/binutils/configure b/binutils/configure
index 68779fe..e9f07af 100755
--- a/binutils/configure
+++ a/binutils/configure
@@ -3005,7 +3005,7 @@
      *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \
      | *-*-linux* | *-*-gnu* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \
      | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* \
      | *-*-solaris2* | *-*-nto* | *-*-nacl*)
      | *-*-solaris2* | *-*-nto* | *-*-nacl* | *-*-haiku*)
        case "${target}" in
          *-*-linux*aout* | *-*-linux*oldld*)
            ;;
diff --git a/binutils/configure.ac b/binutils/configure.ac
index a7fbdc1..4805745 100644
--- a/binutils/configure.ac
+++ a/binutils/configure.ac
@@ -335,7 +335,7 @@
      *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \
      | *-*-linux* | *-*-gnu* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \
      | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* \
      | *-*-solaris2* | *-*-nto* | *-*-nacl*)
      | *-*-solaris2* | *-*-nto* | *-*-nacl* | *-*-haiku*)
        case "${target}" in
          *-*-linux*aout* | *-*-linux*oldld*)
            ;;
diff --git a/binutils/libtool.m4 b/binutils/libtool.m4
index e993b62..6f822a1 100644
--- a/binutils/libtool.m4
+++ a/binutils/libtool.m4
@@ -2332,7 +2332,7 @@
  soname_spec='${libname}${release}${shared_ext}$major'
  shlibpath_var=LIBRARY_PATH
  shlibpath_overrides_runpath=yes
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
  hardcode_into_libs=yes
  ;;

diff --git a/binutils/bfd/config.bfd b/binutils/bfd/config.bfd
index e7b55b0..b532a3e 100644
--- a/binutils/bfd/config.bfd
+++ a/binutils/bfd/config.bfd
@@ -256,6 +256,11 @@
    targ_selvecs=aarch64_elf64_be_cloudabi_vec
    want64=true
    ;;
  aarch64-*-haiku*)
    targ_defvec=aarch64_elf64_le_vec
    targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec"
    want64=true
    ;;
  aarch64-*-linux* | aarch64-*-netbsd*)
    targ_defvec=aarch64_elf64_le_vec
    targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec"
@@ -339,6 +344,10 @@
  arm-*-fuchsia*)
    targ_defvec=arm_elf32_le_vec
    targ_selvecs="arm_elf32_be_vec"
    ;;
  arm*-*-haiku*)
    targ_defvec=arm_elf32_le_vec
    targ_selvecs="arm_elf32_fdpic_le_vec arm_elf32_be_vec arm_elf32_fdpic_be_vec arm_pe_le_vec arm_pe_be_vec arm_pei_le_vec arm_pei_be_vec"
    ;;
  arm-*-nacl*)
    targ_defvec=arm_elf32_nacl_le_vec
@@ -672,6 +681,11 @@
  x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
    targ_defvec=x86_64_elf64_fbsd_vec
    targ_selvecs="i386_elf32_fbsd_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec"
    want64=true
    ;;
  x86_64-*-haiku*)
    targ_defvec=x86_64_elf64_vec
    targ_selvecs="i386_elf32_vec"
    want64=true
    ;;
  x86_64-*-netbsd* | x86_64-*-openbsd*)
@@ -723,6 +737,9 @@
  i[3-7]86-*-beoself* | i[3-7]86-*-beos*)
    targ_defvec=i386_elf32_vec
    targ_selvecs="iamcu_elf32_vec i386_pe_vec i386_pei_vec"
    ;;
  i[3-7]86-*-haiku*)
    targ_defvec=i386_elf32_vec
    ;;
  i[3-7]86-*-interix*)
    targ_defvec=i386_pei_vec
@@ -789,6 +806,9 @@
    targ_defvec=m32r_elf32_vec
    ;;

  m68*-*-haiku*)
    targ_defvec=m68k_elf32_vec
    ;;
  m68hc11-*-* | m6811-*-*)
    targ_defvec=m68hc11_elf32_vec
    targ_selvecs="m68hc11_elf32_vec m68hc12_elf32_vec"
@@ -842,6 +862,10 @@
  mips*-*-netbsd*)
    targ_defvec=mips_elf32_trad_be_vec
    targ_selvecs="mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
    ;;
  mips*el-*-haiku*)
    targ_defvec=mips_elf32_le_vec
    targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_le_vec mips_ecoff_be_vec"
    ;;
  mips*-*-irix6*)
    targ_defvec=mips_elf32_n_be_vec
@@ -1041,6 +1065,11 @@
    targ_defvec=rs6000_xcoff_vec
    targ_selvecs="rs6000_xcoff64_aix_vec"
    want64=true
    ;;
  powerpc-*-haiku*)
    targ_defvec=powerpc_elf32_vec
    targ_selvecs="rs6000_xcoff_vec powerpc_elf32_le_vec pef_vec pef_xlib_vec powerpc_xcoff_vec powerpc_boot_vec"
    targ_cflags=-D__HAIKU_TARGET__
    ;;
#ifdef BFD64
  powerpc64-*-aix5.[01])
@@ -1291,6 +1320,11 @@
  sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
    targ_defvec=sparc_elf32_sol2_vec
    targ_selvecs="sparc_elf64_sol2_vec sparc_elf32_vec sparc_elf64_vec"
    want64=true
    ;;
  sparc64-*-haiku*)
    targ_defvec=sparc_elf64_vec
    targ_selvecs="sparc_elf64_vec sparc_elf32_vec"
    want64=true
    ;;
  sparc64-*-freebsd* | sparc64-*-kfreebsd*-gnu)
diff --git a/binutils/bfd/configure b/binutils/bfd/configure
index 1e3ff33..6f38856 100755
--- a/binutils/bfd/configure
+++ a/binutils/bfd/configure
@@ -10923,7 +10923,7 @@
  soname_spec='${libname}${release}${shared_ext}$major'
  shlibpath_var=LIBRARY_PATH
  shlibpath_overrides_runpath=yes
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
  hardcode_into_libs=yes
  ;;

diff --git a/binutils/binutils/configure b/binutils/binutils/configure
index 1bbc43a..22dc6ae 100755
--- a/binutils/binutils/configure
+++ a/binutils/binutils/configure
@@ -10750,7 +10750,7 @@
  soname_spec='${libname}${release}${shared_ext}$major'
  shlibpath_var=LIBRARY_PATH
  shlibpath_overrides_runpath=yes
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
  hardcode_into_libs=yes
  ;;

diff --git a/binutils/gas/configure b/binutils/gas/configure
index b3c3807..1983018 100755
--- a/binutils/gas/configure
+++ a/binutils/gas/configure
@@ -10538,7 +10538,7 @@
  soname_spec='${libname}${release}${shared_ext}$major'
  shlibpath_var=LIBRARY_PATH
  shlibpath_overrides_runpath=yes
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
  hardcode_into_libs=yes
  ;;

diff --git a/binutils/gas/configure.tgt b/binutils/gas/configure.tgt
index 6f46e0a..a344112 100644
--- a/binutils/gas/configure.tgt
+++ a/binutils/gas/configure.tgt
@@ -125,6 +125,7 @@
case ${generic_target} in
  aarch64*-*-elf*)			fmt=elf;;
  aarch64*-*-fuchsia*)			fmt=elf;;
  aarch64*-*-haiku*)			fmt=elf em=haiku ;;
  aarch64*-*-linux*)			fmt=elf em=linux
    case ${cpu}-${os} in
      aarch64*-linux-gnu_ilp32)		arch=aarch64:32 ;;
@@ -161,6 +162,7 @@
					fmt=coff em=wince-pe ;;
  arm-*-pe)				fmt=coff em=pe ;;
  arm-*-fuchsia*)			fmt=elf ;;
  arm-*-haiku*)				fmt=elf em=haiku ;;

  avr-*-*)				fmt=elf bfd_gas=yes ;;

@@ -222,6 +224,7 @@
  i386-*-elfiamcu)			fmt=elf arch=iamcu ;;
  i386-*-elf*)				fmt=elf ;;
  i386-*-fuchsia*)			fmt=elf ;;
  i386-*-haiku*)			fmt=elf em=haiku ;;
  i386-*-bsd*)				fmt=aout em=386bsd ;;
  i386-*-netbsdpe*)			fmt=coff em=pe ;;
  i386-*-netbsd*-gnu* | \
@@ -288,6 +291,7 @@
  m68k-*-uclinux*)			fmt=elf em=uclinux ;;
  m68k-*-gnu*)				fmt=elf ;;
  m68k-*-netbsdelf*)			fmt=elf em=nbsd ;;
  m68k-*-haiku*)			fmt=elf em=haiku ;;

  s12z-*-*)				fmt=elf ;;

@@ -309,6 +313,7 @@
  mips-*-sysv4* | mips-*-gnu*)		fmt=elf em=tmips ;;
  mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
					fmt=elf em=tmips ;;
  mips-*-haiku*)			fmt=elf em=haiku ;;
  mips-*-elf*)				fmt=elf ;;
  mips-*-netbsd*)			fmt=elf em=tmips ;;
  mips-*-openbsd*)			fmt=elf em=tmips ;;
@@ -351,6 +356,7 @@
  ppc-*-beos*)				fmt=coff ;;
  ppc-*-*n*bsd* | ppc-*-elf*)		fmt=elf ;;
  ppc-*-eabi* | ppc-*-sysv4*)		fmt=elf ;;
  ppc-*-haiku*)				fmt=elf em=haiku ;;
  ppc-*-linux-*)			fmt=elf em=linux ;;
  ppc-*-solaris*)			fmt=elf em=solaris ;;
  ppc-*-macos*)				fmt=coff em=macos ;;
@@ -359,6 +365,7 @@

  pru-*-*)				fmt=elf ;;

  riscv*-*-haiku*)			fmt=elf endian=little em=haiku ;;
  riscv*-*-*)				fmt=elf ;;

  rx-*-linux*)				fmt=elf em=linux ;;
@@ -386,6 +393,7 @@
  sh-*-kaos*)				fmt=elf ;;
  shle*-*-kaos*)			fmt=elf ;;

  sparc-*-haiku*)			fmt=elf em=haiku ;;
  sparc-*-linux-*)			fmt=elf em=linux ;;
  sparc-*-solaris*)			fmt=elf em=solaris ;;
  sparc-*-freebsd*)			fmt=elf em=freebsd ;;
diff --git a/binutils/gprof/configure b/binutils/gprof/configure
index ee19d71..7471940 100755
--- a/binutils/gprof/configure
+++ a/binutils/gprof/configure
@@ -10385,7 +10385,7 @@
  soname_spec='${libname}${release}${shared_ext}$major'
  shlibpath_var=LIBRARY_PATH
  shlibpath_overrides_runpath=yes
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
  hardcode_into_libs=yes
  ;;

diff --git a/binutils/ld/Makefile.am b/binutils/ld/Makefile.am
index 2c9a487..aed9094 100644
--- a/binutils/ld/Makefile.am
+++ a/binutils/ld/Makefile.am
@@ -167,6 +167,7 @@
	earmelf.c \
	earmelf_fbsd.c \
	earmelf_fuchsia.c \
	earmelf_haiku.c \
	earmelf_linux.c \
	earmelf_linux_eabi.c \
	earmelf_linux_fdpiceabi.c \
@@ -259,6 +260,7 @@
	eelf32ppc.c \
	eelf32ppc_fbsd.c \
	eelf32ppclinux.c \
	eelf32ppchaiku.c \
	eelf32ppcnto.c \
	eelf32ppcsim.c \
	eelf32ppcvxworks.c \
@@ -286,9 +288,11 @@
	eelf_i386.c \
	eelf_i386_be.c \
	eelf_i386_fbsd.c \
	eelf_i386_haiku.c \
	eelf_i386_ldso.c \
	eelf_i386_sol2.c \
	eelf_i386_vxworks.c \
	eelf_mipsel_haiku.c \
	eelf_iamcu.c \
	eelf_s390.c \
	eh8300elf.c \
@@ -390,6 +394,7 @@
	eaarch64cloudabib.c \
	eaarch64fbsd.c \
	eaarch64fbsdb.c \
	eaarch64haiku.c \
	eaarch64linux.c \
	eaarch64linuxb.c \
	eaarch64linux32.c \
@@ -455,6 +460,7 @@
	eelf_k1om_fbsd.c \
	eelf_x86_64.c \
	eelf_x86_64_cloudabi.c \
	eelf_x86_64_haiku.c \
	eelf_x86_64_fbsd.c \
	eelf_x86_64_sol2.c \
	ehppa64linux.c \
diff --git a/binutils/ld/Makefile.in b/binutils/ld/Makefile.in
index b41941c..2eddb16 100644
--- a/binutils/ld/Makefile.in
+++ a/binutils/ld/Makefile.in
@@ -656,6 +656,7 @@
	earmelf.c \
	earmelf_fbsd.c \
	earmelf_fuchsia.c \
	earmelf_haiku.c \
	earmelf_linux.c \
	earmelf_linux_eabi.c \
	earmelf_linux_fdpiceabi.c \
@@ -747,6 +748,7 @@
	eelf32or1k_linux.c \
	eelf32ppc.c \
	eelf32ppc_fbsd.c \
	eelf32ppchaiku.c \
	eelf32ppclinux.c \
	eelf32ppcnto.c \
	eelf32ppcsim.c \
@@ -775,10 +777,12 @@
	eelf_i386.c \
	eelf_i386_be.c \
	eelf_i386_fbsd.c \
	eelf_i386_haiku.c \
	eelf_i386_ldso.c \
	eelf_i386_sol2.c \
	eelf_i386_vxworks.c \
	eelf_iamcu.c \
	eelf_mipsel_haiku.c \
	eelf_s390.c \
	eh8300elf.c \
	eh8300elf_linux.c \
@@ -878,6 +882,7 @@
	eaarch64cloudabib.c \
	eaarch64fbsd.c \
	eaarch64fbsdb.c \
	eaarch64haiku.c \
	eaarch64linux.c \
	eaarch64linuxb.c \
	eaarch64linux32.c \
@@ -943,6 +948,7 @@
	eelf_k1om_fbsd.c \
	eelf_x86_64.c \
	eelf_x86_64_cloudabi.c \
	eelf_x86_64_haiku.c \
	eelf_x86_64_fbsd.c \
	eelf_x86_64_sol2.c \
	ehppa64linux.c \
@@ -1242,6 +1248,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64elfb.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64fbsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64fbsdb.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64haiku.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64linux32.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaarch64linux32b.Po@am__quote@
@@ -1261,6 +1268,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_fbsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_fuchsia.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_haiku.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_linux_eabi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_linux_fdpiceabi.Po@am__quote@
@@ -1380,6 +1388,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32or1k_linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32ppc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32ppc_fbsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32ppchaiku.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32ppclinux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32ppcnto.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf32ppcsim.Po@am__quote@
@@ -1434,6 +1443,7 @@
@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@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_fbsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_haiku.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_ldso.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_sol2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_vxworks.Po@am__quote@
@@ -2439,6 +2449,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_sol2.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_i386_vxworks.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_iamcu.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_mipsel_haiku.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_s390.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eh8300elf.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eh8300elf_linux.Pc@am__quote@
@@ -2600,6 +2611,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_k1om_fbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_cloudabi.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_haiku.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_fbsd.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eelf_x86_64_sol2.Pc@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehppa64linux.Pc@am__quote@
diff --git a/binutils/ld/configure b/binutils/ld/configure
index b096979..b3f4495 100755
--- a/binutils/ld/configure
+++ a/binutils/ld/configure
@@ -11237,7 +11237,7 @@
  soname_spec='${libname}${release}${shared_ext}$major'
  shlibpath_var=LIBRARY_PATH
  shlibpath_overrides_runpath=yes
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
  hardcode_into_libs=yes
  ;;

@@ -14887,7 +14887,7 @@
  soname_spec='${libname}${release}${shared_ext}$major'
  shlibpath_var=LIBRARY_PATH
  shlibpath_overrides_runpath=yes
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
  hardcode_into_libs=yes
  ;;

diff --git a/binutils/ld/configure.tgt b/binutils/ld/configure.tgt
index 0c780b2..90c1898 100644
--- a/binutils/ld/configure.tgt
+++ a/binutils/ld/configure.tgt
@@ -77,6 +77,9 @@
			targ_extra_libpath="aarch64linuxb aarch64linux32 aarch64linux32b armelfb_linux_eabi armelf_linux_eabi"
			targ_extra_emuls="aarch64elf aarch64elf32 aarch64elf32b aarch64elfb armelf armelfb $targ_extra_libpath"
			;;
aarch64-*-haiku*)	targ_emul=aarch64haiku
			targ_extra_emuls="aarch64elf aarch64elf32 aarch64elf32b aarch64elfb armelf armelfb armelf_haiku $targ_extra_libpath"
			;;
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
			targ_emul=elf64alpha_fbsd
			targ_extra_emuls="elf64alpha alpha"
@@ -199,6 +202,9 @@
			;;
arm*-*-fuchsia*)	targ_emul=armelf_fuchsia
			targ_extra_emuls="armelfb_fuchsia armelf armelfb"
			;;
arm*-*-haiku*)		arg_emul=armelf_haiku
			targ_extra_emuls=armelf
			;;
avr-*-*)		targ_emul=avr2
			targ_extra_emuls="avr1 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6 avrxmega1 avrxmega2 avrxmega3 avrxmega4 avrxmega5 avrxmega6 avrxmega7 avrtiny"
@@ -396,6 +402,8 @@
			;;
i[3-7]86-*-beos*)	targ_emul=elf_i386_be
			;;
i[3-7]86-*-haiku*)	targ_emul=elf_i386_haiku
			;;
i[3-7]86-*-vxworks*)	targ_emul=elf_i386_vxworks
			;;
i[3-7]86-*-chaos)	targ_emul=elf_i386_chaos
@@ -448,6 +456,8 @@
			targ_extra_emuls="m68hc12elfb m68hc11elf m68hc11elfb"
			;;
m68*-*-netbsdelf*)	targ_emul=m68kelfnbsd
			;;
m68*-*-haiku*)		targ_emul=m68kelf
			;;
m68*-*-*)		targ_emul=m68kelf
			;;
@@ -478,6 +488,9 @@
			targ_extra_emuls="elf32bsmip elf64bmip"
			targ_extra_libpath=$targ_extra_emuls
			;;
mips*el-*-haiku*)	targ_emul=elf_mipsel_haiku
			targ_extra_emuls="elf32ltsmip elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
			;;
mips*el-*-netbsd*)	targ_emul=elf32ltsmip
			targ_extra_emuls="elf32btsmip elf64ltsmip elf64btsmip"
			;;
@@ -733,6 +746,8 @@
			;;
powerpc-*-beos*)	targ_emul=aixppc
			targ_extra_ofiles=
			;;
powerpc-*-haiku*)	targ_emul=elf32ppchaiku
			;;
powerpc-*-windiss*)	targ_emul=elf32ppcwindiss
			;;
@@ -864,6 +879,8 @@
			targ_extra_libpath=$targ_extra_emuls
			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
			;;
sparc64-*-haiku*)	targ_emul=elf64_sparc
			;;
sparc64-*-*)		targ_emul=elf64_sparc
			;;
sparc*-*-linux-*)	targ_emul=elf32_sparc
@@ -931,6 +948,9 @@
x86_64-*-rdos*)		targ_emul=elf64rdos
			;;
x86_64-*-cloudabi*)	targ_emul=elf_x86_64_cloudabi
			;;
x86_64-*-haiku*)	targ_emul=elf_x86_64_haiku
			targ_extra_emuls="elf_x86_64 elf_i386_haiku"
			;;
x86_64-*-linux-gnux32)	targ_emul=elf32_x86_64
			targ_extra_emuls="elf_x86_64 elf_i386 elf_iamcu elf_l1om elf_k1om"
diff --git a/binutils/opcodes/configure b/binutils/opcodes/configure
index 2e73c17..608df19 100755
--- a/binutils/opcodes/configure
+++ a/binutils/opcodes/configure
@@ -10633,7 +10633,7 @@
  soname_spec='${libname}${release}${shared_ext}$major'
  shlibpath_var=LIBRARY_PATH
  shlibpath_overrides_runpath=yes
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
  hardcode_into_libs=yes
  ;;

diff --git a/binutils/gas/config/tc-i386.c b/binutils/gas/config/tc-i386.c
index 9a2dfc9..c24dac6 100644
--- a/binutils/gas/config/tc-i386.c
+++ a/binutils/gas/config/tc-i386.c
@@ -486,6 +486,7 @@
#if ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))	\
     && !defined (TE_GNU)				\
     && !defined (TE_LINUX)				\
     && !defined (TE_Haiku)				\
     && !defined (TE_FreeBSD)				\
     && !defined (TE_DragonFly)				\
     && !defined (TE_NetBSD))
diff --git a/binutils/gas/config/te-haiku.h b/binutils/gas/config/te-haiku.h
new file mode 100644
index 0000000..4455717 100644
--- /dev/null
+++ a/binutils/gas/config/te-haiku.h
@@ -1,0 +1,30 @@
/* te-haiku.h -- Haiku target environment declarations.
   Copyright 2013 Free Software Foundation, Inc.

   This file is part of GAS, the GNU Assembler.

   GAS is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   any later version.

   GAS is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with GAS; see the file COPYING.  If not, write to
   the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
   02110-1301, USA.  */

/* Target environment for BeOS/Haiku.  It is the same as the generic
   target, except that it arranges via the TE_BeOS define to
   suppress the use of "/" as a comment character.  Some code in the
   haiku kernel uses "/" to mean division.  (What a concept!)  */
#define TE_Haiku 1

#define LOCAL_LABELS_DOLLAR 1
#define LOCAL_LABELS_FB 1

#include "obj-format.h"
diff --git a/binutils/ld/emulparams/aarch64haiku.sh b/binutils/ld/emulparams/aarch64haiku.sh
new file mode 100644
index 0000000..b0298ec 100644
--- /dev/null
+++ a/binutils/ld/emulparams/aarch64haiku.sh
@@ -1,0 +1,39 @@
ARCH=aarch64
MACHINE=
NOP=0x1f2003d5

SCRIPT_NAME=elf
ELFSIZE=64
OUTPUT_FORMAT="elf64-littleaarch64"
BIG_OUTPUT_FORMAT="elf64-bigaarch64"
LITTLE_OUTPUT_FORMAT="elf64-littleaarch64"
NO_REL_RELOCS=yes

TEMPLATE_NAME=elf
EXTRA_EM_FILE=aarch64elf

GENERATE_SHLIB_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes

MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
SEPARATE_GOTPLT=24
IREL_IN_PLT=

TEXT_START_ADDR=0x400000

DATA_START_SYMBOLS='PROVIDE (__data_start = .);';

# AArch64 does not support .s* sections.
NO_SMALL_DATA=yes

OTHER_BSS_SYMBOLS="${CREATE_SHLIB+PROVIDE (}__bss_start__ = .${CREATE_SHLIB+)};"
OTHER_BSS_END_SYMBOLS="${CREATE_SHLIB+PROVIDE (}_bss_end__ = .${CREATE_SHLIB+)}; ${CREATE_SHLIB+PROVIDE (}__bss_end__ = .${CREATE_SHLIB+)};"
OTHER_END_SYMBOLS="${CREATE_SHLIB+PROVIDE (}__end__ = .${CREATE_SHLIB+)};"

OTHER_SECTIONS='.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }'
ATTRS_SECTIONS='.ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }'
# Ensure each PLT entry is aligned to a cache line.
PLT=".plt          ${RELOCATING-0} : ALIGN(16) { *(.plt)${RELOCATING+${IREL_IN_PLT+ *(.iplt)}} }"

. ${srcdir}/emulparams/elf_haiku.sh
diff --git a/binutils/ld/emulparams/armelf_haiku.sh b/binutils/ld/emulparams/armelf_haiku.sh
new file mode 100644
index 0000000..c42060f 100644
--- /dev/null
+++ a/binutils/ld/emulparams/armelf_haiku.sh
@@ -1,0 +1,33 @@
ARCH=arm
SCRIPT_NAME=elf
OUTPUT_FORMAT="elf32-littlearm"
BIG_OUTPUT_FORMAT="elf32-bigarm"
LITTLE_OUTPUT_FORMAT="elf32-littlearm"
MAXPAGESIZE=0x8000
COMMONPAGESIZE=0x1000
TEMPLATE_NAME=elf
EXTRA_EM_FILE=armelf
GENERATE_SHLIB_SCRIPT=yes
GENERATE_PIE_SCRIPT=yes

DATA_START_SYMBOLS='__data_start = . ;';
OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)'
OTHER_BSS_SYMBOLS='__bss_start__ = .;'
OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;'
OTHER_END_SYMBOLS='__end__ = . ;'
OTHER_SECTIONS='.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }'

# Use the ARM ABI-compliant exception-handling sections.
OTHER_READONLY_SECTIONS="
  .ARM.extab ${RELOCATING-0} : { *(.ARM.extab${RELOCATING+* .gnu.linkonce.armextab.*}) }
  ${RELOCATING+ PROVIDE_HIDDEN (__exidx_start = .); }
  .ARM.exidx ${RELOCATING-0} : { *(.ARM.exidx${RELOCATING+* .gnu.linkonce.armexidx.*}) }
  ${RELOCATING+ PROVIDE_HIDDEN (__exidx_end = .); }"

TEXT_START_ADDR=0x00008000
TARGET2_TYPE=got-rel

# ARM does not support .s* sections.
NO_SMALL_DATA=yes

. ${srcdir}/emulparams/elf_haiku.sh
diff --git a/binutils/ld/emulparams/elf32ppchaiku.sh b/binutils/ld/emulparams/elf32ppchaiku.sh
new file mode 100644
index 0000000..547e5c8 100644
--- /dev/null
+++ a/binutils/ld/emulparams/elf32ppchaiku.sh
@@ -1,0 +1,7 @@
. ${srcdir}/emulparams/elf32ppc.sh
. ${srcdir}/emulparams/elf_haiku.sh
TEXT_START_ADDR=0x200000
MAXPAGESIZE=0x1000
GENERATE_SHLIB_SCRIPT=yes
BSS_PLT=
LIBPATH_SUFFIX=
diff --git a/binutils/ld/emulparams/elf_haiku.sh b/binutils/ld/emulparams/elf_haiku.sh
new file mode 100644
index 0000000..401eedc 100644
--- /dev/null
+++ a/binutils/ld/emulparams/elf_haiku.sh
@@ -1,0 +1,1 @@
ELF_INTERPRETER_NAME=\"/system/runtime_loader\"
diff --git a/binutils/ld/emulparams/elf_i386_haiku.sh b/binutils/ld/emulparams/elf_i386_haiku.sh
new file mode 100644
index 0000000..565df04 100644
--- /dev/null
+++ a/binutils/ld/emulparams/elf_i386_haiku.sh
@@ -1,0 +1,12 @@
SCRIPT_NAME=elf
OUTPUT_FORMAT="elf32-i386"
TEXT_START_ADDR=0x200000
NONPAGED_TEXT_START_ADDR=0x200000
MAXPAGESIZE=0x1000
ARCH=i386
MACHINE=
NOP=0x90909090
TEMPLATE_NAME=elf
GENERATE_SHLIB_SCRIPT=yes
NO_SMALL_DATA=yes
. ${srcdir}/emulparams/elf_haiku.sh
diff --git a/binutils/ld/emulparams/elf_mipsel_haiku.sh b/binutils/ld/emulparams/elf_mipsel_haiku.sh
new file mode 100644
index 0000000..ab38e23 100644
--- /dev/null
+++ a/binutils/ld/emulparams/elf_mipsel_haiku.sh
@@ -1,0 +1,3 @@
. ${srcdir}/emulparams/elf32lmip.sh
. ${srcdir}/emulparams/elf_haiku.sh

diff --git a/binutils/ld/emulparams/elf_x86_64_haiku.sh b/binutils/ld/emulparams/elf_x86_64_haiku.sh
new file mode 100644
index 0000000..f049559 100644
--- /dev/null
+++ a/binutils/ld/emulparams/elf_x86_64_haiku.sh
@@ -1,0 +1,2 @@
. ${srcdir}/emulparams/elf_x86_64.sh
. ${srcdir}/emulparams/elf_haiku.sh