[oe-commits] org.oe.dev packages/gcc/gcc_4.1.1.bb :The following set of 2 patches adds support for soft-float and mlong-128 to powerpc

ifaistos commit openembedded-commits at lists.openembedded.org
Mon Mar 12 13:09:51 UTC 2007


packages/gcc/gcc_4.1.1.bb :The following set of 2 patches adds support for soft-float and mlong-128 to powerpc 
targets without fpu for gcc 4.1.1/glibc 2.5

Author: ifaistos at openembedded.org
Branch: org.openembedded.dev
Revision: 577d4786588a405a02c4a02eb12954a3198c3915
ViewMTN: http://monotone.openembedded.org/revision.psp?id=577d4786588a405a02c4a02eb12954a3198c3915
Files:
1
packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch
packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch
packages/gcc/gcc_4.1.1.bb
Diffs:

#
# mt diff -rc4cc94bff63e6c58995bbd1319a10860af8297b9 -r577d4786588a405a02c4a02eb12954a3198c3915
#
# 
# 
# add_file "packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch"
#  content [b5000a6ac3ff2a10a6110302bac15be27d715067]
# 
# add_file "packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch"
#  content [4a41174c5cc432ad029d3a173fbc2a61a29d58c2]
# 
# patch "packages/gcc/gcc_4.1.1.bb"
#  from [7d77c1171e56c0eaaac7e3265836486413627bef]
#    to [76ab97f248f415e44a541edd7039587f794f8e25]
# 
============================================================
--- packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch	b5000a6ac3ff2a10a6110302bac15be27d715067
+++ packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch	b5000a6ac3ff2a10a6110302bac15be27d715067
@@ -0,0 +1,2225 @@
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/ChangeLog gcc-41-20060515/gcc/ChangeLog
+--- gcc-41-20060515.orig/gcc/ChangeLog	2006-05-15 11:14:20.000000000 -0500
++++ gcc-41-20060515/gcc/ChangeLog	2006-05-15 14:00:27.693964000 -0500
+@@ -724,6 +724,51 @@
+ 	* reload1.c (choose_reload_regs): Added call of regno_clobbered_p 
+ 	with new meaning of SETS.
+ 
++2006-02-14  Jakub Jelinek  <jakub at redhat.com>
++	    Aldy Hernandez  <aldyh at redhat.com>
++
++	PR target/25864
++	* configure.ac: Add --with{out}-long-double-128 configure option.
++	(TARGET_DEFAULT_LONG_DOUBLE_128): New test.
++	* configure: Rebuilt.
++	* config.in: Rebuilt.
++	* doc/install.texi (Options specification): Document
++	--with-long-double-128.
++
++	* 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.
++
++	* config/s390/s390.c (override_options): Handle
++	TARGET_DEFAULT_LONG_DOUBLE_128.
++
++	* config/alpha/alpha.c (override_options): Handle
++	TARGET_DEFAULT_LONG_DOUBLE_128.
++
++	* config/sparc/sparc.c (sparc_override_options): Handle
++	TARGET_DEFAULT_LONG_DOUBLE_128.
++
++	* config/rs6000/linux.h [TARGET_DEFAULT_LONG_DOUBLE_128]
++	(RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
++	* config/rs6000/linux64.h [TARGET_DEFAULT_LONG_DOUBLE_128]
++	(RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
++
+ 2006-02-19  John David Anglin  <dave.anglin at nrc-cnrc.gc.ca>
+ 
+ 	* doc/install.texi: Add missing `@samp'.
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/alpha/alpha.c gcc-41-20060515/gcc/config/alpha/alpha.c
+--- gcc-41-20060515.orig/gcc/config/alpha/alpha.c	2006-05-15 11:13:49.000000000 -0500
++++ gcc-41-20060515/gcc/config/alpha/alpha.c	2006-05-15 13:47:27.566272961 -0500
+@@ -516,6 +516,11 @@ override_options (void)
+       REAL_MODE_FORMAT (DFmode) = &vax_g_format;
+       REAL_MODE_FORMAT (TFmode) = NULL;
+     }
++
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++  if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
++    target_flags |= MASK_LONG_DOUBLE_128;
++#endif
+ }
+ 
+ /* Returns 1 if VALUE is a mask that contains full bytes of zero or ones.  */
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/alpha/libgcc-alpha-ldbl.ver gcc-41-20060515/gcc/config/alpha/libgcc-alpha-ldbl.ver
+--- gcc-41-20060515.orig/gcc/config/alpha/libgcc-alpha-ldbl.ver	1969-12-31 18:00:00.000000000 -0600
++++ gcc-41-20060515/gcc/config/alpha/libgcc-alpha-ldbl.ver	2006-05-15 13:47:27.566272961 -0500
+@@ -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
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/alpha/t-linux gcc-41-20060515/gcc/config/alpha/t-linux
+--- gcc-41-20060515.orig/gcc/config/alpha/t-linux	1969-12-31 18:00:00.000000000 -0600
++++ gcc-41-20060515/gcc/config/alpha/t-linux	2006-05-15 13:47:27.567272807 -0500
+@@ -0,0 +1 @@
++SHLIB_MAPFILES += $(srcdir)/config/alpha/libgcc-alpha-ldbl.ver
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/rs6000/linux64.h gcc-41-20060515/gcc/config/rs6000/linux64.h
+--- gcc-41-20060515.orig/gcc/config/rs6000/linux64.h	2006-05-15 11:14:02.000000000 -0500
++++ gcc-41-20060515/gcc/config/rs6000/linux64.h	2006-05-15 13:47:27.568272653 -0500
+@@ -570,3 +570,8 @@ while (0)
+ #endif
+ 
+ #define POWERPC_LINUX
++
++/* ppc{32,64} linux has 128-bit long double support in glibc 2.4 and later.  */
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
++#endif
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/rs6000/linux.h gcc-41-20060515/gcc/config/rs6000/linux.h
+--- gcc-41-20060515.orig/gcc/config/rs6000/linux.h	2006-05-15 11:14:02.000000000 -0500
++++ gcc-41-20060515/gcc/config/rs6000/linux.h	2006-05-15 13:47:27.567272807 -0500
+@@ -120,3 +120,8 @@
+ #endif
+ 
+ #define POWERPC_LINUX
++
++/* ppc linux has 128-bit long double support in glibc 2.4 and later.  */
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
++#endif
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/s390/s390.c gcc-41-20060515/gcc/config/s390/s390.c
+--- gcc-41-20060515.orig/gcc/config/s390/s390.c	2006-05-15 11:13:50.000000000 -0500
++++ gcc-41-20060515/gcc/config/s390/s390.c	2006-05-15 13:47:27.574271730 -0500
+@@ -1415,6 +1415,11 @@ override_options (void)
+     }
+   else if (s390_stack_guard)
+     error ("-mstack-guard implies use of -mstack-size"); 
++
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++  if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
++    target_flags |= MASK_LONG_DOUBLE_128;
++#endif
+ }
+ 
+ /* Map for smallest class containing reg regno.  */
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/libgcc-sparc-glibc.ver gcc-41-20060515/gcc/config/sparc/libgcc-sparc-glibc.ver
+--- gcc-41-20060515.orig/gcc/config/sparc/libgcc-sparc-glibc.ver	2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/libgcc-sparc-glibc.ver	2006-05-15 13:47:27.574271730 -0500
+@@ -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
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/linux64.h gcc-41-20060515/gcc/config/sparc/linux64.h
+--- gcc-41-20060515.orig/gcc/config/sparc/linux64.h	2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/linux64.h	2006-05-15 13:47:27.576271422 -0500
+@@ -20,22 +20,24 @@ along with GCC; see the file COPYING.  I
+ 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");	\
+-	if (flag_pic)				\
+-	  {					\
+-		builtin_define ("__PIC__");	\
+-		builtin_define ("__pic__");	\
+-	  }					\
+-    }						\
++#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 (flag_pic)					\
++	{						\
++	  builtin_define ("__PIC__");			\
++	  builtin_define ("__pic__");			\
++	}						\
++      if (TARGET_ARCH32 && TARGET_LONG_DOUBLE_128)	\
++	builtin_define ("__LONG_DOUBLE_128__");		\
++    }							\
+   while (0)
+ 
+ /* Don't assume anything about the header files.  */
+@@ -59,13 +61,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
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/linux.h gcc-41-20060515/gcc/config/sparc/linux.h
+--- gcc-41-20060515.orig/gcc/config/sparc/linux.h	2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/linux.h	2006-05-15 13:47:27.575271576 -0500
+@@ -23,17 +23,19 @@ 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");	\
+-	if (flag_pic)				\
+-	  {					\
+-		builtin_define ("__PIC__");	\
+-		builtin_define ("__pic__");	\
+-	  }					\
++      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 (flag_pic)				\
++	{					\
++	  builtin_define ("__PIC__");		\
++	  builtin_define ("__pic__");		\
++	}					\
++      if (TARGET_LONG_DOUBLE_128)		\
++	builtin_define ("__LONG_DOUBLE_128__");	\
+     }						\
+   while (0)
+ 
+@@ -100,8 +102,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 \
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/sparc.c gcc-41-20060515/gcc/config/sparc/sparc.c
+--- gcc-41-20060515.orig/gcc/config/sparc/sparc.c	2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/sparc.c	2006-05-15 13:47:27.581270653 -0500
+@@ -790,6 +790,11 @@ sparc_override_options (void)
+       sparc_costs = &ultrasparc3_costs;
+       break;
+     };
++
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++  if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
++    target_flags |= MASK_LONG_DOUBLE_128;
++#endif
+ }
+ 
+ #ifdef SUBTARGET_ATTRIBUTE_TABLE
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/t-linux gcc-41-20060515/gcc/config/sparc/t-linux
+--- gcc-41-20060515.orig/gcc/config/sparc/t-linux	1969-12-31 18:00:00.000000000 -0600
++++ gcc-41-20060515/gcc/config/sparc/t-linux	2006-05-15 13:47:27.582270499 -0500
+@@ -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
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/t-linux64 gcc-41-20060515/gcc/config/sparc/t-linux64
+--- gcc-41-20060515.orig/gcc/config/sparc/t-linux64	2006-05-15 11:13:55.000000000 -0500
++++ gcc-41-20060515/gcc/config/sparc/t-linux64	2006-05-15 13:47:27.582270499 -0500
+@@ -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`
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config.gcc gcc-41-20060515/gcc/config.gcc
+--- gcc-41-20060515.orig/gcc/config.gcc	2006-05-15 11:14:20.000000000 -0500
++++ gcc-41-20060515/gcc/config.gcc	2006-05-15 13:47:27.555274654 -0500
+@@ -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"
+@@ -2056,7 +2056,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"
+@@ -2175,7 +2175,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}"
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config.in gcc-41-20060515/gcc/config.in
+--- gcc-41-20060515.orig/gcc/config.in	2006-05-15 11:14:20.000000000 -0500
++++ gcc-41-20060515/gcc/config.in	2006-05-15 13:47:27.559274038 -0500
+@@ -1277,6 +1277,12 @@
+ #endif
+ 
+ 
++/* Define if TFmode long double should be the default */
++#ifndef USED_FOR_TARGET
++#undef TARGET_DEFAULT_LONG_DOUBLE_128
++#endif
++
++
+ /* Define if your target C library provides stack protector support */
+ #ifndef USED_FOR_TARGET
+ #undef TARGET_LIBC_PROVIDES_SSP
+diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/configure gcc-41-20060515/gcc/configure
+--- gcc-41-20060515.orig/gcc/configure	2006-05-15 11:14:19.000000000 -0500
++++ gcc-41-20060515/gcc/configure	2006-05-15 13:47:27.594268652 -0500
+@@ -931,6 +931,7 @@ Optional Packages:
+   --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
+   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+   --with-system-libunwind use installed libunwind
++  --with-long-double-128  Use 128-bit long double by default.
+   --with-gc={page,zone}   choose the garbage collection mechanism to use
+                           with the compiler
+   --with-system-zlib      use installed libz
+@@ -7492,7 +7493,7 @@ if %s
>>> DIFF TRUNCATED @ 16K






More information about the Openembedded-commits mailing list