From 7c3988da64e4bf5ccc4aae6d02784921707488dd Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Tue, 24 Aug 2021 22:08:45 -0500 Subject: [PATCH] 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 Reviewed-by: Alex von Gluck IV --- 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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/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 +++ b/binutils/ld/emulparams/elf_x86_64_haiku.sh @@ -1,0 +1,2 @@ +. ${srcdir}/emulparams/elf_x86_64.sh +. ${srcdir}/emulparams/elf_haiku.sh -- gitore 0.2.2