mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-03 05:28:53 +02:00
2896 lines
98 KiB
Plaintext
2896 lines
98 KiB
Plaintext
From 35da60e9dc98c57971809054ffe5da0f615a1c30 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= <jerome.duval@gmail.com>
|
|
Date: Sun, 19 Jul 2015 18:55:34 +0200
|
|
Subject: [PATCH 1/2] Haiku patch
|
|
|
|
---
|
|
compile | 0
|
|
config.rpath | 2 +
|
|
config/acx.m4 | 36 +--
|
|
configure.ac | 12 +
|
|
gcc/Makefile.in | 12 +-
|
|
gcc/config.gcc | 48 ++++
|
|
gcc/config.host | 8 +-
|
|
gcc/config/arm/haiku.h | 80 ++++++
|
|
gcc/config/arm/t-haiku | 21 ++
|
|
gcc/config/haiku-stdint.h | 55 +++++
|
|
gcc/config/haiku.h | 221 +++++++++++++++++
|
|
gcc/config/i386/haiku.h | 77 ++++++
|
|
gcc/config/i386/haiku64.h | 135 +++++++++++
|
|
gcc/config/i386/host-cygwin.c | 0
|
|
gcc/config/i386/t-haiku64 | 16 ++
|
|
gcc/config/i386/winnt-cxx.c | 0
|
|
gcc/config/i386/winnt-stubs.c | 0
|
|
gcc/config/m68k/haiku.h | 268 +++++++++++++++++++++
|
|
gcc/config/mips/haiku.h | 44 ++++
|
|
gcc/config/rs6000/haiku.h | 59 +++++
|
|
gcc/config/t-haiku | 4 +
|
|
gcc/configure.ac | 21 +-
|
|
gcc/defaults.h | 3 +-
|
|
gcc/ginclude/stdarg.h | 2 +-
|
|
gcc/ginclude/stddef.h | 10 +-
|
|
include/filenames.h | 2 +
|
|
libgcc/Makefile.in | 6 +
|
|
libgcc/config.host | 26 ++
|
|
libgcc/config/i386/t-cygming | 0
|
|
libgcc/config/t-haiku | 3 +
|
|
libgcc/crtstuff.c | 2 +
|
|
libstdc++-v3/config/os/haiku/ctype_base.h | 61 +++++
|
|
.../config/os/haiku/ctype_configure_char.cc | 99 ++++++++
|
|
libstdc++-v3/config/os/haiku/ctype_inline.h | 168 +++++++++++++
|
|
libstdc++-v3/config/os/haiku/error_constants.h | 178 ++++++++++++++
|
|
libstdc++-v3/config/os/haiku/os_defines.h | 45 ++++
|
|
libstdc++-v3/configure.host | 3 +
|
|
libstdc++-v3/crossconfig.m4 | 41 ++++
|
|
libstdc++-v3/libsupc++/tinfo.cc | 9 +
|
|
libtool.m4 | 14 +-
|
|
40 files changed, 1755 insertions(+), 36 deletions(-)
|
|
mode change 100755 => 100644 compile
|
|
create mode 100644 gcc/config/arm/haiku.h
|
|
create mode 100644 gcc/config/arm/t-haiku
|
|
create mode 100644 gcc/config/haiku-stdint.h
|
|
create mode 100644 gcc/config/haiku.h
|
|
create mode 100644 gcc/config/i386/haiku.h
|
|
create mode 100644 gcc/config/i386/haiku64.h
|
|
mode change 100644 => 100755 gcc/config/i386/host-cygwin.c
|
|
create mode 100644 gcc/config/i386/t-haiku64
|
|
mode change 100644 => 100755 gcc/config/i386/winnt-cxx.c
|
|
mode change 100644 => 100755 gcc/config/i386/winnt-stubs.c
|
|
create mode 100644 gcc/config/m68k/haiku.h
|
|
create mode 100644 gcc/config/mips/haiku.h
|
|
create mode 100644 gcc/config/rs6000/haiku.h
|
|
create mode 100644 gcc/config/t-haiku
|
|
mode change 100644 => 100755 libgcc/config/i386/t-cygming
|
|
create mode 100644 libgcc/config/t-haiku
|
|
create mode 100644 libstdc++-v3/config/os/haiku/ctype_base.h
|
|
create mode 100644 libstdc++-v3/config/os/haiku/ctype_configure_char.cc
|
|
create mode 100644 libstdc++-v3/config/os/haiku/ctype_inline.h
|
|
create mode 100644 libstdc++-v3/config/os/haiku/error_constants.h
|
|
create mode 100644 libstdc++-v3/config/os/haiku/os_defines.h
|
|
|
|
diff --git a/compile b/compile
|
|
old mode 100755
|
|
new mode 100644
|
|
diff --git a/config.rpath b/config.rpath
|
|
index 4dea759..5bcc5be 100755
|
|
--- a/config.rpath
|
|
+++ b/config.rpath
|
|
@@ -161,6 +161,8 @@ if test "$with_gnu_ld" = yes; then
|
|
;;
|
|
netbsd*)
|
|
;;
|
|
+ haiku*)
|
|
+ ;;
|
|
solaris* | sysv5*)
|
|
if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
|
|
ld_shlibs=no
|
|
diff --git a/config/acx.m4 b/config/acx.m4
|
|
index 9ff31eb..4b319f0 100644
|
|
--- a/config/acx.m4
|
|
+++ b/config/acx.m4
|
|
@@ -402,24 +402,30 @@ dnl for the parameter format "cmp file1 file2 skip1 skip2" which is
|
|
dnl accepted by cmp on some systems.
|
|
AC_DEFUN([ACX_PROG_CMP_IGNORE_INITIAL],
|
|
[AC_CACHE_CHECK([how to compare bootstrapped objects], gcc_cv_prog_cmp_skip,
|
|
-[ echo abfoo >t1
|
|
- echo cdfoo >t2
|
|
- gcc_cv_prog_cmp_skip='tail +16c $$f1 > tmp-foo1; tail +16c $$f2 > tmp-foo2; cmp tmp-foo1 tmp-foo2'
|
|
- if cmp t1 t2 2 2 > /dev/null 2>&1; then
|
|
- if cmp t1 t2 1 1 > /dev/null 2>&1; then
|
|
- :
|
|
- else
|
|
- gcc_cv_prog_cmp_skip='cmp $$f1 $$f2 16 16'
|
|
+[# comparing object files via cmp doesn't work on haiku (files will seemingly
|
|
+ # always differ), so we disassemble both files and compare the results:
|
|
+ if uname -o | grep -iq haiku; then
|
|
+ gcc_cv_prog_cmp_skip='objdump -Dz $$f1 | tail +6 >tmp-foo1; objdump -Dz $$f2 | tail +6 >tmp-foo2; cmp tmp-foo1 tmp-foo2'
|
|
+ else
|
|
+ gcc_cv_prog_cmp_skip='tail +16c $$f1 > tmp-foo1; tail +16c $$f2 > tmp-foo2; cmp tmp-foo1 tmp-foo2'
|
|
+ echo abfoo >t1
|
|
+ echo cdfoo >t2
|
|
+ if cmp t1 t2 2 2 > /dev/null 2>&1; then
|
|
+ if cmp t1 t2 1 1 > /dev/null 2>&1; then
|
|
+ :
|
|
+ else
|
|
+ gcc_cv_prog_cmp_skip='cmp $$f1 $$f2 16 16'
|
|
+ fi
|
|
fi
|
|
- fi
|
|
- if cmp --ignore-initial=2 t1 t2 > /dev/null 2>&1; then
|
|
- if cmp --ignore-initial=1 t1 t2 > /dev/null 2>&1; then
|
|
- :
|
|
- else
|
|
- gcc_cv_prog_cmp_skip='cmp --ignore-initial=16 $$f1 $$f2'
|
|
+ if cmp --ignore-initial=2 t1 t2 > /dev/null 2>&1; then
|
|
+ if cmp --ignore-initial=1 t1 t2 > /dev/null 2>&1; then
|
|
+ :
|
|
+ else
|
|
+ gcc_cv_prog_cmp_skip='cmp --ignore-initial=16 $$f1 $$f2'
|
|
+ fi
|
|
fi
|
|
+ rm t1 t2
|
|
fi
|
|
- rm t1 t2
|
|
])
|
|
do_compare="$gcc_cv_prog_cmp_skip"
|
|
AC_SUBST(do_compare)
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 987dfab..127b6d4 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -410,6 +410,9 @@ case "${host}" in
|
|
i[[3456789]]86-*-msdosdjgpp*)
|
|
noconfigdirs="$noconfigdirs tcl tk itcl"
|
|
;;
|
|
+ *-*-haiku*)
|
|
+ noconfigdirs="$noconfigdirs tk itcl libgui gdb"
|
|
+ ;;
|
|
esac
|
|
|
|
|
|
@@ -787,6 +790,9 @@ case "${target}" in
|
|
*-*-darwin*)
|
|
noconfigdirs="$noconfigdirs ${libgcj}"
|
|
;;
|
|
+ *-*-haiku*)
|
|
+ noconfigdirs="$noconfigdirs ${libgcj}"
|
|
+ ;;
|
|
*-*-netware*)
|
|
noconfigdirs="$noconfigdirs ${libgcj}"
|
|
;;
|
|
@@ -974,6 +980,9 @@ case "${target}" in
|
|
*-*-freebsd*)
|
|
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
|
;;
|
|
+ *-*-haiku*)
|
|
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
|
+ ;;
|
|
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
|
|
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
|
;;
|
|
@@ -1027,6 +1036,9 @@ case "${target}" in
|
|
with_gmp=/usr/local
|
|
fi
|
|
;;
|
|
+ *-*-haiku*)
|
|
+ noconfigdirs="$noconfigdirs gdb target-libiberty"
|
|
+ ;;
|
|
*-*-kaos*)
|
|
# Remove unsupported stuff on all kaOS configurations.
|
|
noconfigdirs="$noconfigdirs target-libgloss"
|
|
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
|
|
index 07c6f0a..41c4edb 100644
|
|
--- a/gcc/Makefile.in
|
|
+++ b/gcc/Makefile.in
|
|
@@ -101,6 +101,8 @@ build_objdir := $(toplevel_builddir)/$(build_subdir)
|
|
build_libobjdir := $(toplevel_builddir)/$(build_libsubdir)
|
|
target_objdir := $(toplevel_builddir)/$(target_subdir)
|
|
|
|
+HYBRID_SECONDARY = @HYBRID_SECONDARY@
|
|
+
|
|
# --------
|
|
# Defined vpaths
|
|
# --------
|
|
@@ -1989,6 +1991,10 @@ DRIVER_DEFINES = \
|
|
$(if $(SHLIB),$(if $(filter yes,@enable_shared@),-DENABLE_SHARED_LIBGCC)) \
|
|
-DCONFIGURE_SPECS="\"@CONFIGURE_SPECS@\""
|
|
|
|
+ifneq ($(HYBRID_SECONDARY),)
|
|
+DRIVER_DEFINES += -DHYBRID_SECONDARY="\"$(HYBRID_SECONDARY)\""
|
|
+endif
|
|
+
|
|
CFLAGS-gcc.o += $(DRIVER_DEFINES)
|
|
|
|
specs.h : s-specs ; @true
|
|
@@ -2561,7 +2567,7 @@ $(genprogerr:%=build/gen%$(build_exeext)): $(BUILD_ERRORS)
|
|
genprog = $(genprogerr) check checksum condmd match
|
|
|
|
# These programs need libs over and above what they get from the above list.
|
|
-build/genautomata$(build_exeext) : BUILD_LIBS += -lm
|
|
+build/genautomata$(build_exeext) : BUILD_LIBS += @build_math_library@
|
|
|
|
# For stage1 and when cross-compiling use the build libcpp which is
|
|
# built with NLS disabled. For stage2+ use the host library and
|
|
@@ -2623,6 +2629,10 @@ PREPROCESSOR_DEFINES = \
|
|
-DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
|
|
@TARGET_SYSTEM_ROOT_DEFINE@
|
|
|
|
+ifneq ($(HYBRID_SECONDARY),)
|
|
+PREPROCESSOR_DEFINES += -DHYBRID_SECONDARY="\"$(HYBRID_SECONDARY)\""
|
|
+endif
|
|
+
|
|
CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s)
|
|
cppbuiltin.o: $(BASEVER)
|
|
|
|
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
|
index 3ede69b..33548f6 100644
|
|
--- a/gcc/config.gcc
|
|
+++ b/gcc/config.gcc
|
|
@@ -688,6 +688,19 @@ case ${target} in
|
|
esac
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
+*-*-haiku*)
|
|
+ # This is the generic ELF configuration of Haiku. Later
|
|
+ # machine-specific sections may refine and add to this
|
|
+ # configuration.
|
|
+ #
|
|
+ gas=yes
|
|
+ gnu_ld=yes
|
|
+ tmake_file="t-slibgcc"
|
|
+ case ${enable_threads} in
|
|
+ "" | yes | posix) thread_file='posix' ;;
|
|
+ esac
|
|
+ default_use_cxa_atexit=yes
|
|
+ ;;
|
|
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
|
|
extra_options="$extra_options gnu-user.opt"
|
|
gas=yes
|
|
@@ -1034,6 +1047,16 @@ arm*-*-netbsdelf*)
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
tmake_file="${tmake_file} arm/t-arm"
|
|
;;
|
|
+arm*-*-haiku*)
|
|
+ tmake_file="${tmake_file} t-haiku arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-haiku"
|
|
+ tm_file="dbxelf.h elfos.h haiku.h arm/elf.h arm/bpabi.h arm/haiku.h haiku-stdint.h"
|
|
+ # The BPABI long long divmod functions return a 128-bit value in
|
|
+ # registers r0-r3. Correctly modeling that requires the use of
|
|
+ # TImode.
|
|
+ need_64bit_hwint=yes
|
|
+ default_use_cxa_atexit=yes
|
|
+ tm_file="${tm_file} arm/aout.h arm/arm.h"
|
|
+ ;;
|
|
arm*-*-linux-*) # ARM GNU/Linux with ELF
|
|
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
|
|
extra_options="${extra_options} linux-android.opt"
|
|
@@ -1392,6 +1415,14 @@ i[34567]86-*-freebsd*)
|
|
x86_64-*-freebsd*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
|
|
;;
|
|
+i[34567]86-*-haiku*)
|
|
+ tmake_file="${tmake_file} t-haiku i386/t-crtpic"
|
|
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h haiku.h i386/haiku.h haiku-stdint.h"
|
|
+ ;;
|
|
+x86_64-*-haiku*)
|
|
+ tmake_file="${tmake_file} t-haiku i386/t-haiku64"
|
|
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h haiku.h i386/haiku64.h haiku-stdint.h"
|
|
+ ;;
|
|
i[34567]86-*-netbsdelf*)
|
|
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h"
|
|
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
|
|
@@ -1914,6 +1945,13 @@ m68k-*-rtems*)
|
|
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h newlib-stdint.h"
|
|
tm_defines="${tm_defines} MOTOROLA=1"
|
|
;;
|
|
+m68k-*-haiku*)
|
|
+ default_m68k_cpu=68020
|
|
+ default_cf_cpu=5206
|
|
+ tmake_file="${tmake_file} m68k/t-m68kbare m68k/t-crtstuff t-haiku" #??
|
|
+ tm_file="${tm_file} dbxelf.h elfos.h haiku.h m68k/haiku.h"
|
|
+ tm_defines="${tm_defines} MOTOROLA=1"
|
|
+ ;;
|
|
mcore-*-elf)
|
|
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
|
|
tmake_file=mcore/t-mcore
|
|
@@ -1997,6 +2035,11 @@ mips*-mti-linux*)
|
|
gnu_ld=yes
|
|
gas=yes
|
|
;;
|
|
+mipsel-*-haiku*)
|
|
+ target_cpu_default="MASK_ABICALLS"
|
|
+ tm_file="elfos.h ${tm_file} haiku.h mips/haiku.h"
|
|
+ tmake_file="${tmake_file} mips/t-elf t-haiku"
|
|
+ ;;
|
|
mips*-*-linux*) # Linux MIPS, either endian.
|
|
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
|
|
extra_options="${extra_options} linux-android.opt"
|
|
@@ -2331,6 +2374,11 @@ powerpc-*-eabi*)
|
|
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
|
|
use_gcc_stdint=wrap
|
|
;;
|
|
+powerpc-*-haiku*)
|
|
+ tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppcos rs6000/t-ppccomm t-haiku"
|
|
+ tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h haiku.h rs6000/haiku.h"
|
|
+ extra_options="${extra_options} rs6000/sysv4.opt"
|
|
+ ;;
|
|
powerpc-*-rtems*)
|
|
tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
|
|
extra_options="${extra_options} rs6000/sysv4.opt"
|
|
diff --git a/gcc/config.host b/gcc/config.host
|
|
index b0f5940..2db7555 100644
|
|
--- a/gcc/config.host
|
|
+++ b/gcc/config.host
|
|
@@ -99,7 +99,7 @@ case ${host} in
|
|
esac
|
|
|
|
case ${host} in
|
|
- arm*-*-freebsd* | arm*-*-linux*)
|
|
+ arm*-*-freebsd* | arm*-*-haiku* | arm*-*-linux*)
|
|
case ${target} in
|
|
arm*-*-*)
|
|
host_extra_gcc_objs="driver-arm.o"
|
|
@@ -125,9 +125,11 @@ case ${host} in
|
|
;;
|
|
esac
|
|
;;
|
|
- mips*-*-linux*)
|
|
+ mips*-*-linux* \
|
|
+ | mips*-*-haiku* )
|
|
case ${target} in
|
|
- mips*-*-linux*)
|
|
+ mips*-*-linux* \
|
|
+ | mips*-*-haiku* )
|
|
host_extra_gcc_objs="driver-native.o"
|
|
host_xmake_file="${host_xmake_file} mips/x-native"
|
|
;;
|
|
diff --git a/gcc/config/arm/haiku.h b/gcc/config/arm/haiku.h
|
|
new file mode 100644
|
|
index 0000000..f0c0d63
|
|
--- /dev/null
|
|
+++ b/gcc/config/arm/haiku.h
|
|
@@ -0,0 +1,80 @@
|
|
+/* Definitions for ARM running Haiku systems using ELF
|
|
+ Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
|
+ 2005 Free Software Foundation, Inc.
|
|
+
|
|
+ This file is part of GCC.
|
|
+
|
|
+ GCC 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 2, or (at your option)
|
|
+ any later version.
|
|
+
|
|
+ GCC 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 GCC; see the file COPYING. If not, write to
|
|
+ the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
+ Boston, MA 02111-1307, USA. */
|
|
+
|
|
+/* Unsigned chars produces much better code than signed. */
|
|
+#define DEFAULT_SIGNED_CHAR 0
|
|
+
|
|
+#undef TARGET_DEFAULT_FLOAT_ABI
|
|
+#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
|
|
+
|
|
+/* We default to the "aapcs-linux" ABI so that enums are int-sized by
|
|
+ default. */
|
|
+#undef ARM_DEFAULT_ABI
|
|
+#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
|
|
+
|
|
+/* bpabi.h sets FPUTYPE_DEFAULT to VFP */
|
|
+
|
|
+#undef MULTILIB_DEFAULTS
|
|
+#define MULTILIB_DEFAULTS \
|
|
+ { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }
|
|
+
|
|
+/* Default is set by bpabi.h */
|
|
+/*
|
|
+#undef TARGET_DEFAULT
|
|
+*/
|
|
+
|
|
+#undef SUBTARGET_CPU_DEFAULT
|
|
+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
|
|
+
|
|
+/* Now we define the strings used to build the spec file. */
|
|
+/* interestingly, bpabi defines __GXX_TYPEINFO_EQUALITY_INLINE=0 too as we do. */
|
|
+
|
|
+#undef TARGET_OS_CPP_BUILTINS
|
|
+#define TARGET_OS_CPP_BUILTINS() \
|
|
+ do \
|
|
+ { \
|
|
+ builtin_define ("__HAIKU__"); \
|
|
+ builtin_define ("__ARM__"); \
|
|
+ builtin_define ("__arm__"); \
|
|
+ builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
|
|
+ builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
|
|
+ builtin_define ("__STDC_ISO_10646__=201103L"); \
|
|
+ builtin_assert ("system=haiku"); \
|
|
+ /* Haiku apparently doesn't support merging of symbols across shared \
|
|
+ object boundaries. Hence we need to explicitly specify that \
|
|
+ type_infos are not merged, so that they get compared by name \
|
|
+ instead of by pointer. */ \
|
|
+ builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0"); \
|
|
+ /*builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0"); done in bpabi: */\
|
|
+ TARGET_BPABI_CPP_BUILTINS(); \
|
|
+ } \
|
|
+ while (0)
|
|
+
|
|
+/* Use the default LIBGCC_SPEC, not the empty version in haiku.h, as we
|
|
+ do not use multilib (needed ??). */
|
|
+#undef LIBGCC_SPEC
|
|
+
|
|
+/* If ELF is the default format, we should not use /lib/elf. */
|
|
+
|
|
+#undef LINK_SPEC
|
|
+#define LINK_SPEC "%{!o*:-o %b} -m armelf %{!r:-shared} %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}\
|
|
+ %{mbig-endian:-EB} %{mlittle-endian:-EL} -X"
|
|
+
|
|
diff --git a/gcc/config/arm/t-haiku b/gcc/config/arm/t-haiku
|
|
new file mode 100644
|
|
index 0000000..3f7f488
|
|
--- /dev/null
|
|
+++ b/gcc/config/arm/t-haiku
|
|
@@ -0,0 +1,21 @@
|
|
+# build multilib for soft float and VFP
|
|
+# (unsure about how it should be done...)
|
|
+# mix from t-symbian & t-wince-pe
|
|
+
|
|
+#LIB1ASMSRC = arm/lib1funcs.asm
|
|
+#LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX
|
|
+
|
|
+
|
|
+#MULTILIB_OPTIONS += mhard-float
|
|
+#MULTILIB_DIRNAMES += fpu
|
|
+
|
|
+MULTILIB_OPTIONS += msoft-float
|
|
+MULTILIB_DIRNAMES += fpu soft
|
|
+MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*
|
|
+
|
|
+MULTILIB_OPTIONS += mfloat-abi=softfp
|
|
+MULTILIB_DIRNAMES += softfp
|
|
+
|
|
+#LIBGCC = stmp-multilib
|
|
+#INSTALL_LIBGCC = install-multilib
|
|
+#TARGET_LIBGCC2_CFLAGS =
|
|
diff --git a/gcc/config/haiku-stdint.h b/gcc/config/haiku-stdint.h
|
|
new file mode 100644
|
|
index 0000000..8f702d0
|
|
--- /dev/null
|
|
+++ b/gcc/config/haiku-stdint.h
|
|
@@ -0,0 +1,55 @@
|
|
+/* Definitions for <stdint.h> types on Haiku.
|
|
+ Copyright (C) 2014 Paweł Dziepak.
|
|
+
|
|
+This file is part of GCC.
|
|
+
|
|
+GCC 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.
|
|
+
|
|
+GCC 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.
|
|
+
|
|
+Under Section 7 of GPL version 3, you are granted additional
|
|
+permissions described in the GCC Runtime Library Exception, version
|
|
+3.1, as published by the Free Software Foundation.
|
|
+
|
|
+You should have received a copy of the GNU General Public License and
|
|
+a copy of the GCC Runtime Library Exception along with this program;
|
|
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+<http://www.gnu.org/licenses/>. */
|
|
+
|
|
+#define SIG_ATOMIC_TYPE "int"
|
|
+
|
|
+#define INT8_TYPE "signed char"
|
|
+#define INT16_TYPE "short int"
|
|
+#define INT32_TYPE "int"
|
|
+#define INT64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
|
|
+#define UINT8_TYPE "unsigned char"
|
|
+#define UINT16_TYPE "short unsigned int"
|
|
+#define UINT32_TYPE "unsigned int"
|
|
+#define UINT64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
|
|
+
|
|
+#define INT_LEAST8_TYPE "signed char"
|
|
+#define INT_LEAST16_TYPE "short int"
|
|
+#define INT_LEAST32_TYPE "int"
|
|
+#define INT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
|
|
+#define UINT_LEAST8_TYPE "unsigned char"
|
|
+#define UINT_LEAST16_TYPE "short unsigned int"
|
|
+#define UINT_LEAST32_TYPE "unsigned int"
|
|
+#define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
|
|
+
|
|
+#define INT_FAST8_TYPE "int"
|
|
+#define INT_FAST16_TYPE "int"
|
|
+#define INT_FAST32_TYPE "int"
|
|
+#define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
|
|
+#define UINT_FAST8_TYPE "unsigned int"
|
|
+#define UINT_FAST16_TYPE "unsigned int"
|
|
+#define UINT_FAST32_TYPE "unsigned int"
|
|
+#define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
|
|
+
|
|
+#define INTPTR_TYPE "long int"
|
|
+#define UINTPTR_TYPE "long unsigned int"
|
|
diff --git a/gcc/config/haiku.h b/gcc/config/haiku.h
|
|
new file mode 100644
|
|
index 0000000..2aa4b2b
|
|
--- /dev/null
|
|
+++ b/gcc/config/haiku.h
|
|
@@ -0,0 +1,221 @@
|
|
+/* Definitions of target machine for GCC.
|
|
+ Common Haiku definitions for all architectures.
|
|
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005
|
|
+ Free Software Foundation, Inc.
|
|
+
|
|
+This file is part of GCC.
|
|
+
|
|
+GCC 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 2, or (at your option)
|
|
+any later version.
|
|
+
|
|
+GCC 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 GCC; see the file COPYING. If not, write to
|
|
+the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
+Boston, MA 02111-1307, USA. */
|
|
+
|
|
+
|
|
+/* Change debugging to Dwarf2. */
|
|
+#undef PREFERRED_DEBUGGING_TYPE
|
|
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
|
|
+
|
|
+#undef MCOUNT_NAME
|
|
+#define MCOUNT_NAME "_mcount"
|
|
+
|
|
+#define TARGET_DECLSPEC 1
|
|
+
|
|
+#undef SIZE_TYPE
|
|
+#define SIZE_TYPE "long unsigned int"
|
|
+
|
|
+#undef PTRDIFF_TYPE
|
|
+#define PTRDIFF_TYPE "long int"
|
|
+
|
|
+#undef WCHAR_TYPE
|
|
+#define WCHAR_TYPE "int"
|
|
+
|
|
+#undef WCHAR_TYPE_SIZE
|
|
+#define WCHAR_TYPE_SIZE 32
|
|
+
|
|
+/* Haiku uses lots of multichars, so don't warn about them unless the
|
|
+ user explicitly asks for the warnings with -Wmultichar. Note that
|
|
+ CC1_SPEC is used for both cc1 and cc1plus. */
|
|
+#undef CC1_SPEC
|
|
+#define CC1_SPEC "%{!no-fpic:%{!fno-pic:%{!fno-pie:%{!fpie:%{!fPIC:%{!fPIE:-fpic}}}}}} %{!Wmultichar: -Wno-multichar} %(cc1_cpu) %{profile:-p}"
|
|
+
|
|
+#undef CC1PLUS_SPEC
|
|
+#define CC1PLUS_SPEC "%{!Wctor-dtor-privacy:-Wno-ctor-dtor-privacy}"
|
|
+
|
|
+/* LIB_SPEC for Haiku */
|
|
+#undef LIB_SPEC
|
|
+#define LIB_SPEC "-lroot"
|
|
+
|
|
+/* Use --as-needed -lgcc_s for eh support. */
|
|
+#ifdef HAVE_LD_AS_NEEDED
|
|
+#define USE_LD_AS_NEEDED 1
|
|
+#endif
|
|
+
|
|
+#undef STARTFILE_SPEC
|
|
+#define STARTFILE_SPEC "crti.o%s crtbeginS.o%s %{!shared:%{!nostart:start_dyn.o%s}} init_term_dyn.o%s"
|
|
+
|
|
+#undef ENDFILE_SPEC
|
|
+#define ENDFILE_SPEC "crtendS.o%s crtn.o%s"
|
|
+
|
|
+/* Every program on Haiku links against libroot which contains the pthread
|
|
+ routines, so there's no need to explicitly call out when doing threaded
|
|
+ work. */
|
|
+#undef GOMP_SELF_SPECS
|
|
+#define GOMP_SELF_SPECS ""
|
|
+#undef GTM_SELF_SPECS
|
|
+#define GTM_SELF_SPECS ""
|
|
+
|
|
+#ifdef HYBRID_SECONDARY
|
|
+/* For a secondary compiler on a hybrid system, use alternative search paths.*/
|
|
+#define INCLUDE_DEFAULTS \
|
|
+{ \
|
|
+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 }, \
|
|
+ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 0 }, \
|
|
+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 }, \
|
|
+ { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 }, \
|
|
+ { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0, 0 }, \
|
|
+ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 }, \
|
|
+ { "/boot/system/non-packaged/develop/headers/" HYBRID_SECONDARY, 0, 0, 0, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/app", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/device", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/drivers", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/game", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/interface", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/kernel", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/locale", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/mail", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/media", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/midi", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/midi2", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/net", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/opengl", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/storage", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/support", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/translation", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/graphics", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/input_server", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/mail_daemon", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/registrar", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/screen_saver", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/tracker", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/be_apps/Deskbar", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/be_apps/NetPositive", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/be_apps/Tracker", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/3rdparty", 0, 0, 0, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/bsd", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/glibc", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/gnu", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/posix", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/" HYBRID_SECONDARY, 0, 0, 0, 1, 0 }, \
|
|
+ /* Hybrid secondary folders for os kits not in base haiku package */\
|
|
+ { "/boot/system/develop/headers/" HYBRID_SECONDARY "/os", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/" HYBRID_SECONDARY "/os/opengl", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers", 0, 0, 0, 1, 0 }, \
|
|
+ { 0, 0, 0, 0, 0, 0 } \
|
|
+}
|
|
+#else /* HYBRID_SECONDARY */
|
|
+/* For both native and cross compiler, use standard Haiku include file
|
|
+ search paths.
|
|
+ For a cross compiler, it is expected that an appropriate sysroot has
|
|
+ been configured (e.g. /boot/system/develop/cross/x86) which will
|
|
+ be appended to each search folder given below. */
|
|
+#define INCLUDE_DEFAULTS \
|
|
+{ \
|
|
+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 }, \
|
|
+ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 0 }, \
|
|
+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 }, \
|
|
+ { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 }, \
|
|
+ { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0, 0 }, \
|
|
+ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 }, \
|
|
+ { "/boot/system/non-packaged/develop/headers", 0, 0, 0, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/app", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/device", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/drivers", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/game", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/interface", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/kernel", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/locale", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/mail", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/media", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/midi", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/midi2", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/net", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/opengl", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/storage", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/support", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/translation", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/graphics", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/input_server", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/mail_daemon", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/registrar", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/screen_saver", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/add-ons/tracker", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/be_apps/Deskbar", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/be_apps/NetPositive", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/os/be_apps/Tracker", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/3rdparty", 0, 0, 0, 1, 0 }, \
|
|
+ /* TODO: To be removed when libtiff has been outsourced. */\
|
|
+ { "/boot/system/develop/headers/bsd", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/glibc", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/gnu", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers/posix", 0, 0, 1, 1, 0 }, \
|
|
+ { "/boot/system/develop/headers", 0, 0, 0, 1, 0 }, \
|
|
+ { 0, 0, 0, 0, 0, 0 } \
|
|
+}
|
|
+#endif /* HYBRID_SECONDARY */
|
|
+
|
|
+/* Whee. LIBRARY_PATH is Be's LD_LIBRARY_PATH, which of course will
|
|
+ cause nasty problems if we override it. */
|
|
+#define LIBRARY_PATH_ENV "BELIBRARIES"
|
|
+
|
|
+/* Set STANDARD_STARTFILE_PREFIX_1 set to "/boot/system/develop/lib/", or the
|
|
+ respective secondary architecture path. The user specific paths are set via
|
|
+ LIBRARY_PATH_ENV. */
|
|
+#undef STANDARD_STARTFILE_PREFIX_1
|
|
+#undef STANDARD_STARTFILE_PREFIX_2
|
|
+#undef MD_STARTFILE_PREFIX
|
|
+#undef STARTFILE_PREFIX_SPEC
|
|
+#ifdef HYBRID_SECONDARY
|
|
+/* For a secondary compiler on a hybrid system, use alternative search paths.*/
|
|
+#define STANDARD_STARTFILE_PREFIX_1 \
|
|
+ "/boot/system/non-packaged/develop/lib/" HYBRID_SECONDARY "/"
|
|
+#define STANDARD_STARTFILE_PREFIX_2 \
|
|
+ "/boot/system/develop/lib/" HYBRID_SECONDARY "/"
|
|
+#else /* HYBRID_SECONDARY */
|
|
+#define STANDARD_STARTFILE_PREFIX_1 "/boot/system/non-packaged/develop/lib/"
|
|
+#define STANDARD_STARTFILE_PREFIX_2 "/boot/system/develop/lib/"
|
|
+#endif /* HYBRID_SECONDARY */
|
|
+
|
|
+/* Haiku doesn't have a separate math library. */
|
|
+#define MATH_LIBRARY ""
|
|
+
|
|
+/* Haiku headers are C++-aware (and often use C++). */
|
|
+#define NO_IMPLICIT_EXTERN_C
|
|
+
|
|
+/* Only allow -lssp for SSP, as -lssp_nonshared is problematic in Haiku */
|
|
+#ifndef TARGET_LIBC_PROVIDES_SSP
|
|
+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp}"
|
|
+#endif
|
|
+
|
|
+/* no JCR_SECTION_NAME default definition for Haiku */
|
|
+#define TARGET_NO_JCR_SECTION_NAME 1
|
|
+
|
|
+/* Do not use JCR_SECTION_NAME default definition for Haiku */
|
|
+#define TARGET_NO_JCR_SECTION_NAME 1
|
|
+
|
|
+/* Do not desire to have _Jv_RegisterClasses in crtbegin.o for Haiku */
|
|
+#define TARGET_USE_JCR_SECTION 0
|
|
+
|
|
+/* Do not use TM clone registry in Haiku for now */
|
|
+#define USE_TM_CLONE_REGISTRY 0
|
|
diff --git a/gcc/config/i386/haiku.h b/gcc/config/i386/haiku.h
|
|
new file mode 100644
|
|
index 0000000..3379e19
|
|
--- /dev/null
|
|
+++ b/gcc/config/i386/haiku.h
|
|
@@ -0,0 +1,77 @@
|
|
+/* Definitions for Intel x86 running Haiku
|
|
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004
|
|
+ Free Software Foundation, Inc.
|
|
+
|
|
+This file is part of GCC.
|
|
+
|
|
+GCC 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 2, or (at your option)
|
|
+any later version.
|
|
+
|
|
+GCC 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 GCC; see the file COPYING. If not, write to
|
|
+the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
+Boston, MA 02111-1307, USA. */
|
|
+
|
|
+
|
|
+#undef ASM_COMMENT_START
|
|
+#define ASM_COMMENT_START " #"
|
|
+
|
|
+/* The SVR4 ABI for the i386 says that records and unions are returned
|
|
+ in memory. */
|
|
+#undef DEFAULT_PCC_STRUCT_RETURN
|
|
+#define DEFAULT_PCC_STRUCT_RETURN 1
|
|
+
|
|
+#undef DBX_REGISTER_NUMBER
|
|
+#define DBX_REGISTER_NUMBER(n) \
|
|
+ (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
|
+
|
|
+#define TARGET_OS_CPP_BUILTINS() \
|
|
+ do \
|
|
+ { \
|
|
+ builtin_define ("__HAIKU__"); \
|
|
+ builtin_define ("__INTEL__"); \
|
|
+ builtin_define ("_X86_"); \
|
|
+ builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
|
|
+ builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
|
|
+ builtin_define ("__STDC_ISO_10646__=201103L"); \
|
|
+ builtin_assert ("system=haiku"); \
|
|
+ } \
|
|
+ while (0)
|
|
+
|
|
+/* Provide a LINK_SPEC appropriate for Haiku. Here we provide support
|
|
+ for the special GCC options -static and -shared, which allow us to
|
|
+ link things in one of these three modes by applying the appropriate
|
|
+ combinations of options at link-time. */
|
|
+
|
|
+/* If ELF is the default format, we should not use /lib/elf. */
|
|
+
|
|
+#undef LINK_SPEC
|
|
+#define LINK_SPEC "-m elf_i386_haiku %{!r:-shared} %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
|
|
+
|
|
+/* A C statement (sans semicolon) to output to the stdio stream
|
|
+ FILE the assembler definition of uninitialized global DECL named
|
|
+ NAME whose size is SIZE bytes and alignment is ALIGN bytes.
|
|
+ Try to use asm_output_aligned_bss to implement this macro. */
|
|
+
|
|
+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
|
|
+ asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
|
|
+
|
|
+/* A C statement to output to the stdio stream FILE an assembler
|
|
+ command to advance the location counter to a multiple of 1<<LOG
|
|
+ bytes if it is within MAX_SKIP bytes.
|
|
+
|
|
+ This is used to align code labels according to Intel recommendations. */
|
|
+
|
|
+#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
|
|
+#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
|
|
+ if ((LOG)!=0) \
|
|
+ if ((MAX_SKIP)==0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
|
|
+ else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP))
|
|
+#endif
|
|
diff --git a/gcc/config/i386/haiku64.h b/gcc/config/i386/haiku64.h
|
|
new file mode 100644
|
|
index 0000000..41b3319
|
|
--- /dev/null
|
|
+++ b/gcc/config/i386/haiku64.h
|
|
@@ -0,0 +1,135 @@
|
|
+/* Definitions for AMD x86_64 running Haiku with ELF format.
|
|
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004
|
|
+ Free Software Foundation, Inc.
|
|
+
|
|
+This file is part of GCC.
|
|
+
|
|
+GCC 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 2, or (at your option)
|
|
+any later version.
|
|
+
|
|
+GCC 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 GCC; see the file COPYING. If not, write to
|
|
+the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
+Boston, MA 02111-1307, USA. */
|
|
+
|
|
+
|
|
+#undef ASM_COMMENT_START
|
|
+#define ASM_COMMENT_START " #"
|
|
+
|
|
+/* The SVR4 ABI for the i386 says that records and unions are returned
|
|
+ * in memory. For 64-bit compilation this definition is ignored, however
|
|
+ * it is necessary for correct 32-bit code generation.
|
|
+ */
|
|
+#undef DEFAULT_PCC_STRUCT_RETURN
|
|
+#define DEFAULT_PCC_STRUCT_RETURN 1
|
|
+
|
|
+#undef DBX_REGISTER_NUMBER
|
|
+#define DBX_REGISTER_NUMBER(n) \
|
|
+ (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
|
|
+
|
|
+#define TARGET_OS_CPP_BUILTINS() \
|
|
+ do \
|
|
+ { \
|
|
+ builtin_define ("__HAIKU__"); \
|
|
+ if (!TARGET_64BIT) \
|
|
+ { \
|
|
+ builtin_define ("__INTEL__"); \
|
|
+ builtin_define ("__X86__"); \
|
|
+ } \
|
|
+ builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
|
|
+ builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
|
|
+ builtin_define ("__STDC_ISO_10646__=201103L"); \
|
|
+ builtin_assert ("system=haiku"); \
|
|
+ } \
|
|
+ while (0)
|
|
+
|
|
+/* Provide a LINK_SPEC appropriate for Haiku. Here we provide support
|
|
+ for the special GCC options -static and -shared, which allow us to
|
|
+ link things in one of these three modes by applying the appropriate
|
|
+ combinations of options at link-time. */
|
|
+
|
|
+#if TARGET_64BIT_DEFAULT
|
|
+#define SPEC_32 "m32"
|
|
+#define SPEC_64 "!m32"
|
|
+#else
|
|
+#define SPEC_32 "!m64"
|
|
+#define SPEC_64 "m64"
|
|
+#endif
|
|
+
|
|
+#undef LINK_SPEC
|
|
+#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386_haiku} \
|
|
+ %{!r:-shared} %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
|
|
+
|
|
+/* A C statement (sans semicolon) to output to the stdio stream
|
|
+ FILE the assembler definition of uninitialized global DECL named
|
|
+ NAME whose size is SIZE bytes and alignment is ALIGN bytes.
|
|
+ Try to use x86_output_aligned_bss to implement this macro. */
|
|
+
|
|
+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
|
|
+ x86_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
|
|
+
|
|
+/* This is used to align code labels according to Intel recommendations. */
|
|
+
|
|
+#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
|
|
+#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
|
|
+ do { \
|
|
+ if ((LOG) != 0) { \
|
|
+ if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
|
|
+ else { \
|
|
+ fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
|
|
+ /* Make sure that we have at least 8 byte alignment if > 8 byte \
|
|
+ alignment is preferred. */ \
|
|
+ if ((LOG) > 3 \
|
|
+ && (1 << (LOG)) > ((MAX_SKIP) + 1) \
|
|
+ && (MAX_SKIP) >= 7) \
|
|
+ fputs ("\t.p2align 3\n", (FILE)); \
|
|
+ } \
|
|
+ } \
|
|
+ } while (0)
|
|
+#undef ASM_OUTPUT_MAX_SKIP_PAD
|
|
+#define ASM_OUTPUT_MAX_SKIP_PAD(FILE, LOG, MAX_SKIP) \
|
|
+ if ((LOG) != 0) \
|
|
+ { \
|
|
+ if ((MAX_SKIP) == 0) \
|
|
+ fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
|
|
+ else \
|
|
+ fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
|
|
+ }
|
|
+#endif
|
|
+
|
|
+
|
|
+/* Output assembler code to FILE to call the profiler. */
|
|
+#define NO_PROFILE_COUNTERS 1
|
|
+
|
|
+#undef ASM_SPEC
|
|
+#define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} \
|
|
+ %{Wa,*:%*} %{" SPEC_32 ":--32} %{" SPEC_64 ":--64}"
|
|
+
|
|
+#undef ASM_OUTPUT_ALIGNED_COMMON
|
|
+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
|
|
+ x86_elf_aligned_common (FILE, NAME, SIZE, ALIGN);
|
|
+
|
|
+
|
|
+/* i386 System V Release 4 uses DWARF debugging info.
|
|
+ x86-64 ABI specifies DWARF2. */
|
|
+
|
|
+#define DWARF2_DEBUGGING_INFO 1
|
|
+#define DWARF2_UNWIND_INFO 1
|
|
+
|
|
+#undef PREFERRED_DEBUGGING_TYPE
|
|
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
|
|
+
|
|
+#undef TARGET_ASM_SELECT_SECTION
|
|
+#define TARGET_ASM_SELECT_SECTION x86_64_elf_select_section
|
|
+
|
|
+#undef TARGET_ASM_UNIQUE_SECTION
|
|
+#define TARGET_ASM_UNIQUE_SECTION x86_64_elf_unique_section
|
|
+
|
|
+#define USE_X86_64_FRAME_POINTER 1
|
|
diff --git a/gcc/config/i386/host-cygwin.c b/gcc/config/i386/host-cygwin.c
|
|
old mode 100644
|
|
new mode 100755
|
|
diff --git a/gcc/config/i386/t-haiku64 b/gcc/config/i386/t-haiku64
|
|
new file mode 100644
|
|
index 0000000..9c8f8e6
|
|
--- /dev/null
|
|
+++ b/gcc/config/i386/t-haiku64
|
|
@@ -0,0 +1,16 @@
|
|
+MULTILIB_OPTIONS = m32
|
|
+MULTILIB_DIRNAMES = 32
|
|
+
|
|
+LIBGCC = stmp-multilib
|
|
+INSTALL_LIBGCC = install-multilib
|
|
+
|
|
+EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
|
|
+
|
|
+# The pushl in CTOR initialization interferes with frame pointer elimination.
|
|
+# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables,
|
|
+# because then __FRAME_END__ might not be the last thing in .eh_frame
|
|
+# section.
|
|
+CRTSTUFF_T_CFLAGS = -fno-omit-frame-pointer -fno-asynchronous-unwind-tables
|
|
+
|
|
+# Compile libgcc2.a with pic.
|
|
+TARGET_LIBGCC2_CFLAGS = -fPIC
|
|
diff --git a/gcc/config/i386/winnt-cxx.c b/gcc/config/i386/winnt-cxx.c
|
|
old mode 100644
|
|
new mode 100755
|
|
diff --git a/gcc/config/i386/winnt-stubs.c b/gcc/config/i386/winnt-stubs.c
|
|
old mode 100644
|
|
new mode 100755
|
|
diff --git a/gcc/config/m68k/haiku.h b/gcc/config/m68k/haiku.h
|
|
new file mode 100644
|
|
index 0000000..358c19f
|
|
--- /dev/null
|
|
+++ b/gcc/config/m68k/haiku.h
|
|
@@ -0,0 +1,268 @@
|
|
+/* Definitions for Motorola 68k running Haiku
|
|
+ Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2007
|
|
+ Free Software Foundation, Inc.
|
|
+
|
|
+This file is part of GCC.
|
|
+
|
|
+GCC 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 2, or (at your option)
|
|
+any later version.
|
|
+
|
|
+GCC 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 GCC; see the file COPYING. If not, write to
|
|
+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
|
+Boston, MA 02110-1301, USA. */
|
|
+
|
|
+/* Default target comes from config.gcc. */
|
|
+
|
|
+#undef TARGET_DEFAULT
|
|
+#ifdef TARGET_CPU_DEFAULT
|
|
+#define TARGET_DEFAULT TARGET_CPU_DEFAULT
|
|
+#else
|
|
+#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68881|MASK_68020)
|
|
+#endif
|
|
+
|
|
+/* for 68k machines this only needs to be TRUE for the 68000 */
|
|
+
|
|
+#undef STRICT_ALIGNMENT
|
|
+#define STRICT_ALIGNMENT 0
|
|
+
|
|
+/* Here are four prefixes that are used by asm_fprintf to
|
|
+ facilitate customization for alternate assembler syntaxes.
|
|
+ Machines with no likelihood of an alternate syntax need not
|
|
+ define these and need not use asm_fprintf. */
|
|
+
|
|
+/* The prefix for register names. Note that REGISTER_NAMES
|
|
+ is supposed to include this prefix. Also note that this is NOT an
|
|
+ fprintf format string, it is a literal string */
|
|
+
|
|
+#undef REGISTER_PREFIX
|
|
+#define REGISTER_PREFIX "%"
|
|
+
|
|
+/* The prefix for local (compiler generated) labels.
|
|
+ These labels will not appear in the symbol table. */
|
|
+
|
|
+#undef LOCAL_LABEL_PREFIX
|
|
+#define LOCAL_LABEL_PREFIX "."
|
|
+
|
|
+/* The prefix to add to user-visible assembler symbols. */
|
|
+
|
|
+#undef USER_LABEL_PREFIX
|
|
+#define USER_LABEL_PREFIX ""
|
|
+
|
|
+#undef ASM_COMMENT_START
|
|
+#define ASM_COMMENT_START "|"
|
|
+
|
|
+/* Target OS builtins. */
|
|
+
|
|
+#undef TARGET_OS_CPP_BUILTINS
|
|
+#define TARGET_OS_CPP_BUILTINS() \
|
|
+ do \
|
|
+ { \
|
|
+ builtin_define ("__HAIKU__"); \
|
|
+ builtin_define ("__M68K__"); \
|
|
+ builtin_define_std ("mc68000"); \
|
|
+ builtin_define_std ("mc68020"); \
|
|
+ builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
|
|
+ builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
|
|
+ builtin_define ("__STDC_ISO_10646__=201103L"); \
|
|
+ builtin_assert ("system=haiku"); \
|
|
+ } \
|
|
+ while (0)
|
|
+
|
|
+#define TARGET_OBJFMT_CPP_BUILTINS() \
|
|
+ do \
|
|
+ { \
|
|
+ builtin_define ("__ELF__"); \
|
|
+ } \
|
|
+ while (0)
|
|
+
|
|
+#undef CPP_SPEC
|
|
+#if TARGET_DEFAULT & MASK_68881
|
|
+#define CPP_SPEC \
|
|
+ "%{fPIC|fpic|fPIE|fpie:-D__PIC__ -D__pic__} %{!msoft-float:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
|
|
+#else
|
|
+#define CPP_SPEC \
|
|
+ "%{fPIC|fpic|fPIE|fpie:-D__PIC__ -D__pic__} %{m68881:-D__HAVE_68881__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
|
|
+#endif
|
|
+
|
|
+/* We override the ASM_SPEC from svr4.h because we must pass -m68040 down
|
|
+ to the assembler. */
|
|
+#undef ASM_SPEC
|
|
+#define ASM_SPEC \
|
|
+ "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \
|
|
+%{m68040} %{m68060:-m68040}"
|
|
+
|
|
+/* Provide a LINK_SPEC appropriate for Haiku. Here we provide support
|
|
+ for the special GCC options -static and -shared, which allow us to
|
|
+ link things in one of these three modes by applying the appropriate
|
|
+ combinations of options at link-time. */
|
|
+
|
|
+/* If ELF is the default format, we should not use /lib/elf. */
|
|
+
|
|
+#undef LINK_SPEC
|
|
+/*#define LINK_SPEC "%{!o*:-o %b} -m elf_m68k_haiku -shared -no-undefined %{nostart:-e 0}"*/
|
|
+#define LINK_SPEC "%{!o*:-o %b} -m m68kelf %{!r:-shared} -no-undefined %{nostart:-e 0}"
|
|
+
|
|
+/* XXX: not sure for the rest there... */
|
|
+
|
|
+/* Currently, JUMP_TABLES_IN_TEXT_SECTION must be defined in order to
|
|
+ keep switch tables in the text section. */
|
|
+
|
|
+#define JUMP_TABLES_IN_TEXT_SECTION 1
|
|
+
|
|
+/* This is how to output an assembler line that says to advance the
|
|
+ location counter to a multiple of 2**LOG bytes. */
|
|
+
|
|
+/* Use the default action for outputting the case label. */
|
|
+#undef ASM_OUTPUT_CASE_LABEL
|
|
+#define ASM_RETURN_CASE_JUMP \
|
|
+ do { \
|
|
+ if (TARGET_COLDFIRE) \
|
|
+ { \
|
|
+ if (ADDRESS_REG_P (operands[0])) \
|
|
+ return "jmp %%pc@(2,%0:l)"; \
|
|
+ else \
|
|
+ return "ext%.l %0\n\tjmp %%pc@(2,%0:l)"; \
|
|
+ } \
|
|
+ else \
|
|
+ return "jmp %%pc@(2,%0:w)"; \
|
|
+ } while (0)
|
|
+
|
|
+#undef ASM_OUTPUT_ALIGN
|
|
+#define ASM_OUTPUT_ALIGN(FILE,LOG) \
|
|
+ if ((LOG) > 0) \
|
|
+ fprintf ((FILE), "%s%u\n", ALIGN_ASM_OP, 1 << (LOG));
|
|
+
|
|
+/* If defined, a C expression whose value is a string containing the
|
|
+ assembler operation to identify the following data as uninitialized global
|
|
+ data. */
|
|
+
|
|
+#define BSS_SECTION_ASM_OP "\t.section\t.bss"
|
|
+
|
|
+/* A C statement (sans semicolon) to output to the stdio stream
|
|
+ FILE the assembler definition of uninitialized global DECL named
|
|
+ NAME whose size is SIZE bytes and alignment is ALIGN bytes.
|
|
+ Try to use asm_output_aligned_bss to implement this macro. */
|
|
+
|
|
+#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
|
|
+ asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
|
|
+
|
|
+/* Output assembler code to FILE to increment profiler label # LABELNO
|
|
+ for profiling a function entry. */
|
|
+
|
|
+#undef FUNCTION_PROFILER
|
|
+#define FUNCTION_PROFILER(FILE, LABELNO) \
|
|
+{ \
|
|
+ asm_fprintf (FILE, "\tlea (%LLP%d,%Rpc),%Ra1\n", (LABELNO)); \
|
|
+ if (flag_pic) \
|
|
+ fprintf (FILE, "\tbsr.l _mcount@PLTPC\n"); \
|
|
+ else \
|
|
+ fprintf (FILE, "\tjbsr _mcount\n"); \
|
|
+}
|
|
+
|
|
+/* How to renumber registers for dbx and gdb.
|
|
+ On the Sun-3, the floating point registers have numbers
|
|
+ 18 to 25, not 16 to 23 as they do in the compiler. */
|
|
+
|
|
+#define DBX_REGISTER_NUMBER(REGNO) ((REGNO) < 16 ? (REGNO) : (REGNO) + 2)
|
|
+
|
|
+/* Do not break .stabs pseudos into continuations. */
|
|
+
|
|
+#define DBX_CONTIN_LENGTH 0
|
|
+
|
|
+/* 1 if N is a possible register number for a function value. For
|
|
+ m68k/SVR4 allow d0, a0, or fp0 as return registers, for integral,
|
|
+ pointer, or floating types, respectively. Reject fp0 if not using
|
|
+ a 68881 coprocessor. */
|
|
+
|
|
+#undef FUNCTION_VALUE_REGNO_P
|
|
+#define FUNCTION_VALUE_REGNO_P(N) \
|
|
+ ((N) == 0 || (N) == 8 || (TARGET_68881 && (N) == 16))
|
|
+
|
|
+/* Define this to be true when FUNCTION_VALUE_REGNO_P is true for
|
|
+ more than one register. */
|
|
+
|
|
+#undef NEEDS_UNTYPED_CALL
|
|
+#define NEEDS_UNTYPED_CALL 1
|
|
+
|
|
+/* Define how to generate (in the callee) the output value of a
|
|
+ function and how to find (in the caller) the value returned by a
|
|
+ function. VALTYPE is the data type of the value (as a tree). If
|
|
+ the precise function being called is known, FUNC is its
|
|
+ FUNCTION_DECL; otherwise, FUNC is 0. For m68k/SVR4 generate the
|
|
+ result in d0, a0, or fp0 as appropriate. */
|
|
+
|
|
+#undef FUNCTION_VALUE
|
|
+#define FUNCTION_VALUE(VALTYPE, FUNC) \
|
|
+ (TREE_CODE (VALTYPE) == REAL_TYPE && TARGET_68881 \
|
|
+ ? gen_rtx_REG (TYPE_MODE (VALTYPE), 16) \
|
|
+ : (POINTER_TYPE_P (VALTYPE) \
|
|
+ ? gen_rtx_REG (TYPE_MODE (VALTYPE), 8) \
|
|
+ : gen_rtx_REG (TYPE_MODE (VALTYPE), 0)))
|
|
+
|
|
+/* For compatibility with the large body of existing code which does
|
|
+ not always properly declare external functions returning pointer
|
|
+ types, the m68k/SVR4 convention is to copy the value returned for
|
|
+ pointer functions from a0 to d0 in the function epilogue, so that
|
|
+ callers that have neglected to properly declare the callee can
|
|
+ still find the correct return value. */
|
|
+
|
|
+#define FUNCTION_EXTRA_EPILOGUE(FILE, SIZE) \
|
|
+do { \
|
|
+ if (current_function_returns_pointer \
|
|
+ && ! find_equiv_reg (0, get_last_insn (), 0, 0, 0, 8, Pmode)) \
|
|
+ asm_fprintf (FILE, "\tmove.l %Ra0,%Rd0\n"); \
|
|
+} while (0);
|
|
+
|
|
+/* Define how to find the value returned by a library function
|
|
+ assuming the value has mode MODE.
|
|
+ For m68k/SVR4 look for integer values in d0, pointer values in d0
|
|
+ (returned in both d0 and a0), and floating values in fp0. */
|
|
+
|
|
+#undef LIBCALL_VALUE
|
|
+#define LIBCALL_VALUE(MODE) \
|
|
+ ((((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode) \
|
|
+ && TARGET_68881) \
|
|
+ ? gen_rtx_REG ((MODE), 16) \
|
|
+ : gen_rtx_REG ((MODE), 0))
|
|
+
|
|
+/* For m68k SVR4, structures are returned using the reentrant
|
|
+ technique. */
|
|
+#undef PCC_STATIC_STRUCT_RETURN
|
|
+#define DEFAULT_PCC_STRUCT_RETURN 0
|
|
+
|
|
+/* Finalize the trampoline by flushing the insn cache. */
|
|
+
|
|
+#undef FINALIZE_TRAMPOLINE
|
|
+#define FINALIZE_TRAMPOLINE(TRAMP) \
|
|
+ emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"), \
|
|
+ LCT_NORMAL, VOIDmode, 2, TRAMP, Pmode, \
|
|
+ plus_constant (Pmode, TRAMP, TRAMPOLINE_SIZE), \
|
|
+ Pmode);
|
|
+
|
|
+/* Clear the instruction cache from `beg' to `end'. This makes an
|
|
+ inline system call to SYS_cacheflush. The arguments are as
|
|
+ follows:
|
|
+
|
|
+ cacheflush (addr, scope, cache, len)
|
|
+
|
|
+ addr - the start address for the flush
|
|
+ scope - the scope of the flush (see the cpush insn)
|
|
+ cache - which cache to flush (see the cpush insn)
|
|
+ len - a factor relating to the number of flushes to perform:
|
|
+ len/16 lines, or len/4096 pages. */
|
|
+
|
|
+#define CLEAR_INSN_CACHE(BEG, END) \
|
|
+{ \
|
|
+extern void clear_caches(void *address, int length, unsigned long flags); \
|
|
+ void *ptr = BEG; \
|
|
+ int len = (END - BEG + 32); \
|
|
+ clear_caches(ptr, len, 0x0005); \
|
|
+}
|
|
diff --git a/gcc/config/mips/haiku.h b/gcc/config/mips/haiku.h
|
|
new file mode 100644
|
|
index 0000000..f6d2efb
|
|
--- /dev/null
|
|
+++ b/gcc/config/mips/haiku.h
|
|
@@ -0,0 +1,44 @@
|
|
+/* Definitions for MIPS running Haiku
|
|
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004
|
|
+ Free Software Foundation, Inc.
|
|
+
|
|
+This file is part of GCC.
|
|
+
|
|
+GCC 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 2, or (at your option)
|
|
+any later version.
|
|
+
|
|
+GCC 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 GCC; see the file COPYING. If not, write to
|
|
+the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
+Boston, MA 02111-1307, USA. */
|
|
+
|
|
+
|
|
+#define TARGET_OS_CPP_BUILTINS() \
|
|
+ do \
|
|
+ { \
|
|
+ builtin_define ("__HAIKU__"); \
|
|
+ builtin_define ("__MIPS__"); \
|
|
+ builtin_define ("__MIPSEL__"); \
|
|
+ builtin_define ("_MIPSEL_"); \
|
|
+ builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
|
|
+ builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
|
|
+ builtin_define ("__STDC_ISO_10646__=201103L"); \
|
|
+ builtin_assert ("system=haiku"); \
|
|
+ if (flag_pic) \
|
|
+ { \
|
|
+ builtin_define ("__PIC__"); \
|
|
+ builtin_define ("__pic__"); \
|
|
+ } \
|
|
+ } \
|
|
+ while (0)
|
|
+
|
|
+#undef LINK_SPEC
|
|
+#define LINK_SPEC "%{!o*:-o %b} -m elf_mipsel_haiku %{!r:-shared} %{nostart:-e 0}"
|
|
+
|
|
diff --git a/gcc/config/rs6000/haiku.h b/gcc/config/rs6000/haiku.h
|
|
new file mode 100644
|
|
index 0000000..9ff36f1
|
|
--- /dev/null
|
|
+++ b/gcc/config/rs6000/haiku.h
|
|
@@ -0,0 +1,59 @@
|
|
+/* Definitions for PowerPC running Haiku
|
|
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005
|
|
+ Free Software Foundation, Inc.
|
|
+
|
|
+This file is part of GCC.
|
|
+
|
|
+GCC 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 2, or (at your option)
|
|
+any later version.
|
|
+
|
|
+GCC 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 GCC; see the file COPYING. If not, write to
|
|
+the Free Software Foundation, 59 Temple Place - Suite 330,
|
|
+Boston, MA 02111-1307, USA. */
|
|
+
|
|
+
|
|
+/* long double is 128 bits wide; the documentation claims
|
|
+ LIBGCC2_LONG_DOUBLE_TYPE_SIZE to default to LONG_DOUBLE_TYPE_SIZE, but
|
|
+ it apparently does not */
|
|
+/*#undef LONG_DOUBLE_TYPE_SIZE
|
|
+#define LONG_DOUBLE_TYPE_SIZE 128
|
|
+#undef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
|
|
+#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 128*/
|
|
+
|
|
+#undef TARGET_OS_CPP_BUILTINS
|
|
+#define TARGET_OS_CPP_BUILTINS() \
|
|
+ do \
|
|
+ { \
|
|
+ builtin_define ("__HAIKU__"); \
|
|
+ builtin_define ("__POWERPC__"); \
|
|
+ builtin_define ("__powerpc__"); \
|
|
+ builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
|
|
+ builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
|
|
+ builtin_define ("__STDC_ISO_10646__=201103L"); \
|
|
+ builtin_assert ("system=haiku"); \
|
|
+ builtin_assert ("cpu=powerpc"); \
|
|
+ builtin_assert ("machine=powerpc"); \
|
|
+ TARGET_OS_SYSV_CPP_BUILTINS (); \
|
|
+ } \
|
|
+ while (0)
|
|
+
|
|
+/* Provide a LINK_SPEC appropriate for Haiku. Here we provide support
|
|
+ for the special GCC options -static and -shared, which allow us to
|
|
+ link things in one of these three modes by applying the appropriate
|
|
+ combinations of options at link-time. */
|
|
+
|
|
+/* If ELF is the default format, we should not use /lib/elf. */
|
|
+
|
|
+#undef LINK_SPEC
|
|
+#define LINK_SPEC "%{!o*:-o %b} -m elf32ppchaiku %{!r:-shared} %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
|
|
+
|
|
+#undef CC1_SPEC
|
|
+#define CC1_SPEC "%{!no-fpic:%{!fno-pic:%{!fno-pie:%{!fpie:%{!fPIC:%{!fPIE:-fPIC}}}}}} %{!Wmultichar: -Wno-multichar} %(cc1_cpu) %{profile:-p}"
|
|
diff --git a/gcc/config/t-haiku b/gcc/config/t-haiku
|
|
new file mode 100644
|
|
index 0000000..587d1fb
|
|
--- /dev/null
|
|
+++ b/gcc/config/t-haiku
|
|
@@ -0,0 +1,4 @@
|
|
+# There are system headers elsewhere, but these are the ones that
|
|
+# we are most likely to want to apply any fixes to.
|
|
+NATIVE_SYSTEM_HEADER_DIR = /boot/system/develop/headers
|
|
+LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/posix/limits.h ]
|
|
\ No newline at end of file
|
|
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
|
index 6f38ba1..5831bd1 100644
|
|
--- a/gcc/configure.ac
|
|
+++ b/gcc/configure.ac
|
|
@@ -649,6 +649,15 @@ fi
|
|
# Miscenalleous configure options
|
|
# -------------------------------
|
|
|
|
+# handle --with-hybrid-secondary
|
|
+AC_ARG_WITH(hybrid_secondary,
|
|
+ [AS_HELP_STRING([--with-hybrid_secondary],
|
|
+ [specify the packaging architecture for building a secondary compiler for a Haiku hybrid system])],
|
|
+ [HYBRID_SECONDARY=$withval],
|
|
+ [HYBRID_SECONDARY=]
|
|
+)
|
|
+AC_SUBST(HYBRID_SECONDARY)
|
|
+
|
|
# With stabs
|
|
AC_ARG_WITH(stabs,
|
|
[AS_HELP_STRING([--with-stabs],
|
|
@@ -1079,6 +1088,16 @@ AC_LANG_POP(C++)
|
|
# --------
|
|
|
|
|
|
+# Configure -lm usage for host tools that need it
|
|
+build_math_library="-lm"
|
|
+case $build in
|
|
+ *-*-haiku*)
|
|
+ # no separate math library needed
|
|
+ build_math_library=
|
|
+ ;;
|
|
+esac
|
|
+AC_SUBST(build_math_library)
|
|
+
|
|
# These libraries may be used by collect2.
|
|
# We may need a special search path to get them linked.
|
|
AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
|
|
@@ -1534,7 +1553,7 @@ case ${enable_threads} in
|
|
# default
|
|
target_thread_file='single'
|
|
;;
|
|
- aix | dce | lynx | mipssde | posix | rtems | \
|
|
+ aix | dce | haiku | lynx | mipssde | posix | rtems | \
|
|
single | tpf | vxworks | win32)
|
|
target_thread_file=${enable_threads}
|
|
;;
|
|
diff --git a/gcc/defaults.h b/gcc/defaults.h
|
|
index 1d54798..b4aba11 100644
|
|
--- a/gcc/defaults.h
|
|
+++ b/gcc/defaults.h
|
|
@@ -380,7 +380,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
/* If we have named section and we support weak symbols, then use the
|
|
.jcr section for recording java classes which need to be registered
|
|
at program start-up time. */
|
|
-#if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK
|
|
+#if defined (TARGET_ASM_NAMED_SECTION) && SUPPORTS_WEAK \
|
|
+ && !defined(TARGET_NO_JCR_SECTION_NAME)
|
|
#ifndef JCR_SECTION_NAME
|
|
#define JCR_SECTION_NAME ".jcr"
|
|
#endif
|
|
diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h
|
|
index afc1cc5..1d3ef09 100644
|
|
--- a/gcc/ginclude/stdarg.h
|
|
+++ b/gcc/ginclude/stdarg.h
|
|
@@ -93,7 +93,7 @@ typedef __gnuc_va_list va_list;
|
|
#ifndef _VA_LIST
|
|
/* The macro _VA_LIST_T_H is used in the Bull dpx2 */
|
|
#ifndef _VA_LIST_T_H
|
|
-/* The macro __va_list__ is used by BeOS. */
|
|
+/* The macro __va_list__ is used by BeOS and Haiku. */
|
|
#ifndef __va_list__
|
|
typedef __gnuc_va_list va_list;
|
|
#endif /* not __va_list__ */
|
|
diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
|
|
index f20a41b..f8c8e2d 100644
|
|
--- a/gcc/ginclude/stddef.h
|
|
+++ b/gcc/ginclude/stddef.h
|
|
@@ -167,7 +167,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
|
|
/* Define this type if we are doing the whole job,
|
|
or if we want this type in particular. */
|
|
#if defined (_STDDEF_H) || defined (__need_size_t)
|
|
-#ifndef __size_t__ /* BeOS */
|
|
+#ifndef __size_t__ /* BeOS, Haiku */
|
|
#ifndef __SIZE_T__ /* Cray Unicos/Mk */
|
|
#ifndef _SIZE_T /* in case <sys/types.h> has defined it. */
|
|
#ifndef _SYS_SIZE_T_H
|
|
@@ -184,7 +184,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
|
|
#ifndef _GCC_SIZE_T
|
|
#ifndef _SIZET_
|
|
#ifndef __size_t
|
|
-#define __size_t__ /* BeOS */
|
|
+#define __size_t__ /* BeOS, Haiku */
|
|
#define __SIZE_T__ /* Cray Unicos/Mk */
|
|
#define _SIZE_T
|
|
#define _SYS_SIZE_T_H
|
|
@@ -214,7 +214,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
|
|
#endif
|
|
#if !(defined (__GNUG__) && defined (size_t))
|
|
typedef __SIZE_TYPE__ size_t;
|
|
-#ifdef __BEOS__
|
|
+#if defined(__BEOS__)
|
|
typedef long ssize_t;
|
|
#endif /* __BEOS__ */
|
|
#endif /* !(defined (__GNUG__) && defined (size_t)) */
|
|
@@ -247,7 +247,7 @@ typedef long ssize_t;
|
|
/* Define this type if we are doing the whole job,
|
|
or if we want this type in particular. */
|
|
#if defined (_STDDEF_H) || defined (__need_wchar_t)
|
|
-#ifndef __wchar_t__ /* BeOS */
|
|
+#ifndef __wchar_t__ /* BeOS, Haiku */
|
|
#ifndef __WCHAR_T__ /* Cray Unicos/Mk */
|
|
#ifndef _WCHAR_T
|
|
#ifndef _T_WCHAR_
|
|
@@ -264,7 +264,7 @@ typedef long ssize_t;
|
|
#ifndef ___int_wchar_t_h
|
|
#ifndef __INT_WCHAR_T_H
|
|
#ifndef _GCC_WCHAR_T
|
|
-#define __wchar_t__ /* BeOS */
|
|
+#define __wchar_t__ /* BeOS, Haiku */
|
|
#define __WCHAR_T__ /* Cray Unicos/Mk */
|
|
#define _WCHAR_T
|
|
#define _T_WCHAR_
|
|
diff --git a/include/filenames.h b/include/filenames.h
|
|
index 470c5e0..648ffdf 100644
|
|
--- a/include/filenames.h
|
|
+++ b/include/filenames.h
|
|
@@ -44,9 +44,11 @@ extern "C" {
|
|
# define IS_ABSOLUTE_PATH(f) IS_DOS_ABSOLUTE_PATH (f)
|
|
#else /* not DOSish */
|
|
# if defined(__APPLE__)
|
|
+/*
|
|
# ifndef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
|
|
# define HAVE_CASE_INSENSITIVE_FILE_SYSTEM 1
|
|
# endif
|
|
+*/
|
|
# endif /* __APPLE__ */
|
|
# define HAS_DRIVE_SPEC(f) (0)
|
|
# define IS_DIR_SEPARATOR(c) IS_UNIX_DIR_SEPARATOR (c)
|
|
diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
|
|
index 88ddfea..651e6e2 100644
|
|
--- a/libgcc/Makefile.in
|
|
+++ b/libgcc/Makefile.in
|
|
@@ -371,10 +371,16 @@ ifeq ($(enable_shared),yes)
|
|
endif
|
|
endif
|
|
|
|
+ifneq ($(enable_shared),yes)
|
|
+# Maintain the same visibility as older GCC for now. Needed on Haiku
|
|
+# because the static library is included in libroot.so.
|
|
+vis_hide =
|
|
+else
|
|
# For -fvisibility=hidden. We need both a -fvisibility=hidden on
|
|
# the command line, and a #define to prevent libgcc2.h etc from
|
|
# overriding that with #pragmas.
|
|
vis_hide = @vis_hide@
|
|
+endif
|
|
|
|
ifneq (,$(vis_hide))
|
|
|
|
diff --git a/libgcc/config.host b/libgcc/config.host
|
|
index 308e4ff..545d628 100644
|
|
--- a/libgcc/config.host
|
|
+++ b/libgcc/config.host
|
|
@@ -228,6 +228,14 @@ case ${host} in
|
|
;;
|
|
esac
|
|
;;
|
|
+*-*-haiku*)
|
|
+ # This is the generic ELF configuration of Haiku. Later
|
|
+ # machine-specific sections may refine and add to this
|
|
+ # configuration.
|
|
+ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-haiku t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
|
|
+ tmake_file="$tmake_file t-slibgcc-nolc-override"
|
|
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
|
|
+ ;;
|
|
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
|
|
tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
|
|
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
|
|
@@ -376,6 +384,12 @@ arm*-*-freebsd*) # ARM FreeBSD EABI
|
|
arm*-*-netbsdelf*)
|
|
tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"
|
|
;;
|
|
+arm-*-haiku*)
|
|
+ tmake_file="${tmake_file} arm/t-arm arm/t-elf arm/t-bpabi"
|
|
+ tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
|
|
+ tm_file="${tm_file} arm/bpabi-lib.h"
|
|
+ unwind_header=config/arm/unwind-arm.h
|
|
+ ;;
|
|
arm*-*-linux*) # ARM GNU/Linux with ELF
|
|
tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix"
|
|
tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
|
|
@@ -573,6 +587,12 @@ x86_64-*-freebsd*)
|
|
tmake_file="${tmake_file} i386/t-freebsd i386/t-crtstuff"
|
|
md_unwind_header=i386/freebsd-unwind.h
|
|
;;
|
|
+i[34567]86-*-haiku*)
|
|
+ tmake_file="${tmake_file} i386/t-crtstuff i386/t-eh-dw2"
|
|
+ ;;
|
|
+x86_64-*-haiku*)
|
|
+ tmake_file="${tmake_file} i386/t-crtstuff i386/t-eh-dw2"
|
|
+ ;;
|
|
i[34567]86-*-netbsdelf*)
|
|
;;
|
|
x86_64-*-netbsd*)
|
|
@@ -781,6 +801,8 @@ m32r-*-linux*)
|
|
m32rle-*-linux*)
|
|
tmake_file="$tmake_file m32r/t-linux t-fdpbit"
|
|
;;
|
|
+m68k-*-haiku*)
|
|
+ ;;
|
|
m68k-*-elf* | fido-*-elf)
|
|
tmake_file="$tmake_file m68k/t-floatlib"
|
|
;;
|
|
@@ -851,6 +873,8 @@ mips*-sde-elf*)
|
|
esac
|
|
extra_parts="$extra_parts crti.o crtn.o"
|
|
;;
|
|
+mipsel-*-haiku*)
|
|
+ ;;
|
|
mipsisa32-*-elf* | mipsisa32el-*-elf* | \
|
|
mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
|
|
mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
|
|
@@ -981,6 +1005,8 @@ powerpc*-*-freebsd*)
|
|
;;
|
|
esac
|
|
;;
|
|
+powerpc-*-haiku*)
|
|
+ ;;
|
|
powerpc-*-netbsd*)
|
|
tmake_file="$tmake_file rs6000/t-netbsd rs6000/t-crtstuff"
|
|
;;
|
|
diff --git a/libgcc/config/i386/t-cygming b/libgcc/config/i386/t-cygming
|
|
old mode 100644
|
|
new mode 100755
|
|
diff --git a/libgcc/config/t-haiku b/libgcc/config/t-haiku
|
|
new file mode 100644
|
|
index 0000000..b4fff2d
|
|
--- /dev/null
|
|
+++ b/libgcc/config/t-haiku
|
|
@@ -0,0 +1,3 @@
|
|
+# Use unwind-dw2-fde
|
|
+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \
|
|
+ $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
|
|
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
|
|
index f37e464..c52930d 100644
|
|
--- a/libgcc/crtstuff.c
|
|
+++ b/libgcc/crtstuff.c
|
|
@@ -108,7 +108,9 @@ call_ ## FUNC (void) \
|
|
&& defined(HAVE_LD_EH_FRAME_HDR) \
|
|
&& !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
|
|
&& defined(__GLIBC__) && __GLIBC__ >= 2
|
|
+#ifndef __HAIKU__
|
|
#include <link.h>
|
|
+#endif
|
|
/* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h.
|
|
But it doesn't use PT_GNU_EH_FRAME ELF segment currently. */
|
|
# if !defined(__UCLIBC__) \
|
|
diff --git a/libstdc++-v3/config/os/haiku/ctype_base.h b/libstdc++-v3/config/os/haiku/ctype_base.h
|
|
new file mode 100644
|
|
index 0000000..288e1ff
|
|
--- /dev/null
|
|
+++ b/libstdc++-v3/config/os/haiku/ctype_base.h
|
|
@@ -0,0 +1,61 @@
|
|
+// Locale support -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library 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.
|
|
+
|
|
+// This library 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.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+//
|
|
+// ISO C++ 14882: 22.1 Locales
|
|
+//
|
|
+
|
|
+// Default information, may not be appropriate for specific host.
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+ /// @brief Base class for ctype.
|
|
+ struct ctype_base
|
|
+ {
|
|
+ // Non-standard typedefs.
|
|
+ typedef const int* __to_type;
|
|
+
|
|
+ // NB: Offsets into ctype<char>::_M_table force a particular size
|
|
+ // on the mask type. Because of this, we don't use an enum.
|
|
+ typedef unsigned int mask;
|
|
+ static const mask upper = 1 << 0;
|
|
+ static const mask lower = 1 << 1;
|
|
+ static const mask alpha = 1 << 2;
|
|
+ static const mask digit = 1 << 3;
|
|
+ static const mask xdigit = 1 << 4;
|
|
+ static const mask space = 1 << 5;
|
|
+ static const mask print = 1 << 6;
|
|
+ static const mask graph = (1 << 2) | (1 << 3) | (1 << 9); // alnum|punct
|
|
+ static const mask cntrl = 1 << 8;
|
|
+ static const mask punct = 1 << 9;
|
|
+ static const mask alnum = (1 << 2) | (1 << 3); // alpha|digit
|
|
+#if __cplusplus >= 201103L
|
|
+ static const mask blank = 1 << 10;
|
|
+#endif
|
|
+ };
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
diff --git a/libstdc++-v3/config/os/haiku/ctype_configure_char.cc b/libstdc++-v3/config/os/haiku/ctype_configure_char.cc
|
|
new file mode 100644
|
|
index 0000000..35e6b80
|
|
--- /dev/null
|
|
+++ b/libstdc++-v3/config/os/haiku/ctype_configure_char.cc
|
|
@@ -0,0 +1,99 @@
|
|
+// Locale support -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library 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.
|
|
+
|
|
+// This library 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.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+/** @file ctype_configure_char.cc */
|
|
+
|
|
+//
|
|
+// ISO C++ 14882: 22.1 Locales
|
|
+//
|
|
+
|
|
+#include <locale>
|
|
+#include <cstdlib>
|
|
+#include <cstring>
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+// Information as gleaned from /usr/include/ctype.h
|
|
+
|
|
+ const ctype_base::mask*
|
|
+ ctype<char>::classic_table() throw()
|
|
+ { return 0; }
|
|
+
|
|
+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
|
|
+ size_t __refs)
|
|
+ : facet(__refs), _M_del(__table != 0 && __del),
|
|
+ _M_toupper(NULL), _M_tolower(NULL),
|
|
+ _M_table(__table ? __table : classic_table())
|
|
+ {
|
|
+ memset(_M_widen, 0, sizeof(_M_widen));
|
|
+ _M_widen_ok = 0;
|
|
+ memset(_M_narrow, 0, sizeof(_M_narrow));
|
|
+ _M_narrow_ok = 0;
|
|
+ }
|
|
+
|
|
+ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
|
|
+ : facet(__refs), _M_del(__table != 0 && __del),
|
|
+ _M_toupper(NULL), _M_tolower(NULL),
|
|
+ _M_table(__table ? __table : classic_table())
|
|
+ {
|
|
+ memset(_M_widen, 0, sizeof(_M_widen));
|
|
+ _M_widen_ok = 0;
|
|
+ memset(_M_narrow, 0, sizeof(_M_narrow));
|
|
+ _M_narrow_ok = 0;
|
|
+ }
|
|
+
|
|
+ char
|
|
+ ctype<char>::do_toupper(char __c) const
|
|
+ { return ::toupper((int) __c); }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::do_toupper(char* __low, const char* __high) const
|
|
+ {
|
|
+ while (__low < __high)
|
|
+ {
|
|
+ *__low = ::toupper((int) *__low);
|
|
+ ++__low;
|
|
+ }
|
|
+ return __high;
|
|
+ }
|
|
+
|
|
+ char
|
|
+ ctype<char>::do_tolower(char __c) const
|
|
+ { return ::tolower((int) __c); }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::do_tolower(char* __low, const char* __high) const
|
|
+ {
|
|
+ while (__low < __high)
|
|
+ {
|
|
+ *__low = ::tolower((int) *__low);
|
|
+ ++__low;
|
|
+ }
|
|
+ return __high;
|
|
+ }
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
diff --git a/libstdc++-v3/config/os/haiku/ctype_inline.h b/libstdc++-v3/config/os/haiku/ctype_inline.h
|
|
new file mode 100644
|
|
index 0000000..0419139
|
|
--- /dev/null
|
|
+++ b/libstdc++-v3/config/os/haiku/ctype_inline.h
|
|
@@ -0,0 +1,168 @@
|
|
+// Locale support -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library 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.
|
|
+
|
|
+// This library 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.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+/** @file bits/ctype_inline.h
|
|
+ * This is an internal header file, included by other library headers.
|
|
+ * Do not attempt to use it directly. @headername{locale}
|
|
+ */
|
|
+
|
|
+//
|
|
+// ISO C++ 14882: 22.1 Locales
|
|
+//
|
|
+
|
|
+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
|
|
+// functions go in ctype.cc
|
|
+
|
|
+// The following definitions are portable, but insanely slow. If one
|
|
+// cares at all about performance, then specialized ctype
|
|
+// functionality should be added for the native os in question: see
|
|
+// the config/os/bits/ctype_*.h files.
|
|
+
|
|
+// Constructing a synthetic "C" table should be seriously considered...
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+ bool
|
|
+ ctype<char>::
|
|
+ is(mask __m, char __c) const
|
|
+ {
|
|
+ if (_M_table)
|
|
+ return _M_table[static_cast<unsigned char>(__c)] & __m;
|
|
+ else
|
|
+ {
|
|
+ bool __ret = false;
|
|
+ const size_t __bitmasksize = 15;
|
|
+ size_t __bitcur = 0; // Lowest bitmask in ctype_base == 0
|
|
+ for (; __bitcur <= __bitmasksize; ++__bitcur)
|
|
+ {
|
|
+ const mask __bit = static_cast<mask>(1 << __bitcur);
|
|
+ if (__m & __bit)
|
|
+ {
|
|
+ bool __testis;
|
|
+ switch (__bit)
|
|
+ {
|
|
+ case space:
|
|
+ __testis = isspace(__c);
|
|
+ break;
|
|
+ case print:
|
|
+ __testis = isprint(__c);
|
|
+ break;
|
|
+ case cntrl:
|
|
+ __testis = iscntrl(__c);
|
|
+ break;
|
|
+ case upper:
|
|
+ __testis = isupper(__c);
|
|
+ break;
|
|
+ case lower:
|
|
+ __testis = islower(__c);
|
|
+ break;
|
|
+ case alpha:
|
|
+ __testis = isalpha(__c);
|
|
+ break;
|
|
+ case digit:
|
|
+ __testis = isdigit(__c);
|
|
+ break;
|
|
+ case punct:
|
|
+ __testis = ispunct(__c);
|
|
+ break;
|
|
+ case xdigit:
|
|
+ __testis = isxdigit(__c);
|
|
+ break;
|
|
+ case alnum:
|
|
+ __testis = isalnum(__c);
|
|
+ break;
|
|
+ case graph:
|
|
+ __testis = isgraph(__c);
|
|
+ break;
|
|
+ default:
|
|
+ __testis = false;
|
|
+ break;
|
|
+ }
|
|
+ __ret |= __testis;
|
|
+ }
|
|
+ }
|
|
+ return __ret;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::
|
|
+ is(const char* __low, const char* __high, mask* __vec) const
|
|
+ {
|
|
+ if (_M_table)
|
|
+ while (__low < __high)
|
|
+ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
|
|
+ else
|
|
+ {
|
|
+ // Highest bitmask in ctype_base == 10.
|
|
+ const size_t __bitmasksize = 15;
|
|
+ for (;__low < __high; ++__vec, ++__low)
|
|
+ {
|
|
+ mask __m = 0;
|
|
+ // Lowest bitmask in ctype_base == 0
|
|
+ size_t __i = 0;
|
|
+ for (;__i <= __bitmasksize; ++__i)
|
|
+ {
|
|
+ const mask __bit = static_cast<mask>(1 << __i);
|
|
+ if (this->is(__bit, *__low))
|
|
+ __m |= __bit;
|
|
+ }
|
|
+ *__vec = __m;
|
|
+ }
|
|
+ }
|
|
+ return __high;
|
|
+ }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::
|
|
+ scan_is(mask __m, const char* __low, const char* __high) const
|
|
+ {
|
|
+ if (_M_table)
|
|
+ while (__low < __high
|
|
+ && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
|
|
+ ++__low;
|
|
+ else
|
|
+ while (__low < __high && !this->is(__m, *__low))
|
|
+ ++__low;
|
|
+ return __low;
|
|
+ }
|
|
+
|
|
+ const char*
|
|
+ ctype<char>::
|
|
+ scan_not(mask __m, const char* __low, const char* __high) const
|
|
+ {
|
|
+ if (_M_table)
|
|
+ while (__low < __high
|
|
+ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
|
|
+ ++__low;
|
|
+ else
|
|
+ while (__low < __high && this->is(__m, *__low) != 0)
|
|
+ ++__low;
|
|
+ return __low;
|
|
+ }
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
diff --git a/libstdc++-v3/config/os/haiku/error_constants.h b/libstdc++-v3/config/os/haiku/error_constants.h
|
|
new file mode 100644
|
|
index 0000000..fa6d889
|
|
--- /dev/null
|
|
+++ b/libstdc++-v3/config/os/haiku/error_constants.h
|
|
@@ -0,0 +1,178 @@
|
|
+// Specific definitions for generic platforms -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library 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.
|
|
+
|
|
+// This library 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.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+/** @file bits/error_constants.h
|
|
+ * This is an internal header file, included by other library headers.
|
|
+ * Do not attempt to use it directly. @headername{system_error}
|
|
+ */
|
|
+
|
|
+#ifndef _GLIBCXX_ERROR_CONSTANTS
|
|
+#define _GLIBCXX_ERROR_CONSTANTS 1
|
|
+
|
|
+#include <bits/c++config.h>
|
|
+#include <cerrno>
|
|
+
|
|
+namespace std _GLIBCXX_VISIBILITY(default)
|
|
+{
|
|
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|
+
|
|
+ enum class errc
|
|
+ {
|
|
+ address_family_not_supported = EAFNOSUPPORT,
|
|
+ address_in_use = EADDRINUSE,
|
|
+ address_not_available = EADDRNOTAVAIL,
|
|
+ already_connected = EISCONN,
|
|
+ argument_list_too_long = E2BIG,
|
|
+ argument_out_of_domain = EDOM,
|
|
+ bad_address = EFAULT,
|
|
+ bad_file_descriptor = EBADF,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_EBADMSG
|
|
+ bad_message = EBADMSG,
|
|
+#endif
|
|
+
|
|
+ broken_pipe = EPIPE,
|
|
+ connection_aborted = ECONNABORTED,
|
|
+ connection_already_in_progress = EALREADY,
|
|
+ connection_refused = ECONNREFUSED,
|
|
+ connection_reset = ECONNRESET,
|
|
+ cross_device_link = EXDEV,
|
|
+ destination_address_required = EDESTADDRREQ,
|
|
+ device_or_resource_busy = EBUSY,
|
|
+ directory_not_empty = ENOTEMPTY,
|
|
+ executable_format_error = ENOEXEC,
|
|
+ file_exists = EEXIST,
|
|
+ file_too_large = EFBIG,
|
|
+ filename_too_long = ENAMETOOLONG,
|
|
+ function_not_supported = ENOSYS,
|
|
+ host_unreachable = EHOSTUNREACH,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_EIDRM
|
|
+ identifier_removed = EIDRM,
|
|
+#endif
|
|
+
|
|
+ illegal_byte_sequence = EILSEQ,
|
|
+ inappropriate_io_control_operation = ENOTTY,
|
|
+ interrupted = EINTR,
|
|
+ invalid_argument = EINVAL,
|
|
+ invalid_seek = ESPIPE,
|
|
+ io_error = EIO,
|
|
+ is_a_directory = EISDIR,
|
|
+ message_size = EMSGSIZE,
|
|
+ network_down = ENETDOWN,
|
|
+ network_reset = ENETRESET,
|
|
+ network_unreachable = ENETUNREACH,
|
|
+ no_buffer_space = ENOBUFS,
|
|
+ no_child_process = ECHILD,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_ENOLINK
|
|
+ no_link = ENOLINK,
|
|
+#endif
|
|
+
|
|
+ no_lock_available = ENOLCK,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_ENODATA
|
|
+ no_message_available = ENODATA,
|
|
+#endif
|
|
+
|
|
+ no_message = ENOMSG,
|
|
+ no_protocol_option = ENOPROTOOPT,
|
|
+ no_space_on_device = ENOSPC,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_ENOSR
|
|
+ no_stream_resources = ENOSR,
|
|
+#endif
|
|
+
|
|
+ no_such_device_or_address = ENXIO,
|
|
+ no_such_device = ENODEV,
|
|
+ no_such_file_or_directory = ENOENT,
|
|
+ no_such_process = ESRCH,
|
|
+ not_a_directory = ENOTDIR,
|
|
+ not_a_socket = ENOTSOCK,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_ENOSTR
|
|
+ not_a_stream = ENOSTR,
|
|
+#endif
|
|
+
|
|
+ not_connected = ENOTCONN,
|
|
+ not_enough_memory = ENOMEM,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_ENOTSUP
|
|
+ not_supported = ENOTSUP,
|
|
+#endif
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_ECANCELED
|
|
+ operation_canceled = ECANCELED,
|
|
+#endif
|
|
+
|
|
+ operation_in_progress = EINPROGRESS,
|
|
+ operation_not_permitted = EPERM,
|
|
+ operation_not_supported = EOPNOTSUPP,
|
|
+ operation_would_block = EWOULDBLOCK,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_EOWNERDEAD
|
|
+ owner_dead = EOWNERDEAD,
|
|
+#endif
|
|
+
|
|
+ permission_denied = EACCES,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_EPROTO
|
|
+ protocol_error = EPROTO,
|
|
+#endif
|
|
+
|
|
+ protocol_not_supported = EPROTONOSUPPORT,
|
|
+ read_only_file_system = EROFS,
|
|
+ resource_deadlock_would_occur = EDEADLK,
|
|
+ resource_unavailable_try_again = EAGAIN,
|
|
+ result_out_of_range = ERANGE,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE
|
|
+ state_not_recoverable = ENOTRECOVERABLE,
|
|
+#endif
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_ETIME
|
|
+ stream_timeout = ETIME,
|
|
+#endif
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_ETXTBSY
|
|
+ text_file_busy = ETXTBSY,
|
|
+#endif
|
|
+
|
|
+ timed_out = ETIMEDOUT,
|
|
+ too_many_files_open_in_system = ENFILE,
|
|
+ too_many_files_open = EMFILE,
|
|
+ too_many_links = EMLINK,
|
|
+ too_many_symbolic_link_levels = ELOOP,
|
|
+
|
|
+#ifdef _GLIBCXX_HAVE_EOVERFLOW
|
|
+ value_too_large = EOVERFLOW,
|
|
+#endif
|
|
+
|
|
+ wrong_protocol_type = EPROTOTYPE
|
|
+ };
|
|
+
|
|
+_GLIBCXX_END_NAMESPACE_VERSION
|
|
+} // namespace
|
|
+
|
|
+#endif
|
|
diff --git a/libstdc++-v3/config/os/haiku/os_defines.h b/libstdc++-v3/config/os/haiku/os_defines.h
|
|
new file mode 100644
|
|
index 0000000..4674f7b
|
|
--- /dev/null
|
|
+++ b/libstdc++-v3/config/os/haiku/os_defines.h
|
|
@@ -0,0 +1,45 @@
|
|
+// Specific definitions for generic platforms -*- C++ -*-
|
|
+
|
|
+// Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
|
+//
|
|
+// This file is part of the GNU ISO C++ Library. This library 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.
|
|
+
|
|
+// This library 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.
|
|
+
|
|
+// Under Section 7 of GPL version 3, you are granted additional
|
|
+// permissions described in the GCC Runtime Library Exception, version
|
|
+// 3.1, as published by the Free Software Foundation.
|
|
+
|
|
+// You should have received a copy of the GNU General Public License and
|
|
+// a copy of the GCC Runtime Library Exception along with this program;
|
|
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
+// <http://www.gnu.org/licenses/>.
|
|
+
|
|
+/** @file bits/os_defines.h
|
|
+ * This is an internal header file, included by other library headers.
|
|
+ * Do not attempt to use it directly. @headername{iosfwd}
|
|
+ */
|
|
+
|
|
+#ifndef _GLIBCXX_OS_DEFINES
|
|
+#define _GLIBCXX_OS_DEFINES 1
|
|
+
|
|
+// System-specific #define, typedefs, corrections, etc, go here. This
|
|
+// file will come before all others.
|
|
+
|
|
+// On Haiku, nanosleep and sched_yield are always available except for the
|
|
+// kernel and the bootloader, so use them.
|
|
+#if !defined(_KERNEL_MODE) && !defined(_LOADER_MODE)
|
|
+ #define _GLIBCXX_USE_NANOSLEEP 1
|
|
+ #define _GLIBCXX_USE_SCHED_YIELD 1
|
|
+ #define _GLIBCXX_USE_CLOCK_MONOTONIC 1
|
|
+ #define _GLIBCXX_USE_CLOCK_REALTIME 1
|
|
+#endif
|
|
+
|
|
+#endif
|
|
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
|
|
index 640199c..c110a0e 100644
|
|
--- a/libstdc++-v3/configure.host
|
|
+++ b/libstdc++-v3/configure.host
|
|
@@ -282,6 +282,9 @@ case "${host_os}" in
|
|
os_include_dir="os/gnu-linux"
|
|
fi
|
|
;;
|
|
+ haiku*)
|
|
+ os_include_dir="os/haiku"
|
|
+ ;;
|
|
hpux*)
|
|
os_include_dir="os/hpux"
|
|
;;
|
|
diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4
|
|
index 10247f9..4a0798f 100644
|
|
--- a/libstdc++-v3/crossconfig.m4
|
|
+++ b/libstdc++-v3/crossconfig.m4
|
|
@@ -107,6 +107,47 @@ case "${host}" in
|
|
AC_DEFINE(HAVE_ISNANL)
|
|
fi
|
|
;;
|
|
+
|
|
+ *-haiku*)
|
|
+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
|
|
+ machine/endian.h machine/param.h sys/machine.h sys/types.h \
|
|
+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h])
|
|
+ SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
|
+ AC_SUBST(SECTION_FLAGS)
|
|
+
|
|
+ AC_DEFINE(HAVE_INT64_T)
|
|
+
|
|
+ AC_DEFINE(HAVE_ACOSF)
|
|
+ AC_DEFINE(HAVE_ASINF)
|
|
+ AC_DEFINE(HAVE_ATANF)
|
|
+ AC_DEFINE(HAVE_ATAN2F)
|
|
+ AC_DEFINE(HAVE_CEILF)
|
|
+ AC_DEFINE(HAVE_COSF)
|
|
+ AC_DEFINE(HAVE_COSHF)
|
|
+ AC_DEFINE(HAVE_EXPF)
|
|
+ AC_DEFINE(HAVE_FABSF)
|
|
+ AC_DEFINE(HAVE_FINITE)
|
|
+ AC_DEFINE(HAVE_FINITEF)
|
|
+ AC_DEFINE(HAVE_FLOORF)
|
|
+ AC_DEFINE(HAVE_FMODF)
|
|
+ AC_DEFINE(HAVE_FREXPF)
|
|
+ AC_DEFINE(HAVE_HYPOT)
|
|
+ AC_DEFINE(HAVE_HYPOTF)
|
|
+ AC_DEFINE(HAVE_ISINF)
|
|
+ AC_DEFINE(HAVE_ISINFF)
|
|
+ AC_DEFINE(HAVE_ISNAN)
|
|
+ AC_DEFINE(HAVE_ISNANF)
|
|
+ AC_DEFINE(HAVE_LOGF)
|
|
+ AC_DEFINE(HAVE_LOG10F)
|
|
+ AC_DEFINE(HAVE_MODFF)
|
|
+ AC_DEFINE(HAVE_SINF)
|
|
+ AC_DEFINE(HAVE_SINHF)
|
|
+ AC_DEFINE(HAVE_SQRTF)
|
|
+ AC_DEFINE(HAVE_TANF)
|
|
+ AC_DEFINE(HAVE_TANHF)
|
|
+ AC_DEFINE(HAVE_TLS)
|
|
+ ;;
|
|
+
|
|
*-hpux*)
|
|
SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
|
AC_SUBST(SECTION_FLAGS)
|
|
diff --git a/libstdc++-v3/libsupc++/tinfo.cc b/libstdc++-v3/libsupc++/tinfo.cc
|
|
index 8f77408..aa206ff 100644
|
|
--- a/libstdc++-v3/libsupc++/tinfo.cc
|
|
+++ b/libstdc++-v3/libsupc++/tinfo.cc
|
|
@@ -30,6 +30,15 @@ std::type_info::
|
|
~type_info ()
|
|
{ }
|
|
|
|
+#ifdef __HAIKU__
|
|
+#ifndef __GXX_MERGED_TYPEINFO_NAMES
|
|
+#define __GXX_MERGED_TYPEINFO_NAMES 0
|
|
+#endif
|
|
+#ifndef __GXX_TYPEINFO_EQUALITY_INLINE
|
|
+#define __GXX_TYPEINFO_EQUALITY_INLINE 0
|
|
+#endif
|
|
+#endif
|
|
+
|
|
#if !__GXX_TYPEINFO_EQUALITY_INLINE
|
|
|
|
// We can't rely on common symbols being shared between shared objects.
|
|
diff --git a/libtool.m4 b/libtool.m4
|
|
index 4b2d30a..47ff8f5 100644
|
|
--- a/libtool.m4
|
|
+++ b/libtool.m4
|
|
@@ -1137,7 +1137,7 @@ fi
|
|
# Invoke $ECHO with all args, space-separated.
|
|
func_echo_all ()
|
|
{
|
|
- $ECHO "$*"
|
|
+ $ECHO "$*"
|
|
}
|
|
|
|
case "$ECHO" in
|
|
@@ -1722,7 +1722,7 @@ else
|
|
lt_cv_dlopen_libs=
|
|
|
|
case $host_os in
|
|
- beos*)
|
|
+ beos* | haiku* )
|
|
lt_cv_dlopen="load_add_on"
|
|
lt_cv_dlopen_libs=
|
|
lt_cv_dlopen_self=yes
|
|
@@ -2342,8 +2342,9 @@ 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'
|
|
- hardcode_into_libs=yes
|
|
+ sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib'
|
|
+ sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib'
|
|
+ hardcode_into_libs=no
|
|
;;
|
|
|
|
hpux9* | hpux10* | hpux11*)
|
|
@@ -3603,7 +3604,6 @@ m4_if([$1], [CXX], [
|
|
;;
|
|
esac
|
|
;;
|
|
-
|
|
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
|
|
# PIC is the default for these OSes.
|
|
;;
|
|
@@ -3626,8 +3626,6 @@ m4_if([$1], [CXX], [
|
|
;;
|
|
haiku*)
|
|
# PIC is the default for Haiku.
|
|
- # The "-static" flag exists, but is broken.
|
|
- _LT_TAGVAR(lt_prog_compiler_static, $1)=
|
|
;;
|
|
interix[[3-9]]*)
|
|
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
|
|
@@ -3937,8 +3935,6 @@ m4_if([$1], [CXX], [
|
|
|
|
haiku*)
|
|
# PIC is the default for Haiku.
|
|
- # The "-static" flag exists, but is broken.
|
|
- _LT_TAGVAR(lt_prog_compiler_static, $1)=
|
|
;;
|
|
|
|
hpux*)
|
|
--
|
|
2.1.0
|
|
|
|
From e4114a4c52a1c7a9d67008a9f4e498e353641fa9 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= <jerome.duval@gmail.com>
|
|
Date: Mon, 27 Jul 2015 17:08:38 +0200
|
|
Subject: [PATCH 2/2] Haiku: regenerate configure.
|
|
|
|
---
|
|
configure | 48 ++++++++++++++------
|
|
gcc/configure | 50 ++++++++++++++------
|
|
libstdc++-v3/configure | 121 +++++++++++++++++++++++++++++++++++++++++--------
|
|
3 files changed, 171 insertions(+), 48 deletions(-)
|
|
|
|
diff --git a/configure b/configure
|
|
index a3f66ba..fd08e27 100755
|
|
--- a/configure
|
|
+++ b/configure
|
|
@@ -3026,6 +3026,9 @@ case "${host}" in
|
|
i[3456789]86-*-msdosdjgpp*)
|
|
noconfigdirs="$noconfigdirs tcl tk itcl"
|
|
;;
|
|
+ *-*-haiku*)
|
|
+ noconfigdirs="$noconfigdirs tk itcl libgui gdb"
|
|
+ ;;
|
|
esac
|
|
|
|
|
|
@@ -3440,6 +3443,9 @@ case "${target}" in
|
|
*-*-darwin*)
|
|
noconfigdirs="$noconfigdirs ${libgcj}"
|
|
;;
|
|
+ *-*-haiku*)
|
|
+ noconfigdirs="$noconfigdirs ${libgcj}"
|
|
+ ;;
|
|
*-*-netware*)
|
|
noconfigdirs="$noconfigdirs ${libgcj}"
|
|
;;
|
|
@@ -3627,6 +3633,9 @@ case "${target}" in
|
|
*-*-freebsd*)
|
|
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
|
;;
|
|
+ *-*-haiku*)
|
|
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
|
+ ;;
|
|
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
|
|
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
|
;;
|
|
@@ -3680,6 +3689,9 @@ case "${target}" in
|
|
with_gmp=/usr/local
|
|
fi
|
|
;;
|
|
+ *-*-haiku*)
|
|
+ noconfigdirs="$noconfigdirs gdb target-libiberty"
|
|
+ ;;
|
|
*-*-kaos*)
|
|
# Remove unsupported stuff on all kaOS configurations.
|
|
noconfigdirs="$noconfigdirs target-libgloss"
|
|
@@ -5331,24 +5343,30 @@ $as_echo_n "checking how to compare bootstrapped objects... " >&6; }
|
|
if test "${gcc_cv_prog_cmp_skip+set}" = set; then :
|
|
$as_echo_n "(cached) " >&6
|
|
else
|
|
- echo abfoo >t1
|
|
- echo cdfoo >t2
|
|
- gcc_cv_prog_cmp_skip='tail +16c $$f1 > tmp-foo1; tail +16c $$f2 > tmp-foo2; cmp tmp-foo1 tmp-foo2'
|
|
- if cmp t1 t2 2 2 > /dev/null 2>&1; then
|
|
- if cmp t1 t2 1 1 > /dev/null 2>&1; then
|
|
- :
|
|
- else
|
|
- gcc_cv_prog_cmp_skip='cmp $$f1 $$f2 16 16'
|
|
+ # comparing object files via cmp doesn't work on haiku (files will seemingly
|
|
+ # always differ), so we disassemble both files and compare the results:
|
|
+ if uname -o | grep -iq haiku; then
|
|
+ gcc_cv_prog_cmp_skip='objdump -Dz $$f1 | tail +6 >tmp-foo1; objdump -Dz $$f2 | tail +6 >tmp-foo2; cmp tmp-foo1 tmp-foo2'
|
|
+ else
|
|
+ gcc_cv_prog_cmp_skip='tail +16c $$f1 > tmp-foo1; tail +16c $$f2 > tmp-foo2; cmp tmp-foo1 tmp-foo2'
|
|
+ echo abfoo >t1
|
|
+ echo cdfoo >t2
|
|
+ if cmp t1 t2 2 2 > /dev/null 2>&1; then
|
|
+ if cmp t1 t2 1 1 > /dev/null 2>&1; then
|
|
+ :
|
|
+ else
|
|
+ gcc_cv_prog_cmp_skip='cmp $$f1 $$f2 16 16'
|
|
+ fi
|
|
fi
|
|
- fi
|
|
- if cmp --ignore-initial=2 t1 t2 > /dev/null 2>&1; then
|
|
- if cmp --ignore-initial=1 t1 t2 > /dev/null 2>&1; then
|
|
- :
|
|
- else
|
|
- gcc_cv_prog_cmp_skip='cmp --ignore-initial=16 $$f1 $$f2'
|
|
+ if cmp --ignore-initial=2 t1 t2 > /dev/null 2>&1; then
|
|
+ if cmp --ignore-initial=1 t1 t2 > /dev/null 2>&1; then
|
|
+ :
|
|
+ else
|
|
+ gcc_cv_prog_cmp_skip='cmp --ignore-initial=16 $$f1 $$f2'
|
|
+ fi
|
|
fi
|
|
+ rm t1 t2
|
|
fi
|
|
- rm t1 t2
|
|
|
|
fi
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_prog_cmp_skip" >&5
|
|
diff --git a/gcc/configure b/gcc/configure
|
|
index 0037240..d8d56d3 100755
|
|
--- a/gcc/configure
|
|
+++ b/gcc/configure
|
|
@@ -737,6 +737,7 @@ LDEXP_LIB
|
|
EXTRA_GCC_LIBS
|
|
GNAT_LIBEXC
|
|
COLLECT2_LIBS
|
|
+build_math_library
|
|
CXXDEPMODE
|
|
DEPDIR
|
|
am__leading_dot
|
|
@@ -778,6 +779,7 @@ with_float
|
|
with_cpu
|
|
enable_multiarch
|
|
enable_multilib
|
|
+HYBRID_SECONDARY
|
|
coverage_flags
|
|
valgrind_command
|
|
valgrind_path_defines
|
|
@@ -885,6 +887,7 @@ enable_checking
|
|
enable_coverage
|
|
enable_gather_detailed_mem_stats
|
|
enable_valgrind_annotations
|
|
+with_hybrid_secondary
|
|
with_stabs
|
|
enable_multilib
|
|
enable_multiarch
|
|
@@ -1690,6 +1693,8 @@ Optional Packages:
|
|
--with-demangler-in-ld try to use demangler in GNU ld
|
|
--with-gnu-as arrange to work with GNU as
|
|
--with-as arrange to use the specified as (full pathname)
|
|
+ --with-hybrid_secondary specify the packaging architecture for building a
|
|
+ secondary compiler for a Haiku hybrid system
|
|
--with-stabs arrange to use stabs instead of host debug format
|
|
--with-dwarf2 force the default debug format to be DWARF 2
|
|
--with-native-system-header-dir=dir
|
|
@@ -7039,6 +7044,18 @@ fi
|
|
# Miscenalleous configure options
|
|
# -------------------------------
|
|
|
|
+# handle --with-hybrid-secondary
|
|
+
|
|
+# Check whether --with-hybrid_secondary was given.
|
|
+if test "${with_hybrid_secondary+set}" = set; then :
|
|
+ withval=$with_hybrid_secondary; HYBRID_SECONDARY=$withval
|
|
+else
|
|
+ HYBRID_SECONDARY=
|
|
+
|
|
+fi
|
|
+
|
|
+
|
|
+
|
|
# With stabs
|
|
|
|
# Check whether --with-stabs was given.
|
|
@@ -9115,6 +9132,16 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|
# --------
|
|
|
|
|
|
+# Configure -lm usage for host tools that need it
|
|
+build_math_library="-lm"
|
|
+case $build in
|
|
+ *-*-haiku*)
|
|
+ # no separate math library needed
|
|
+ build_math_library=
|
|
+ ;;
|
|
+esac
|
|
+
|
|
+
|
|
# These libraries may be used by collect2.
|
|
# We may need a special search path to get them linked.
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for collect2 libraries" >&5
|
|
@@ -11414,7 +11441,7 @@ case ${enable_threads} in
|
|
# default
|
|
target_thread_file='single'
|
|
;;
|
|
- aix | dce | lynx | mipssde | posix | rtems | \
|
|
+ aix | dce | haiku | lynx | mipssde | posix | rtems | \
|
|
single | tpf | vxworks | win32)
|
|
target_thread_file=${enable_threads}
|
|
;;
|
|
@@ -15253,8 +15280,6 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
|
|
|
|
haiku*)
|
|
# PIC is the default for Haiku.
|
|
- # The "-static" flag exists, but is broken.
|
|
- lt_prog_compiler_static=
|
|
;;
|
|
|
|
hpux*)
|
|
@@ -17366,8 +17391,9 @@ 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'
|
|
- hardcode_into_libs=yes
|
|
+ sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib'
|
|
+ sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib'
|
|
+ hardcode_into_libs=no
|
|
;;
|
|
|
|
hpux9* | hpux10* | hpux11*)
|
|
@@ -17884,7 +17910,7 @@ else
|
|
lt_cv_dlopen_libs=
|
|
|
|
case $host_os in
|
|
- beos*)
|
|
+ beos* | haiku* )
|
|
lt_cv_dlopen="load_add_on"
|
|
lt_cv_dlopen_libs=
|
|
lt_cv_dlopen_self=yes
|
|
@@ -18162,7 +18188,7 @@ else
|
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
|
lt_status=$lt_dlunknown
|
|
cat > conftest.$ac_ext <<_LT_EOF
|
|
-#line 18165 "configure"
|
|
+#line 18191 "configure"
|
|
#include "confdefs.h"
|
|
|
|
#if HAVE_DLFCN_H
|
|
@@ -18268,7 +18294,7 @@ else
|
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
|
lt_status=$lt_dlunknown
|
|
cat > conftest.$ac_ext <<_LT_EOF
|
|
-#line 18271 "configure"
|
|
+#line 18297 "configure"
|
|
#include "confdefs.h"
|
|
|
|
#if HAVE_DLFCN_H
|
|
@@ -20082,7 +20108,6 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
|
|
;;
|
|
esac
|
|
;;
|
|
-
|
|
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
|
|
# PIC is the default for these OSes.
|
|
;;
|
|
@@ -20104,8 +20129,6 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
|
|
;;
|
|
haiku*)
|
|
# PIC is the default for Haiku.
|
|
- # The "-static" flag exists, but is broken.
|
|
- lt_prog_compiler_static_CXX=
|
|
;;
|
|
interix[3-9]*)
|
|
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
|
|
@@ -21026,8 +21049,9 @@ 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'
|
|
- hardcode_into_libs=yes
|
|
+ sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib'
|
|
+ sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib'
|
|
+ hardcode_into_libs=no
|
|
;;
|
|
|
|
hpux9* | hpux10* | hpux11*)
|
|
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
|
|
index 90f2aa8..1c40c4b 100755
|
|
--- a/libstdc++-v3/configure
|
|
+++ b/libstdc++-v3/configure
|
|
@@ -8657,8 +8657,6 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
|
|
|
|
haiku*)
|
|
# PIC is the default for Haiku.
|
|
- # The "-static" flag exists, but is broken.
|
|
- lt_prog_compiler_static=
|
|
;;
|
|
|
|
hpux*)
|
|
@@ -10779,8 +10777,9 @@ 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'
|
|
- hardcode_into_libs=yes
|
|
+ sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib'
|
|
+ sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib'
|
|
+ hardcode_into_libs=no
|
|
;;
|
|
|
|
hpux9* | hpux10* | hpux11*)
|
|
@@ -11300,7 +11299,7 @@ else
|
|
lt_cv_dlopen_libs=
|
|
|
|
case $host_os in
|
|
- beos*)
|
|
+ beos* | haiku* )
|
|
lt_cv_dlopen="load_add_on"
|
|
lt_cv_dlopen_libs=
|
|
lt_cv_dlopen_self=yes
|
|
@@ -11593,7 +11592,7 @@ else
|
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
|
lt_status=$lt_dlunknown
|
|
cat > conftest.$ac_ext <<_LT_EOF
|
|
-#line 11596 "configure"
|
|
+#line 11595 "configure"
|
|
#include "confdefs.h"
|
|
|
|
#if HAVE_DLFCN_H
|
|
@@ -11699,7 +11698,7 @@ else
|
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
|
lt_status=$lt_dlunknown
|
|
cat > conftest.$ac_ext <<_LT_EOF
|
|
-#line 11702 "configure"
|
|
+#line 11701 "configure"
|
|
#include "confdefs.h"
|
|
|
|
#if HAVE_DLFCN_H
|
|
@@ -13519,7 +13518,6 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
|
|
;;
|
|
esac
|
|
;;
|
|
-
|
|
beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
|
|
# PIC is the default for these OSes.
|
|
;;
|
|
@@ -13541,8 +13539,6 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
|
|
;;
|
|
haiku*)
|
|
# PIC is the default for Haiku.
|
|
- # The "-static" flag exists, but is broken.
|
|
- lt_prog_compiler_static_CXX=
|
|
;;
|
|
interix[3-9]*)
|
|
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
|
|
@@ -14463,8 +14459,9 @@ 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'
|
|
- hardcode_into_libs=yes
|
|
+ sys_lib_search_path_spec='/boot/system/non-packaged/develop/lib /boot/system/develop/lib'
|
|
+ sys_lib_dlsearch_path_spec='/boot/home/config/non-packaged/lib /boot/home/config/lib /boot/system/non-packaged/lib /boot/system/lib'
|
|
+ hardcode_into_libs=no
|
|
;;
|
|
|
|
hpux9* | hpux10* | hpux11*)
|
|
@@ -15119,7 +15116,7 @@ fi
|
|
#
|
|
# Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style.
|
|
cat > conftest.$ac_ext << EOF
|
|
-#line 15122 "configure"
|
|
+#line 15119 "configure"
|
|
struct S { ~S(); };
|
|
void bar();
|
|
void foo()
|
|
@@ -15471,7 +15468,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
|
|
# Fake what AC_TRY_COMPILE does.
|
|
|
|
cat > conftest.$ac_ext << EOF
|
|
-#line 15474 "configure"
|
|
+#line 15471 "configure"
|
|
int main()
|
|
{
|
|
typedef bool atomic_type;
|
|
@@ -15506,7 +15503,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
|
|
rm -f conftest*
|
|
|
|
cat > conftest.$ac_ext << EOF
|
|
-#line 15509 "configure"
|
|
+#line 15506 "configure"
|
|
int main()
|
|
{
|
|
typedef short atomic_type;
|
|
@@ -15541,7 +15538,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
|
|
rm -f conftest*
|
|
|
|
cat > conftest.$ac_ext << EOF
|
|
-#line 15544 "configure"
|
|
+#line 15541 "configure"
|
|
int main()
|
|
{
|
|
// NB: _Atomic_word not necessarily int.
|
|
@@ -15577,7 +15574,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
|
|
rm -f conftest*
|
|
|
|
cat > conftest.$ac_ext << EOF
|
|
-#line 15580 "configure"
|
|
+#line 15577 "configure"
|
|
int main()
|
|
{
|
|
typedef long long atomic_type;
|
|
@@ -15656,7 +15653,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu
|
|
# unnecessary for this test.
|
|
|
|
cat > conftest.$ac_ext << EOF
|
|
-#line 15659 "configure"
|
|
+#line 15656 "configure"
|
|
int main()
|
|
{
|
|
_Decimal32 d1;
|
|
@@ -15698,7 +15695,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
|
# unnecessary for this test.
|
|
|
|
cat > conftest.$ac_ext << EOF
|
|
-#line 15701 "configure"
|
|
+#line 15698 "configure"
|
|
template<typename T1, typename T2>
|
|
struct same
|
|
{ typedef T2 type; };
|
|
@@ -15732,7 +15729,7 @@ $as_echo "$enable_int128" >&6; }
|
|
rm -f conftest*
|
|
|
|
cat > conftest.$ac_ext << EOF
|
|
-#line 15735 "configure"
|
|
+#line 15732 "configure"
|
|
template<typename T1, typename T2>
|
|
struct same
|
|
{ typedef T2 type; };
|
|
@@ -52160,6 +52157,90 @@ $as_echo "$ac_ld_relro" >&6; }
|
|
|
|
fi
|
|
;;
|
|
+
|
|
+ *-haiku*)
|
|
+ for ac_header in nan.h ieeefp.h endian.h sys/isa_defs.h \
|
|
+ machine/endian.h machine/param.h sys/machine.h sys/types.h \
|
|
+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h
|
|
+do :
|
|
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
|
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
|
+eval as_val=\$$as_ac_Header
|
|
+ if test "x$as_val" = x""yes; then :
|
|
+ cat >>confdefs.h <<_ACEOF
|
|
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
|
+_ACEOF
|
|
+
|
|
+fi
|
|
+
|
|
+done
|
|
+
|
|
+ SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
|
+
|
|
+
|
|
+ $as_echo "#define HAVE_INT64_T 1" >>confdefs.h
|
|
+
|
|
+
|
|
+ $as_echo "#define HAVE_ACOSF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_ASINF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_ATANF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_ATAN2F 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_CEILF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_COSF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_COSHF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_EXPF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_FABSF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_FINITE 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_FINITEF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_FLOORF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_FMODF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_FREXPF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_HYPOT 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_HYPOTF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_ISINF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_ISINFF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_ISNANF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_LOGF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_LOG10F 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_MODFF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_SINF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_SINHF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_SQRTF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_TANF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_TANHF 1" >>confdefs.h
|
|
+
|
|
+ $as_echo "#define HAVE_TLS 1" >>confdefs.h
|
|
+
|
|
+ ;;
|
|
+
|
|
*-hpux*)
|
|
SECTION_FLAGS='-ffunction-sections -fdata-sections'
|
|
|
|
--
|
|
2.1.0
|
|
|