From da7d5efeb4e2aa981ab3c790f6e26164589a60e8 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 25 Jan 2009 21:45:27 +0000 Subject: [PATCH] Applying Haiku support. git-svn-id: file:///srv/svn/repos/haiku/buildtools/trunk@29025 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- binutils/libtool.m4 | 15 +++++++++++++++ binutils/bfd/config.bfd | 15 +++++++++++++++ binutils/bfd/elf32-ppc.c | 2 +- binutils/gas/configure.tgt | 8 ++++++-- binutils/ld/Makefile.am | 13 +++++++++++++ binutils/ld/Makefile.in | 13 +++++++++++++ binutils/ld/configure.tgt | 7 ++++++- binutils/gas/config/tc-i386.c | 3 ++- 8 files changed, 68 insertions(+), 8 deletions(-) diff --git a/binutils/libtool.m4 b/binutils/libtool.m4 index 26a039a..e47754a 100644 --- a/binutils/libtool.m4 +++ b/binutils/libtool.m4 @@ -2211,6 +2211,15 @@ hardcode_into_libs=yes ;; +haiku*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. @@ -2888,6 +2897,10 @@ ;; gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -3110,7 +3123,7 @@ [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin* | *-*-haiku*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) diff --git a/binutils/bfd/config.bfd b/binutils/bfd/config.bfd index 9309502..ea88e37 100644 --- a/binutils/bfd/config.bfd +++ b/binutils/bfd/config.bfd @@ -271,7 +271,7 @@ ;; arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \ arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \ - arm*-*-eabi* ) + arm*-*-eabi* | arm*-*-haiku*) targ_defvec=bfd_elf32_littlearm_vec targ_selvecs=bfd_elf32_bigarm_vec ;; @@ -652,6 +652,9 @@ targ_defvec=bfd_elf32_i386_vec targ_selvecs="i386pe_vec i386pei_vec" ;; + i[3-7]86-*-haiku*) + targ_defvec=bfd_elf32_i386_vec + ;; i[3-7]86-*-interix*) targ_defvec=i386pei_vec targ_selvecs="i386pe_vec" @@ -833,7 +836,10 @@ targ_selvecs=ieee_vec targ_underscore=yes ;; - + m68*-*-haiku*) + targ_defvec=bfd_elf32_m68k_vec + targ_selvecs="m68kcoff_vec ieee_vec" + ;; m88*-harris-cxux* | m88*-*-dgux* | m88*-*-sysv4*) targ_defvec=bfd_elf32_m88k_vec targ_selvecs=m88kbcs_vec @@ -1119,6 +1125,11 @@ targ_defvec=mach_o_be_vec targ_selvecs="mach_o_be_vec mach_o_le_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec" targ_archs="bfd_powerpc_arch bfd_rs6000_arch bfd_i386_arch" + ;; + powerpc-*-haiku*) + targ_defvec=bfd_elf32_powerpc_vec + targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec pef_vec pef_xlib_vec pmac_xcoff_vec ppcboot_vec" + targ_cflags=-D__HAIKU_TARGET__ ;; powerpc-*-macos*) targ_defvec=pmac_xcoff_vec diff --git a/binutils/bfd/elf32-ppc.c b/binutils/bfd/elf32-ppc.c index 1d9cabd..2ce6556 100644 --- a/binutils/bfd/elf32-ppc.c +++ b/binutils/bfd/elf32-ppc.c @@ -8054,7 +8054,7 @@ #define TARGET_BIG_NAME "elf32-powerpc" #define ELF_ARCH bfd_arch_powerpc #define ELF_MACHINE_CODE EM_PPC -#ifdef __QNXTARGET__ +#if defined(__QNXTARGET__) || defined(__HAIKU_TARGET__) #define ELF_MAXPAGESIZE 0x1000 #else #define ELF_MAXPAGESIZE 0x10000 diff --git a/binutils/gas/configure.tgt b/binutils/gas/configure.tgt index 76b10be..483ff91 100644 --- a/binutils/gas/configure.tgt +++ b/binutils/gas/configure.tgt @@ -123,6 +123,7 @@ arm-wince-pe | arm-*-wince) fmt=coff em=wince-pe ;; arm-*-pe | thumb-*-pe) fmt=coff em=pe ;; arm-*-riscix*) fmt=aout em=riscix ;; + arm-*-haiku*) fmt=elf em=haiku ;; avr-*-*) fmt=elf bfd_gas=yes ;; @@ -174,9 +175,10 @@ i386-ibm-aix*) fmt=coff em=i386aix ;; i386-sequent-bsd*) fmt=aout em=dynix ;; i386-*-beospe*) fmt=coff em=pe ;; - i386-*-beos*) fmt=elf ;; + i386-*-beos*) fmt=elf em=beos ;; i386-*-coff) fmt=coff ;; i386-*-elf) fmt=elf ;; + i386-*-haiku*) fmt=elf em=haiku ;; i386-*-kaos*) fmt=elf ;; i386-*-bsd*) fmt=aout em=386bsd ;; i386-*-netbsd0.8) fmt=aout em=386bsd ;; @@ -262,6 +264,7 @@ m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; m68k-*-psos*) fmt=elf em=psos;; + m68k-*-haiku*) fmt=elf em=haiku ;; maxq-*-coff) fmt=coff bfd_gas=yes ;; @@ -318,9 +321,10 @@ ppc-*-aix5.[01]) fmt=coff em=aix5 ;; ppc-*-aix5.*) fmt=coff em=aix5 ;; ppc-*-aix*) fmt=coff ;; - ppc-*-beos*) fmt=coff ;; + ppc-*-beos*) fmt=coff em=beos ;; 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-*-rtems*) fmt=elf ;; diff --git a/binutils/ld/Makefile.am b/binutils/ld/Makefile.am index 0093c88..e5f90b0 100644 --- a/binutils/ld/Makefile.am +++ b/binutils/ld/Makefile.am @@ -121,6 +121,7 @@ earmelf.o \ earmelfb.o \ earmelf_fbsd.o \ + earmelf_haiku.o \ earmelf_linux.o \ earmelf_linux_eabi.o \ earmelfb_linux.o \ @@ -208,7 +209,9 @@ eelf_i386_be.o \ eelf_i386_chaos.o \ eelf_i386_fbsd.o \ + eelf_i386_haiku.o \ eelf_i386_ldso.o \ + eelf_ppc_haiku.o \ eelf_i386_vxworks.o \ eelf_s390.o \ egld960.o \ @@ -539,6 +542,10 @@ $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} armelf_fbsd "$(tdir_armelf_fbsd)" +earmelf_haiku.c: $(srcdir)/emulparams/armelf_haiku.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} armelf_haiku "$(tdir_armelf_haiku)" earmelf_linux.c: $(srcdir)/emulparams/armelf_linux.sh \ $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1023,9 +1030,15 @@ $(srcdir)/emulparams/elf_i386.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_i386_fbsd "$(tdir_elf_i386_fbsd)" +eelf_i386_haiku.c: $(srcdir)/emulparams/elf_i386_haiku.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf_i386_haiku "$(tdir_elf_i386_haiku)" eelf_i386_ldso.c: $(srcdir)/emulparams/elf_i386_ldso.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_i386_ldso "$(tdir_elf_i386_ldso)" +eelf_ppc_haiku.c: $(srcdir)/emulparams/elf_ppc_haiku.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf_ppc_haiku "$(tdir_elf_ppc_haiku)" eelf_i386_vxworks.c: $(srcdir)/emulparams/elf_i386_vxworks.sh \ $(srcdir)/emulparams/vxworks.sh $(srcdir)/emultempl/vxworks.em \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/binutils/ld/Makefile.in b/binutils/ld/Makefile.in index 309e8e6..0c94dde 100644 --- a/binutils/ld/Makefile.in +++ b/binutils/ld/Makefile.in @@ -372,6 +372,7 @@ earmelf.o \ earmelfb.o \ earmelf_fbsd.o \ + earmelf_haiku.o \ earmelf_linux.o \ earmelf_linux_eabi.o \ earmelfb_linux.o \ @@ -459,7 +460,9 @@ eelf_i386_be.o \ eelf_i386_chaos.o \ eelf_i386_fbsd.o \ + eelf_i386_haiku.o \ eelf_i386_ldso.o \ + eelf_ppc_haiku.o \ eelf_i386_vxworks.o \ eelf_s390.o \ egld960.o \ @@ -1369,6 +1372,10 @@ $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} armelf_fbsd "$(tdir_armelf_fbsd)" +earmelf_haiku.c: $(srcdir)/emulparams/armelf_haiku.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \ + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} armelf_haiku "$(tdir_armelf_haiku)" earmelf_linux.c: $(srcdir)/emulparams/armelf_linux.sh \ $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} @@ -1853,9 +1860,15 @@ $(srcdir)/emulparams/elf_i386.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_i386_fbsd "$(tdir_elf_i386_fbsd)" +eelf_i386_haiku.c: $(srcdir)/emulparams/elf_i386_haiku.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf_i386_haiku "$(tdir_elf_i386_haiku)" eelf_i386_ldso.c: $(srcdir)/emulparams/elf_i386_ldso.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ${GENSCRIPTS} elf_i386_ldso "$(tdir_elf_i386_ldso)" +eelf_ppc_haiku.c: $(srcdir)/emulparams/elf_ppc_haiku.sh \ + $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} + ${GENSCRIPTS} elf_ppc_haiku "$(tdir_elf_ppc_haiku)" eelf_i386_vxworks.c: $(srcdir)/emulparams/elf_i386_vxworks.sh \ $(srcdir)/emulparams/vxworks.sh $(srcdir)/emultempl/vxworks.em \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/binutils/ld/configure.tgt b/binutils/ld/configure.tgt index 3f7e79b..baf99c9 100644 --- a/binutils/ld/configure.tgt +++ b/binutils/ld/configure.tgt @@ -93,6 +93,7 @@ ;; arm-*-vxworks) targ_emul=armelf_vxworks ;; arm*-*-conix*) targ_emul=armelf ;; +arm*-*-haiku*) targ_emul=armelf_haiku; targ_extra_emuls=armelf ;; thumb-*-linux-* | thumb-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; strongarm-*-coff) targ_emul=armcoff ;; strongarm-*-elf) targ_emul=armelf ;; @@ -274,6 +275,7 @@ targ_extra_ofiles="deffilep.o pe-dll.o" ;; 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 ;; @@ -340,7 +342,9 @@ targ_extra_emuls="m68kelfnbsd m68k4knbsd" ;; m68*-*-psos*) targ_emul=m68kpsos ;; m68*-*-rtemscoff*) targ_emul=m68kcoff ;; -m68*-*-rtems*) targ_emul=m68kelf +m68*-*-rtems*) targ_emul=m68kelf ;; +m68*-*-haiku*) targ_emul=m68kelf + targ_extra_emuls=m68kcoff ;; m8*-*-*) targ_emul=m88kbcs ;; @@ -485,6 +489,7 @@ powerpc-*-aix5*) targ_emul=aix5ppc ;; powerpc-*-aix*) targ_emul=aixppc ;; powerpc-*-beos*) targ_emul=aixppc ;; +powerpc-*-haiku*) targ_emul=elf_ppc_haiku ;; powerpc-*-windiss*) targ_emul=elf32ppcwindiss ;; powerpc-*-lynxos*) targ_emul=ppclynx ;; rs6000-*-aix5*) targ_emul=aix5rs6 ;; diff --git a/binutils/gas/config/tc-i386.c b/binutils/gas/config/tc-i386.c index df76ae9..4525b7b 100644 --- a/binutils/gas/config/tc-i386.c +++ b/binutils/gas/config/tc-i386.c @@ -319,7 +319,8 @@ && !defined (TE_LINUX) \ && !defined (TE_NETWARE) \ && !defined (TE_FreeBSD) \ - && !defined (TE_NetBSD))) + && !defined (TE_NetBSD) \ + && !defined (TE_BeOS))) /* This array holds the chars that always start a comment. If the pre-processor is disabled, these aren't very useful. The option --divide will remove '/' from this list. */ -- gitore 0.2.2