config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.

* config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
	(sparc64-*-linux*): Likewise.
	* config/sparc/t-linux64 (SHLIB_MAPFILES): Removed.
	* config/sparc/t-linux: New file.
	* config/sparc/libgcc-sparc-glibc.ver (__fixtfdi, __fixunstfdi,
	__floatditf): Export at GCC_LDBL_3.0 if -m32 -mlong-double-128.
	(__divtc3, __multc3, __powitf2): Export at GCC_LDBL_4.0.0 if
	-m32 -mlong-double-128.

	* config.gcc (alpha*-*-linux*): Add alpha/t-linux to tmake_file.
	* config/alpha/t-linux: New file.
	* config/alpha/libgcc-alpha-ldbl.ver: New file.

	* config/sparc/linux.h (TARGET_OS_CPP_BUILTINS): Define
	__LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128.
	(CPP_SUBTARGET_SPEC): Don't add -D__LONG_DOUBLE_128__ here.
	* config/sparc/linux64.h (TARGET_OS_CPP_BUILTINS): Define
	__LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128 and TARGET_ARCH32.
	(CPP_ARCH32_SPEC): Remove.

From-SVN: r110741
This commit is contained in:
Jakub Jelinek 2006-02-08 08:19:43 +01:00 committed by Jakub Jelinek
parent 25e8451eb7
commit fbf2ca7bb7
9 changed files with 118 additions and 35 deletions

View file

@ -1,3 +1,25 @@
2006-02-08 Jakub Jelinek <jakub@redhat.com>
* config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
(sparc64-*-linux*): Likewise.
* config/sparc/t-linux64 (SHLIB_MAPFILES): Removed.
* config/sparc/t-linux: New file.
* config/sparc/libgcc-sparc-glibc.ver (__fixtfdi, __fixunstfdi,
__floatditf): Export at GCC_LDBL_3.0 if -m32 -mlong-double-128.
(__divtc3, __multc3, __powitf2): Export at GCC_LDBL_4.0.0 if
-m32 -mlong-double-128.
* config.gcc (alpha*-*-linux*): Add alpha/t-linux to tmake_file.
* config/alpha/t-linux: New file.
* config/alpha/libgcc-alpha-ldbl.ver: New file.
* config/sparc/linux.h (TARGET_OS_CPP_BUILTINS): Define
__LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128.
(CPP_SUBTARGET_SPEC): Don't add -D__LONG_DOUBLE_128__ here.
* config/sparc/linux64.h (TARGET_OS_CPP_BUILTINS): Define
__LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128 and TARGET_ARCH32.
(CPP_ARCH32_SPEC): Remove.
2006-02-07 Uttam Pawar <uttamp@us.ibm.com>
PR tree-optimization/26145

View file

@ -568,7 +568,7 @@ alpha*-*-unicosmk*)
alpha*-*-linux*)
tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
target_cpu_default="MASK_GAS"
tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee alpha/t-linux"
;;
alpha*-*-gnu*)
target_cpu_default="MASK_GAS"
@ -2055,7 +2055,7 @@ sparc-*-elf*)
sparc-*-linux*) # SPARC's running GNU/Linux, libc6
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
tmake_file="${tmake_file} sparc/t-crtfm"
tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm"
;;
sparc-*-rtems*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h"
@ -2174,7 +2174,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*)
sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h"
extra_options="${extra_options} sparc/long-double-switch.opt"
tmake_file="${tmake_file} sparc/t-linux64 sparc/t-crtfm"
tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
;;
sparc64-*-netbsd*)
tm_file="sparc/biarch64.h ${tm_file}"

View file

@ -0,0 +1,32 @@
%ifdef __LONG_DOUBLE_128__
# long double 128 bit support in libgcc_s.so.1 is only available
# when configured with --with-long-double-128. Make sure all the
# symbols are available at @@GCC_LDBL_* versions to make it clear
# there is a configurable symbol set.
%exclude {
__fixtfdi
__fixunstfdi
__floatditf
__divtc3
__multc3
__powitf2
}
%inherit GCC_LDBL_3.0 GCC_3.0
GCC_LDBL_3.0 {
__fixtfdi
__fixunstfdi
__floatditf
}
%inherit GCC_LDBL_4.0.0 GCC_4.0.0
GCC_LDBL_4.0.0 {
__divtc3
__multc3
__powitf2
}
%endif

1
gcc/config/alpha/t-linux Normal file
View file

@ -0,0 +1 @@
SHLIB_MAPFILES += $(srcdir)/config/alpha/libgcc-alpha-ldbl.ver

View file

@ -26,3 +26,36 @@ GLIBC_VER {
__frame_state_for
__register_frame_info_table
}
%if !defined (__arch64__) && defined (__LONG_DOUBLE_128__)
# long double 128 bit support from 32-bit libgcc_s.so.1 is only available
# when configured with --with-long-double-128. Make sure all the
# symbols are available at @@GCC_LDBL_* versions to make it clear
# there is a configurable symbol set.
%exclude {
__fixtfdi
__fixunstfdi
__floatditf
__divtc3
__multc3
__powitf2
}
%inherit GCC_LDBL_3.0 GCC_3.0
GCC_LDBL_3.0 {
__fixtfdi
__fixunstfdi
__floatditf
}
%inherit GCC_LDBL_4.0.0 GCC_4.0.0
GCC_LDBL_4.0.0 {
__divtc3
__multc3
__powitf2
}
%endif

View file

@ -23,12 +23,14 @@ Boston, MA 02110-1301, USA. */
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define_std ("unix"); \
builtin_define_std ("linux"); \
builtin_define ("__gnu_linux__"); \
builtin_assert ("system=linux"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=posix"); \
builtin_define_std ("unix"); \
builtin_define_std ("linux"); \
builtin_define ("__gnu_linux__"); \
builtin_assert ("system=linux"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=posix"); \
if (TARGET_LONG_DOUBLE_128) \
builtin_define ("__LONG_DOUBLE_128__"); \
} \
while (0)
@ -95,8 +97,7 @@ Boston, MA 02110-1301, USA. */
#undef CPP_SUBTARGET_SPEC
#define CPP_SUBTARGET_SPEC \
"%{posix:-D_POSIX_SOURCE} \
%{pthread:-D_REENTRANT} %{mlong-double-128:-D__LONG_DOUBLE_128__}"
"%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
#undef LIB_SPEC
#define LIB_SPEC \

View file

@ -20,17 +20,19 @@ 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. */
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define_std ("unix"); \
builtin_define_std ("linux"); \
builtin_define ("_LONGLONG"); \
builtin_define ("__gnu_linux__"); \
builtin_assert ("system=linux"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=posix"); \
} \
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
builtin_define_std ("unix"); \
builtin_define_std ("linux"); \
builtin_define ("_LONGLONG"); \
builtin_define ("__gnu_linux__"); \
builtin_assert ("system=linux"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=posix"); \
if (TARGET_ARCH32 && TARGET_LONG_DOUBLE_128) \
builtin_define ("__LONG_DOUBLE_128__"); \
} \
while (0)
/* Don't assume anything about the header files. */
@ -54,13 +56,6 @@ Boston, MA 02110-1301, USA. */
#undef ASM_CPU_DEFAULT_SPEC
#define ASM_CPU_DEFAULT_SPEC "-Av9a"
#ifdef SPARC_BI_ARCH
#undef CPP_ARCH32_SPEC
#define CPP_ARCH32_SPEC "%{mlong-double-128:-D__LONG_DOUBLE_128__}"
#endif
/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
provides part of the support for getting C++ file-scope static

5
gcc/config/sparc/t-linux Normal file
View file

@ -0,0 +1,5 @@
# Override t-slibgcc-elf-ver to export some libgcc symbols with
# the symbol versions that glibc used.
# Avoid the t-linux version file.
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
$(srcdir)/config/sparc/libgcc-sparc-glibc.ver

View file

@ -8,12 +8,6 @@ INSTALL_LIBGCC = install-multilib
EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
crtfastmath.o
# Override t-slibgcc-elf-ver to export some libgcc symbols with
# the symbol versions that glibc used.
# Avoid the t-linux version file.
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
$(srcdir)/config/sparc/libgcc-sparc-glibc.ver
CRTSTUFF_T_CFLAGS = `if test x$$($(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) \
-print-multi-os-directory) \
= x../lib64; then echo -mcmodel=medany; fi`