Add support for the haiku operating system. These are the os support patches we...
authorAlexander von Gluck IV <kallisti5@unixzen.com>
Thu, 2 Sep 2021 11:19:14 +0000 (12:19 +0100)
committerNick Clifton <nickc@redhat.com>
Thu, 2 Sep 2021 11:19:14 +0000 (12:19 +0100)
23 files changed:
bfd/config.bfd
bfd/configure
binutils/configure
configure
configure.ac
gas/config/tc-i386.c
gas/config/te-haiku.h [new file with mode: 0644]
gas/configure
gas/configure.tgt
gprof/configure
ld/Makefile.am
ld/Makefile.in
ld/configure
ld/configure.tgt
ld/emulparams/aarch64haiku.sh [new file with mode: 0644]
ld/emulparams/armelf_haiku.sh [new file with mode: 0644]
ld/emulparams/elf32ppchaiku.sh [new file with mode: 0644]
ld/emulparams/elf_haiku.sh [new file with mode: 0644]
ld/emulparams/elf_i386_haiku.sh [new file with mode: 0644]
ld/emulparams/elf_mipsel_haiku.sh [new file with mode: 0644]
ld/emulparams/elf_x86_64_haiku.sh [new file with mode: 0644]
libtool.m4
opcodes/configure

index 50e356d2e9e6765b82791075886bbbed8214ded1..7f7c12d4b2d6ebdba17910dd35a7ab76674f0429 100644 (file)
@@ -269,6 +269,11 @@ case "${targ}" in
     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"
@@ -353,6 +358,10 @@ case "${targ}" in
     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
     targ_selvecs="arm_elf32_nacl_be_vec"
@@ -679,6 +688,11 @@ case "${targ}" in
     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*)
     targ_defvec=x86_64_elf64_vec
     targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
@@ -729,6 +743,9 @@ case "${targ}" in
     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
     targ_selvecs="i386_pe_vec"
@@ -794,6 +811,9 @@ case "${targ}" in
     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"
@@ -848,6 +868,10 @@ case "${targ}" in
     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
     targ_selvecs="mips_elf32_n_le_vec mips_elf32_be_vec mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
@@ -1047,6 +1071,11 @@ case "${targ}" in
     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])
     targ_defvec=rs6000_xcoff64_aix_vec
@@ -1299,6 +1328,11 @@ case "${targ}" in
     targ_selvecs="sparc_elf64_sol2_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)
     targ_defvec=sparc_elf64_fbsd_vec
     targ_selvecs="sparc_elf64_vec sparc_elf32_vec"
index eb45ead43ce8fd6d8e1068739e8540ed8151789a..cae69d413d497c26b9e1e1da5f478f5b10c44207 100755 (executable)
@@ -10248,7 +10248,7 @@ haiku*)
   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
   ;;
 
index 373fb180f74c59320e09305ed8c0b26560f9c9a5..29201153aeb573c3f8f1cebf3d9a813ce4f3f607 100755 (executable)
@@ -10135,7 +10135,7 @@ haiku*)
   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
   ;;
 
index 3dd206525a7b723e48d9e67479cfe6c137bc6b65..fcec657de7a84d658700519f8db5e7acf6718459 100755 (executable)
--- a/configure
+++ b/configure
@@ -3013,7 +3013,7 @@ case "${ENABLE_GOLD}" in
       *-*-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*)
             ;;
index 797a624621e459f090028260fd22e664acfc7136..1b1aa80f7c776e66e8aee546d519fdb432d320ec 100644 (file)
@@ -336,7 +336,7 @@ case "${ENABLE_GOLD}" in
       *-*-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*)
             ;;
index 7148c07324709bf05b4a55558df0b92ee59f5e38..339f9694948e260c062e72ee190ca579102ce5a6 100644 (file)
@@ -478,6 +478,7 @@ const char extra_symbol_chars[] = "*%-([{}"
 #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/gas/config/te-haiku.h b/gas/config/te-haiku.h
new file mode 100644 (file)
index 0000000..4455717
--- /dev/null
@@ -0,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"
index 7a528fd485e33d59b934d86a5cb3324425a4a1dc..a63c6ff0e392bcab61f796429afac78d6335736b 100755 (executable)
@@ -9860,7 +9860,7 @@ haiku*)
   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
   ;;
 
index 68ee0468e8dd07af93e20f1b8bae3cd5ad64f0ee..550fa4098f8fecb4531c0b693e16c43ad1f832eb 100644 (file)
@@ -125,6 +125,7 @@ generic_target=${cpu_type}-$vendor-$os
 case ${generic_target} in
   aarch64*-*-elf*)                     fmt=elf;;
   aarch64*-*-fuchsia*)                 fmt=elf;;
+  aarch64*-*-haiku*)                   fmt=elf em=haiku ;;
   aarch64*-*-genode*)                  fmt=elf;;
   aarch64*-*-linux*)                   fmt=elf em=linux
     case ${cpu}-${os} in
@@ -161,6 +162,7 @@ case ${generic_target} in
                                        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 @@ case ${generic_target} in
   i386-*-elfiamcu)                     fmt=elf arch=iamcu ;;
   i386-*-elf*)                         fmt=elf ;;
   i386-*-fuchsia*)                     fmt=elf ;;
+  i386-*-haiku*)                       fmt=elf em=haiku ;;
   i386-*-genode*)                      fmt=elf ;;
   i386-*-bsd*)                         fmt=aout em=386bsd ;;
   i386-*-netbsd*-gnu* | \
@@ -288,6 +291,7 @@ case ${generic_target} in
   m68k-*-uclinux*)                     fmt=elf em=uclinux ;;
   m68k-*-gnu*)                         fmt=elf ;;
   m68k-*-netbsd*)                      fmt=elf em=nbsd ;;
+  m68k-*-haiku*)                       fmt=elf em=haiku ;;
 
   s12z-*-*)                            fmt=elf ;;
 
@@ -309,6 +313,7 @@ case ${generic_target} in
   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 @@ case ${generic_target} in
   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 @@ case ${generic_target} in
 
   pru-*-*)                             fmt=elf ;;
 
+  riscv*-*-haiku*)                     fmt=elf endian=little em=haiku ;;
   riscv*-*-*)                          fmt=elf ;;
 
   rx-*-linux*)                         fmt=elf em=linux ;;
@@ -386,6 +393,7 @@ case ${generic_target} in
   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 ;;
index 5703bba4462e54de821261ec9163655cf1686946..f88c0ea48c3b3300e7e4b9ec6c4b7fffb533d577 100755 (executable)
@@ -9762,7 +9762,7 @@ haiku*)
   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
   ;;
 
index f8e99325361a12e7c078e62512ae0d16783f8afe..0abbde441df6715291158446da4126d685beefd1 100644 (file)
@@ -167,6 +167,7 @@ ALL_EMULATION_SOURCES = \
        earmelf.c \
        earmelf_fbsd.c \
        earmelf_fuchsia.c \
+       earmelf_haiku.c \
        earmelf_linux.c \
        earmelf_linux_eabi.c \
        earmelf_linux_fdpiceabi.c \
@@ -258,6 +259,7 @@ ALL_EMULATION_SOURCES = \
        eelf32ppc.c \
        eelf32ppc_fbsd.c \
        eelf32ppclinux.c \
+       eelf32ppchaiku.c \
        eelf32ppcnto.c \
        eelf32ppcsim.c \
        eelf32ppcvxworks.c \
@@ -279,9 +281,11 @@ ALL_EMULATION_SOURCES = \
        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 \
@@ -383,6 +387,7 @@ ALL_64_EMULATION_SOURCES = \
        eaarch64cloudabib.c \
        eaarch64fbsd.c \
        eaarch64fbsdb.c \
+       eaarch64haiku.c \
        eaarch64linux.c \
        eaarch64linuxb.c \
        eaarch64linux32.c \
@@ -454,6 +459,7 @@ ALL_64_EMULATION_SOURCES = \
        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 \
index ef2e99e08da73518f8c3a18e043352f342bbfbb5..2b83b5e619c3bc8798696252b2e832d77d642d12 100644 (file)
@@ -657,6 +657,7 @@ ALL_EMULATION_SOURCES = \
        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 @@ ALL_EMULATION_SOURCES = \
        eelf32or1k_linux.c \
        eelf32ppc.c \
        eelf32ppc_fbsd.c \
+       eelf32ppchaiku.c \
        eelf32ppclinux.c \
        eelf32ppcnto.c \
        eelf32ppcsim.c \
@@ -769,10 +771,12 @@ ALL_EMULATION_SOURCES = \
        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 \
@@ -872,6 +876,7 @@ ALL_64_EMULATION_SOURCES = \
        eaarch64cloudabib.c \
        eaarch64fbsd.c \
        eaarch64fbsdb.c \
+       eaarch64haiku.c \
        eaarch64linux.c \
        eaarch64linuxb.c \
        eaarch64linux32.c \
@@ -943,6 +948,7 @@ ALL_64_EMULATION_SOURCES = \
        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 @@ distclean-compile:
 @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 @@ distclean-compile:
 @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@
@@ -1379,6 +1387,7 @@ distclean-compile:
 @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@
@@ -1433,6 +1442,7 @@ distclean-compile:
 @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@
@@ -2437,6 +2447,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
 @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@
@@ -2598,6 +2609,7 @@ $(ALL_EMULATION_SOURCES) $(ALL_64_EMULATION_SOURCES): $(GEN_DEPENDS)
 @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@
index 33b7de33d1decaa960146e756ff78dc97e4acd2e..6ea123b2a9e390d1dfc3ba2ec1354a143ee5f413 100755 (executable)
@@ -10616,7 +10616,7 @@ haiku*)
   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
   ;;
 
@@ -14266,7 +14266,7 @@ haiku*)
   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
   ;;
 
index d46ed620c179131246bc8365e7d445dc98cdd819..5411104ec36a10a7154f498bcfa5837ae836040e 100644 (file)
@@ -77,6 +77,9 @@ aarch64-*-linux*)     targ_emul=aarch64linux
                        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*-*-conix*)              targ_emul=armelf
 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"
                        ;;
@@ -395,6 +401,8 @@ i[3-7]86-*-beospe*) targ_emul=i386beos
                        ;;
 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 @@ m68hc12-*-*|m6812-*-*)      targ_emul=m68hc12elf
                        ;;
 m68*-*-netbsd*)        targ_emul=m68kelfnbsd
                        ;;
+m68*-*-haiku*)         targ_emul=m68kelf
+                       ;;
 m68*-*-*)              targ_emul=m68kelf
                        ;;
 mcore-*-pe)            targ_emul=mcorepe ;
@@ -477,6 +487,9 @@ mips*-sgi-irix6*)   targ_emul=elf32bmipn32
                        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-*-aix*)             targ_emul=aixppc
 powerpc-*-beos*)       targ_emul=aixppc
                        targ_extra_ofiles=
                        ;;
+powerpc-*-haiku*)      targ_emul=elf32ppchaiku
+                       ;;
 powerpc-*-windiss*)    targ_emul=elf32ppcwindiss
                        ;;
 pru*-*-*)              targ_emul=pruelf
@@ -869,6 +884,8 @@ sparc64-*-solaris2* | sparcv9-*-solaris2*)
                        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
@@ -936,6 +953,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"
                        targ_extra_libpath="elf_i386 elf_iamcu elf_x86_64 elf_l1om elf_k1om"
diff --git a/ld/emulparams/aarch64haiku.sh b/ld/emulparams/aarch64haiku.sh
new file mode 100644 (file)
index 0000000..b0298ec
--- /dev/null
@@ -0,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/ld/emulparams/armelf_haiku.sh b/ld/emulparams/armelf_haiku.sh
new file mode 100644 (file)
index 0000000..c42060f
--- /dev/null
@@ -0,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/ld/emulparams/elf32ppchaiku.sh b/ld/emulparams/elf32ppchaiku.sh
new file mode 100644 (file)
index 0000000..547e5c8
--- /dev/null
@@ -0,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/ld/emulparams/elf_haiku.sh b/ld/emulparams/elf_haiku.sh
new file mode 100644 (file)
index 0000000..401eedc
--- /dev/null
@@ -0,0 +1 @@
+ELF_INTERPRETER_NAME=\"/system/runtime_loader\"
diff --git a/ld/emulparams/elf_i386_haiku.sh b/ld/emulparams/elf_i386_haiku.sh
new file mode 100644 (file)
index 0000000..6c4001e
--- /dev/null
@@ -0,0 +1,7 @@
+source_sh ${srcdir}/emulparams/elf_i386.sh
+source_sh ${srcdir}/emulparams/elf_haiku.sh
+TEXT_START_ADDR=0x200000
+NONPAGED_TEXT_START_ADDR=0x200000
+MAXPAGESIZE=0x1000
+NOP=0x90909090
+OUTPUT_FORMAT="elf32-i386"
diff --git a/ld/emulparams/elf_mipsel_haiku.sh b/ld/emulparams/elf_mipsel_haiku.sh
new file mode 100644 (file)
index 0000000..ab38e23
--- /dev/null
@@ -0,0 +1,3 @@
+. ${srcdir}/emulparams/elf32lmip.sh
+. ${srcdir}/emulparams/elf_haiku.sh
+
diff --git a/ld/emulparams/elf_x86_64_haiku.sh b/ld/emulparams/elf_x86_64_haiku.sh
new file mode 100644 (file)
index 0000000..f049559
--- /dev/null
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/elf_x86_64.sh
+. ${srcdir}/emulparams/elf_haiku.sh
index 9a13f3b117aa8446a6926c1677f515b8ef0d7a38..f69fc99f691aa2acae4cb7bf613eb5ebf868020c 100644 (file)
@@ -2362,7 +2362,7 @@ haiku*)
   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
   ;;
 
index 3513e408ce16eebe9f6b58c9fbc5c7098a29d402..9687cef467002e098bbf63bc1298f41bfab23a31 100755 (executable)
@@ -10012,7 +10012,7 @@ haiku*)
   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
   ;;