Merge our changes into GCC 8.3.
Diff
gcc/config.rpath | 2 ++
gcc/configure | 46 ++++++++++++++++++++++++++++++----------------
gcc/configure.ac | 8 +++++++-
gcc/libtool.m4 | 2 +-
gcc/gcc/Makefile.in | 18 ++++++++++++++----
gcc/gcc/config.gcc | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config.host | 10 ++++++----
gcc/libgcc/config.host | 29 +++++++++++++++++++++++++++--
gcc/libstdc++-v3/configure | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/libstdc++-v3/configure.host | 5 ++++-
gcc/libstdc++-v3/crossconfig.m4 | 46 +++++++++++++++++++++++++++++++++++++++++++---
gcc/gcc/config/haiku-spec.h | 38 ++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/haiku-stdint.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/haiku.h | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/t-haiku | 4 ++++
gcc/libgcc/config/t-haiku | 3 +++
gcc/gcc/config/arm/haiku.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/arm/t-haiku | 21 +++++++++++++++++++++
gcc/gcc/config/i386/haiku.h | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/i386/haiku64.h | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/i386/t-haiku64 | 16 ++++++++++++++++
gcc/gcc/config/m68k/haiku.h | 268 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/mips/haiku.h | 44 ++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/riscv/haiku.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/riscv/t-haiku | 4 ++++
gcc/gcc/config/rs6000/haiku.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/sparc/haiku.h | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/gcc/config/sparc/t-haiku | 5 +++++
gcc/libstdc++-v3/config/os/haiku/ctype_base.h | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/libstdc++-v3/config/os/haiku/ctype_configure_char.cc | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/libstdc++-v3/config/os/haiku/ctype_inline.h | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/libstdc++-v3/config/os/haiku/error_constants.h | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
gcc/libstdc++-v3/config/os/haiku/os_defines.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
33 files changed, 2005 insertions(+), 34 deletions(-)
@@ -161,6 +161,8 @@
;;
netbsd*)
;;
haiku*)
;;
solaris* | sysv5*)
if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
ld_shlibs=no
@@ -3053,6 +3053,9 @@
i[3456789]86-*-msdosdjgpp*)
noconfigdirs="$noconfigdirs tcl tk itcl"
;;
*-*-haiku*)
noconfigdirs="$noconfigdirs tk itcl libgui gdb"
;;
esac
@@ -3554,6 +3557,9 @@
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
;;
*-*-freebsd*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
;;
*-*-haiku*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
;;
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
@@ -3616,6 +3622,9 @@
&& test -f /usr/local/include/gmp.h; then
with_gmp=/usr/local
fi
;;
*-*-haiku*)
noconfigdirs="$noconfigdirs gdb target-libiberty"
;;
*-*-kaos*)
# Remove unsupported stuff on all kaOS configurations.
@@ -5265,25 +5274,30 @@
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 -c +17 $$f1 > tmp-foo1; tail -c +17 $$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
echo abfoo >t1
echo cdfoo >t2
gcc_cv_prog_cmp_skip='tail -c +17 $$f1 > tmp-foo1; tail -c +17 $$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'
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
$as_echo "$gcc_cv_prog_cmp_skip" >&6; }
@@ -419,6 +419,9 @@
i[[3456789]]86-*-msdosdjgpp*)
noconfigdirs="$noconfigdirs tcl tk itcl"
;;
*-*-haiku*)
noconfigdirs="$noconfigdirs tk itcl libgui gdb"
;;
esac
@@ -875,7 +878,7 @@
*-*-aix*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
;;
*-*-beos*)
*-*-haiku*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
;;
*-*-chorusos)
@@ -947,6 +950,9 @@
&& test -f /usr/local/include/gmp.h; then
with_gmp=/usr/local
fi
;;
*-*-haiku*)
noconfigdirs="$noconfigdirs gdb target-libiberty"
;;
*-*-kaos*)
# Remove unsupported stuff on all kaOS configurations.
@@ -1722,7 +1722,7 @@
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
@@ -106,6 +106,8 @@
build_libobjdir := $(toplevel_builddir)/$(build_libsubdir)
target_objdir := $(toplevel_builddir)/$(target_subdir)
HYBRID_SECONDARY = @HYBRID_SECONDARY@
# --------
# Defined vpaths
# --------
@@ -264,7 +266,7 @@
NO_PIE_FLAG = @NO_PIE_FLAG@
# We don't want to compile the compilers with -fPIE, it make PCH fail.
COMPILER += $(NO_PIE_CFLAGS)
#COMPILER += $(NO_PIE_CFLAGS)
# Link with -no-pie since we compile the compiler with -fno-PIE.
LINKER += $(NO_PIE_FLAG)
@@ -783,9 +785,9 @@
NO_PIE_FLAG_FOR_BUILD = @NO_PIE_FLAG_FOR_BUILD@
BUILD_CFLAGS= @BUILD_CFLAGS@ -DGENERATOR_FILE
BUILD_CXXFLAGS = @BUILD_CXXFLAGS@ -DGENERATOR_FILE
BUILD_NO_PIE_CFLAGS = @BUILD_NO_PIE_CFLAGS@
BUILD_CFLAGS += $(BUILD_NO_PIE_CFLAGS)
BUILD_CXXFLAGS += $(BUILD_NO_PIE_CFLAGS)
#BUILD_NO_PIE_CFLAGS = @BUILD_NO_PIE_CFLAGS@
#BUILD_CFLAGS += $(BUILD_NO_PIE_CFLAGS)
#BUILD_CXXFLAGS += $(BUILD_NO_PIE_CFLAGS)
# Native compiler that we use. This may be C++ some day.
COMPILER_FOR_BUILD = $(CXX_FOR_BUILD)
@@ -2191,6 +2193,10 @@
$(VALGRIND_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) -DBASEVER=$(BASEVER_s)
gcc.o: $(BASEVER)
@@ -2882,6 +2888,10 @@
-DPREFIX=\"$(prefix)/\" \
-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)
@@ -174,7 +174,7 @@
# the --with-sysroot configure option or the
# --sysroot command line option is used this
# will be relative to the sysroot.
# target_type_format_char
# target_type_format_char
# The default character to be used for formatting
# the attribute in a
# .type symbol_name, ${t_t_f_c}<property>
@@ -747,6 +747,19 @@
*-*-fuchsia*)
native_system_header_dir=/include
;;
*-*-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 | *-*-gnu* | *-*-kopensolaris*-gnu)
extra_options="$extra_options gnu-user.opt"
gas=yes
@@ -1131,6 +1144,16 @@
tmake_file="${tmake_file} arm/t-arm"
target_cpu_cname="arm6"
;;
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"
@@ -1522,6 +1545,14 @@
;;
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 ${nbsd_tm_file} i386/netbsd-elf.h"
@@ -2009,6 +2040,13 @@
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
@@ -2060,6 +2098,12 @@
cxx_target_objs="${cxx_target_objs} microblaze-c.o"
tmake_file="${tmake_file} microblaze/t-microblaze"
;;
riscv*-*-haiku*)
tm_file="elfos.h haiku.h ${tm_file} riscv/haiku.h"
tmake_file="${tmake_file} t-haiku riscv/t-riscv riscv/t-haiku"
gnu_ld=yes
gas=yes
;;
riscv*-*-linux*)
tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
case "x${enable_multilib}" in
@@ -2129,6 +2173,11 @@
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"
@@ -2468,6 +2517,11 @@
extra_options="${extra_options} rs6000/sysv4.opt"
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*spe*)
tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h powerpcspe/sysv4.h powerpcspe/eabi.h powerpcspe/e500.h powerpcspe/rtems.h rtems.h"
@@ -2954,6 +3008,11 @@
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
extra_options="${extra_options}"
tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
;;
sparc64-*-haiku*)
tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp64-elf.h haiku.h sparc/haiku.h"
extra_options="${extra_options}"
tmake_file="${tmake_file} t-haiku sparc/t-sparc sparc/t-haiku"
;;
sparc64-*-linux*)
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
@@ -107,7 +107,7 @@
;;
esac
;;
arm*-*-freebsd* | arm*-*-linux* | arm*-*-fuchsia*)
arm*-*-freebsd* | arm*-*-haiku* | arm*-*-linux* | arm*-*-fuchsia*)
case ${target} in
arm*-*-*)
host_extra_gcc_objs="driver-arm.o"
@@ -133,9 +133,11 @@
;;
esac
;;
mips*-*-linux*)
case ${target} in
mips*-*-linux*)
mips*-*-linux* \
| mips*-*-haiku*)
case ${target} in
mips*-*-linux* \
| mips*-*-haiku*)
host_extra_gcc_objs="driver-native.o"
host_xmake_file="${host_xmake_file} mips/x-native"
;;
@@ -99,7 +99,7 @@
;;
avr-*-*)
cpu_type=avr
;;
;;
bfin*-*)
cpu_type=bfin
;;
@@ -230,6 +230,10 @@
esac
;;
esac
;;
*-*-haiku*)
tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-slibgcc-nolc-override t-haiku"
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
;;
*-*-fuchsia*)
tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-fuchsia"
@@ -408,6 +412,13 @@
arm*-*-freebsd*) # ARM FreeBSD EABI
tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix arm/t-elf"
tmake_file="${tmake_file} arm/t-bpabi arm/t-freebsd"
tm_file="${tm_file} arm/bpabi-lib.h"
unwind_header=config/arm/unwind-arm.h
tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
;;
arm*-*-haiku*)
tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix arm/t-elf"
tmake_file="${tmake_file} arm/t-bpabi"
tm_file="${tm_file} arm/bpabi-lib.h"
unwind_header=config/arm/unwind-arm.h
tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
@@ -630,7 +641,13 @@
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*)
tmake_file="${tmake_file} i386/t-crtstuff"
;;
@@ -825,7 +842,7 @@
lm32-*-uclinux*)
extra_parts="$extra_parts crtbegin.o crtendS.o crtbeginT.o"
tmake_file="lm32/t-lm32 lm32/t-uclinux t-libgcc-pic t-softfp-sfdf t-softfp"
;;
;;
m32r-*-elf*)
tmake_file="$tmake_file m32r/t-m32r t-fdpbit"
extra_parts="$extra_parts crtinit.o crtfini.o"
@@ -839,6 +856,8 @@
m32rle-*-linux*)
tmake_file="$tmake_file m32r/t-linux t-fdpbit"
;;
m68k-*-haiku*)
;;
m68k-*-elf* | fido-*-elf)
tmake_file="$tmake_file m68k/t-floatlib"
;;
@@ -908,6 +927,8 @@
;;
esac
extra_parts="$extra_parts crti.o crtn.o"
;;
mipsel-*-haiku*)
;;
mipsisa32-*-elf* | mipsisa32el-*-elf* | \
mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
@@ -1035,6 +1056,8 @@
;;
esac
;;
powerpc-*-haiku*)
;;
powerpc-*-netbsd*)
tmake_file="$tmake_file rs6000/t-netbsd rs6000/t-crtstuff"
;;
@@ -1282,6 +1305,8 @@
tmake_file="${tmake_file} sparc/t-softmul"
fi
md_unwind_header=sparc/linux-unwind.h
;;
sparc64-*-haiku*)
;;
sparc64-*-netbsd*)
;;
@@ -11315,7 +11315,7 @@
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
@@ -53361,6 +53361,89 @@
fi
done
;;
*-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
;;
@@ -273,6 +273,9 @@
os_include_dir="os/gnu-linux"
fi
;;
haiku*)
os_include_dir="os/haiku"
;;
hpux*)
os_include_dir="os/hpux"
;;
@@ -363,7 +366,7 @@
;;
esac
;;
arm*-*-freebsd*)
arm*-*-freebsd* | arm*-*-haiku*)
port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
;;
powerpc*-*-darwin*)
@@ -93,7 +93,7 @@
*-freebsd*)
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_LINKER_FEATURES
AC_DEFINE(HAVE_SETENV)
AC_DEFINE(HAVE_FINITEF)
@@ -134,6 +134,46 @@
fi
AC_CHECK_FUNCS(__cxa_thread_atexit)
AC_CHECK_FUNCS(aligned_alloc posix_memalign memalign _aligned_malloc)
;;
*-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)
;;
*-fuchsia*)
@@ -202,7 +242,7 @@
;;
*-netbsd*)
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_LINKER_FEATURES
AC_DEFINE(HAVE_FINITEF)
AC_DEFINE(HAVE_FINITE)
@@ -221,7 +261,7 @@
;;
*-qnx6.1* | *-qnx6.2*)
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_LINKER_FEATURES
AC_DEFINE(HAVE_COSF)
AC_DEFINE(HAVE_COSL)
@@ -1,0 +1,38 @@
#define HAIKU_TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define ("__HAIKU__"); \
builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
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"); \
HAIKU_TARGET_CPU_CPP_BUILTINS(); \
} \
while (0)
#define HAIKU_TARGET_CPU_CPP_BUILTINS() do {} while (0)
/* Provide a CPP_SPEC appropriate for Haiku. We just deal with the GCC
option `-posix', and PIC issues. */
#define HAIKU_CPP_SPEC " \
%(cpp_cpu) \
%(cpp_arch) \
%{posix:-D_POSIX_SOURCE}"
#define HAIKU_STARTFILE_SPEC \
"crti.o%s crtbeginS.o%s %{!shared:%{!nostart:start_dyn.o%s}} init_term_dyn.o%s"
#define HAIKU_ENDFILE_SPEC \
"crtendS.o%s crtn.o%s"
#define HAIKU_LIB_SPEC \
"-lroot"
#define HAIKU_DYNAMIC_LINKER \
"/system/runtime_loader"
@@ -1,0 +1,55 @@
/* Definitions for <stdint.h> types on Haiku.
Copyright (C) 2014 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 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:
#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"
@@ -1,0 +1,217 @@
/* 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. */
#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 \
"%{fpic|fPIC|fpie|fPIE|fno-pic|fno-PIC|fno-pie|fno-PIE:;:-fPIC} \
%{!Wmultichar: -Wno-multichar} %(cc1_cpu) %{profile:-p}"
#undef CC1PLUS_SPEC
#define CC1PLUS_SPEC "%{!Wctor-dtor-privacy:-Wno-ctor-dtor-privacy}"
#undef LIB_SPEC
#define LIB_SPEC "-lroot"
#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
#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 }, \
\
{ "/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
/* 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 }, \
\
{ "/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
/* 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
#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
#define STANDARD_STARTFILE_PREFIX_1 "/boot/system/non-packaged/develop/lib/"
#define STANDARD_STARTFILE_PREFIX_2 "/boot/system/develop/lib/"
#endif
#define MATH_LIBRARY ""
#define NO_IMPLICIT_EXTERN_C
#ifndef TARGET_LIBC_PROVIDES_SSP
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp}"
#endif
#define TARGET_NO_JCR_SECTION_NAME 1
#define USE_TM_CLONE_REGISTRY 0
@@ -1,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 ]
@@ -1,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
@@ -1,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. */
#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
#undef MULTILIB_DEFAULTS
#define MULTILIB_DEFAULTS \
{ "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }
/*
#undef TARGET_DEFAULT
*/
#undef SUBTARGET_CPU_DEFAULT
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
#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"); \
\
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
#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"
@@ -1,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 =
@@ -1,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. */
#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
@@ -1,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_haiku} %{" 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)
#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
#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_DECL_COMMON
#define ASM_OUTPUT_ALIGNED_DECL_COMMON(FILE, DECL, NAME, SIZE, ALIGN) \
x86_elf_aligned_decl_common (FILE, DECL, 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
@@ -1,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
@@ -1,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. */
#undef TARGET_DEFAULT
#ifdef TARGET_CPU_DEFAULT
#define TARGET_DEFAULT TARGET_CPU_DEFAULT
#else
#define TARGET_DEFAULT (MASK_BITFIELD|MASK_68881|MASK_68020)
#endif
#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 "."
#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX ""
#undef ASM_COMMENT_START
#define ASM_COMMENT_START "|"
#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. */
#undef LINK_SPEC
#define LINK_SPEC "%{!o*:-o %b} -m m68kelf %{!r:-shared} %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
/* 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. */
#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)
#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
#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); \
}
@@ -1,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}"
@@ -1,0 +1,57 @@
/* Definitions for RISC-V Haiku systems with ELF format.
Copyright (C) 1998-2017 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 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.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http:
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define ("__HAIKU__"); \
if (POINTER_SIZE == 64) \
builtin_define ("__riscv64__"); \
else \
builtin_define ("__riscv32__"); \
builtin_define ("__RISCV__"); \
builtin_define ("__riscv__"); \
builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
builtin_define ("__STDC_ISO_10646__=201103L"); \
builtin_assert ("system=haiku"); \
} \
while (0)
#define MUSL_ABI_SUFFIX \
"%{mabi=ilp32:-sf}" \
"%{mabi=ilp32f:-sp}" \
"%{mabi=ilp32d:}" \
"%{mabi=lp64:-sf}" \
"%{mabi=lp64f:-sp}" \
"%{mabi=lp64d:}" \
#undef LIB_SPEC
#define LIB_SPEC " -lroot "
#undef STARTFILE_PREFIX_SPEC
#define ICACHE_FLUSH_FUNC "__riscv_flush_icache"
#undef LINK_SPEC
#define LINK_SPEC "%{!o*:-o %b} -melf" XLEN_SPEC "lriscv %{!r:-shared} %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}} -X"
@@ -1,0 +1,4 @@
# Disable for now, only RV64 on Haiku for the moment
# Only XLEN and ABI affect multilib dir names, e.g. /lib32/ilp32d/
#MULTILIB_DIRNAMES := $(patsubst rv32%,lib32,$(patsubst rv64%,lib64,$(MULTILIB_DIRNAMES)))
#MULTILIB_OSDIRNAMES := $(patsubst lib%,../lib%,$(MULTILIB_DIRNAMES))
@@ -1,0 +1,56 @@
/* 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. */
#undef LINK_SPEC
#define LINK_SPEC "%{!o*:-o %b} -m elf32ppchaiku %{!r:-shared} %{nostart:-e 0} %{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
@@ -1,0 +1,93 @@
/* Definitions of target machine for GCC, for ELF on Haiku/sparc64.
Copyright (C) 2002-2017 Free Software Foundation, Inc.
Contributed by Matthew Green (mrg@eterna.com.au).
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.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http:
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define ("__HAIKU__"); \
if (TARGET_ARCH64) \
{ \
builtin_define ("__sparc64__"); \
builtin_define ("__sparc_v9__"); \
builtin_define ("__sparcv9"); \
} \
else \
builtin_define ("__sparc"); \
builtin_define ("__sparc__"); \
} \
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. */
#undef LINK_SPEC
#define LINK_SPEC "-m elf64_sparc %{!r:-shared} %{nostart:-e 0} \
%{shared:-e 0} %{!shared: %{!nostart: -no-undefined}}"
#undef SIZE_TYPE
#define SIZE_TYPE "long unsigned int"
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "long int"
/* This is the char to use for continuation (in case we need to turn
continuation back on). */
#undef DBX_CONTIN_CHAR
#define DBX_CONTIN_CHAR '?'
#undef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX "."
/* This is how to store into the string LABEL
the symbol_ref name of an internal numbered label where
PREFIX is the class of label and NUM is the number within the class.
This is suitable for output with `assemble_name'. */
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
sprintf ((LABEL), "*.L%s%ld", (PREFIX), (long)(NUM))
#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX ""
#undef ASM_SPEC
#define ASM_SPEC "%{" FPIE_OR_FPIC_SPEC ":-K PIC} \
%(asm_cpu) %(asm_arch) %(asm_relax)"
#define HAVE_ENABLE_EXECUTE_STACK
#undef TARGET_DEFAULT
#define TARGET_DEFAULT \
(MASK_V9 + MASK_PTR64 + MASK_64BIT \
+ MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
#undef SPARC_DEFAULT_CMODEL
#define SPARC_DEFAULT_CMODEL CM_MEDANY
#undef LONG_DOUBLE_TYPE_SIZE
#define LONG_DOUBLE_TYPE_SIZE 128
#undef CTORS_SECTION_ASM_OP
#undef DTORS_SECTION_ASM_OP
@@ -1,0 +1,5 @@
# Disable multilib for now, as we don't intend to support SPARC32.
#MULTILIB_OPTIONS = m32/m64
#MULTILIB_DIRNAMES = 32 64
#MULTILIB_MATCHES =
@@ -1,0 +1,61 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
struct ctype_base
{
typedef const int* __to_type;
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);
static const mask cntrl = 1 << 8;
static const mask punct = 1 << 9;
static const mask alnum = (1 << 2) | (1 << 3);
#if __cplusplus >= 201103L
static const mask blank = 1 << 10;
#endif
};
_GLIBCXX_END_NAMESPACE_VERSION
}
@@ -1,0 +1,99 @@
#include <locale>
#include <cstdlib>
#include <cstring>
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
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
}
@@ -1,0 +1,168 @@
/** @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}
*/
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;
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
{
const size_t __bitmasksize = 15;
for (;__low < __high; ++__vec, ++__low)
{
mask __m = 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
}
@@ -1,0 +1,178 @@
/** @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
}
#endif
@@ -1,0 +1,48 @@
/** @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
#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
#define _GLIBCXX_USE_WEAK_REF 0
#endif