# pthread_self calls by caching thread IDs in a hashtable
# can_unwind_signal Set to "yes" if the EH unwinder supports throwing
# from a signal handler.
+# fallback_backtrace_h Header to use for fallback backtrace implementation
+# (only for targets that don't support DWARF2 unwind)
+# descriptor_h Header to use for looking past function descriptors
libgcj_flags=
libgcj_cflags=
sysdeps_dir=generic
slow_pthread_self=
can_unwind_signal=no
+fallback_backtrace_h=sysdep/generic/backtrace.h
case "${target_optspace}:${host}" in
yes:*)
DIVIDESPEC=-fuse-divide-subroutine
EXCEPTIONSPEC=-fnon-call-exceptions
CHECKREFSPEC=
+BACKTRACESPEC=
# This case statement supports per-CPU defaults.
case "${host}" in
;;
i686-*|i586-*|i486-*|i386-*)
sysdeps_dir=i386
- libgcj_flags="${libgcj_flags} -ffloat-store"
+ # With -fomit-frame-pointer -maccumulate-outgoing-args (implied),
+ # the .text section of libgcj.so is 30k larger, and the .eh_frame
+ # section is 1.4M smaller.
+ libgcj_flags="${libgcj_flags} -ffloat-store -fomit-frame-pointer"
libgcj_interpreter=yes
- libgcj_cxxflags="-D__NO_MATH_INLINES"
- libgcj_cflags="-D__NO_MATH_INLINES"
+ libgcj_cxxflags=
+ libgcj_cflags=
DIVIDESPEC=-fno-use-divide-subroutine
enable_hash_synchronization_default=yes
slow_pthread_self=yes
;;
x86_64-*)
- CHECKREFSPEC="%{m32:-fcheck-references}"
sysdeps_dir=x86-64
- libgcj_flags="${libgcj_flags} -ffloat-store -fno-omit-frame-pointer"
- libgcj_cxxflags="-D__NO_MATH_INLINES"
- libgcj_cflags="-D__NO_MATH_INLINES"
+ # For 64-bit we always use SSE registers for arithmetic,
+ # which doesn't have the extra precision problems of the fpu.
+ # But be careful about 32-bit multilibs.
+ case " $CC " in
+ *" -m32 "*)
+ libgcj_flags="${libgcj_flags} -ffloat-store" ;;
+ esac
+ libgcj_flags="${libgcj_flags} -fomit-frame-pointer"
+ libgcj_cxxflags=
+ libgcj_cflags=
+ DIVIDESPEC=-fno-use-divide-subroutine
enable_hash_synchronization_default=yes
slow_pthread_self=yes
libgcj_interpreter=yes
enable_hash_synchronization_default=yes
IEEESPEC=-mieee
;;
- powerpc64*-*)
- with_libffi_default=yes
+ hppa*-*)
+ sysdeps_dir=pa
libgcj_interpreter=yes
- libgcj_flags="${libgcj_flags} -mminimal-toc"
- # this may not be correct
+ enable_hash_synchronization_default=yes
+ ;;
+ powerpc64*-*)
sysdeps_dir=powerpc
+ libgcj_interpreter=yes
+ if [ x`$CC -print-multi-os-directory` = x../lib64 ]; then
+ libgcj_flags="${libgcj_flags} -mminimal-toc"
+ fi
enable_hash_synchronization_default=yes
slow_pthread_self=yes
;;
s390*-*)
sysdeps_dir=s390
libgcj_interpreter=yes
+ DIVIDESPEC=-fno-use-divide-subroutine
enable_hash_synchronization_default=yes
;;
sparc*-*)
libgcj_flags="${libgcj_flags} -mieee"
libgcj_interpreter=yes
enable_hash_synchronization_default=yes
+ IEEESPEC=-mieee
;;
esac
sparc*-linux* | \
ia64-* | \
x86_64*-linux* | \
+ hppa*-linux* | \
sh-linux* | sh[34]*-linux*)
can_unwind_signal=yes
+ libgcj_ld_symbolic='-Wl,-Bsymbolic'
if test x$slow_pthread_self = xyes \
&& test x$cross_compiling != xyes; then
cat > conftest.c <<EOF
rm -f conftest conftest.c
fi
;;
- *-*-darwin*)
- enable_hash_synchronization_default=no
+ i[34567]86-*-solaris2.1[0-9]* )
+ sysdeps_dir=x86-64
+ DIVIDESPEC=-f%{m32:no-}%{!m32:%{!m64:no-}}%{m64:}use-divide-subroutine
+ ;;
+ mips*-*-linux* )
+ sysdeps_dir=mips
+ can_unwind_signal=yes
+ DIVIDESPEC=-fno-use-divide-subroutine
+ case "${host}" in
+ mipsel*-linux* | mipsisa32el*-linux*)
+ enable_hash_synchronization_default=yes
+ ;;
+ esac
+ ;;
+ powerpc*-*-darwin*)
+ enable_hash_synchronization_default=yes
slow_pthread_self=
- can_unwind_signal=no
+ can_unwind_signal=yes
;;
*-*-freebsd*)
slow_pthread_self=
;;
*-mingw*)
+ libgcj_flags="${libgcj_flags} -fno-omit-frame-pointer"
# FIXME: win32_exception_handler( ) in win32.cc does not do the
# right stuff yet w.r.t. SEH. Live with the following for now.
can_unwind_signal=no
enable_hash_synchronization_default=no
slow_pthread_self=
;;
+ hppa*-hp-hpux11.*)
+ slow_pthread_self=no
+ can_unwind_signal=yes
+ DIVIDESPEC=-fuse-divide-subroutine
+ ;;
+esac
+
+case "${host}" in
+ *-cygwin* | *-mingw*)
+ fallback_backtrace_h=sysdep/i386/backtrace.h
+ # We need a frame pointer on Windows, so override BACKTRACESPEC
+ BACKTRACESPEC=
+ ;;
+esac
+
+case "${host}" in
+ ia64-*)
+ descriptor_h=sysdep/descriptor-y.h
+ ;;
+
+ hppa*64*-*-hpux*)
+ descriptor_h=sysdep/pa/descriptor-pa64-hpux.h
+ ;;
+
+ hppa*-*-hpux*)
+ descriptor_h=sysdep/pa/descriptor-pa32-hpux.h
+ ;;
+
+ hppa*-*)
+ descriptor_h=sysdep/pa/descriptor.h
+ ;;
+
+ rs6000-* | powerpc*-*)
+ descriptor_h=sysdep/powerpc/descriptor.h
+ ;;
+
+ *)
+ descriptor_h=sysdep/descriptor-n.h
+ ;;
esac
libgcj_cflags="${libgcj_cflags} ${libgcj_flags}"