gcc: Move 4.3.3 and Special kernel 3.4.4 to meta-extras
(From OE-Core rev: 44d2be0c0ba6440afa0706f703606154ae569d63) Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
7aabd71d0a
commit
3fcdbf9fc1
|
@ -1,71 +0,0 @@
|
|||
require gcc-common.inc
|
||||
LICENSE = "GPLv3"
|
||||
|
||||
DEPENDS =+ "mpfr gmp"
|
||||
NATIVEDEPS = "mpfr-native gmp-native gettext-native"
|
||||
|
||||
SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
|
||||
file://fedora/gcc43-c++-builtin-redecl.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-ia64-libunwind.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-java-nomulti.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-ppc32-retaddr.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-pr27898.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-pr32139.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-pr33763.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-rh330771.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-rh341221.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-cpp-pragma.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-java-debug-iface-type.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-libgomp-speedup.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-i386-libgomp.patch;patch=1;pnum=0 \
|
||||
file://fedora/gcc43-rh251682.patch;patch=1;pnum=0 \
|
||||
file://debian/arm-unbreak-eabi-armv4t.dpatch;patch=1 \
|
||||
file://debian/libstdc++-pic.dpatch;patch=1;pnum=0 \
|
||||
file://debian/gcc-ice-hack.dpatch;patch=1;pnum=0 \
|
||||
file://debian/pr30961.dpatch;patch=1;pnum=0 \
|
||||
file://100-uclibc-conf.patch;patch=1 \
|
||||
file://103-uclibc-conf-noupstream.patch;patch=1 \
|
||||
file://200-uclibc-locale.patch;patch=1 \
|
||||
file://203-uclibc-locale-no__x.patch;patch=1 \
|
||||
file://204-uclibc-locale-wchar_fix.patch;patch=1 \
|
||||
file://205-uclibc-locale-update.patch;patch=1 \
|
||||
file://301-missing-execinfo_h.patch;patch=1 \
|
||||
file://302-c99-snprintf.patch;patch=1 \
|
||||
file://303-c99-complex-ugly-hack.patch;patch=1 \
|
||||
file://304-index_macro.patch;patch=1 \
|
||||
file://305-libmudflap-susv3-legacy.patch;patch=1 \
|
||||
file://306-libstdc++-namespace.patch;patch=1 \
|
||||
file://307-locale_facets.patch;patch=1 \
|
||||
file://602-sdk-libstdc++-includes.patch;patch=1 \
|
||||
file://740-sh-pr24836.patch;patch=1 \
|
||||
file://800-arm-bigendian.patch;patch=1 \
|
||||
file://904-flatten-switch-stmt-00.patch;patch=1 \
|
||||
file://arm-nolibfloat.patch;patch=1 \
|
||||
file://arm-softfloat.patch;patch=1 \
|
||||
file://cache-amnesia.patch;patch=1 \
|
||||
file://gcc-4.0.2-e300c2c3.patch;patch=1 \
|
||||
file://gcc-arm-frename-registers.patch;patch=1 \
|
||||
file://gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch;patch=1 \
|
||||
file://gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch;patch=1 \
|
||||
file://zecke-xgcc-cpp.patch;patch=1 \
|
||||
file://gcc-flags-for-build.patch;patch=1 \
|
||||
file://pr35942.patch;patch=1 \
|
||||
file://optional_libstdc.patch;patch=1 \
|
||||
file://sparseset_rule.patch;patch=1 \
|
||||
file://64bithack.patch;patch=1 \
|
||||
"
|
||||
|
||||
# file://gfortran.patch;patch=1
|
||||
# file://pr34130.patch;patch=1
|
||||
# file://fortran-static-linking.patch;patch=1
|
||||
|
||||
|
||||
SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
|
||||
|
||||
# Language Overrides
|
||||
FORTRAN = ""
|
||||
JAVA = ""
|
||||
|
||||
EXTRA_OECONF_BASE = " --enable-cheaders=c_std --enable-libssp --disable-bootstrap --disable-libgomp --disable-libmudflap"
|
||||
EXTRA_OECONF_INITIAL = "--disable-libmudflap --disable-libgomp --disable-libssp --enable-decimal-float=no"
|
||||
EXTRA_OECONF_INTERMEDIATE = "--disable-libmudflap --disable-libgomp --disable-libssp"
|
|
@ -1,37 +0,0 @@
|
|||
Index: gcc-4.3.1/contrib/regression/objs-gcc.sh
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/contrib/regression/objs-gcc.sh 2007-12-24 15:18:57.000000000 -0800
|
||||
+++ gcc-4.3.1/contrib/regression/objs-gcc.sh 2008-08-16 01:15:12.000000000 -0700
|
||||
@@ -105,6 +105,10 @@
|
||||
then
|
||||
make all-gdb all-dejagnu all-ld || exit 1
|
||||
make install-gdb install-dejagnu install-ld || exit 1
|
||||
+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
|
||||
+ then
|
||||
+ make all-gdb all-dejagnu all-ld || exit 1
|
||||
+ make install-gdb install-dejagnu install-ld || exit 1
|
||||
elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
|
||||
make bootstrap || exit 1
|
||||
make install || exit 1
|
||||
Index: gcc-4.3.1/libjava/classpath/ltconfig
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libjava/classpath/ltconfig 2007-06-03 16:18:43.000000000 -0700
|
||||
+++ gcc-4.3.1/libjava/classpath/ltconfig 2008-08-16 01:15:12.000000000 -0700
|
||||
@@ -603,7 +603,7 @@
|
||||
|
||||
# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
|
||||
case $host_os in
|
||||
-linux-gnu*) ;;
|
||||
+linux-gnu*|linux-uclibc*) ;;
|
||||
linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
|
||||
esac
|
||||
|
||||
@@ -1251,7 +1251,7 @@
|
||||
;;
|
||||
|
||||
# This must be Linux ELF.
|
||||
-linux-gnu*)
|
||||
+linux*)
|
||||
version_type=linux
|
||||
need_lib_prefix=no
|
||||
need_version=no
|
|
@ -1,11 +0,0 @@
|
|||
--- gcc/gcc/config.gcc.uclibc100-sh~ 2006-03-06 20:46:56 +0100
|
||||
+++ gcc/gcc/config.gcc 2006-03-10 15:02:41 +0100
|
||||
@@ -1905,7 +1905,7 @@
|
||||
;;
|
||||
sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
|
||||
sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
|
||||
- sh-*-linux* | sh[346lbe]*-*-linux* | \
|
||||
+ sh*-*-linux* | sh[346lbe]*-*-linux* | \
|
||||
sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
|
||||
sh64-*-netbsd* | sh64l*-*-netbsd*)
|
||||
tmake_file="${tmake_file} sh/t-sh sh/t-elf"
|
|
@ -1,27 +0,0 @@
|
|||
--- gcc-2005q3-1.orig/gcc/config.gcc 2005-10-31 19:02:54.000000000 +0300
|
||||
+++ gcc-2005q3-1/gcc/config.gcc 2006-01-27 01:09:09.000000000 +0300
|
||||
@@ -674,7 +674,7 @@
|
||||
tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
|
||||
tmake_file="t-slibgcc-elf-ver t-linux arm/t-arm"
|
||||
case ${target} in
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibceabi)
|
||||
tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
|
||||
tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
|
||||
# The BPABI long long divmod functions return a 128-bit value in
|
||||
|
||||
diff -urN gcc-2005q3-2/gcc/config/arm/linux-eabi.h gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h
|
||||
--- gcc-2005q3-2/gcc/config/arm/linux-eabi.h 2005-12-07 23:14:16.000000000 +0300
|
||||
+++ gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h 2006-03-29 19:02:34.000000000 +0400
|
||||
@@ -53,7 +53,11 @@
|
||||
/* Use ld-linux.so.3 so that it will be possible to run "classic"
|
||||
GNU/Linux binaries on an EABI system. */
|
||||
#undef LINUX_TARGET_INTERPRETER
|
||||
+#ifdef USE_UCLIBC
|
||||
+#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
+#else
|
||||
#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3"
|
||||
+#endif
|
||||
|
||||
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
|
||||
use the GNU/Linux version, not the generic BPABI version. */
|
File diff suppressed because it is too large
Load Diff
|
@ -1,233 +0,0 @@
|
|||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-08-16 01:29:20.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-08-16 01:33:23.000000000 -0700
|
||||
@@ -60,4 +60,49 @@
|
||||
extern "C" __typeof(wctype_l) __wctype_l;
|
||||
#endif
|
||||
|
||||
+# define __nl_langinfo_l nl_langinfo_l
|
||||
+# define __strcoll_l strcoll_l
|
||||
+# define __strftime_l strftime_l
|
||||
+# define __strtod_l strtod_l
|
||||
+# define __strtof_l strtof_l
|
||||
+# define __strtold_l strtold_l
|
||||
+# define __strxfrm_l strxfrm_l
|
||||
+# define __newlocale newlocale
|
||||
+# define __freelocale freelocale
|
||||
+# define __duplocale duplocale
|
||||
+# define __uselocale uselocale
|
||||
+
|
||||
+# ifdef _GLIBCXX_USE_WCHAR_T
|
||||
+# define __iswctype_l iswctype_l
|
||||
+# define __towlower_l towlower_l
|
||||
+# define __towupper_l towupper_l
|
||||
+# define __wcscoll_l wcscoll_l
|
||||
+# define __wcsftime_l wcsftime_l
|
||||
+# define __wcsxfrm_l wcsxfrm_l
|
||||
+# define __wctype_l wctype_l
|
||||
+# endif
|
||||
+
|
||||
+#else
|
||||
+# define __nl_langinfo_l(N, L) nl_langinfo((N))
|
||||
+# define __strcoll_l(S1, S2, L) strcoll((S1), (S2))
|
||||
+# define __strtod_l(S, E, L) strtod((S), (E))
|
||||
+# define __strtof_l(S, E, L) strtof((S), (E))
|
||||
+# define __strtold_l(S, E, L) strtold((S), (E))
|
||||
+# define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N))
|
||||
+# warning should dummy __newlocale check for C|POSIX ?
|
||||
+# define __newlocale(a, b, c) NULL
|
||||
+# define __freelocale(a) ((void)0)
|
||||
+# define __duplocale(a) __c_locale()
|
||||
+//# define __uselocale ?
|
||||
+//
|
||||
+# ifdef _GLIBCXX_USE_WCHAR_T
|
||||
+# define __iswctype_l(C, M, L) iswctype((C), (M))
|
||||
+# define __towlower_l(C, L) towlower((C))
|
||||
+# define __towupper_l(C, L) towupper((C))
|
||||
+# define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2))
|
||||
+//# define __wcsftime_l(S, M, F, T, L) wcsftime((S), (M), (F), (T))
|
||||
+# define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N))
|
||||
+# define __wctype_l(S, L) wctype((S))
|
||||
+# endif
|
||||
+
|
||||
#endif // GLIBC 2.3 and later
|
||||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-08-16 01:29:20.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-08-16 01:33:00.000000000 -0700
|
||||
@@ -39,20 +39,6 @@
|
||||
#include <langinfo.h>
|
||||
#include <bits/c++locale_internal.h>
|
||||
|
||||
-#ifndef __UCLIBC_HAS_XLOCALE__
|
||||
-#define __strtol_l(S, E, B, L) strtol((S), (E), (B))
|
||||
-#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B))
|
||||
-#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B))
|
||||
-#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B))
|
||||
-#define __strtof_l(S, E, L) strtof((S), (E))
|
||||
-#define __strtod_l(S, E, L) strtod((S), (E))
|
||||
-#define __strtold_l(S, E, L) strtold((S), (E))
|
||||
-#warning should dummy __newlocale check for C|POSIX ?
|
||||
-#define __newlocale(a, b, c) NULL
|
||||
-#define __freelocale(a) ((void)0)
|
||||
-#define __duplocale(a) __c_locale()
|
||||
-#endif
|
||||
-
|
||||
namespace std
|
||||
{
|
||||
template<>
|
||||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc 2008-08-16 01:29:20.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/collate_members.cc 2008-08-16 01:30:31.000000000 -0700
|
||||
@@ -36,13 +36,6 @@
|
||||
#include <locale>
|
||||
#include <bits/c++locale_internal.h>
|
||||
|
||||
-#ifndef __UCLIBC_HAS_XLOCALE__
|
||||
-#define __strcoll_l(S1, S2, L) strcoll((S1), (S2))
|
||||
-#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N))
|
||||
-#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2))
|
||||
-#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N))
|
||||
-#endif
|
||||
-
|
||||
namespace std
|
||||
{
|
||||
// These are basically extensions to char_traits, and perhaps should
|
||||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-08-16 01:29:20.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-08-16 01:30:31.000000000 -0700
|
||||
@@ -43,10 +43,6 @@
|
||||
#warning tailor for stub locale support
|
||||
#endif
|
||||
|
||||
-#ifndef __UCLIBC_HAS_XLOCALE__
|
||||
-#define __nl_langinfo_l(N, L) nl_langinfo((N))
|
||||
-#endif
|
||||
-
|
||||
namespace std
|
||||
{
|
||||
// Construct and return valid pattern consisting of some combination of:
|
||||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-08-16 01:29:20.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-08-16 01:30:31.000000000 -0700
|
||||
@@ -41,9 +41,6 @@
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
#warning tailor for stub locale support
|
||||
#endif
|
||||
-#ifndef __UCLIBC_HAS_XLOCALE__
|
||||
-#define __nl_langinfo_l(N, L) nl_langinfo((N))
|
||||
-#endif
|
||||
|
||||
namespace std
|
||||
{
|
||||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-08-16 01:29:20.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-08-16 01:30:31.000000000 -0700
|
||||
@@ -40,9 +40,6 @@
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
#warning tailor for stub locale support
|
||||
#endif
|
||||
-#ifndef __UCLIBC_HAS_XLOCALE__
|
||||
-#define __nl_langinfo_l(N, L) nl_langinfo((N))
|
||||
-#endif
|
||||
|
||||
namespace std
|
||||
{
|
||||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-08-16 01:29:20.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-08-16 01:30:31.000000000 -0700
|
||||
@@ -38,13 +38,6 @@
|
||||
#undef _LIBC
|
||||
#include <bits/c++locale_internal.h>
|
||||
|
||||
-#ifndef __UCLIBC_HAS_XLOCALE__
|
||||
-#define __wctype_l(S, L) wctype((S))
|
||||
-#define __towupper_l(C, L) towupper((C))
|
||||
-#define __towlower_l(C, L) towlower((C))
|
||||
-#define __iswctype_l(C, M, L) iswctype((C), (M))
|
||||
-#endif
|
||||
-
|
||||
namespace std
|
||||
{
|
||||
// NB: The other ctype<char> specializations are in src/locale.cc and
|
||||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc 2008-08-16 01:27:18.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.cc 2008-08-16 01:30:31.000000000 -0700
|
||||
@@ -39,13 +39,10 @@
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
#warning fix gettext stuff
|
||||
#endif
|
||||
-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
|
||||
-extern "C" char *__dcgettext(const char *domainname,
|
||||
- const char *msgid, int category);
|
||||
#undef gettext
|
||||
-#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
|
||||
+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
|
||||
+#define gettext(msgid) dcgettext(NULL, msgid, LC_MESSAGES)
|
||||
#else
|
||||
-#undef gettext
|
||||
#define gettext(msgid) (msgid)
|
||||
#endif
|
||||
|
||||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-08-16 01:29:20.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-08-16 01:31:43.000000000 -0700
|
||||
@@ -36,15 +36,11 @@
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
#warning fix prototypes for *textdomain funcs
|
||||
#endif
|
||||
-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
|
||||
-extern "C" char *__textdomain(const char *domainname);
|
||||
-extern "C" char *__bindtextdomain(const char *domainname,
|
||||
- const char *dirname);
|
||||
-#else
|
||||
-#undef __textdomain
|
||||
-#undef __bindtextdomain
|
||||
-#define __textdomain(D) ((void)0)
|
||||
-#define __bindtextdomain(D,P) ((void)0)
|
||||
+#ifndef __UCLIBC_HAS_GETTEXT_AWARENESS__
|
||||
+#undef textdomain
|
||||
+#undef bindtextdomain
|
||||
+#define textdomain(D) ((void)0)
|
||||
+#define bindtextdomain(D,P) ((void)0)
|
||||
#endif
|
||||
|
||||
// Non-virtual member functions.
|
||||
@@ -70,7 +66,7 @@
|
||||
messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
|
||||
const char* __dir) const
|
||||
{
|
||||
- __bindtextdomain(__s.c_str(), __dir);
|
||||
+ bindtextdomain(__s.c_str(), __dir);
|
||||
return this->do_open(__s, __loc);
|
||||
}
|
||||
|
||||
@@ -90,7 +86,7 @@
|
||||
{
|
||||
// No error checking is done, assume the catalog exists and can
|
||||
// be used.
|
||||
- __textdomain(__s.c_str());
|
||||
+ textdomain(__s.c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-08-16 01:29:20.000000000 -0700
|
||||
+++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-08-16 01:30:31.000000000 -0700
|
||||
@@ -68,6 +68,7 @@
|
||||
{
|
||||
extern "C" __typeof(uselocale) __uselocale;
|
||||
}
|
||||
+#define __uselocale uselocale
|
||||
#endif
|
||||
|
||||
namespace std
|
|
@ -1,48 +0,0 @@
|
|||
--- gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc.uclibc200_wchar~ 2006-03-10 15:32:37 +0100
|
||||
+++ gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2006-03-10 15:37:27 +0100
|
||||
@@ -401,7 +401,7 @@
|
||||
# ifdef __UCLIBC_HAS_XLOCALE__
|
||||
_M_data->_M_decimal_point = __cloc->decimal_point_wc;
|
||||
_M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
|
||||
-# else
|
||||
+# elif defined __UCLIBC_HAS_LOCALE__
|
||||
_M_data->_M_decimal_point = __global_locale->decimal_point_wc;
|
||||
_M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
|
||||
# endif
|
||||
@@ -556,7 +556,7 @@
|
||||
# ifdef __UCLIBC_HAS_XLOCALE__
|
||||
_M_data->_M_decimal_point = __cloc->decimal_point_wc;
|
||||
_M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
|
||||
-# else
|
||||
+# elif defined __UCLIBC_HAS_LOCALE__
|
||||
_M_data->_M_decimal_point = __global_locale->decimal_point_wc;
|
||||
_M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
|
||||
# endif
|
||||
--- gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc.uclibc200_wchar~ 2006-03-10 15:32:37 +0100
|
||||
+++ gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2006-03-10 15:37:27 +0100
|
||||
@@ -127,12 +127,25 @@
|
||||
{
|
||||
// Named locale.
|
||||
// NB: In the GNU model wchar_t is always 32 bit wide.
|
||||
+#ifdef __UCLIBC_MJN3_ONLY__
|
||||
+#warning fix this... should be numeric
|
||||
+#endif
|
||||
+#ifdef __UCLIBC__
|
||||
+# ifdef __UCLIBC_HAS_XLOCALE__
|
||||
+ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
|
||||
+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
|
||||
+# elif defined __UCLIBC_HAS_LOCALE__
|
||||
+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
|
||||
+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
|
||||
+# endif
|
||||
+#else
|
||||
union { char *__s; wchar_t __w; } __u;
|
||||
__u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
|
||||
_M_data->_M_decimal_point = __u.__w;
|
||||
|
||||
__u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
|
||||
_M_data->_M_thousands_sep = __u.__w;
|
||||
+#endif
|
||||
|
||||
if (_M_data->_M_thousands_sep == L'\0')
|
||||
_M_data->_M_grouping = "";
|
|
@ -1,519 +0,0 @@
|
|||
Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-09-17 22:35:28.000000000 -0700
|
||||
+++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-09-17 22:35:29.000000000 -0700
|
||||
@@ -39,23 +39,20 @@
|
||||
#include <langinfo.h>
|
||||
#include <bits/c++locale_internal.h>
|
||||
|
||||
-namespace std
|
||||
-{
|
||||
+_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
+
|
||||
template<>
|
||||
void
|
||||
__convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
|
||||
const __c_locale& __cloc)
|
||||
{
|
||||
- if (!(__err & ios_base::failbit))
|
||||
- {
|
||||
- char* __sanity;
|
||||
- errno = 0;
|
||||
- float __f = __strtof_l(__s, &__sanity, __cloc);
|
||||
- if (__sanity != __s && errno != ERANGE)
|
||||
- __v = __f;
|
||||
- else
|
||||
- __err |= ios_base::failbit;
|
||||
- }
|
||||
+ char* __sanity;
|
||||
+ errno = 0;
|
||||
+ float __f = __strtof_l(__s, &__sanity, __cloc);
|
||||
+ if (__sanity != __s && errno != ERANGE)
|
||||
+ __v = __f;
|
||||
+ else
|
||||
+ __err |= ios_base::failbit;
|
||||
}
|
||||
|
||||
template<>
|
||||
@@ -63,16 +60,13 @@
|
||||
__convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
|
||||
const __c_locale& __cloc)
|
||||
{
|
||||
- if (!(__err & ios_base::failbit))
|
||||
- {
|
||||
- char* __sanity;
|
||||
- errno = 0;
|
||||
- double __d = __strtod_l(__s, &__sanity, __cloc);
|
||||
- if (__sanity != __s && errno != ERANGE)
|
||||
- __v = __d;
|
||||
- else
|
||||
- __err |= ios_base::failbit;
|
||||
- }
|
||||
+ char* __sanity;
|
||||
+ errno = 0;
|
||||
+ double __d = __strtod_l(__s, &__sanity, __cloc);
|
||||
+ if (__sanity != __s && errno != ERANGE)
|
||||
+ __v = __d;
|
||||
+ else
|
||||
+ __err |= ios_base::failbit;
|
||||
}
|
||||
|
||||
template<>
|
||||
@@ -80,16 +74,13 @@
|
||||
__convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
|
||||
const __c_locale& __cloc)
|
||||
{
|
||||
- if (!(__err & ios_base::failbit))
|
||||
- {
|
||||
- char* __sanity;
|
||||
- errno = 0;
|
||||
- long double __ld = __strtold_l(__s, &__sanity, __cloc);
|
||||
- if (__sanity != __s && errno != ERANGE)
|
||||
- __v = __ld;
|
||||
- else
|
||||
- __err |= ios_base::failbit;
|
||||
- }
|
||||
+ char* __sanity;
|
||||
+ errno = 0;
|
||||
+ long double __ld = __strtold_l(__s, &__sanity, __cloc);
|
||||
+ if (__sanity != __s && errno != ERANGE)
|
||||
+ __v = __ld;
|
||||
+ else
|
||||
+ __err |= ios_base::failbit;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -110,17 +101,18 @@
|
||||
void
|
||||
locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
|
||||
{
|
||||
- if (_S_get_c_locale() != __cloc)
|
||||
+ if (__cloc && _S_get_c_locale() != __cloc)
|
||||
__freelocale(__cloc);
|
||||
}
|
||||
|
||||
__c_locale
|
||||
locale::facet::_S_clone_c_locale(__c_locale& __cloc)
|
||||
{ return __duplocale(__cloc); }
|
||||
-} // namespace std
|
||||
|
||||
-namespace __gnu_cxx
|
||||
-{
|
||||
+_GLIBCXX_END_NAMESPACE
|
||||
+
|
||||
+_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
||||
+
|
||||
const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
|
||||
{
|
||||
"LC_CTYPE",
|
||||
@@ -138,9 +130,11 @@
|
||||
"LC_IDENTIFICATION"
|
||||
#endif
|
||||
};
|
||||
-}
|
||||
|
||||
-namespace std
|
||||
-{
|
||||
+_GLIBCXX_END_NAMESPACE
|
||||
+
|
||||
+_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
+
|
||||
const char* const* const locale::_S_categories = __gnu_cxx::category_names;
|
||||
-} // namespace std
|
||||
+
|
||||
+_GLIBCXX_END_NAMESPACE
|
||||
Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-09-17 22:35:28.000000000 -0700
|
||||
+++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-09-17 23:09:49.000000000 -0700
|
||||
@@ -33,16 +33,20 @@
|
||||
|
||||
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
+#include <features.h>
|
||||
+#ifdef __UCLIBC_HAS_LOCALE__
|
||||
#define _LIBC
|
||||
#include <locale>
|
||||
#undef _LIBC
|
||||
+#else
|
||||
+#include <locale>
|
||||
+#endif
|
||||
#include <bits/c++locale_internal.h>
|
||||
|
||||
-namespace std
|
||||
-{
|
||||
+_GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
+
|
||||
// NB: The other ctype<char> specializations are in src/locale.cc and
|
||||
// various /config/os/* files.
|
||||
- template<>
|
||||
ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
|
||||
: ctype<char>(0, false, __refs)
|
||||
{
|
||||
@@ -57,6 +61,8 @@
|
||||
#endif
|
||||
}
|
||||
}
|
||||
+ ctype_byname<char>::~ctype_byname()
|
||||
+ { }
|
||||
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
ctype<wchar_t>::__wmask_type
|
||||
@@ -138,17 +144,33 @@
|
||||
ctype<wchar_t>::
|
||||
do_is(mask __m, wchar_t __c) const
|
||||
{
|
||||
- // Highest bitmask in ctype_base == 10, but extra in "C"
|
||||
- // library for blank.
|
||||
+ // The case of __m == ctype_base::space is particularly important,
|
||||
+ // due to its use in many istream functions. Therefore we deal with
|
||||
+ // it first, exploiting the knowledge that on GNU systems _M_bit[5]
|
||||
+ // is the mask corresponding to ctype_base::space. NB: an encoding
|
||||
+ // change would not affect correctness!
|
||||
+
|
||||
bool __ret = false;
|
||||
- const size_t __bitmasksize = 11;
|
||||
- for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
|
||||
- if (__m & _M_bit[__bitcur]
|
||||
- && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
|
||||
- {
|
||||
- __ret = true;
|
||||
- break;
|
||||
- }
|
||||
+ if (__m == _M_bit[5])
|
||||
+ __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
|
||||
+ else
|
||||
+ {
|
||||
+ // Highest bitmask in ctype_base == 10, but extra in "C"
|
||||
+ // library for blank.
|
||||
+ const size_t __bitmasksize = 11;
|
||||
+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
|
||||
+ if (__m & _M_bit[__bitcur])
|
||||
+ {
|
||||
+ if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
|
||||
+ {
|
||||
+ __ret = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ else if (__m == _M_bit[__bitcur])
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return __ret;
|
||||
}
|
||||
|
||||
@@ -290,4 +312,5 @@
|
||||
#endif
|
||||
}
|
||||
#endif // _GLIBCXX_USE_WCHAR_T
|
||||
-}
|
||||
+
|
||||
+_GLIBCXX_END_NAMESPACE
|
||||
Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-09-17 22:35:28.000000000 -0700
|
||||
+++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-09-17 23:13:34.000000000 -0700
|
||||
@@ -53,12 +53,16 @@
|
||||
template<typename _CharT>
|
||||
messages<_CharT>::messages(__c_locale __cloc, const char* __s,
|
||||
size_t __refs)
|
||||
- : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
|
||||
- _M_name_messages(__s)
|
||||
+ : facet(__refs), _M_c_locale_messages(NULL),
|
||||
+ _M_name_messages(NULL)
|
||||
{
|
||||
- char* __tmp = new char[std::strlen(__s) + 1];
|
||||
- std::strcpy(__tmp, __s);
|
||||
+ const size_t __len = std::strlen(__s) + 1;
|
||||
+ char* __tmp = new char[__len];
|
||||
+ std::memcpy(__tmp, __s, __len);
|
||||
_M_name_messages = __tmp;
|
||||
+
|
||||
+ // Last to avoid leaking memory if new throws.
|
||||
+ _M_c_locale_messages = _S_clone_c_locale(__cloc);
|
||||
}
|
||||
|
||||
template<typename _CharT>
|
||||
Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-09-17 22:35:28.000000000 -0700
|
||||
+++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-09-17 22:35:29.000000000 -0700
|
||||
@@ -33,9 +33,14 @@
|
||||
|
||||
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
+#include <features.h>
|
||||
+#ifdef __UCLIBC_HAS_LOCALE__
|
||||
#define _LIBC
|
||||
#include <locale>
|
||||
#undef _LIBC
|
||||
+#else
|
||||
+#include <locale>
|
||||
+#endif
|
||||
#include <bits/c++locale_internal.h>
|
||||
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
@@ -206,7 +211,7 @@
|
||||
}
|
||||
break;
|
||||
default:
|
||||
- ;
|
||||
+ __ret = pattern();
|
||||
}
|
||||
return __ret;
|
||||
}
|
||||
@@ -390,7 +395,9 @@
|
||||
__c_locale __old = __uselocale(__cloc);
|
||||
#else
|
||||
// Switch to named locale so that mbsrtowcs will work.
|
||||
- char* __old = strdup(setlocale(LC_ALL, NULL));
|
||||
+ char* __old = setlocale(LC_ALL, NULL);
|
||||
+ const size_t __llen = strlen(__old) + 1;
|
||||
+ char* __sav = new char[__llen];
|
||||
setlocale(LC_ALL, __name);
|
||||
#endif
|
||||
|
||||
@@ -477,8 +484,8 @@
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
__throw_exception_again;
|
||||
}
|
||||
@@ -498,8 +505,8 @@
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -545,8 +552,11 @@
|
||||
__c_locale __old = __uselocale(__cloc);
|
||||
#else
|
||||
// Switch to named locale so that mbsrtowcs will work.
|
||||
- char* __old = strdup(setlocale(LC_ALL, NULL));
|
||||
- setlocale(LC_ALL, __name);
|
||||
+ char* __old = setlocale(LC_ALL, NULL);
|
||||
+ const size_t __llen = strlen(__old) + 1;
|
||||
+ char* __sav = new char[__llen];
|
||||
+ memcpy(__sav, __old, __llen);
|
||||
+ setlocale(LC_ALL, __name);
|
||||
#endif
|
||||
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
@@ -633,8 +643,8 @@
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
__throw_exception_again;
|
||||
}
|
||||
@@ -653,8 +663,8 @@
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-09-17 22:35:28.000000000 -0700
|
||||
+++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-09-17 22:35:29.000000000 -0700
|
||||
@@ -33,9 +33,14 @@
|
||||
|
||||
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
+#include <features.h>
|
||||
+#ifdef __UCLIBC_HAS_LOCALE__
|
||||
#define _LIBC
|
||||
#include <locale>
|
||||
#undef _LIBC
|
||||
+#else
|
||||
+#include <locale>
|
||||
+#endif
|
||||
#include <bits/c++locale_internal.h>
|
||||
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/time_members.h 2008-09-17 22:35:27.000000000 -0700
|
||||
+++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.h 2008-09-17 23:13:34.000000000 -0700
|
||||
@@ -50,12 +50,21 @@
|
||||
__timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
|
||||
size_t __refs)
|
||||
: facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
|
||||
- _M_name_timepunct(__s)
|
||||
+ _M_name_timepunct(NULL)
|
||||
{
|
||||
- char* __tmp = new char[std::strlen(__s) + 1];
|
||||
- std::strcpy(__tmp, __s);
|
||||
+ const size_t __len = std::strlen(__s) + 1;
|
||||
+ char* __tmp = new char[__len];
|
||||
+ std::memcpy(__tmp, __s, __len);
|
||||
_M_name_timepunct = __tmp;
|
||||
- _M_initialize_timepunct(__cloc);
|
||||
+
|
||||
+ try
|
||||
+ { _M_initialize_timepunct(__cloc); }
|
||||
+ catch(...)
|
||||
+ {
|
||||
+ delete [] _M_name_timepunct;
|
||||
+ __throw_exception_again;
|
||||
+ }
|
||||
+
|
||||
}
|
||||
|
||||
template<typename _CharT>
|
||||
Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-09-17 22:35:28.000000000 -0700
|
||||
+++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-09-17 22:35:29.000000000 -0700
|
||||
@@ -39,21 +39,23 @@
|
||||
#pragma GCC system_header
|
||||
|
||||
#include <cstring> // get std::strlen
|
||||
-#include <cstdio> // get std::snprintf or std::sprintf
|
||||
+#include <cstdio> // get std::vsnprintf or std::vsprintf
|
||||
#include <clocale>
|
||||
#include <langinfo.h> // For codecvt
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
#warning fix this
|
||||
#endif
|
||||
-#ifdef __UCLIBC_HAS_LOCALE__
|
||||
+#ifdef _GLIBCXX_USE_ICONV
|
||||
#include <iconv.h> // For codecvt using iconv, iconv_t
|
||||
#endif
|
||||
-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
|
||||
-#include <libintl.h> // For messages
|
||||
+#ifdef HAVE_LIBINTL_H
|
||||
+#include <libintl.h> // For messages
|
||||
#endif
|
||||
+#include <cstdarg>
|
||||
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
#warning what is _GLIBCXX_C_LOCALE_GNU for
|
||||
+// psm: used in os/gnu-linux/ctype_noninline.h
|
||||
#endif
|
||||
#define _GLIBCXX_C_LOCALE_GNU 1
|
||||
|
||||
@@ -78,23 +80,25 @@
|
||||
#else
|
||||
typedef int* __c_locale;
|
||||
#endif
|
||||
-
|
||||
- // Convert numeric value of type _Tv to string and return length of
|
||||
- // string. If snprintf is available use it, otherwise fall back to
|
||||
- // the unsafe sprintf which, in general, can be dangerous and should
|
||||
+ // Convert numeric value of type double to string and return length of
|
||||
+ // string. If vsnprintf is available use it, otherwise fall back to
|
||||
+ // the unsafe vsprintf which, in general, can be dangerous and should
|
||||
// be avoided.
|
||||
- template<typename _Tv>
|
||||
- int
|
||||
- __convert_from_v(char* __out,
|
||||
- const int __size __attribute__ ((__unused__)),
|
||||
- const char* __fmt,
|
||||
-#ifdef __UCLIBC_HAS_XCLOCALE__
|
||||
- _Tv __v, const __c_locale& __cloc, int __prec)
|
||||
+ inline int
|
||||
+ __convert_from_v(const __c_locale&
|
||||
+#ifndef __UCLIBC_HAS_XCLOCALE__
|
||||
+ __cloc __attribute__ ((__unused__))
|
||||
+#endif
|
||||
+ ,
|
||||
+ char* __out,
|
||||
+ const int __size,
|
||||
+ const char* __fmt, ...)
|
||||
{
|
||||
+ va_list __args;
|
||||
+#ifdef __UCLIBC_HAS_XCLOCALE__
|
||||
+
|
||||
__c_locale __old = __gnu_cxx::__uselocale(__cloc);
|
||||
#else
|
||||
- _Tv __v, const __c_locale&, int __prec)
|
||||
- {
|
||||
# ifdef __UCLIBC_HAS_LOCALE__
|
||||
char* __old = std::setlocale(LC_ALL, NULL);
|
||||
char* __sav = new char[std::strlen(__old) + 1];
|
||||
@@ -103,7 +107,9 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
- const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
|
||||
+ va_start(__args, __fmt);
|
||||
+ const int __ret = std::vsnprintf(__out, __size, __fmt, __args);
|
||||
+ va_end(__args);
|
||||
|
||||
#ifdef __UCLIBC_HAS_XCLOCALE__
|
||||
__gnu_cxx::__uselocale(__old);
|
||||
Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-09-17 22:35:28.000000000 -0700
|
||||
+++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-09-17 22:35:29.000000000 -0700
|
||||
@@ -53,11 +53,14 @@
|
||||
const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
|
||||
_M_c_locale_timepunct);
|
||||
#else
|
||||
- char* __old = strdup(setlocale(LC_ALL, NULL));
|
||||
+ char* __old = setlocale(LC_ALL, NULL);
|
||||
+ const size_t __llen = strlen(__old) + 1;
|
||||
+ char* __sav = new char[__llen];
|
||||
+ memcpy(__sav, __old, __llen);
|
||||
setlocale(LC_ALL, _M_name_timepunct);
|
||||
const size_t __len = strftime(__s, __maxlen, __format, __tm);
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
// Make sure __s is null terminated.
|
||||
if (__len == 0)
|
||||
@@ -207,11 +210,14 @@
|
||||
const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
|
||||
_M_c_locale_timepunct);
|
||||
#else
|
||||
- char* __old = strdup(setlocale(LC_ALL, NULL));
|
||||
+ char* __old = setlocale(LC_ALL, NULL);
|
||||
+ const size_t __llen = strlen(__old) + 1;
|
||||
+ char* __sav = new char[__llen];
|
||||
+ memcpy(__sav, __old, __llen);
|
||||
setlocale(LC_ALL, _M_name_timepunct);
|
||||
const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
// Make sure __s is null terminated.
|
||||
if (__len == 0)
|
||||
Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-09-17 22:35:28.000000000 -0700
|
||||
+++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-09-17 22:35:29.000000000 -0700
|
||||
@@ -31,6 +31,9 @@
|
||||
|
||||
#include <bits/c++config.h>
|
||||
#include <clocale>
|
||||
+#include <cstdlib>
|
||||
+#include <cstring>
|
||||
+#include <cstddef>
|
||||
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
#warning clean this up
|
|
@ -1,46 +0,0 @@
|
|||
# DP: Build and install libstdc++_pic.a library.
|
||||
|
||||
--- gcc-4.1.0/libstdc++-v3/src/Makefile.am 2004-11-15 17:33:05.000000000 -0600
|
||||
+++ gcc-4.1.0-patched/libstdc++-v3/src/Makefile.am 2005-04-25 20:05:59.186930896 -0500
|
||||
@@ -214,6 +214,10 @@
|
||||
$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
|
||||
+install-exec-local:
|
||||
+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
|
||||
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
|
||||
+
|
||||
# Added bits to build debug library.
|
||||
if GLIBCXX_BUILD_DEBUG
|
||||
all-local: build_debug
|
||||
--- gcc-4.1.0/libstdc++-v3/src/Makefile.in 2005-04-11 19:13:08.000000000 -0500
|
||||
+++ gcc-4.1.0-patched/libstdc++-v3/src/Makefile.in 2005-04-25 20:12:33.284316275 -0500
|
||||
@@ -627,7 +627,7 @@
|
||||
|
||||
install-data-am: install-data-local
|
||||
|
||||
-install-exec-am: install-toolexeclibLTLIBRARIES
|
||||
+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
@@ -660,6 +660,7 @@
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-data-local install-exec \
|
||||
+ install-exec-local \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip install-toolexeclibLTLIBRARIES installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
@@ -745,6 +746,11 @@
|
||||
install_debug:
|
||||
(cd ${debugdir} && $(MAKE) \
|
||||
toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
|
||||
+
|
||||
+install-exec-local:
|
||||
+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
|
||||
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
|
||||
+
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -1,11 +0,0 @@
|
|||
--- gcc-4.0.0/boehm-gc/include/gc.h-orig 2005-04-28 22:28:57.000000000 -0500
|
||||
+++ gcc-4.0.0/boehm-gc/include/gc.h 2005-04-28 22:30:38.000000000 -0500
|
||||
@@ -500,7 +500,7 @@
|
||||
#ifdef __linux__
|
||||
# include <features.h>
|
||||
# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
|
||||
- && !defined(__ia64__)
|
||||
+ && !defined(__ia64__) && !defined(__UCLIBC__)
|
||||
# ifndef GC_HAVE_BUILTIN_BACKTRACE
|
||||
# define GC_HAVE_BUILTIN_BACKTRACE
|
||||
# endif
|
|
@ -1,13 +0,0 @@
|
|||
Index: gcc-4.3.1/libstdc++-v3/include/c_std/cstdio
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/include/c_std/cstdio 2006-12-07 01:35:57.000000000 -0800
|
||||
+++ gcc-4.3.1/libstdc++-v3/include/c_std/cstdio 2008-08-16 02:11:37.000000000 -0700
|
||||
@@ -144,7 +144,7 @@
|
||||
|
||||
_GLIBCXX_END_NAMESPACE
|
||||
|
||||
-#if _GLIBCXX_USE_C99
|
||||
+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
|
||||
|
||||
#undef snprintf
|
||||
#undef vfscanf
|
|
@ -1,12 +0,0 @@
|
|||
--- gcc-4.0.0/libstdc++-v3/configure-old 2005-04-30 22:04:48.061603912 -0500
|
||||
+++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 22:06:13.678588152 -0500
|
||||
@@ -7194,6 +7194,9 @@
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <complex.h>
|
||||
+#ifdef __UCLIBC__
|
||||
+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
|
||||
+#endif
|
||||
int
|
||||
main ()
|
||||
{
|
|
@ -1,24 +0,0 @@
|
|||
--- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps 2006-03-24 01:49:51 +0100
|
||||
+++ gcc-4.1.0/libstdc++-v3/include/ext/rope 2006-03-24 01:49:37 +0100
|
||||
@@ -59,6 +59,9 @@
|
||||
#include <bits/allocator.h>
|
||||
#include <ext/hash_fun.h>
|
||||
|
||||
+/* cope w/ index defined as macro, SuSv3 proposal */
|
||||
+#undef index
|
||||
+
|
||||
# ifdef __GC
|
||||
# define __GC_CONST const
|
||||
# else
|
||||
--- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps 2006-03-24 01:50:04 +0100
|
||||
+++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h 2006-03-24 01:50:28 +0100
|
||||
@@ -53,6 +53,9 @@
|
||||
#include <ext/memory> // For uninitialized_copy_n
|
||||
#include <ext/numeric> // For power
|
||||
|
||||
+/* cope w/ index defined as macro, SuSv3 proposal */
|
||||
+#undef index
|
||||
+
|
||||
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
||||
|
||||
using std::size_t;
|
|
@ -1,49 +0,0 @@
|
|||
Index: gcc-4.2/libmudflap/mf-hooks2.c
|
||||
===================================================================
|
||||
--- gcc-4.2/libmudflap/mf-hooks2.c (revision 119834)
|
||||
+++ gcc-4.2/libmudflap/mf-hooks2.c (working copy)
|
||||
@@ -427,7 +427,7 @@
|
||||
{
|
||||
TRACE ("%s\n", __PRETTY_FUNCTION__);
|
||||
MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region");
|
||||
- bzero (s, n);
|
||||
+ memset (s, 0, n);
|
||||
}
|
||||
|
||||
|
||||
@@ -437,7 +437,7 @@
|
||||
TRACE ("%s\n", __PRETTY_FUNCTION__);
|
||||
MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "bcopy src");
|
||||
MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "bcopy dest");
|
||||
- bcopy (src, dest, n);
|
||||
+ memmove (dest, src, n);
|
||||
}
|
||||
|
||||
|
||||
@@ -447,7 +447,7 @@
|
||||
TRACE ("%s\n", __PRETTY_FUNCTION__);
|
||||
MF_VALIDATE_EXTENT(s1, n, __MF_CHECK_READ, "bcmp 1st arg");
|
||||
MF_VALIDATE_EXTENT(s2, n, __MF_CHECK_READ, "bcmp 2nd arg");
|
||||
- return bcmp (s1, s2, n);
|
||||
+ return n == 0 ? 0 : memcmp (s1, s2, n);
|
||||
}
|
||||
|
||||
|
||||
@@ -456,7 +456,7 @@
|
||||
size_t n = strlen (s);
|
||||
TRACE ("%s\n", __PRETTY_FUNCTION__);
|
||||
MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "index region");
|
||||
- return index (s, c);
|
||||
+ return strchr (s, c);
|
||||
}
|
||||
|
||||
|
||||
@@ -465,7 +465,7 @@
|
||||
size_t n = strlen (s);
|
||||
TRACE ("%s\n", __PRETTY_FUNCTION__);
|
||||
MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "rindex region");
|
||||
- return rindex (s, c);
|
||||
+ return strrchr (s, c);
|
||||
}
|
||||
|
||||
/* XXX: stpcpy, memccpy */
|
|
@ -1,36 +0,0 @@
|
|||
diff -rup gcc-4.2.orig/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.2/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
--- gcc-4.2.orig/libstdc++-v3/config/locale/uclibc/messages_members.h 2006-12-22 13:06:56.000000000 +0100
|
||||
+++ gcc-4.2/libstdc++-v3/config/locale/uclibc/messages_members.h 2006-12-22 15:23:41.000000000 +0100
|
||||
@@ -32,7 +32,8 @@
|
||||
//
|
||||
|
||||
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||
-
|
||||
+namespace std
|
||||
+{
|
||||
#ifdef __UCLIBC_MJN3_ONLY__
|
||||
#warning fix prototypes for *textdomain funcs
|
||||
#endif
|
||||
@@ -115,3 +116,4 @@
|
||||
this->_S_create_c_locale(this->_M_c_locale_messages, __s);
|
||||
}
|
||||
}
|
||||
+}
|
||||
diff -rup gcc-4.2.orig/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.2/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
--- gcc-4.2.orig/libstdc++-v3/config/locale/uclibc/time_members.h 2006-12-22 13:06:56.000000000 +0100
|
||||
+++ gcc-4.2/libstdc++-v3/config/locale/uclibc/time_members.h 2006-12-22 15:20:31.000000000 +0100
|
||||
@@ -33,7 +33,8 @@
|
||||
//
|
||||
|
||||
// Written by Benjamin Kosnik <bkoz@redhat.com>
|
||||
-
|
||||
+namespace std
|
||||
+{
|
||||
template<typename _CharT>
|
||||
__timepunct<_CharT>::__timepunct(size_t __refs)
|
||||
: facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
|
||||
@@ -74,3 +75,4 @@
|
||||
delete _M_data;
|
||||
_S_destroy_c_locale(_M_c_locale_timepunct);
|
||||
}
|
||||
+}
|
|
@ -1,19 +0,0 @@
|
|||
This patch fixes a bug into ostream::operator<<(double) due to the wrong size
|
||||
passed into the __convert_from_v method. The wrong size is then passed to
|
||||
std::snprintf function, that, on uClibc, doens't handle sized 0 buffer.
|
||||
|
||||
Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
|
||||
|
||||
Index: gcc-4.3.1/libstdc++-v3/include/bits/locale_facets.tcc
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/libstdc++-v3/include/bits/locale_facets.tcc 2007-11-26 17:59:41.000000000 -0800
|
||||
+++ gcc-4.3.1/libstdc++-v3/include/bits/locale_facets.tcc 2008-08-16 02:14:48.000000000 -0700
|
||||
@@ -1004,7 +1004,7 @@
|
||||
const int __cs_size = __fixed ? __max_exp + __prec + 4
|
||||
: __max_digits * 2 + __prec;
|
||||
char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
|
||||
- __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, __fbuf,
|
||||
+ __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, __fbuf,
|
||||
__prec, __v);
|
||||
#endif
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
Index: gcc-4.2/gcc/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-4.2/gcc/Makefile.in (revision 121758)
|
||||
+++ gcc-4.2/gcc/Makefile.in (working copy)
|
||||
@@ -2658,7 +2658,7 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H)
|
||||
# FIXME: writing proper dependencies for this is a *LOT* of work.
|
||||
libbackend.o : $(OBJS-common:.o=.c) $(out_file) \
|
||||
insn-config.h insn-flags.h insn-codes.h insn-constants.h \
|
||||
- insn-attr.h $(DATESTAMP) $(BASEVER) $(DEVPHASE)
|
||||
+ insn-attr.h $(DATESTAMP) $(BASEVER) $(DEVPHASE) gcov-iov.h
|
||||
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \
|
||||
-DTARGET_NAME=\"$(target_noncanonical)\" \
|
||||
-DLOCALEDIR=\"$(localedir)\" \
|
|
@ -1,20 +0,0 @@
|
|||
--- gcc-4.1.0/libstdc++-v3/fragment.am 2005-03-21 11:40:14.000000000 -0600
|
||||
+++ gcc-4.1.0-patched/libstdc++-v3/fragment.am 2005-04-25 20:14:39.856251785 -0500
|
||||
@@ -21,5 +21,5 @@
|
||||
$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
|
||||
|
||||
# -I/-D flags to pass when compiling.
|
||||
-AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
|
||||
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
|
||||
|
||||
--- gcc-4.1.0/libstdc++-v3/libmath/Makefile.am 2005-03-21 11:40:18.000000000 -0600
|
||||
+++ gcc-4.1.0-patched/libstdc++-v3/libmath/Makefile.am 2005-04-25 20:14:39.682280735 -0500
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
libmath_la_SOURCES = stubs.c
|
||||
|
||||
-AM_CPPFLAGS = $(CANADIAN_INCLUDES)
|
||||
+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
|
||||
|
||||
# Only compiling "C" sources in this directory.
|
||||
LIBTOOL = @LIBTOOL@ --tag CC
|
|
@ -1,33 +0,0 @@
|
|||
By default gcc places 64 bit libs in a lib64 directory. This makes it use
|
||||
"lib" instead.
|
||||
|
||||
RP 25/7/10
|
||||
|
||||
Index: gcc-4.3.3/gcc/config/i386/t-linux64
|
||||
===================================================================
|
||||
--- gcc-4.3.3.orig/gcc/config/i386/t-linux64 2007-09-27 20:56:06.000000000 +0100
|
||||
+++ gcc-4.3.3/gcc/config/i386/t-linux64 2010-08-03 12:55:04.642189070 +0100
|
||||
@@ -12,8 +12,8 @@
|
||||
# MULTILIB_OSDIRNAMES according to what is found on the target.
|
||||
|
||||
MULTILIB_OPTIONS = m64/m32
|
||||
-MULTILIB_DIRNAMES = 64 32
|
||||
-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
|
||||
+MULTILIB_DIRNAMES = . 32
|
||||
+MULTILIB_OSDIRNAMES = . $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
|
||||
|
||||
LIBGCC = stmp-multilib
|
||||
INSTALL_LIBGCC = install-multilib
|
||||
Index: gcc-4.3.3/gcc/config/i386/linux64.h
|
||||
===================================================================
|
||||
--- gcc-4.3.3.orig/gcc/config/i386/linux64.h 2007-08-02 11:49:31.000000000 +0100
|
||||
+++ gcc-4.3.3/gcc/config/i386/linux64.h 2010-08-03 13:01:51.621182117 +0100
|
||||
@@ -54,7 +54,7 @@
|
||||
done. */
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
|
||||
-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
|
||||
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"
|
||||
|
||||
#if TARGET_64BIT_DEFAULT
|
||||
#define SPEC_32 "m32"
|
|
@ -1,25 +0,0 @@
|
|||
http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348
|
||||
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836
|
||||
|
||||
--- gcc/gcc/configure.ac (revision 106699)
|
||||
+++ gcc/gcc/configure.ac (working copy)
|
||||
@@ -2446,7 +2446,7 @@
|
||||
tls_first_minor=14
|
||||
tls_as_opt="-m64 -Aesame --fatal-warnings"
|
||||
;;
|
||||
- sh-*-* | sh[34]-*-*)
|
||||
+ sh-*-* | sh[34]*-*-*)
|
||||
conftest_s='
|
||||
.section ".tdata","awT",@progbits
|
||||
foo: .long 25
|
||||
--- gcc/gcc/configure
|
||||
+++ gcc/gcc/configure
|
||||
@@ -14846,7 +14846,7 @@
|
||||
tls_first_minor=14
|
||||
tls_as_opt="-m64 -Aesame --fatal-warnings"
|
||||
;;
|
||||
- sh-*-* | sh[34]-*-*)
|
||||
+ sh-*-* | sh[34]*-*-*)
|
||||
conftest_s='
|
||||
.section ".tdata","awT",@progbits
|
||||
foo: .long 25
|
|
@ -1,34 +0,0 @@
|
|||
By Lennert Buytenhek <buytenh@wantstofly.org>
|
||||
Adds support for arm*b-linux* big-endian ARM targets
|
||||
|
||||
See http://gcc.gnu.org/PR16350
|
||||
|
||||
Index: gcc-4.3.2/gcc/config/arm/linux-elf.h
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/gcc/config/arm/linux-elf.h 2007-11-08 05:44:09.000000000 -0800
|
||||
+++ gcc-4.3.2/gcc/config/arm/linux-elf.h 2008-08-28 21:08:30.000000000 -0700
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
#undef MULTILIB_DEFAULTS
|
||||
#define MULTILIB_DEFAULTS \
|
||||
- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
|
||||
+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
|
||||
|
||||
/* Now we define the strings used to build the spec file. */
|
||||
#undef LIB_SPEC
|
||||
Index: gcc-4.3.2/gcc/config.gcc
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/gcc/config.gcc 2008-08-28 20:57:39.000000000 -0700
|
||||
+++ gcc-4.3.2/gcc/config.gcc 2008-08-28 21:00:11.000000000 -0700
|
||||
@@ -742,6 +742,11 @@
|
||||
esac
|
||||
tmake_file="${tmake_file} t-linux arm/t-arm"
|
||||
case ${target} in
|
||||
+ arm*b-*)
|
||||
+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ case ${target} in
|
||||
arm*-*-linux-*eabi)
|
||||
tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
|
||||
tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
|
|
@ -1,14 +0,0 @@
|
|||
Index: gcc-4.1.1/gcc/config/arm/linux-eabi.h
|
||||
===================================================================
|
||||
--- gcc-4.1.1.orig/gcc/config/arm/linux-eabi.h 2007-02-20 14:51:33.416193250 +0100
|
||||
+++ gcc-4.1.1/gcc/config/arm/linux-eabi.h 2007-02-20 14:52:11.622581000 +0100
|
||||
@@ -48,7 +48,8 @@
|
||||
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
|
||||
|
||||
#undef SUBTARGET_EXTRA_LINK_SPEC
|
||||
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
|
||||
+#define SUBTARGET_EXTRA_LINK_SPEC \
|
||||
+ " %{mbig-endian:-m armelfb_linux_eabi} %{mlittle-endian:-m armelf_linux_eabi} "
|
||||
|
||||
/* Use ld-linux.so.3 so that it will be possible to run "classic"
|
||||
GNU/Linux binaries on an EABI system. */
|
|
@ -1,153 +0,0 @@
|
|||
Hi,
|
||||
|
||||
The attached patch makes sure that we create smaller object code for
|
||||
simple switch statements. We just make sure to flatten the switch
|
||||
statement into an if-else chain, basically.
|
||||
|
||||
This fixes a size-regression as compared to gcc-3.4, as can be seen
|
||||
below.
|
||||
|
||||
2007-04-15 Bernhard Fischer <..>
|
||||
|
||||
* stmt.c (expand_case): Do not create a complex binary tree when
|
||||
optimizing for size but rather use the simple ordered list.
|
||||
(emit_case_nodes): do not emit jumps to the default_label when
|
||||
optimizing for size.
|
||||
|
||||
Not regtested so far.
|
||||
Comments?
|
||||
|
||||
Attached is the test switch.c mentioned below.
|
||||
|
||||
$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do
|
||||
gcc-$i -DCHAIN -Os -o switch-CHAIN-$i.o -c switch.c ;done
|
||||
$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do
|
||||
gcc-$i -UCHAIN -Os -o switch-$i.o -c switch.c ;done
|
||||
|
||||
$ size switch-*.o
|
||||
text data bss dec hex filename
|
||||
169 0 0 169 a9 switch-2.95.o
|
||||
115 0 0 115 73 switch-3.3.o
|
||||
103 0 0 103 67 switch-3.4.o
|
||||
124 0 0 124 7c switch-4.0.o
|
||||
124 0 0 124 7c switch-4.1.o
|
||||
124 0 0 124 7c switch-4.2.orig-HEAD.o
|
||||
95 0 0 95 5f switch-4.3-HEAD.o
|
||||
124 0 0 124 7c switch-4.3.orig-HEAD.o
|
||||
166 0 0 166 a6 switch-CHAIN-2.95.o
|
||||
111 0 0 111 6f switch-CHAIN-3.3.o
|
||||
95 0 0 95 5f switch-CHAIN-3.4.o
|
||||
95 0 0 95 5f switch-CHAIN-4.0.o
|
||||
95 0 0 95 5f switch-CHAIN-4.1.o
|
||||
95 0 0 95 5f switch-CHAIN-4.2.orig-HEAD.o
|
||||
95 0 0 95 5f switch-CHAIN-4.3-HEAD.o
|
||||
95 0 0 95 5f switch-CHAIN-4.3.orig-HEAD.o
|
||||
|
||||
|
||||
Content-Type: text/x-diff; charset=us-ascii
|
||||
Content-Disposition: attachment; filename="gcc-4.3.gcc-flatten-switch-stmt.00.diff"
|
||||
|
||||
Index: gcc-4.2.0/gcc/stmt.c
|
||||
===================================================================
|
||||
--- gcc-4.2.0.orig/gcc/stmt.c (revision 123843)
|
||||
+++ gcc-4.2.0/gcc/stmt.c (working copy)
|
||||
@@ -2517,7 +2517,11 @@ expand_case (tree exp)
|
||||
use_cost_table
|
||||
= (TREE_CODE (orig_type) != ENUMERAL_TYPE
|
||||
&& estimate_case_costs (case_list));
|
||||
- balance_case_nodes (&case_list, NULL);
|
||||
+ /* When optimizing for size, we want a straight list to avoid
|
||||
+ jumps as much as possible. This basically creates an if-else
|
||||
+ chain. */
|
||||
+ if (!optimize_size)
|
||||
+ balance_case_nodes (&case_list, NULL);
|
||||
emit_case_nodes (index, case_list, default_label, index_type);
|
||||
emit_jump (default_label);
|
||||
}
|
||||
@@ -3075,6 +3079,7 @@ emit_case_nodes (rtx index, case_node_pt
|
||||
{
|
||||
if (!node_has_low_bound (node, index_type))
|
||||
{
|
||||
+ if (!optimize_size) /* don't jl to the .default_label. */
|
||||
emit_cmp_and_jump_insns (index,
|
||||
convert_modes
|
||||
(mode, imode,
|
||||
|
||||
|
||||
Content-Type: text/x-csrc; charset=us-ascii
|
||||
Content-Disposition: attachment; filename="switch.c"
|
||||
|
||||
int
|
||||
commutative_tree_code (int code)
|
||||
{
|
||||
#define CASE(val, ret) case val:/* __asm__("# val="#val ",ret="#ret);*/ return ret;
|
||||
#ifndef CHAIN
|
||||
switch (code)
|
||||
{
|
||||
# if 1
|
||||
CASE(1,3)
|
||||
CASE(3,2)
|
||||
CASE(5,8)
|
||||
CASE(7,1)
|
||||
CASE(33,4)
|
||||
CASE(44,9)
|
||||
CASE(55,10)
|
||||
CASE(66,-1)
|
||||
CASE(77,99)
|
||||
CASE(666,0)
|
||||
# else
|
||||
case 1:
|
||||
return 3;
|
||||
case 3:
|
||||
return 2;
|
||||
case 5:
|
||||
return 8;
|
||||
case 7:
|
||||
return 1;
|
||||
case 33:
|
||||
return 4;
|
||||
case 44:
|
||||
return 9;
|
||||
case 55:
|
||||
return 10;
|
||||
case 66:
|
||||
return -1;
|
||||
case 77:
|
||||
return 99;
|
||||
case 666:
|
||||
return 0;
|
||||
# endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 4711;
|
||||
|
||||
#else
|
||||
if (code == 1)
|
||||
return 3;
|
||||
else if (code == 3)
|
||||
return 2;
|
||||
else if (code == 5)
|
||||
return 8;
|
||||
else if (code == 7)
|
||||
return 1;
|
||||
else if (code == 33)
|
||||
return 4;
|
||||
else if (code == 44)
|
||||
return 9;
|
||||
else if (code == 55)
|
||||
return 10;
|
||||
else if (code == 66)
|
||||
return -1;
|
||||
else if (code == 77)
|
||||
return 99;
|
||||
else if (code == 666)
|
||||
return 0;
|
||||
else
|
||||
return 4711;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
--AhhlLboLdkugWU4S--
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
# Dimitry Andric <dimitry@andric.com>, 2004-05-01
|
||||
#
|
||||
# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed
|
||||
# anymore. (The required functions are now in libgcc.)
|
||||
#
|
||||
# Fixes errors like
|
||||
# arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld: cannot find -lfloat
|
||||
# collect2: ld returned 1 exit status
|
||||
# make[2]: *** [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so] Error 1
|
||||
# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat
|
||||
|
||||
Index: gcc-4.0.2/gcc/config/arm/linux-elf.h
|
||||
===================================================================
|
||||
--- gcc-4.0.2.orig/gcc/config/arm/linux-elf.h 2005-03-04 16:14:01.000000000 +0000
|
||||
+++ gcc-4.0.2/gcc/config/arm/linux-elf.h 2005-11-11 18:02:54.000000000 +0000
|
||||
@@ -56,7 +56,7 @@
|
||||
%{shared:-lc} \
|
||||
%{!shared:%{profile:-lc_p}%{!profile:-lc}}"
|
||||
|
||||
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
|
||||
+#define LIBGCC_SPEC "-lgcc"
|
||||
|
||||
/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
|
||||
the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
|
|
@ -1,16 +0,0 @@
|
|||
Index: gcc-4.0.2/gcc/config/arm/t-linux
|
||||
===================================================================
|
||||
--- gcc-4.0.2.orig/gcc/config/arm/t-linux 2004-05-15 12:41:35.000000000 +0000
|
||||
+++ gcc-4.0.2/gcc/config/arm/t-linux 2005-11-11 16:07:53.000000000 +0000
|
||||
@@ -4,7 +4,10 @@
|
||||
LIBGCC2_DEBUG_CFLAGS = -g0
|
||||
|
||||
LIB1ASMSRC = arm/lib1funcs.asm
|
||||
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
|
||||
+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
|
||||
+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
|
||||
+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
|
||||
+ _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundisf _floatundidf
|
||||
|
||||
# MULTILIB_OPTIONS = mhard-float/msoft-float
|
||||
# MULTILIB_DIRNAMES = hard-float soft-float
|
|
@ -1,29 +0,0 @@
|
|||
--- gcc-4.1.1/gcc/config/arm/linux-gas.h- 2005-06-25 03:22:41.000000000 +0200
|
||||
+++ gcc-4.1.1/gcc/config/arm/linux-gas.h 2006-06-18 10:23:46.000000000 +0200
|
||||
@@ -44,6 +44,7 @@
|
||||
|
||||
/* Clear the instruction cache from `beg' to `end'. This makes an
|
||||
inline system call to SYS_cacheflush. */
|
||||
+#if !defined(__thumb__)
|
||||
#define CLEAR_INSN_CACHE(BEG, END) \
|
||||
{ \
|
||||
register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
|
||||
@@ -53,3 +54,18 @@
|
||||
: "=r" (_beg) \
|
||||
: "0" (_beg), "r" (_end), "r" (_flg)); \
|
||||
}
|
||||
+#else
|
||||
+#define CLEAR_INSN_CACHE(BEG, END) \
|
||||
+{ \
|
||||
+ register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
|
||||
+ register unsigned long _end __asm ("a2") = (unsigned long) (END); \
|
||||
+ register unsigned long _flg __asm ("a3") = 0; \
|
||||
+ register unsigned long _swi __asm ("a4") = 0xf0002; \
|
||||
+ __asm __volatile ("push {r7}\n" \
|
||||
+ " mov r7,a4\n" \
|
||||
+ " swi 0 @ sys_cacheflush\n" \
|
||||
+ " pop {r7}\n" \
|
||||
+ : "=r" (_beg) \
|
||||
+ : "0" (_beg), "r" (_end), "r" (_flg), "r" (_swi)); \
|
||||
+}
|
||||
+#endif
|
|
@ -1,43 +0,0 @@
|
|||
|
||||
#
|
||||
# Patch managed by http://www.holgerschurig.de/patcher.html
|
||||
#
|
||||
|
||||
Index: gcc-4.3.1/gcc/config/arm/lib1funcs.asm
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/gcc/config/arm/lib1funcs.asm 2007-05-30 12:04:09.000000000 -0700
|
||||
+++ gcc-4.3.1/gcc/config/arm/lib1funcs.asm 2008-08-28 21:51:17.000000000 -0700
|
||||
@@ -1225,11 +1225,12 @@
|
||||
code here switches to the correct mode before executing the function. */
|
||||
|
||||
.text
|
||||
- .align 0
|
||||
+ .align 1
|
||||
.force_thumb
|
||||
|
||||
.macro call_via register
|
||||
THUMB_FUNC_START _call_via_\register
|
||||
+ .hidden SYM (_call_via_\register)
|
||||
|
||||
bx \register
|
||||
nop
|
||||
@@ -1330,6 +1331,7 @@
|
||||
.code 16
|
||||
|
||||
THUMB_FUNC_START _interwork_call_via_\register
|
||||
+ .hidden SYM (_interwork_call_via_\register)
|
||||
|
||||
bx pc
|
||||
nop
|
||||
Index: gcc-4.3.1/gcc/config/arm/t-linux
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/gcc/config/arm/t-linux 2008-08-28 21:25:24.000000000 -0700
|
||||
+++ gcc-4.3.1/gcc/config/arm/t-linux 2008-08-28 21:51:17.000000000 -0700
|
||||
@@ -6,6 +6,7 @@
|
||||
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
|
||||
_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
|
||||
_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
|
||||
+ _call_via_rX \
|
||||
_fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundisf _floatundidf
|
||||
|
||||
# MULTILIB_OPTIONS = mhard-float/msoft-float
|
|
@ -1,31 +0,0 @@
|
|||
---
|
||||
gcc/configure | 2 +-
|
||||
gcc/configure.ac | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-4.3.1/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/gcc/configure 2008-08-20 00:27:57.000000000 -0700
|
||||
+++ gcc-4.3.1/gcc/configure 2008-08-20 00:45:11.000000000 -0700
|
||||
@@ -12813,7 +12813,7 @@ else
|
||||
esac
|
||||
saved_CFLAGS="${CFLAGS}"
|
||||
CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
|
||||
- ${realsrcdir}/configure \
|
||||
+ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
|
||||
--enable-languages=${enable_languages-all} \
|
||||
--target=$target_alias --host=$build_alias --build=$build_alias
|
||||
CFLAGS="${saved_CFLAGS}"
|
||||
Index: gcc-4.3.1/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/gcc/configure.ac 2008-08-20 00:27:57.000000000 -0700
|
||||
+++ gcc-4.3.1/gcc/configure.ac 2008-08-20 00:44:52.000000000 -0700
|
||||
@@ -1480,7 +1480,7 @@ else
|
||||
esac
|
||||
saved_CFLAGS="${CFLAGS}"
|
||||
CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
|
||||
- ${realsrcdir}/configure \
|
||||
+ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
|
||||
--enable-languages=${enable_languages-all} \
|
||||
--target=$target_alias --host=$build_alias --build=$build_alias
|
||||
CFLAGS="${saved_CFLAGS}"
|
|
@ -1,36 +0,0 @@
|
|||
#! /bin/sh -e
|
||||
|
||||
# DP: Fix armv4t build on ARM
|
||||
|
||||
dir=
|
||||
if [ $# -eq 3 -a "$2" = '-d' ]; then
|
||||
pdir="-d $3"
|
||||
dir="$3/"
|
||||
elif [ $# -ne 1 ]; then
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
fi
|
||||
case "$1" in
|
||||
-patch)
|
||||
patch $pdir -f --no-backup-if-mismatch -p1 < $0
|
||||
;;
|
||||
-unpatch)
|
||||
patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
|
||||
;;
|
||||
*)
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
esac
|
||||
exit 0
|
||||
|
||||
--- src/gcc/config/arm/linux-eabi.h.orig 2007-11-24 12:37:38.000000000 +0000
|
||||
+++ src/gcc/config/arm/linux-eabi.h 2007-11-24 12:39:41.000000000 +0000
|
||||
@@ -44,7 +44,7 @@
|
||||
The ARM10TDMI core is the default for armv5t, so set
|
||||
SUBTARGET_CPU_DEFAULT to achieve this. */
|
||||
#undef SUBTARGET_CPU_DEFAULT
|
||||
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
|
||||
+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
|
||||
|
||||
/* TARGET_BIG_ENDIAN_DEFAULT is set in
|
||||
config.gcc for big endian configurations. */
|
|
@ -1,331 +0,0 @@
|
|||
#! /bin/sh -e
|
||||
|
||||
# DP: Retry the build on an ice, save the calling options and preprocessed
|
||||
# DP: source when the ice is reproducible.
|
||||
|
||||
dir=
|
||||
if [ $# -eq 3 -a "$2" = '-d' ]; then
|
||||
pdir="-d $3"
|
||||
dir="$3/"
|
||||
elif [ $# -ne 1 ]; then
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
fi
|
||||
case "$1" in
|
||||
-patch)
|
||||
patch $pdir -f --no-backup-if-mismatch -p0 < $0
|
||||
;;
|
||||
-unpatch)
|
||||
patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
|
||||
;;
|
||||
*)
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
esac
|
||||
exit 0
|
||||
|
||||
2004-01-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* system.h (ICE_EXIT_CODE): Define.
|
||||
* gcc.c (execute): Don't free first string early, but at the end
|
||||
of the function. Call retry_ice if compiler exited with
|
||||
ICE_EXIT_CODE.
|
||||
(retry_ice): New function.
|
||||
* diagnostic.c (diagnostic_count_diagnostic,
|
||||
diagnostic_action_after_output, error_recursion): Exit with
|
||||
ICE_EXIT_CODE instead of FATAL_EXIT_CODE.
|
||||
|
||||
--- gcc/diagnostic.c.orig 2007-09-30 10:48:13.000000000 +0000
|
||||
+++ gcc/diagnostic.c 2007-09-30 10:49:57.000000000 +0000
|
||||
@@ -244,7 +244,7 @@
|
||||
fnotice (stderr, "Please submit a full bug report,\n"
|
||||
"with preprocessed source if appropriate.\n"
|
||||
"See %s for instructions.\n", bug_report_url);
|
||||
- exit (ICE_EXIT_CODE);
|
||||
+ exit (FATAL_EXIT_CODE);
|
||||
|
||||
case DK_FATAL:
|
||||
if (context->abort_on_error)
|
||||
--- gcc/gcc.c.orig 2007-09-30 10:48:13.000000000 +0000
|
||||
+++ gcc/gcc.c 2007-09-30 10:48:39.000000000 +0000
|
||||
@@ -357,6 +357,9 @@
|
||||
#if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
|
||||
static const char *convert_filename (const char *, int, int);
|
||||
#endif
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
|
||||
+static void retry_ice (const char *prog, const char **argv);
|
||||
+#endif
|
||||
|
||||
static const char *getenv_spec_function (int, const char **);
|
||||
static const char *if_exists_spec_function (int, const char **);
|
||||
@@ -2999,7 +3002,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (string != commands[i].prog)
|
||||
+ if (i && string != commands[i].prog)
|
||||
free (CONST_CAST (char *, string));
|
||||
}
|
||||
|
||||
@@ -3056,6 +3059,16 @@
|
||||
else if (WIFEXITED (status)
|
||||
&& WEXITSTATUS (status) >= MIN_FATAL_STATUS)
|
||||
{
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
|
||||
+ /* For ICEs in cc1, cc1obj, cc1plus see if it is
|
||||
+ reproducible or not. */
|
||||
+ char *p;
|
||||
+ if (WEXITSTATUS (status) == ICE_EXIT_CODE
|
||||
+ && i == 0
|
||||
+ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
|
||||
+ && ! strncmp (p + 1, "cc1", 3))
|
||||
+ retry_ice (commands[0].prog, commands[0].argv);
|
||||
+#endif
|
||||
if (WEXITSTATUS (status) > greatest_status)
|
||||
greatest_status = WEXITSTATUS (status);
|
||||
ret_code = -1;
|
||||
@@ -3076,6 +3089,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ if (commands[0].argv[0] != commands[0].prog)
|
||||
+ free ((PTR) commands[0].argv[0]);
|
||||
+
|
||||
return ret_code;
|
||||
}
|
||||
}
|
||||
@@ -6016,6 +6032,224 @@
|
||||
switches[switchnum].validated = 1;
|
||||
}
|
||||
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
|
||||
+#define RETRY_ICE_ATTEMPTS 2
|
||||
+
|
||||
+static void
|
||||
+retry_ice (const char *prog, const char **argv)
|
||||
+{
|
||||
+ int nargs, out_arg = -1, quiet = 0, attempt;
|
||||
+ int pid, retries, sleep_interval;
|
||||
+ const char **new_argv;
|
||||
+ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2];
|
||||
+
|
||||
+ if (input_filename == NULL || ! strcmp (input_filename, "-"))
|
||||
+ return;
|
||||
+
|
||||
+ for (nargs = 0; argv[nargs] != NULL; ++nargs)
|
||||
+ /* Only retry compiler ICEs, not preprocessor ones. */
|
||||
+ if (! strcmp (argv[nargs], "-E"))
|
||||
+ return;
|
||||
+ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o')
|
||||
+ {
|
||||
+ if (out_arg == -1)
|
||||
+ out_arg = nargs;
|
||||
+ else
|
||||
+ return;
|
||||
+ }
|
||||
+ /* If the compiler is going to output any time information,
|
||||
+ it might vary between invocations. */
|
||||
+ else if (! strcmp (argv[nargs], "-quiet"))
|
||||
+ quiet = 1;
|
||||
+ else if (! strcmp (argv[nargs], "-ftime-report"))
|
||||
+ return;
|
||||
+
|
||||
+ if (out_arg == -1 || !quiet)
|
||||
+ return;
|
||||
+
|
||||
+ memset (temp_filenames, '\0', sizeof (temp_filenames));
|
||||
+ new_argv = alloca ((nargs + 3) * sizeof (const char *));
|
||||
+ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *));
|
||||
+ new_argv[nargs++] = "-frandom-seed=0";
|
||||
+ new_argv[nargs] = NULL;
|
||||
+ if (new_argv[out_arg][2] == '\0')
|
||||
+ new_argv[out_arg + 1] = "-";
|
||||
+ else
|
||||
+ new_argv[out_arg] = "-o-";
|
||||
+
|
||||
+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt)
|
||||
+ {
|
||||
+ int fd = -1;
|
||||
+ int status;
|
||||
+
|
||||
+ temp_filenames[attempt * 2] = make_temp_file (".out");
|
||||
+ temp_filenames[attempt * 2 + 1] = make_temp_file (".err");
|
||||
+
|
||||
+ if (attempt == RETRY_ICE_ATTEMPTS)
|
||||
+ {
|
||||
+ int i;
|
||||
+ int fd1, fd2;
|
||||
+ struct stat st1, st2;
|
||||
+ size_t n, len;
|
||||
+ char *buf;
|
||||
+
|
||||
+ buf = xmalloc (8192);
|
||||
+
|
||||
+ for (i = 0; i < 2; ++i)
|
||||
+ {
|
||||
+ fd1 = open (temp_filenames[i], O_RDONLY);
|
||||
+ fd2 = open (temp_filenames[2 + i], O_RDONLY);
|
||||
+
|
||||
+ if (fd1 < 0 || fd2 < 0)
|
||||
+ {
|
||||
+ i = -1;
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0)
|
||||
+ {
|
||||
+ i = -1;
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (st1.st_size != st2.st_size)
|
||||
+ {
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ len = 0;
|
||||
+ for (n = st1.st_size; n; n -= len)
|
||||
+ {
|
||||
+ len = n;
|
||||
+ if (len > 4096)
|
||||
+ len = 4096;
|
||||
+
|
||||
+ if (read (fd1, buf, len) != (int) len
|
||||
+ || read (fd2, buf + 4096, len) != (int) len)
|
||||
+ {
|
||||
+ i = -1;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (memcmp (buf, buf + 4096, len) != 0)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+
|
||||
+ if (n)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ free (buf);
|
||||
+ if (i == -1)
|
||||
+ break;
|
||||
+
|
||||
+ if (i != 2)
|
||||
+ {
|
||||
+ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ fd = open (temp_filenames[attempt * 2], O_RDWR);
|
||||
+ if (fd < 0)
|
||||
+ break;
|
||||
+ write (fd, "//", 2);
|
||||
+ for (i = 0; i < nargs; i++)
|
||||
+ {
|
||||
+ write (fd, " ", 1);
|
||||
+ write (fd, new_argv[i], strlen (new_argv[i]));
|
||||
+ }
|
||||
+ write (fd, "\n", 1);
|
||||
+ new_argv[nargs] = "-E";
|
||||
+ new_argv[nargs + 1] = NULL;
|
||||
+ }
|
||||
+
|
||||
+ /* Fork a subprocess; wait and retry if it fails. */
|
||||
+ sleep_interval = 1;
|
||||
+ pid = -1;
|
||||
+ for (retries = 0; retries < 4; retries++)
|
||||
+ {
|
||||
+ pid = fork ();
|
||||
+ if (pid >= 0)
|
||||
+ break;
|
||||
+ sleep (sleep_interval);
|
||||
+ sleep_interval *= 2;
|
||||
+ }
|
||||
+
|
||||
+ if (pid < 0)
|
||||
+ break;
|
||||
+ else if (pid == 0)
|
||||
+ {
|
||||
+ if (attempt != RETRY_ICE_ATTEMPTS)
|
||||
+ fd = open (temp_filenames[attempt * 2], O_RDWR);
|
||||
+ if (fd < 0)
|
||||
+ exit (-1);
|
||||
+ if (fd != 1)
|
||||
+ {
|
||||
+ close (1);
|
||||
+ dup (fd);
|
||||
+ close (fd);
|
||||
+ }
|
||||
+
|
||||
+ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR);
|
||||
+ if (fd < 0)
|
||||
+ exit (-1);
|
||||
+ if (fd != 2)
|
||||
+ {
|
||||
+ close (2);
|
||||
+ dup (fd);
|
||||
+ close (fd);
|
||||
+ }
|
||||
+
|
||||
+ if (prog == new_argv[0])
|
||||
+ execvp (prog, (char *const *) new_argv);
|
||||
+ else
|
||||
+ execv (new_argv[0], (char *const *) new_argv);
|
||||
+ exit (-1);
|
||||
+ }
|
||||
+
|
||||
+ if (waitpid (pid, &status, 0) < 0)
|
||||
+ break;
|
||||
+
|
||||
+ if (attempt < RETRY_ICE_ATTEMPTS
|
||||
+ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE))
|
||||
+ {
|
||||
+ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
|
||||
+ break;
|
||||
+ }
|
||||
+ else if (attempt == RETRY_ICE_ATTEMPTS)
|
||||
+ {
|
||||
+ close (fd);
|
||||
+ if (WIFEXITED (status)
|
||||
+ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE)
|
||||
+ {
|
||||
+ notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n",
|
||||
+ temp_filenames[attempt * 2]);
|
||||
+ /* Make sure it is not deleted. */
|
||||
+ free (temp_filenames[attempt * 2]);
|
||||
+ temp_filenames[attempt * 2] = NULL;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++)
|
||||
+ if (temp_filenames[attempt])
|
||||
+ {
|
||||
+ unlink (temp_filenames[attempt]);
|
||||
+ free (temp_filenames[attempt]);
|
||||
+ }
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
/* Search for a file named NAME trying various prefixes including the
|
||||
user's -B prefix and some standard ones.
|
||||
Return the absolute file name found. If nothing is found, return NAME. */
|
||||
--- gcc/Makefile.in.orig 2007-09-30 10:48:13.000000000 +0000
|
||||
+++ gcc/Makefile.in 2007-09-30 10:48:39.000000000 +0000
|
||||
@@ -192,6 +192,7 @@
|
||||
build/gengtype-lex.o-warn = -Wno-error
|
||||
# SYSCALLS.c misses prototypes
|
||||
SYSCALLS.c.X-warn = -Wno-strict-prototypes -Wno-error
|
||||
+build/gcc.o-warn = -Wno-error
|
||||
|
||||
# All warnings have to be shut off in stage1 if the compiler used then
|
||||
# isn't gcc; configure determines that. WARN_CFLAGS will be either
|
|
@ -1,71 +0,0 @@
|
|||
#! /bin/sh -e
|
||||
|
||||
# DP: Build and install libstdc++_pic.a library.
|
||||
|
||||
dir=
|
||||
if [ $# -eq 3 -a "$2" = '-d' ]; then
|
||||
pdir="-d $3"
|
||||
dir="$3/"
|
||||
elif [ $# -ne 1 ]; then
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
fi
|
||||
case "$1" in
|
||||
-patch)
|
||||
patch $pdir -f --no-backup-if-mismatch -p0 < $0
|
||||
;;
|
||||
-unpatch)
|
||||
patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
|
||||
;;
|
||||
*)
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
esac
|
||||
exit 0
|
||||
|
||||
diff -ur libstdc++-v3/src/Makefile.am libstdc++-v3/src/Makefile.am
|
||||
--- libstdc++-v3/src/Makefile.am~ 2004-04-16 21:04:05.000000000 +0200
|
||||
+++ libstdc++-v3/src/Makefile.am 2004-07-03 20:22:43.000000000 +0200
|
||||
@@ -210,6 +210,10 @@
|
||||
$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
|
||||
|
||||
|
||||
+install-exec-local:
|
||||
+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a
|
||||
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
|
||||
+
|
||||
# Added bits to build debug library.
|
||||
if GLIBCXX_BUILD_DEBUG
|
||||
all-local: build_debug
|
||||
diff -ur libstdc++-v3/src/Makefile.in libstdc++-v3/src/Makefile.in
|
||||
--- libstdc++-v3/src/Makefile.in 2004-07-03 06:41:13.000000000 +0200
|
||||
+++ libstdc++-v3/src/Makefile.in 2004-07-03 20:25:05.000000000 +0200
|
||||
@@ -611,7 +611,7 @@
|
||||
|
||||
install-data-am: install-data-local
|
||||
|
||||
-install-exec-am: install-toolexeclibLTLIBRARIES
|
||||
+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
@@ -644,6 +644,7 @@
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-data-local install-exec \
|
||||
+ install-exec-local \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip install-toolexeclibLTLIBRARIES installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
@@ -729,6 +730,11 @@
|
||||
install_debug:
|
||||
(cd ${debugdir} && $(MAKE) \
|
||||
toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
|
||||
+
|
||||
+install-exec-local:
|
||||
+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a
|
||||
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
|
||||
+
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -1,179 +0,0 @@
|
|||
#! /bin/sh -e
|
||||
|
||||
# DP: <your description>
|
||||
|
||||
dir=
|
||||
if [ $# -eq 3 -a "$2" = '-d' ]; then
|
||||
pdir="-d $3"
|
||||
dir="$3/"
|
||||
elif [ $# -ne 1 ]; then
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
fi
|
||||
case "$1" in
|
||||
-patch)
|
||||
patch $pdir -f --no-backup-if-mismatch -p0 < $0
|
||||
;;
|
||||
-unpatch)
|
||||
patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
|
||||
;;
|
||||
*)
|
||||
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
|
||||
exit 1
|
||||
esac
|
||||
exit 0
|
||||
|
||||
From: "H.J. Lu" <hjl@lucon.org>
|
||||
Sender: gcc-patches-owner@gcc.gnu.org
|
||||
To: gcc-patches@gcc.gnu.org
|
||||
Subject: PATCH: PR target/30961: [4.1/4.2/4.3 regression] redundant reg/mem stores/moves
|
||||
Date: Mon, 27 Aug 2007 11:34:12 -0700
|
||||
|
||||
We start with
|
||||
|
||||
(note:HI 3 4 22 2 NOTE_INSN_FUNCTION_BEG)
|
||||
|
||||
(insn:HI 6 3 10 2 c.c:3 (set (reg:DF 58 [ <result> ])
|
||||
(subreg:DF (reg/v:DI 59 [ in ]) 0)) 102 {*movdf_integer_rex64} (expr_list:REG_DEAD (reg/v:DI 59 [ in ])
|
||||
(nil)))
|
||||
|
||||
(insn:HI 10 6 16 2 c.c:7 (set (reg/i:DF 21 xmm0 [ <result> ])
|
||||
(reg:DF 58 [ <result> ])) 102 {*movdf_integer_rex64} (expr_list:REG_DEAD (reg:DF 58 [ <result> ])
|
||||
(nil)))
|
||||
|
||||
(insn:HI 16 10 0 2 c.c:7 (use (reg/i:DF 21 xmm0 [ <result> ])) -1 (nil))
|
||||
|
||||
we are trying to allocate registers for insn 6 and we allocate
|
||||
xmm0 for the return value. Reload doesn't check if xmm0 can be used for
|
||||
DF 59, it allocates xmm1 for DF 59 and generates:
|
||||
|
||||
Reloads for insn # 6
|
||||
Reload 0: reload_in (DF) = (reg:DF 5 di)
|
||||
SSE_REGS, RELOAD_FOR_INPUT (opnum = 1), can't combine
|
||||
reload_in_reg: (subreg:DF (reg/v:DI 5 di [orig:59 in ] [59]) 0)
|
||||
reload_reg_rtx: (reg:DF 22 xmm1)
|
||||
...
|
||||
|
||||
(note:HI 4 1 3 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
|
||||
|
||||
(note:HI 3 4 22 2 NOTE_INSN_FUNCTION_BEG)
|
||||
|
||||
(insn 22 3 23 2 c.c:3 (set (mem/c:DF (plus:DI (reg/f:DI 7 sp)
|
||||
(const_int -8 [0xfffffffffffffff8])) [0 S8 A8])
|
||||
(reg:DF 5 di)) 102 {*movdf_integer_rex64} (nil))
|
||||
|
||||
(insn 23 22 6 2 c.c:3 (set (reg:DF 22 xmm1)
|
||||
(mem/c:DF (plus:DI (reg/f:DI 7 sp)
|
||||
(const_int -8 [0xfffffffffffffff8])) [0 S8 A8])) 102 {*movdf_integer_rex64} (nil))
|
||||
|
||||
(insn:HI 6 23 16 2 c.c:3 (set (reg:DF 21 xmm0 [orig:58 <result> ] [58])
|
||||
(reg:DF 22 xmm1)) 102 {*movdf_integer_rex64} (nil))
|
||||
|
||||
(insn 16 6 21 2 c.c:7 (use (reg/i:DF 21 xmm0 [ <result> ])) -1 (nil))
|
||||
|
||||
This patch tries to use the destination register when reloading for input. It
|
||||
generates
|
||||
|
||||
Reloads for insn # 6
|
||||
Reload 0: reload_in (DF) = (reg:DF 5 di)
|
||||
SSE_REGS, RELOAD_FOR_INPUT (opnum = 1), can't combine
|
||||
reload_in_reg: (subreg:DF (reg/v:DI 5 di [orig:59 in ] [59]) 0)
|
||||
reload_reg_rtx: (reg:DF 21 xmm0)
|
||||
...
|
||||
(note:HI 4 1 3 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
|
||||
|
||||
(note:HI 3 4 22 2 NOTE_INSN_FUNCTION_BEG)
|
||||
|
||||
(insn 22 3 23 2 c.c:3 (set (mem/c:DF (plus:DI (reg/f:DI 7 sp)
|
||||
(const_int -8 [0xfffffffffffffff8])) [0 S8 A8])
|
||||
(reg:DF 5 di)) 102 {*movdf_integer_rex64} (nil))
|
||||
|
||||
(insn 23 22 6 2 c.c:3 (set (reg:DF 21 xmm0)
|
||||
(mem/c:DF (plus:DI (reg/f:DI 7 sp)
|
||||
(const_int -8 [0xfffffffffffffff8])) [0 S8 A8])) 102 {*movdf_integer_rex64} (nil))
|
||||
|
||||
(insn:HI 6 23 10 2 c.c:3 (set (reg:DF 22 xmm1 [orig:58 <result> ] [58])
|
||||
(reg:DF 21 xmm0)) 102 {*movdf_integer_rex64} (nil))
|
||||
|
||||
(insn:HI 10 6 16 2 c.c:7 (set (reg/i:DF 21 xmm0 [ <result> ])
|
||||
(reg:DF 22 xmm1 [orig:58 <result> ] [58])) 102 {*movdf_integer_rex64} (nil))
|
||||
|
||||
(insn 16 10 21 2 c.c:7 (use (reg/i:DF 21 xmm0 [ <result> ])) -1 (nil))
|
||||
|
||||
|
||||
H.J.
|
||||
----
|
||||
gcc/
|
||||
|
||||
2007-08-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/30961
|
||||
* reload1.c (find_reg): Favor the hard register in destination
|
||||
if it is usable and a memory location is needed for reload
|
||||
input.
|
||||
|
||||
gcc/testsuite/
|
||||
|
||||
2007-08-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/30961
|
||||
* gcc.target/i386/pr30961-1.c: New.
|
||||
|
||||
--- gcc/reload1.c.second 2007-08-27 09:35:08.000000000 -0700
|
||||
+++ gcc/reload1.c 2007-08-27 09:36:33.000000000 -0700
|
||||
@@ -1781,6 +1781,20 @@ find_reg (struct insn_chain *chain, int
|
||||
HARD_REG_SET not_usable;
|
||||
HARD_REG_SET used_by_other_reload;
|
||||
reg_set_iterator rsi;
|
||||
+#ifdef SECONDARY_MEMORY_NEEDED
|
||||
+ rtx body = PATTERN (chain->insn);
|
||||
+ unsigned int dest_reg = FIRST_PSEUDO_REGISTER;
|
||||
+
|
||||
+ if (GET_CODE (body) == SET)
|
||||
+ {
|
||||
+ rtx dest = SET_DEST (body);
|
||||
+
|
||||
+ if ((REG_P (dest)
|
||||
+ || (GET_CODE (dest) == SUBREG
|
||||
+ && REG_P (SUBREG_REG (dest)))))
|
||||
+ dest_reg = reg_or_subregno (dest);
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
COPY_HARD_REG_SET (not_usable, bad_spill_regs);
|
||||
IOR_HARD_REG_SET (not_usable, bad_spill_regs_global);
|
||||
@@ -1821,6 +1835,18 @@ find_reg (struct insn_chain *chain, int
|
||||
this_cost--;
|
||||
if (rl->out && REG_P (rl->out) && REGNO (rl->out) == regno)
|
||||
this_cost--;
|
||||
+#ifdef SECONDARY_MEMORY_NEEDED
|
||||
+ /* If a memory location is needed for rl->in and dest_reg
|
||||
+ is usable, we will favor it. */
|
||||
+ else if (dest_reg == regno
|
||||
+ && rl->in
|
||||
+ && REG_P (rl->in)
|
||||
+ && REGNO (rl->in) < FIRST_PSEUDO_REGISTER
|
||||
+ && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (REGNO (rl->in)),
|
||||
+ rl->class,
|
||||
+ rl->mode))
|
||||
+ this_cost = 0;
|
||||
+#endif
|
||||
if (this_cost < best_cost
|
||||
/* Among registers with equal cost, prefer caller-saved ones, or
|
||||
use REG_ALLOC_ORDER if it is defined. */
|
||||
--- gcc/testsuite/gcc.target/i386/pr30961-1.c.second 2007-08-27 11:01:59.000000000 -0700
|
||||
+++ gcc/testsuite/gcc.target/i386/pr30961-1.c 2007-08-27 11:02:51.000000000 -0700
|
||||
@@ -0,0 +1,13 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-require-effective-target lp64 } */
|
||||
+/* { dg-options "-O2" } */
|
||||
+
|
||||
+double
|
||||
+convert (long long in)
|
||||
+{
|
||||
+ double f;
|
||||
+ __builtin_memcpy( &f, &in, sizeof( in ) );
|
||||
+ return f;
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-assembler-not "movapd" } } */
|
|
@ -1,102 +0,0 @@
|
|||
2007-10-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* decl.c (duplicate_decls): When redeclaring a builtin function,
|
||||
keep the merged decl builtin whenever types match, even if new
|
||||
decl defines a function.
|
||||
|
||||
* gcc.dg/builtins-65.c: New test.
|
||||
* g++.dg/ext/builtin10.C: New test.
|
||||
|
||||
--- gcc/cp/decl.c.jj 2007-10-01 22:11:09.000000000 +0200
|
||||
+++ gcc/cp/decl.c 2007-10-02 11:39:46.000000000 +0200
|
||||
@@ -1988,23 +1988,21 @@ duplicate_decls (tree newdecl, tree oldd
|
||||
DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
|
||||
DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
|
||||
}
|
||||
+ /* If redeclaring a builtin function, it stays built in. */
|
||||
+ if (types_match && DECL_BUILT_IN (olddecl))
|
||||
+ {
|
||||
+ DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
|
||||
+ DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
|
||||
+ /* If we're keeping the built-in definition, keep the rtl,
|
||||
+ regardless of declaration matches. */
|
||||
+ COPY_DECL_RTL (olddecl, newdecl);
|
||||
+ }
|
||||
if (new_defines_function)
|
||||
/* If defining a function declared with other language
|
||||
linkage, use the previously declared language linkage. */
|
||||
SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
|
||||
else if (types_match)
|
||||
{
|
||||
- /* If redeclaring a builtin function, and not a definition,
|
||||
- it stays built in. */
|
||||
- if (DECL_BUILT_IN (olddecl))
|
||||
- {
|
||||
- DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
|
||||
- DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
|
||||
- /* If we're keeping the built-in definition, keep the rtl,
|
||||
- regardless of declaration matches. */
|
||||
- COPY_DECL_RTL (olddecl, newdecl);
|
||||
- }
|
||||
-
|
||||
DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
|
||||
/* Don't clear out the arguments if we're redefining a function. */
|
||||
if (DECL_ARGUMENTS (olddecl))
|
||||
--- gcc/testsuite/gcc.dg/builtins-65.c.jj 2007-10-02 11:23:51.000000000 +0200
|
||||
+++ gcc/testsuite/gcc.dg/builtins-65.c 2007-10-02 11:24:12.000000000 +0200
|
||||
@@ -0,0 +1,25 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2" } */
|
||||
+
|
||||
+typedef __SIZE_TYPE__ size_t;
|
||||
+extern void __chk_fail (void);
|
||||
+extern int snprintf (char *, size_t, const char *, ...);
|
||||
+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
|
||||
+{
|
||||
+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
|
||||
+ __chk_fail ();
|
||||
+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
|
||||
+}
|
||||
+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
|
||||
+
|
||||
+char buf[10];
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ snprintf (buf, 10, "%d%d\n", 10, 10);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-assembler "mysnprintf" } } */
|
||||
+/* { dg-final { scan-assembler-not "__chk_fail" } } */
|
||||
--- gcc/testsuite/g++.dg/ext/builtin10.C.jj 2007-10-02 11:19:45.000000000 +0200
|
||||
+++ gcc/testsuite/g++.dg/ext/builtin10.C 2007-10-02 11:23:26.000000000 +0200
|
||||
@@ -0,0 +1,27 @@
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-O2" }
|
||||
+
|
||||
+typedef __SIZE_TYPE__ size_t;
|
||||
+extern "C" {
|
||||
+extern void __chk_fail (void);
|
||||
+extern int snprintf (char *, size_t, const char *, ...);
|
||||
+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
|
||||
+{
|
||||
+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
|
||||
+ __chk_fail ();
|
||||
+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
|
||||
+}
|
||||
+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
|
||||
+}
|
||||
+
|
||||
+char buf[10];
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ snprintf (buf, 10, "%d%d\n", 10, 10);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+// { dg-final { scan-assembler "mysnprintf" } }
|
||||
+// { dg-final { scan-assembler-not "__chk_fail" } }
|
|
@ -1,284 +0,0 @@
|
|||
2008-02-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
|
||||
and CPP_PRAGMA_EOL.
|
||||
* c-pragma.c (pragma_ns_name): New typedef.
|
||||
(registered_pp_pragmas): New variable.
|
||||
(c_pp_lookup_pragma): New function.
|
||||
(c_register_pragma_1): If flag_preprocess_only, do nothing
|
||||
for non-expanded pragmas, for expanded ones push pragma's
|
||||
namespace and name into registered_pp_pragmas vector.
|
||||
(c_invoke_pragma_handler): Register OpenMP pragmas even when
|
||||
flag_preprocess_only, don't register GCC pch_preprocess
|
||||
pragma if flag_preprocess_only.
|
||||
* c-opts.c (c_common_init): Call init_pragma even if
|
||||
flag_preprocess_only.
|
||||
* c-pragma.c (c_pp_lookup_pragma): New prototype.
|
||||
* config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
|
||||
cpp_register_pragma if flag_preprocess_only.
|
||||
|
||||
* gcc.dg/gomp/preprocess-1.c: New test.
|
||||
|
||||
--- gcc/c-ppoutput.c.jj 2008-01-26 18:01:16.000000000 +0100
|
||||
+++ gcc/c-ppoutput.c 2008-02-26 22:54:57.000000000 +0100
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Preprocess only, using cpplib.
|
||||
- Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007
|
||||
- Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007,
|
||||
+ 2008 Free Software Foundation, Inc.
|
||||
Written by Per Bothner, 1994-95.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
@@ -177,7 +177,24 @@ scan_translation_unit (cpp_reader *pfile
|
||||
avoid_paste = false;
|
||||
print.source = NULL;
|
||||
print.prev = token;
|
||||
- cpp_output_token (token, print.outf);
|
||||
+ if (token->type == CPP_PRAGMA)
|
||||
+ {
|
||||
+ const char *space;
|
||||
+ const char *name;
|
||||
+
|
||||
+ maybe_print_line (token->src_loc);
|
||||
+ fputs ("#pragma ", print.outf);
|
||||
+ c_pp_lookup_pragma (token->val.pragma, &space, &name);
|
||||
+ if (space)
|
||||
+ fprintf (print.outf, "%s %s", space, name);
|
||||
+ else
|
||||
+ fprintf (print.outf, "%s", name);
|
||||
+ print.printed = 1;
|
||||
+ }
|
||||
+ else if (token->type == CPP_PRAGMA_EOL)
|
||||
+ maybe_print_line (token->src_loc);
|
||||
+ else
|
||||
+ cpp_output_token (token, print.outf);
|
||||
|
||||
if (token->type == CPP_COMMENT)
|
||||
account_for_newlines (token->val.str.text, token->val.str.len);
|
||||
--- gcc/c-pragma.c.jj 2008-02-15 18:43:03.000000000 +0100
|
||||
+++ gcc/c-pragma.c 2008-02-26 22:59:44.000000000 +0100
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Handle #pragma, system V.4 style. Supports #pragma weak and #pragma pack.
|
||||
Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||
- 2006, 2007 Free Software Foundation, Inc.
|
||||
+ 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
@@ -872,6 +872,61 @@ DEF_VEC_ALLOC_O (pragma_handler, heap);
|
||||
|
||||
static VEC(pragma_handler, heap) *registered_pragmas;
|
||||
|
||||
+typedef struct
|
||||
+{
|
||||
+ const char *space;
|
||||
+ const char *name;
|
||||
+} pragma_ns_name;
|
||||
+
|
||||
+DEF_VEC_O (pragma_ns_name);
|
||||
+DEF_VEC_ALLOC_O (pragma_ns_name, heap);
|
||||
+
|
||||
+static VEC(pragma_ns_name, heap) *registered_pp_pragmas;
|
||||
+
|
||||
+struct omp_pragma_def { const char *name; unsigned int id; };
|
||||
+static const struct omp_pragma_def omp_pragmas[] = {
|
||||
+ { "atomic", PRAGMA_OMP_ATOMIC },
|
||||
+ { "barrier", PRAGMA_OMP_BARRIER },
|
||||
+ { "critical", PRAGMA_OMP_CRITICAL },
|
||||
+ { "flush", PRAGMA_OMP_FLUSH },
|
||||
+ { "for", PRAGMA_OMP_FOR },
|
||||
+ { "master", PRAGMA_OMP_MASTER },
|
||||
+ { "ordered", PRAGMA_OMP_ORDERED },
|
||||
+ { "parallel", PRAGMA_OMP_PARALLEL },
|
||||
+ { "section", PRAGMA_OMP_SECTION },
|
||||
+ { "sections", PRAGMA_OMP_SECTIONS },
|
||||
+ { "single", PRAGMA_OMP_SINGLE },
|
||||
+ { "threadprivate", PRAGMA_OMP_THREADPRIVATE }
|
||||
+};
|
||||
+
|
||||
+void
|
||||
+c_pp_lookup_pragma (unsigned int id, const char **space, const char **name)
|
||||
+{
|
||||
+ const int n_omp_pragmas = sizeof (omp_pragmas) / sizeof (*omp_pragmas);
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < n_omp_pragmas; ++i)
|
||||
+ if (omp_pragmas[i].id == id)
|
||||
+ {
|
||||
+ *space = "omp";
|
||||
+ *name = omp_pragmas[i].name;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (id >= PRAGMA_FIRST_EXTERNAL
|
||||
+ && (id < PRAGMA_FIRST_EXTERNAL
|
||||
+ + VEC_length (pragma_ns_name, registered_pp_pragmas)))
|
||||
+ {
|
||||
+ *space = VEC_index (pragma_ns_name, registered_pp_pragmas,
|
||||
+ id - PRAGMA_FIRST_EXTERNAL)->space;
|
||||
+ *name = VEC_index (pragma_ns_name, registered_pp_pragmas,
|
||||
+ id - PRAGMA_FIRST_EXTERNAL)->name;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ gcc_unreachable ();
|
||||
+}
|
||||
+
|
||||
/* Front-end wrappers for pragma registration to avoid dragging
|
||||
cpplib.h in almost everywhere. */
|
||||
|
||||
@@ -881,13 +936,29 @@ c_register_pragma_1 (const char *space,
|
||||
{
|
||||
unsigned id;
|
||||
|
||||
- VEC_safe_push (pragma_handler, heap, registered_pragmas, &handler);
|
||||
- id = VEC_length (pragma_handler, registered_pragmas);
|
||||
- id += PRAGMA_FIRST_EXTERNAL - 1;
|
||||
-
|
||||
- /* The C++ front end allocates 6 bits in cp_token; the C front end
|
||||
- allocates 7 bits in c_token. At present this is sufficient. */
|
||||
- gcc_assert (id < 64);
|
||||
+ if (flag_preprocess_only)
|
||||
+ {
|
||||
+ pragma_ns_name ns_name;
|
||||
+
|
||||
+ if (!allow_expansion)
|
||||
+ return;
|
||||
+
|
||||
+ ns_name.space = space;
|
||||
+ ns_name.name = name;
|
||||
+ VEC_safe_push (pragma_ns_name, heap, registered_pp_pragmas, &ns_name);
|
||||
+ id = VEC_length (pragma_ns_name, registered_pp_pragmas);
|
||||
+ id += PRAGMA_FIRST_EXTERNAL - 1;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ VEC_safe_push (pragma_handler, heap, registered_pragmas, &handler);
|
||||
+ id = VEC_length (pragma_handler, registered_pragmas);
|
||||
+ id += PRAGMA_FIRST_EXTERNAL - 1;
|
||||
+
|
||||
+ /* The C++ front end allocates 6 bits in cp_token; the C front end
|
||||
+ allocates 7 bits in c_token. At present this is sufficient. */
|
||||
+ gcc_assert (id < 64);
|
||||
+ }
|
||||
|
||||
cpp_register_deferred_pragma (parse_in, space, name, id,
|
||||
allow_expansion, false);
|
||||
@@ -921,24 +992,8 @@ c_invoke_pragma_handler (unsigned int id
|
||||
void
|
||||
init_pragma (void)
|
||||
{
|
||||
- if (flag_openmp && !flag_preprocess_only)
|
||||
+ if (flag_openmp)
|
||||
{
|
||||
- struct omp_pragma_def { const char *name; unsigned int id; };
|
||||
- static const struct omp_pragma_def omp_pragmas[] = {
|
||||
- { "atomic", PRAGMA_OMP_ATOMIC },
|
||||
- { "barrier", PRAGMA_OMP_BARRIER },
|
||||
- { "critical", PRAGMA_OMP_CRITICAL },
|
||||
- { "flush", PRAGMA_OMP_FLUSH },
|
||||
- { "for", PRAGMA_OMP_FOR },
|
||||
- { "master", PRAGMA_OMP_MASTER },
|
||||
- { "ordered", PRAGMA_OMP_ORDERED },
|
||||
- { "parallel", PRAGMA_OMP_PARALLEL },
|
||||
- { "section", PRAGMA_OMP_SECTION },
|
||||
- { "sections", PRAGMA_OMP_SECTIONS },
|
||||
- { "single", PRAGMA_OMP_SINGLE },
|
||||
- { "threadprivate", PRAGMA_OMP_THREADPRIVATE }
|
||||
- };
|
||||
-
|
||||
const int n_omp_pragmas = sizeof (omp_pragmas) / sizeof (*omp_pragmas);
|
||||
int i;
|
||||
|
||||
@@ -947,8 +1002,9 @@ init_pragma (void)
|
||||
omp_pragmas[i].id, true, true);
|
||||
}
|
||||
|
||||
- cpp_register_deferred_pragma (parse_in, "GCC", "pch_preprocess",
|
||||
- PRAGMA_GCC_PCH_PREPROCESS, false, false);
|
||||
+ if (!flag_preprocess_only)
|
||||
+ cpp_register_deferred_pragma (parse_in, "GCC", "pch_preprocess",
|
||||
+ PRAGMA_GCC_PCH_PREPROCESS, false, false);
|
||||
|
||||
#ifdef HANDLE_PRAGMA_PACK
|
||||
#ifdef HANDLE_PRAGMA_PACK_WITH_EXPANSION
|
||||
--- gcc/c-opts.c.jj 2008-02-26 22:53:23.000000000 +0100
|
||||
+++ gcc/c-opts.c 2008-02-26 22:54:57.000000000 +0100
|
||||
@@ -1,5 +1,5 @@
|
||||
/* C/ObjC/C++ command line option handling.
|
||||
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
|
||||
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Neil Booth.
|
||||
|
||||
@@ -1239,6 +1239,9 @@ c_common_init (void)
|
||||
if (version_flag)
|
||||
c_common_print_pch_checksum (stderr);
|
||||
|
||||
+ /* Has to wait until now so that cpplib has its hash table. */
|
||||
+ init_pragma ();
|
||||
+
|
||||
if (flag_preprocess_only)
|
||||
{
|
||||
finish_options ();
|
||||
@@ -1246,9 +1249,6 @@ c_common_init (void)
|
||||
return false;
|
||||
}
|
||||
|
||||
- /* Has to wait until now so that cpplib has its hash table. */
|
||||
- init_pragma ();
|
||||
-
|
||||
return true;
|
||||
}
|
||||
|
||||
--- gcc/c-pragma.h.jj 2008-01-26 18:01:16.000000000 +0100
|
||||
+++ gcc/c-pragma.h 2008-02-26 22:54:57.000000000 +0100
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Pragma related interfaces.
|
||||
Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||
- 2007 Free Software Foundation, Inc.
|
||||
+ 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
@@ -124,4 +124,6 @@ extern enum cpp_ttype pragma_lex (tree *
|
||||
extern enum cpp_ttype c_lex_with_flags (tree *, location_t *, unsigned char *,
|
||||
int);
|
||||
|
||||
+extern void c_pp_lookup_pragma (unsigned int, const char **, const char **);
|
||||
+
|
||||
#endif /* GCC_C_PRAGMA_H */
|
||||
--- gcc/config/darwin.h.jj 2008-02-11 14:48:12.000000000 +0100
|
||||
+++ gcc/config/darwin.h 2008-02-26 22:54:57.000000000 +0100
|
||||
@@ -892,8 +892,9 @@ enum machopic_addr_class {
|
||||
|
||||
#define DARWIN_REGISTER_TARGET_PRAGMAS() \
|
||||
do { \
|
||||
- cpp_register_pragma (parse_in, NULL, "mark", \
|
||||
- darwin_pragma_ignore, false); \
|
||||
+ if (!flag_preprocess_only) \
|
||||
+ cpp_register_pragma (parse_in, NULL, "mark", \
|
||||
+ darwin_pragma_ignore, false); \
|
||||
c_register_pragma (0, "options", darwin_pragma_options); \
|
||||
c_register_pragma (0, "segment", darwin_pragma_ignore); \
|
||||
c_register_pragma (0, "unused", darwin_pragma_unused); \
|
||||
--- gcc/testsuite/gcc.dg/gomp/preprocess-1.c.jj 2008-02-26 22:54:57.000000000 +0100
|
||||
+++ gcc/testsuite/gcc.dg/gomp/preprocess-1.c 2008-02-26 22:54:57.000000000 +0100
|
||||
@@ -0,0 +1,16 @@
|
||||
+/* { dg-do preprocess } */
|
||||
+
|
||||
+void foo (void)
|
||||
+{
|
||||
+ int i1, j1, k1;
|
||||
+#define p parallel
|
||||
+#define P(x) private (x##1)
|
||||
+#define S(x) shared (x##1)
|
||||
+#define F(x) firstprivate (x##1)
|
||||
+#pragma omp p P(i) \
|
||||
+ S(j) \
|
||||
+ F(k)
|
||||
+ ;
|
||||
+}
|
||||
+
|
||||
+/* { dg-final { scan-file preprocess-1.i "(^|\n)#pragma omp parallel private \\(i1\\) shared \\(j1\\) firstprivate \\(k1\\)($|\n)" } } */
|
|
@ -1,61 +0,0 @@
|
|||
Build i386.rpm libgomp and libsupc++.a(guard.o) as i486+, pre-i486
|
||||
hardware isn't supported because NPTL doesn't support it anyway.
|
||||
|
||||
--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
|
||||
+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
|
||||
@@ -44,14 +44,14 @@ if test $enable_linux_futex = yes; then
|
||||
;;
|
||||
|
||||
# Note that bare i386 is not included here. We need cmpxchg.
|
||||
- i[456]86-*-linux*)
|
||||
+ i[3456]86-*-linux*)
|
||||
config_path="linux/x86 linux posix"
|
||||
case " ${CC} ${CFLAGS} " in
|
||||
*" -m64 "*)
|
||||
;;
|
||||
*)
|
||||
if test -z "$with_arch"; then
|
||||
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
fi
|
||||
esac
|
||||
;;
|
||||
@@ -63,7 +63,7 @@ if test $enable_linux_futex = yes; then
|
||||
config_path="linux/x86 linux posix"
|
||||
case " ${CC} ${CFLAGS} " in
|
||||
*" -m32 "*)
|
||||
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
|
||||
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
--- libstdc++-v3/libsupc++/guard.cc.jj 2008-03-01 00:58:24.000000000 +0100
|
||||
+++ libstdc++-v3/libsupc++/guard.cc 2008-03-27 14:08:44.000000000 +0100
|
||||
@@ -35,6 +35,27 @@
|
||||
#include <new>
|
||||
#include <ext/atomicity.h>
|
||||
#include <ext/concurrence.h>
|
||||
+#if defined __i386__ && !defined _GLIBCXX_ATOMIC_BUILTINS
|
||||
+# define _GLIBCXX_ATOMIC_BUILTINS 1
|
||||
+# define __sync_val_compare_and_swap(a, b, c) \
|
||||
+ ({ \
|
||||
+ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
|
||||
+ int sltas; \
|
||||
+ __asm __volatile ("lock; cmpxchgl %3, (%1)" \
|
||||
+ : "=a" (sltas) \
|
||||
+ : "r" (a), "0" (b), "r" (c) : "memory"); \
|
||||
+ sltas; \
|
||||
+ })
|
||||
+# define __sync_lock_test_and_set(a, b) \
|
||||
+ ({ \
|
||||
+ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
|
||||
+ int sltas; \
|
||||
+ __asm __volatile ("xchgl (%1), %0" \
|
||||
+ : "=r" (sltas) \
|
||||
+ : "r" (a), "0" (b) : "memory"); \
|
||||
+ sltas; \
|
||||
+ })
|
||||
+#endif
|
||||
#if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
|
||||
&& defined(_GLIBCXX_ATOMIC_BUILTINS) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
|
||||
# include <climits>
|
|
@ -1,538 +0,0 @@
|
|||
2004-11-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config.gcc (ia64*-*-linux*): If native and libelf is installed,
|
||||
use ia64/t-glibc-no-libunwind instead of the other t-*unwind*
|
||||
fragments.
|
||||
* config/ia64/t-glibc-no-libunwind: New file.
|
||||
* config/ia64/change-symver.c: New file.
|
||||
* config/ia64/unwind-ia64.c: If USE_SYMVER_GLOBAL and SHARED,
|
||||
define _Unwind_* to __symverglobal_Unwind_*.
|
||||
(alias): Undefine.
|
||||
(symverglobal): Define. Use it on _Unwind_*.
|
||||
* config/ia64/mkmap-symver-multi.awk: New file.
|
||||
* config/ia64/libgcc-ia64-no-libunwind.ver: New file.
|
||||
|
||||
--- gcc/config.gcc.jj 2004-10-04 08:55:44.000000000 -0400
|
||||
+++ gcc/config.gcc 2004-11-13 05:23:50.000000000 -0500
|
||||
@@ -1185,9 +1185,16 @@ ia64*-*-freebsd*)
|
||||
;;
|
||||
ia64*-*-linux*)
|
||||
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
|
||||
- tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
|
||||
- if test x$with_system_libunwind != xyes ; then
|
||||
- tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
|
||||
+ tmake_file="${tmake_file} ia64/t-ia64"
|
||||
+ if test x${target} = x${host} && test x${target} = x${build} \
|
||||
+ && grep gelf_getverdef /usr/include/gelf.h > /dev/null 2>&1 \
|
||||
+ && test -f /usr/lib/libelf.so; then
|
||||
+ tmake_file="${tmake_file} ia64/t-glibc-no-libunwind"
|
||||
+ else
|
||||
+ tmake_file="${tmake_file} t-libunwind ia64/t-glibc"
|
||||
+ if test x$with_system_libunwind != xyes ; then
|
||||
+ tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
|
||||
+ fi
|
||||
fi
|
||||
target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
|
||||
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
|
||||
--- gcc/config/ia64/t-glibc-no-libunwind.jj 2004-02-18 10:27:36.000000000 -0500
|
||||
+++ gcc/config/ia64/t-glibc-no-libunwind 2004-11-15 09:56:33.000000000 -0500
|
||||
@@ -0,0 +1,30 @@
|
||||
+# Don't use system libunwind library on IA-64 GLIBC based system,
|
||||
+# but make _Unwind_* symbols unversioned, so that created programs
|
||||
+# are usable even when libgcc_s uses libunwind.
|
||||
+LIB2ADDEH += $(srcdir)/config/ia64/fde-glibc.c
|
||||
+SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64-no-libunwind.ver
|
||||
+SHLIB_MKMAP = $(srcdir)/config/ia64/mkmap-symver-multi.awk
|
||||
+
|
||||
+SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
|
||||
+ -Wl,--soname=$(SHLIB_SONAME) \
|
||||
+ -Wl,--version-script=$(SHLIB_MAP) \
|
||||
+ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
|
||||
+ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
|
||||
+ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
|
||||
+ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
|
||||
+ $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
|
||||
+ else true; fi && \
|
||||
+ gcc -O2 -o $(SHLIB_DIR)/$(SHLIB_SONAME).tweak \
|
||||
+ $$(gcc_srcdir)/config/ia64/change-symver.c -lelf && \
|
||||
+ $(SHLIB_DIR)/$(SHLIB_SONAME).tweak $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
|
||||
+ GCC_3.4.2 _GLOBAL_ \
|
||||
+ _Unwind_GetGR _Unwind_RaiseException _Unwind_GetRegionStart _Unwind_SetIP \
|
||||
+ _Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_Resume \
|
||||
+ _Unwind_DeleteException _Unwind_SetGR _Unwind_ForcedUnwind \
|
||||
+ _Unwind_Backtrace _Unwind_FindEnclosingFunction _Unwind_GetCFA \
|
||||
+ _Unwind_Resume_or_Rethrow _Unwind_GetBSP && \
|
||||
+ rm -f $(SHLIB_DIR)/$(SHLIB_SONAME).tweak && \
|
||||
+ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
|
||||
+ $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
|
||||
+
|
||||
+TARGET_LIBGCC2_CFLAGS += -DUSE_SYMVER_GLOBAL
|
||||
--- gcc/config/ia64/change-symver.c.jj 2004-02-18 10:27:36.000000000 -0500
|
||||
+++ gcc/config/ia64/change-symver.c 2004-11-13 05:23:50.000000000 -0500
|
||||
@@ -0,0 +1,211 @@
|
||||
+#define _GNU_SOURCE 1
|
||||
+#define _FILE_OFFSET_BITS 64
|
||||
+#include <endian.h>
|
||||
+#include <errno.h>
|
||||
+#include <error.h>
|
||||
+#include <fcntl.h>
|
||||
+#include <fnmatch.h>
|
||||
+#include <gelf.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+int
|
||||
+compute_veridx (const char *name, Elf *elf, Elf_Data *verd, GElf_Shdr *verd_shdr)
|
||||
+{
|
||||
+ if (strcmp (name, "_GLOBAL_") == 0)
|
||||
+ return 1;
|
||||
+
|
||||
+ int cnt;
|
||||
+ size_t offset = 0;
|
||||
+ for (cnt = verd_shdr->sh_info; --cnt >= 0; )
|
||||
+ {
|
||||
+ GElf_Verdef defmem;
|
||||
+ GElf_Verdef *def;
|
||||
+ GElf_Verdaux auxmem;
|
||||
+ GElf_Verdaux *aux;
|
||||
+ unsigned int auxoffset;
|
||||
+
|
||||
+ /* Get the data at the next offset. */
|
||||
+ def = gelf_getverdef (verd, offset, &defmem);
|
||||
+ if (def == NULL)
|
||||
+ break;
|
||||
+
|
||||
+ auxoffset = offset + def->vd_aux;
|
||||
+ aux = gelf_getverdaux (verd, auxoffset, &auxmem);
|
||||
+ if (aux == NULL)
|
||||
+ break;
|
||||
+
|
||||
+ if (strcmp (name, elf_strptr (elf, verd_shdr->sh_link,
|
||||
+ aux->vda_name)) == 0)
|
||||
+ return def->vd_ndx;
|
||||
+
|
||||
+ /* Find the next offset. */
|
||||
+ offset += def->vd_next;
|
||||
+ }
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main (int argc, char **argv)
|
||||
+{
|
||||
+ if (argc < 4)
|
||||
+ error (1, 0, "Usage: change_symver library from_symver to_symver symbol...\nExample: change_symver libfoo.so FOO_1.0 *global* bar baz");
|
||||
+
|
||||
+ const char *fname = argv[1];
|
||||
+
|
||||
+ /* Open the file. */
|
||||
+ int fd;
|
||||
+ fd = open (fname, O_RDWR);
|
||||
+ if (fd == -1)
|
||||
+ error (1, errno, fname);
|
||||
+
|
||||
+ elf_version (EV_CURRENT);
|
||||
+
|
||||
+ /* Now get the ELF descriptor. */
|
||||
+ Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
|
||||
+ if (elf == NULL || elf_kind (elf) != ELF_K_ELF)
|
||||
+ error (1, 0, "Couldn't open %s: %s", fname, elf_errmsg (-1));
|
||||
+
|
||||
+ size_t shstrndx;
|
||||
+ /* Get the section header string table index. */
|
||||
+ if (elf_getshstrndx (elf, &shstrndx) < 0)
|
||||
+ error (1, 0, "cannot get shstrndx from %s", fname);
|
||||
+
|
||||
+ GElf_Ehdr ehdr_mem;
|
||||
+ GElf_Ehdr *ehdr;
|
||||
+
|
||||
+ /* We need the ELF header in a few places. */
|
||||
+ ehdr = gelf_getehdr (elf, &ehdr_mem);
|
||||
+ if (ehdr == NULL)
|
||||
+ error (1, 0, "couldn't get ELF headers %s: %s", fname, elf_errmsg (-1));
|
||||
+
|
||||
+ Elf_Scn *scn = NULL;
|
||||
+ GElf_Shdr shdr_mem, verd_shdr, ver_shdr, dynsym_shdr;
|
||||
+ Elf_Data *ver = NULL, *verd = NULL, *dynsym = NULL;
|
||||
+
|
||||
+ while ((scn = elf_nextscn (elf, scn)) != NULL)
|
||||
+ {
|
||||
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
|
||||
+
|
||||
+ if (shdr == NULL)
|
||||
+ error (1, 0, "couldn't get shdr from %s", fname);
|
||||
+
|
||||
+ if ((shdr->sh_flags & SHF_ALLOC) != 0)
|
||||
+ {
|
||||
+ const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
|
||||
+ Elf_Data **p;
|
||||
+
|
||||
+ if (strcmp (name, ".gnu.version") == 0)
|
||||
+ {
|
||||
+ p = &ver;
|
||||
+ ver_shdr = *shdr;
|
||||
+ }
|
||||
+ else if (strcmp (name, ".gnu.version_d") == 0)
|
||||
+ {
|
||||
+ p = &verd;
|
||||
+ verd_shdr = *shdr;
|
||||
+ }
|
||||
+ else if (strcmp (name, ".dynsym") == 0)
|
||||
+ {
|
||||
+ p = &dynsym;
|
||||
+ dynsym_shdr = *shdr;
|
||||
+ }
|
||||
+ else
|
||||
+ continue;
|
||||
+
|
||||
+ if (*p != NULL)
|
||||
+ error (1, 0, "Two %s sections in %s", name, fname);
|
||||
+ *p = elf_getdata (scn, NULL);
|
||||
+ if (*p == NULL || elf_getdata (scn, *p) != NULL)
|
||||
+ error (1, 0, "No data or non-contiguous data in %s section in %s",
|
||||
+ name, fname);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (ver == NULL || verd == NULL || dynsym == NULL)
|
||||
+ error (1, 0, "Couldn't find one of the needed sections in %s", fname);
|
||||
+
|
||||
+ int from_idx = compute_veridx (argv[2], elf, verd, &verd_shdr);
|
||||
+ if (from_idx == -1)
|
||||
+ error (1, 0, "Could not find symbol version %s in %s", argv[2], fname);
|
||||
+
|
||||
+ int to_idx = compute_veridx (argv[3], elf, verd, &verd_shdr);
|
||||
+ if (to_idx == -1)
|
||||
+ error (1, 0, "Could not find symbol version %s in %s", argv[3], fname);
|
||||
+
|
||||
+ if (dynsym_shdr.sh_entsize != gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version)
|
||||
+ || dynsym_shdr.sh_size % dynsym_shdr.sh_entsize
|
||||
+ || ver_shdr.sh_entsize != 2
|
||||
+ || (ver_shdr.sh_size & 1)
|
||||
+ || dynsym_shdr.sh_size / dynsym_shdr.sh_entsize != ver_shdr.sh_size / 2)
|
||||
+ error (1, 0, "Unexpected sh_size or sh_entsize in %s", fname);
|
||||
+
|
||||
+ size_t nentries = ver_shdr.sh_size / 2;
|
||||
+ size_t cnt;
|
||||
+ GElf_Versym array[nentries];
|
||||
+ for (cnt = 0; cnt < nentries; ++cnt)
|
||||
+ {
|
||||
+ GElf_Versym vsymmem;
|
||||
+ GElf_Versym *vsym;
|
||||
+
|
||||
+ vsym = gelf_getversym (ver, cnt, &vsymmem);
|
||||
+ if (vsym == NULL)
|
||||
+ error (1, 0, "gelt_getversym failed in %s: %s", fname, elf_errmsg (-1));
|
||||
+
|
||||
+ array[cnt] = *vsym;
|
||||
+ if (*vsym != from_idx)
|
||||
+ continue;
|
||||
+
|
||||
+ GElf_Sym sym_mem;
|
||||
+ GElf_Sym *sym;
|
||||
+ sym = gelf_getsym (dynsym, cnt, &sym_mem);
|
||||
+ if (sym == NULL)
|
||||
+ error (1, 0, "gelt_getsym failed in %s: %s", fname, elf_errmsg (-1));
|
||||
+
|
||||
+ const char *name = elf_strptr (elf, dynsym_shdr.sh_link, sym->st_name);
|
||||
+
|
||||
+ int argn;
|
||||
+ for (argn = 4; argn < argc; ++argn)
|
||||
+ if (fnmatch (argv[argn], name, 0) == 0)
|
||||
+ {
|
||||
+ array[cnt] = to_idx;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (sizeof (array[0]) != 2)
|
||||
+ abort ();
|
||||
+
|
||||
+#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
+ if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
|
||||
+ ;
|
||||
+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
|
||||
+#elif __BYTE_ORDER == __BIG_ENDIAN
|
||||
+ if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
|
||||
+ ;
|
||||
+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
|
||||
+#else
|
||||
+# error Unsupported endianity
|
||||
+#endif
|
||||
+ {
|
||||
+ for (cnt = 0; cnt < nentries; ++cnt)
|
||||
+ array[cnt] = ((array[cnt] & 0xff) << 8) | ((array[cnt] & 0xff00) >> 8);
|
||||
+ }
|
||||
+ else
|
||||
+ error (1, 0, "Unknown EI_DATA %d in %s", ehdr->e_ident[EI_DATA], fname);
|
||||
+
|
||||
+ if (elf_end (elf) != 0)
|
||||
+ error (1, 0, "couldn't close %s: %s", fname, elf_errmsg (-1));
|
||||
+
|
||||
+ if (lseek (fd, ver_shdr.sh_offset, SEEK_SET) != (off_t) ver_shdr.sh_offset)
|
||||
+ error (1, 0, "failed to seek to %zd in %s", (size_t) ver_shdr.sh_offset,
|
||||
+ fname);
|
||||
+
|
||||
+ if (write (fd, array, 2 * nentries) != (ssize_t) (2 * nentries))
|
||||
+ error (1, 0, "failed to write .gnu.version section into %s", fname);
|
||||
+
|
||||
+ close (fd);
|
||||
+ return 0;
|
||||
+}
|
||||
--- gcc/config/ia64/unwind-ia64.c.jj 2004-10-04 08:55:57.000000000 -0400
|
||||
+++ gcc/config/ia64/unwind-ia64.c 2004-11-15 09:07:45.000000000 -0500
|
||||
@@ -51,6 +51,51 @@
|
||||
#define UNW_FLAG_UHANDLER(x) ((x) & 0x0000000200000000L)
|
||||
#define UNW_LENGTH(x) ((x) & 0x00000000ffffffffL)
|
||||
|
||||
+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
|
||||
+extern _Unwind_Reason_Code __symverglobal_Unwind_Backtrace
|
||||
+ (_Unwind_Trace_Fn, void *);
|
||||
+extern void __symverglobal_Unwind_DeleteException
|
||||
+ (struct _Unwind_Exception *);
|
||||
+extern void * __symverglobal_Unwind_FindEnclosingFunction (void *);
|
||||
+extern _Unwind_Reason_Code __symverglobal_Unwind_ForcedUnwind
|
||||
+ (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
|
||||
+extern _Unwind_Word __symverglobal_Unwind_GetCFA
|
||||
+ (struct _Unwind_Context *);
|
||||
+extern _Unwind_Word __symverglobal_Unwind_GetBSP
|
||||
+ (struct _Unwind_Context *);
|
||||
+extern _Unwind_Word __symverglobal_Unwind_GetGR
|
||||
+ (struct _Unwind_Context *, int );
|
||||
+extern _Unwind_Ptr __symverglobal_Unwind_GetIP (struct _Unwind_Context *);
|
||||
+extern void *__symverglobal_Unwind_GetLanguageSpecificData
|
||||
+ (struct _Unwind_Context *);
|
||||
+extern _Unwind_Ptr __symverglobal_Unwind_GetRegionStart
|
||||
+ (struct _Unwind_Context *);
|
||||
+extern _Unwind_Reason_Code __symverglobal_Unwind_RaiseException
|
||||
+ (struct _Unwind_Exception *);
|
||||
+extern void __symverglobal_Unwind_Resume (struct _Unwind_Exception *);
|
||||
+extern _Unwind_Reason_Code __symverglobal_Unwind_Resume_or_Rethrow
|
||||
+ (struct _Unwind_Exception *);
|
||||
+extern void __symverglobal_Unwind_SetGR
|
||||
+ (struct _Unwind_Context *, int, _Unwind_Word);
|
||||
+extern void __symverglobal_Unwind_SetIP
|
||||
+ (struct _Unwind_Context *, _Unwind_Ptr);
|
||||
+#define _Unwind_Backtrace __symverglobal_Unwind_Backtrace
|
||||
+#define _Unwind_DeleteException __symverglobal_Unwind_DeleteException
|
||||
+#define _Unwind_FindEnclosingFunction __symverglobal_Unwind_FindEnclosingFunction
|
||||
+#define _Unwind_ForcedUnwind __symverglobal_Unwind_ForcedUnwind
|
||||
+#define _Unwind_GetBSP __symverglobal_Unwind_GetBSP
|
||||
+#define _Unwind_GetCFA __symverglobal_Unwind_GetCFA
|
||||
+#define _Unwind_GetGR __symverglobal_Unwind_GetGR
|
||||
+#define _Unwind_GetIP __symverglobal_Unwind_GetIP
|
||||
+#define _Unwind_GetLanguageSpecificData __symverglobal_Unwind_GetLanguageSpecificData
|
||||
+#define _Unwind_GetRegionStart __symverglobal_Unwind_GetRegionStart
|
||||
+#define _Unwind_RaiseException __symverglobal_Unwind_RaiseException
|
||||
+#define _Unwind_Resume __symverglobal_Unwind_Resume
|
||||
+#define _Unwind_Resume_or_Rethrow __symverglobal_Unwind_Resume_or_Rethrow
|
||||
+#define _Unwind_SetGR __symverglobal_Unwind_SetGR
|
||||
+#define _Unwind_SetIP __symverglobal_Unwind_SetIP
|
||||
+#endif
|
||||
+
|
||||
enum unw_application_register
|
||||
{
|
||||
UNW_AR_BSP,
|
||||
@@ -2402,4 +2447,44 @@ alias (_Unwind_SetGR);
|
||||
alias (_Unwind_SetIP);
|
||||
#endif
|
||||
|
||||
+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
|
||||
+#undef alias
|
||||
+#define symverglobal(name, version) \
|
||||
+__typeof (__symverglobal##name) __symverlocal##name \
|
||||
+ __attribute__ ((alias ("__symverglobal" #name))); \
|
||||
+__asm__ (".symver __symverglobal" #name"," #name "@@GCC_3.4.2");\
|
||||
+__asm__ (".symver __symverlocal" #name"," #name "@" #version)
|
||||
+
|
||||
+#undef _Unwind_Backtrace
|
||||
+#undef _Unwind_DeleteException
|
||||
+#undef _Unwind_FindEnclosingFunction
|
||||
+#undef _Unwind_ForcedUnwind
|
||||
+#undef _Unwind_GetBSP
|
||||
+#undef _Unwind_GetCFA
|
||||
+#undef _Unwind_GetGR
|
||||
+#undef _Unwind_GetIP
|
||||
+#undef _Unwind_GetLanguageSpecificData
|
||||
+#undef _Unwind_GetRegionStart
|
||||
+#undef _Unwind_RaiseException
|
||||
+#undef _Unwind_Resume
|
||||
+#undef _Unwind_Resume_or_Rethrow
|
||||
+#undef _Unwind_SetGR
|
||||
+#undef _Unwind_SetIP
|
||||
+symverglobal (_Unwind_Backtrace, GCC_3.3);
|
||||
+symverglobal (_Unwind_DeleteException, GCC_3.0);
|
||||
+symverglobal (_Unwind_FindEnclosingFunction, GCC_3.3);
|
||||
+symverglobal (_Unwind_ForcedUnwind, GCC_3.0);
|
||||
+symverglobal (_Unwind_GetBSP, GCC_3.3.2);
|
||||
+symverglobal (_Unwind_GetCFA, GCC_3.3);
|
||||
+symverglobal (_Unwind_GetGR, GCC_3.0);
|
||||
+symverglobal (_Unwind_GetIP, GCC_3.0);
|
||||
+symverglobal (_Unwind_GetLanguageSpecificData, GCC_3.0);
|
||||
+symverglobal (_Unwind_GetRegionStart, GCC_3.0);
|
||||
+symverglobal (_Unwind_RaiseException, GCC_3.0);
|
||||
+symverglobal (_Unwind_Resume, GCC_3.0);
|
||||
+symverglobal (_Unwind_Resume_or_Rethrow, GCC_3.3);
|
||||
+symverglobal (_Unwind_SetGR, GCC_3.0);
|
||||
+symverglobal (_Unwind_SetIP, GCC_3.0);
|
||||
+#endif
|
||||
+
|
||||
#endif
|
||||
--- gcc/config/ia64/mkmap-symver-multi.awk.jj 2004-02-18 10:27:36.000000000 -0500
|
||||
+++ gcc/config/ia64/mkmap-symver-multi.awk 2004-11-15 09:46:50.000000000 -0500
|
||||
@@ -0,0 +1,133 @@
|
||||
+# Generate an ELF symbol version map a-la Solaris and GNU ld.
|
||||
+# Contributed by Richard Henderson <rth@cygnus.com>
|
||||
+#
|
||||
+# 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.
|
||||
+
|
||||
+BEGIN {
|
||||
+ state = "nm";
|
||||
+ sawsymbol = 0;
|
||||
+}
|
||||
+
|
||||
+# Remove comment and blank lines.
|
||||
+/^ *#/ || /^ *$/ {
|
||||
+ next;
|
||||
+}
|
||||
+
|
||||
+# We begin with nm input. Collect the set of symbols that are present
|
||||
+# so that we can not emit them into the final version script -- Solaris
|
||||
+# complains at us if we do.
|
||||
+
|
||||
+state == "nm" && /^%%/ {
|
||||
+ state = "ver";
|
||||
+ next;
|
||||
+}
|
||||
+
|
||||
+state == "nm" && ($1 == "U" || $2 == "U") {
|
||||
+ next;
|
||||
+}
|
||||
+
|
||||
+state == "nm" && NF == 3 {
|
||||
+ if ($3 ~ /^[^@]*@GCC_[0-9.]*$/) {
|
||||
+ def[$3] = 1
|
||||
+ tl=$3
|
||||
+ sub(/^.*@/,"",tl)
|
||||
+ ver[$3] = tl
|
||||
+ } else {
|
||||
+ sub(/@@?GCC_[0-9.]*$/,"",$3)
|
||||
+ def[$3] = 1;
|
||||
+ }
|
||||
+ sawsymbol = 1;
|
||||
+ next;
|
||||
+}
|
||||
+
|
||||
+state == "nm" {
|
||||
+ next;
|
||||
+}
|
||||
+
|
||||
+# Now we process a simplified variant of the Solaris symbol version
|
||||
+# script. We have one symbol per line, no semicolons, simple markers
|
||||
+# for beginning and ending each section, and %inherit markers for
|
||||
+# describing version inheritence. A symbol may appear in more than
|
||||
+# one symbol version, and the last seen takes effect.
|
||||
+
|
||||
+NF == 3 && $1 == "%inherit" {
|
||||
+ inherit[$2] = $3;
|
||||
+ next;
|
||||
+}
|
||||
+
|
||||
+NF == 2 && $2 == "{" {
|
||||
+ libs[$1] = 1;
|
||||
+ thislib = $1;
|
||||
+ next;
|
||||
+}
|
||||
+
|
||||
+$1 == "}" {
|
||||
+ thislib = "";
|
||||
+ next;
|
||||
+}
|
||||
+
|
||||
+{
|
||||
+ ver[$1] = thislib;
|
||||
+ next;
|
||||
+}
|
||||
+
|
||||
+END {
|
||||
+ if (!sawsymbol)
|
||||
+ {
|
||||
+ print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
|
||||
+ exit 1;
|
||||
+ }
|
||||
+ for (l in libs)
|
||||
+ output(l);
|
||||
+}
|
||||
+
|
||||
+function output(lib) {
|
||||
+ if (done[lib])
|
||||
+ return;
|
||||
+ done[lib] = 1;
|
||||
+ if (inherit[lib])
|
||||
+ output(inherit[lib]);
|
||||
+
|
||||
+ empty=1
|
||||
+ for (sym in ver)
|
||||
+ if ((ver[sym] == lib) && (sym in def))
|
||||
+ {
|
||||
+ if (empty)
|
||||
+ {
|
||||
+ printf("%s {\n", lib);
|
||||
+ printf(" global:\n");
|
||||
+ empty = 0;
|
||||
+ }
|
||||
+ symp = sym;
|
||||
+ sub(/@GCC_[0-9.]*$/,"",symp);
|
||||
+ printf("\t%s;\n", symp);
|
||||
+ if (dotsyms)
|
||||
+ printf("\t.%s;\n", symp);
|
||||
+ }
|
||||
+
|
||||
+ if (empty)
|
||||
+ {
|
||||
+ for (l in libs)
|
||||
+ if (inherit[l] == lib)
|
||||
+ inherit[l] = inherit[lib];
|
||||
+ }
|
||||
+ else if (inherit[lib])
|
||||
+ printf("} %s;\n", inherit[lib]);
|
||||
+ else
|
||||
+ printf ("\n local:\n\t*;\n};\n");
|
||||
+}
|
||||
--- gcc/config/ia64/libgcc-ia64-no-libunwind.ver.jj 2004-02-18 10:27:36.000000000 -0500
|
||||
+++ gcc/config/ia64/libgcc-ia64-no-libunwind.ver 2004-11-15 09:19:56.000000000 -0500
|
||||
@@ -0,0 +1,17 @@
|
||||
+GCC_3.4.2 {
|
||||
+ _Unwind_GetGR
|
||||
+ _Unwind_RaiseException
|
||||
+ _Unwind_GetRegionStart
|
||||
+ _Unwind_SetIP
|
||||
+ _Unwind_GetIP
|
||||
+ _Unwind_GetLanguageSpecificData
|
||||
+ _Unwind_Resume
|
||||
+ _Unwind_DeleteException
|
||||
+ _Unwind_SetGR
|
||||
+ _Unwind_ForcedUnwind
|
||||
+ _Unwind_Backtrace
|
||||
+ _Unwind_FindEnclosingFunction
|
||||
+ _Unwind_GetCFA
|
||||
+ _Unwind_Resume_or_Rethrow
|
||||
+ _Unwind_GetBSP
|
||||
+}
|
|
@ -1,17 +0,0 @@
|
|||
2008-01-25 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* lang.c (java_classify_record): Revert 2007-12-20 change.
|
||||
|
||||
--- gcc/java/lang.c 2007-12-27 09:09:49.000000000 +0100
|
||||
+++ gcc/java/lang.c 2008-01-25 17:43:57.000000000 +0100
|
||||
@@ -965,9 +965,7 @@ java_classify_record (tree type)
|
||||
if (! CLASS_P (type))
|
||||
return RECORD_IS_STRUCT;
|
||||
|
||||
- /* ??? GDB does not support DW_TAG_interface_type as of December,
|
||||
- 2007. Re-enable this at a later time. */
|
||||
- if (0 && CLASS_INTERFACE (TYPE_NAME (type)))
|
||||
+ if (CLASS_INTERFACE (TYPE_NAME (type)))
|
||||
return RECORD_IS_INTERFACE;
|
||||
|
||||
return RECORD_IS_CLASS;
|
|
@ -1,44 +0,0 @@
|
|||
--- libjava/configure.ac.jj 2007-12-07 17:55:50.000000000 +0100
|
||||
+++ libjava/configure.ac 2007-12-07 18:36:56.000000000 +0100
|
||||
@@ -82,6 +82,13 @@ AC_ARG_ENABLE(java-maintainer-mode,
|
||||
[allow rebuilding of .class and .h files]))
|
||||
AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes)
|
||||
|
||||
+AC_ARG_ENABLE(libjava-multilib,
|
||||
+ AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib]))
|
||||
+if test "$enable_libjava_multilib" = no; then
|
||||
+ multilib=no
|
||||
+ ac_configure_args="$ac_configure_args --disable-multilib"
|
||||
+fi
|
||||
+
|
||||
# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
|
||||
GCC_NO_EXECUTABLES
|
||||
|
||||
--- libjava/configure.jj 2007-12-07 17:55:50.000000000 +0100
|
||||
+++ libjava/configure 2007-12-07 18:39:58.000000000 +0100
|
||||
@@ -1018,6 +1018,8 @@ Optional Features:
|
||||
--enable-gconf-peer compile GConf native peers for util.preferences
|
||||
--enable-java-maintainer-mode
|
||||
allow rebuilding of .class and .h files
|
||||
+ --enable-libjava-multilib
|
||||
+ build libjava as multilib
|
||||
--disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors
|
||||
--enable-maintainer-mode enable make rules and dependencies not useful
|
||||
@@ -1848,6 +1850,16 @@ else
|
||||
fi
|
||||
|
||||
|
||||
+# Check whether --enable-libjava-multilib was given.
|
||||
+if test "${enable_libjava_multilib+set}" = set; then
|
||||
+ enableval=$enable_libjava_multilib;
|
||||
+fi
|
||||
+
|
||||
+if test "$enable_libjava_multilib" = no; then
|
||||
+ multilib=no
|
||||
+ ac_configure_args="$ac_configure_args --disable-multilib"
|
||||
+fi
|
||||
+
|
||||
# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -1,86 +0,0 @@
|
|||
2005-11-28 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
|
||||
read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
|
||||
instead of doing an extran indirection from frame_pointer_rtx.
|
||||
|
||||
* gcc.dg/20051128-1.c: New test.
|
||||
|
||||
--- gcc/config/rs6000/rs6000.c.jj 2005-11-26 14:38:01.000000000 +0100
|
||||
+++ gcc/config/rs6000/rs6000.c 2005-11-28 20:32:18.000000000 +0100
|
||||
@@ -13166,17 +13166,22 @@ rs6000_return_addr (int count, rtx frame
|
||||
don't try to be too clever here. */
|
||||
if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
|
||||
{
|
||||
+ rtx x;
|
||||
cfun->machine->ra_needs_full_frame = 1;
|
||||
|
||||
- return
|
||||
- gen_rtx_MEM
|
||||
- (Pmode,
|
||||
- memory_address
|
||||
- (Pmode,
|
||||
- plus_constant (copy_to_reg
|
||||
- (gen_rtx_MEM (Pmode,
|
||||
- memory_address (Pmode, frame))),
|
||||
- RETURN_ADDRESS_OFFSET)));
|
||||
+ if (count == 0)
|
||||
+ {
|
||||
+ gcc_assert (frame == frame_pointer_rtx);
|
||||
+ x = arg_pointer_rtx;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ x = memory_address (Pmode, frame);
|
||||
+ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
|
||||
+ }
|
||||
+
|
||||
+ x = plus_constant (x, RETURN_ADDRESS_OFFSET);
|
||||
+ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
|
||||
}
|
||||
|
||||
cfun->machine->ra_need_lr = 1;
|
||||
--- gcc/testsuite/gcc.dg/20051128-1.c.jj 2005-10-10 11:21:41.096999000 +0200
|
||||
+++ gcc/testsuite/gcc.dg/20051128-1.c 2005-11-28 12:30:57.000000000 +0100
|
||||
@@ -0,0 +1,41 @@
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-O2 -fpic" } */
|
||||
+
|
||||
+extern void exit (int);
|
||||
+extern void abort (void);
|
||||
+
|
||||
+int b;
|
||||
+
|
||||
+struct A
|
||||
+{
|
||||
+ void *pad[147];
|
||||
+ void *ra, *h;
|
||||
+ long o;
|
||||
+};
|
||||
+
|
||||
+void
|
||||
+__attribute__((noinline))
|
||||
+foo (struct A *a, void *x)
|
||||
+{
|
||||
+ __builtin_memset (a, 0, sizeof (a));
|
||||
+ if (!b)
|
||||
+ exit (0);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+__attribute__((noinline))
|
||||
+bar (void)
|
||||
+{
|
||||
+ struct A a;
|
||||
+
|
||||
+ __builtin_unwind_init ();
|
||||
+ foo (&a, __builtin_return_address (0));
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ bar ();
|
||||
+ abort ();
|
||||
+ return 0;
|
||||
+}
|
|
@ -1,16 +0,0 @@
|
|||
2006-08-18 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/27898
|
||||
* gcc.dg/pr27898.c: New test.
|
||||
|
||||
--- gcc/testsuite/gcc.dg/pr27898.c.jj 2006-08-18 09:19:33.000000000 +0200
|
||||
+++ gcc/testsuite/gcc.dg/pr27898.c 2006-08-18 09:19:27.000000000 +0200
|
||||
@@ -0,0 +1,8 @@
|
||||
+/* PR c/27898 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "--combine" } */
|
||||
+/* { dg-additional-sources "pr27898.c" } */
|
||||
+
|
||||
+union u { struct { int i; }; };
|
||||
+
|
||||
+extern int foo (union u *);
|
|
@ -1,19 +0,0 @@
|
|||
2007-06-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/32139
|
||||
* gcc.c-torture/compile/20070531-1.c: New test.
|
||||
|
||||
--- gcc/testsuite/gcc.c-torture/compile/20070531-1.c.jj 2007-05-31 13:47:22.000000000 +0200
|
||||
+++ gcc/testsuite/gcc.c-torture/compile/20070531-1.c 2007-06-01 10:57:15.000000000 +0200
|
||||
@@ -0,0 +1,11 @@
|
||||
+/* PR tree-optimization/32139 */
|
||||
+int foo (void);
|
||||
+int bar (void) __attribute__ ((const));
|
||||
+
|
||||
+int
|
||||
+test (int x)
|
||||
+{
|
||||
+ int a = (x == 10000 ? foo : bar) ();
|
||||
+ int b = (x == 10000 ? foo : bar) ();
|
||||
+ return a + b;
|
||||
+}
|
|
@ -1,153 +0,0 @@
|
|||
2007-11-06 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/33763
|
||||
* gcc.dg/pr33763.c: New test.
|
||||
* g++.dg/opt/inline13.C: New test.
|
||||
|
||||
2007-11-06 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
PR tree-optimization/33763
|
||||
* tree-inline.c (expand_call_inline): Silently ignore always_inline
|
||||
attribute for redefined extern inline functions.
|
||||
|
||||
--- gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100
|
||||
+++ gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100
|
||||
@@ -2582,6 +2582,12 @@ expand_call_inline (basic_block bb, tree
|
||||
if (!cgraph_inline_p (cg_edge, &reason))
|
||||
{
|
||||
if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
|
||||
+ /* For extern inline functions that get redefined we always
|
||||
+ silently ignored alway_inline flag. Better behaviour would
|
||||
+ be to be able to keep both bodies and use extern inline body
|
||||
+ for inlining, but we can't do that because frontends overwrite
|
||||
+ the body. */
|
||||
+ && !cg_edge->callee->local.redefined_extern_inline
|
||||
/* Avoid warnings during early inline pass. */
|
||||
&& (!flag_unit_at_a_time || cgraph_global_info_ready))
|
||||
{
|
||||
--- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100
|
||||
+++ gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100
|
||||
@@ -0,0 +1,60 @@
|
||||
+/* PR tree-optimization/33763 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O2" } */
|
||||
+
|
||||
+typedef struct
|
||||
+{
|
||||
+ void *a;
|
||||
+ void *b;
|
||||
+} T;
|
||||
+extern void *foo (const char *, const char *);
|
||||
+extern void *bar (void *, const char *, T);
|
||||
+extern int baz (const char *, int);
|
||||
+
|
||||
+extern inline __attribute__ ((always_inline, gnu_inline)) int
|
||||
+baz (const char *x, int y)
|
||||
+{
|
||||
+ return 2;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+baz (const char *x, int y)
|
||||
+{
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+int xa, xb;
|
||||
+
|
||||
+static void *
|
||||
+inl (const char *x, const char *y)
|
||||
+{
|
||||
+ T t = { &xa, &xb };
|
||||
+ int *f = (int *) __builtin_malloc (sizeof (int));
|
||||
+ const char *z;
|
||||
+ int o = 0;
|
||||
+ void *r = 0;
|
||||
+
|
||||
+ for (z = y; *z; z++)
|
||||
+ {
|
||||
+ if (*z == 'r')
|
||||
+ o |= 1;
|
||||
+ if (*z == 'w')
|
||||
+ o |= 2;
|
||||
+ }
|
||||
+ if (o == 1)
|
||||
+ *f = baz (x, 0);
|
||||
+ if (o == 2)
|
||||
+ *f = baz (x, 1);
|
||||
+ if (o == 3)
|
||||
+ *f = baz (x, 2);
|
||||
+
|
||||
+ if (o && *f > 0)
|
||||
+ r = bar (f, "w", t);
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
+void *
|
||||
+foo (const char *x, const char *y)
|
||||
+{
|
||||
+ return inl (x, y);
|
||||
+}
|
||||
--- gcc/testsuite/g++.dg/opt/inline13.C.jj 2007-11-06 16:20:20.000000000 +0100
|
||||
+++ gcc/testsuite/g++.dg/opt/inline13.C 2007-11-06 16:21:30.000000000 +0100
|
||||
@@ -0,0 +1,60 @@
|
||||
+// PR tree-optimization/33763
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-O2" }
|
||||
+
|
||||
+typedef struct
|
||||
+{
|
||||
+ void *a;
|
||||
+ void *b;
|
||||
+} T;
|
||||
+extern void *foo (const char *, const char *);
|
||||
+extern void *bar (void *, const char *, T);
|
||||
+extern int baz (const char *, int);
|
||||
+
|
||||
+extern inline __attribute__ ((always_inline, gnu_inline)) int
|
||||
+baz (const char *x, int y)
|
||||
+{
|
||||
+ return 2;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+baz (const char *x, int y)
|
||||
+{
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+int xa, xb;
|
||||
+
|
||||
+static void *
|
||||
+inl (const char *x, const char *y)
|
||||
+{
|
||||
+ T t = { &xa, &xb };
|
||||
+ int *f = (int *) __builtin_malloc (sizeof (int));
|
||||
+ const char *z;
|
||||
+ int o = 0;
|
||||
+ void *r = 0;
|
||||
+
|
||||
+ for (z = y; *z; z++)
|
||||
+ {
|
||||
+ if (*z == 'r')
|
||||
+ o |= 1;
|
||||
+ if (*z == 'w')
|
||||
+ o |= 2;
|
||||
+ }
|
||||
+ if (o == 1)
|
||||
+ *f = baz (x, 0);
|
||||
+ if (o == 2)
|
||||
+ *f = baz (x, 1);
|
||||
+ if (o == 3)
|
||||
+ *f = baz (x, 2);
|
||||
+
|
||||
+ if (o && *f > 0)
|
||||
+ r = bar (f, "w", t);
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
+void *
|
||||
+foo (const char *x, const char *y)
|
||||
+{
|
||||
+ return inl (x, y);
|
||||
+}
|
|
@ -1,56 +0,0 @@
|
|||
2008-03-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/35440
|
||||
* c-pretty-print.c (pp_c_initializer_list): Handle CONSTRUCTOR
|
||||
for all types.
|
||||
|
||||
* gcc.dg/pr35440.c: New test.
|
||||
|
||||
--- gcc/c-pretty-print.c.jj 2008-02-11 14:48:12.000000000 +0100
|
||||
+++ gcc/c-pretty-print.c 2008-03-19 14:50:09.000000000 +0100
|
||||
@@ -1173,6 +1173,12 @@ pp_c_initializer_list (c_pretty_printer
|
||||
tree type = TREE_TYPE (e);
|
||||
const enum tree_code code = TREE_CODE (type);
|
||||
|
||||
+ if (TREE_CODE (e) == CONSTRUCTOR)
|
||||
+ {
|
||||
+ pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
switch (code)
|
||||
{
|
||||
case RECORD_TYPE:
|
||||
@@ -1207,16 +1213,12 @@ pp_c_initializer_list (c_pretty_printer
|
||||
case VECTOR_TYPE:
|
||||
if (TREE_CODE (e) == VECTOR_CST)
|
||||
pp_c_expression_list (pp, TREE_VECTOR_CST_ELTS (e));
|
||||
- else if (TREE_CODE (e) == CONSTRUCTOR)
|
||||
- pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
|
||||
else
|
||||
break;
|
||||
return;
|
||||
|
||||
case COMPLEX_TYPE:
|
||||
- if (TREE_CODE (e) == CONSTRUCTOR)
|
||||
- pp_c_constructor_elts (pp, CONSTRUCTOR_ELTS (e));
|
||||
- else if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR)
|
||||
+ if (TREE_CODE (e) == COMPLEX_CST || TREE_CODE (e) == COMPLEX_EXPR)
|
||||
{
|
||||
const bool cst = TREE_CODE (e) == COMPLEX_CST;
|
||||
pp_expression (pp, cst ? TREE_REALPART (e) : TREE_OPERAND (e, 0));
|
||||
--- gcc/testsuite/gcc.dg/pr35440.c.jj 2008-03-19 15:57:13.000000000 +0100
|
||||
+++ gcc/testsuite/gcc.dg/pr35440.c 2008-03-19 15:47:35.000000000 +0100
|
||||
@@ -0,0 +1,12 @@
|
||||
+/* PR c/35440 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-std=gnu99" } */
|
||||
+
|
||||
+struct A {};
|
||||
+struct B { int i; char j[2]; };
|
||||
+
|
||||
+void foo (void)
|
||||
+{
|
||||
+ (struct A){}(); /* { dg-error "called object" } */
|
||||
+ (struct B){ .i = 2, .j[1] = 1 }(); /* { dg-error "called object" } */
|
||||
+}
|
|
@ -1,114 +0,0 @@
|
|||
2008-04-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c/35751
|
||||
* c-decl.c (finish_decl): If extern or static var has variable
|
||||
size, set TREE_TYPE (decl) to error_mark_node.
|
||||
|
||||
* decl.c (layout_var_decl): If extern or static var has variable
|
||||
size, set TREE_TYPE (decl) to error_mark_node.
|
||||
|
||||
* gcc.dg/gomp/pr35751.c: New test.
|
||||
* g++.dg/gomp/pr35751.C: New test.
|
||||
|
||||
--- gcc/c-decl.c.jj 2008-04-03 09:41:42.000000000 +0200
|
||||
+++ gcc/c-decl.c 2008-04-03 18:20:52.000000000 +0200
|
||||
@@ -3481,7 +3481,10 @@ finish_decl (tree decl, tree init, tree
|
||||
if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST)
|
||||
constant_expression_warning (DECL_SIZE (decl));
|
||||
else
|
||||
- error ("storage size of %q+D isn%'t constant", decl);
|
||||
+ {
|
||||
+ error ("storage size of %q+D isn%'t constant", decl);
|
||||
+ TREE_TYPE (decl) = error_mark_node;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (TREE_USED (type))
|
||||
--- gcc/cp/decl.c.jj 2008-03-31 23:54:40.000000000 +0200
|
||||
+++ gcc/cp/decl.c 2008-04-03 18:30:19.000000000 +0200
|
||||
@@ -4442,7 +4442,10 @@ layout_var_decl (tree decl)
|
||||
if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST)
|
||||
constant_expression_warning (DECL_SIZE (decl));
|
||||
else
|
||||
- error ("storage size of %qD isn't constant", decl);
|
||||
+ {
|
||||
+ error ("storage size of %qD isn't constant", decl);
|
||||
+ TREE_TYPE (decl) = error_mark_node;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
--- gcc/testsuite/gcc.dg/gomp/pr35751.c.jj 2008-04-03 18:26:12.000000000 +0200
|
||||
+++ gcc/testsuite/gcc.dg/gomp/pr35751.c 2008-04-03 18:25:51.000000000 +0200
|
||||
@@ -0,0 +1,34 @@
|
||||
+/* PR c/35751 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-fopenmp" } */
|
||||
+
|
||||
+void
|
||||
+foo (int i)
|
||||
+{
|
||||
+ extern int a[i]; /* { dg-error "must have no linkage|storage size of" } */
|
||||
+ static int b[i]; /* { dg-error "storage size of" } */
|
||||
+
|
||||
+#pragma omp parallel
|
||||
+ {
|
||||
+ a[0] = 0;
|
||||
+ b[0] = 0;
|
||||
+ }
|
||||
+
|
||||
+#pragma omp parallel shared (a, b)
|
||||
+ {
|
||||
+ a[0] = 0;
|
||||
+ b[0] = 0;
|
||||
+ }
|
||||
+
|
||||
+#pragma omp parallel private (a, b)
|
||||
+ {
|
||||
+ a[0] = 0;
|
||||
+ b[0] = 0;
|
||||
+ }
|
||||
+
|
||||
+#pragma omp parallel firstprivate (a, b)
|
||||
+ {
|
||||
+ a[0] = 0;
|
||||
+ b[0] = 0;
|
||||
+ }
|
||||
+}
|
||||
--- gcc/testsuite/g++.dg/gomp/pr35751.C.jj 2008-04-03 18:32:13.000000000 +0200
|
||||
+++ gcc/testsuite/g++.dg/gomp/pr35751.C 2008-04-03 18:32:32.000000000 +0200
|
||||
@@ -0,0 +1,34 @@
|
||||
+// PR c/35751
|
||||
+// { dg-do compile }
|
||||
+// { dg-options "-fopenmp" }
|
||||
+
|
||||
+void
|
||||
+foo (int i)
|
||||
+{
|
||||
+ extern int a[i]; // { dg-error "storage size of" }
|
||||
+ static int b[i]; // { dg-error "storage size of" }
|
||||
+
|
||||
+#pragma omp parallel
|
||||
+ {
|
||||
+ a[0] = 0;
|
||||
+ b[0] = 0;
|
||||
+ }
|
||||
+
|
||||
+#pragma omp parallel shared (a, b)
|
||||
+ {
|
||||
+ a[0] = 0;
|
||||
+ b[0] = 0;
|
||||
+ }
|
||||
+
|
||||
+#pragma omp parallel private (a, b)
|
||||
+ {
|
||||
+ a[0] = 0;
|
||||
+ b[0] = 0;
|
||||
+ }
|
||||
+
|
||||
+#pragma omp parallel firstprivate (a, b)
|
||||
+ {
|
||||
+ a[0] = 0;
|
||||
+ b[0] = 0;
|
||||
+ }
|
||||
+}
|
|
@ -1,89 +0,0 @@
|
|||
2008-04-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR pch/13675
|
||||
* files.c (struct _cpp_file): Remove pch field.
|
||||
(pch_open_file): Don't set file->pch, just file->pchname.
|
||||
(should_stack_file): After pfile->cb.read_pch call
|
||||
free pchname and clear pchname, don't close file->fd.
|
||||
Test file->pchname instead of file->pch. Don't close fd after cb.
|
||||
(_cpp_stack_include): Test file->pchname instead of file->pch.
|
||||
|
||||
* c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
|
||||
|
||||
--- libcpp/files.c.jj 2008-02-18 23:50:17.000000000 +0100
|
||||
+++ libcpp/files.c 2008-03-31 15:59:01.000000000 +0200
|
||||
@@ -106,9 +106,6 @@ struct _cpp_file
|
||||
|
||||
/* If BUFFER above contains the true contents of the file. */
|
||||
bool buffer_valid;
|
||||
-
|
||||
- /* File is a PCH (on return from find_include_file). */
|
||||
- bool pch;
|
||||
};
|
||||
|
||||
/* A singly-linked list for all searches for a given file name, with
|
||||
@@ -322,9 +319,7 @@ pch_open_file (cpp_reader *pfile, _cpp_f
|
||||
}
|
||||
closedir (pchdir);
|
||||
}
|
||||
- if (valid)
|
||||
- file->pch = true;
|
||||
- else
|
||||
+ if (!valid)
|
||||
*invalid_pch = true;
|
||||
}
|
||||
|
||||
@@ -703,11 +698,12 @@ should_stack_file (cpp_reader *pfile, _c
|
||||
return false;
|
||||
|
||||
/* Handle PCH files immediately; don't stack them. */
|
||||
- if (file->pch)
|
||||
+ if (file->pchname)
|
||||
{
|
||||
pfile->cb.read_pch (pfile, file->pchname, file->fd, file->path);
|
||||
- close (file->fd);
|
||||
file->fd = -1;
|
||||
+ free ((void *) file->pchname);
|
||||
+ file->pchname = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -916,7 +912,7 @@ _cpp_stack_include (cpp_reader *pfile, c
|
||||
complicates LAST_SOURCE_LINE_LOCATION. This does not apply if we
|
||||
found a PCH file (in which case linemap_add is not called) or we
|
||||
were included from the command-line. */
|
||||
- if (! file->pch && file->err_no == 0 && type != IT_CMDLINE)
|
||||
+ if (file->pchname == NULL && file->err_no == 0 && type != IT_CMDLINE)
|
||||
pfile->line_table->highest_location--;
|
||||
|
||||
return _cpp_stack_file (pfile, file, type == IT_IMPORT);
|
||||
--- gcc/c-pch.c.jj 2008-02-18 23:46:08.000000000 +0100
|
||||
+++ gcc/c-pch.c 2008-03-31 15:56:00.000000000 +0200
|
||||
@@ -372,6 +372,7 @@ c_common_read_pch (cpp_reader *pfile, co
|
||||
if (f == NULL)
|
||||
{
|
||||
cpp_errno (pfile, CPP_DL_ERROR, "calling fdopen");
|
||||
+ close (fd);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -380,6 +381,7 @@ c_common_read_pch (cpp_reader *pfile, co
|
||||
if (fread (&h, sizeof (h), 1, f) != 1)
|
||||
{
|
||||
cpp_errno (pfile, CPP_DL_ERROR, "reading");
|
||||
+ fclose (f);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -425,7 +427,10 @@ c_common_read_pch (cpp_reader *pfile, co
|
||||
gt_pch_restore (f);
|
||||
|
||||
if (cpp_read_state (pfile, name, f, smd) != 0)
|
||||
- return;
|
||||
+ {
|
||||
+ fclose (f);
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
fclose (f);
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
2007-10-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* Makefile.am (libgcj_tools_la_LIBADD): Add.
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
--- libjava/Makefile.am.jj 2007-03-17 09:20:30.000000000 +0100
|
||||
+++ libjava/Makefile.am 2007-10-16 15:45:14.000000000 +0200
|
||||
@@ -262,6 +262,8 @@ EXTRA_libgcj_la_SOURCES = java/lang/Obje
|
||||
|
||||
libgcj_tools_la_SOURCES = classpath/tools/tools.zip
|
||||
libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes -fsource-filename=$(here)/classpath/tools/all-classes.lst
|
||||
+## See jv_convert_LDADD.
|
||||
+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
|
||||
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
|
||||
-version-info `grep -v '^\#' $(srcdir)/libtool-version`
|
||||
libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec
|
||||
--- libjava/Makefile.in.jj 2007-07-04 21:11:11.000000000 +0200
|
||||
+++ libjava/Makefile.in 2007-10-16 15:56:07.000000000 +0200
|
||||
@@ -146,7 +146,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt
|
||||
am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1)
|
||||
lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS)
|
||||
@XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir)
|
||||
-libgcj_tools_la_LIBADD =
|
||||
am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo
|
||||
libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS)
|
||||
am__DEPENDENCIES_1 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \
|
||||
@@ -894,6 +893,7 @@ libgcj_la_LINK = $(LIBLINK)
|
||||
EXTRA_libgcj_la_SOURCES = java/lang/Object.java
|
||||
libgcj_tools_la_SOURCES = classpath/tools/tools.zip
|
||||
libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes -fsource-filename=$(here)/classpath/tools/all-classes.lst
|
||||
+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
|
||||
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
|
||||
-version-info `grep -v '^\#' $(srcdir)/libtool-version`
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
2007-10-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* doc/Makefile.am (POD2MAN): Set date from cp-tools.texinfo
|
||||
timestamp rather than from current date.
|
||||
* doc/Makefile.in: Regenerated.
|
||||
|
||||
--- libjava/classpath/doc/Makefile.am.jj 2007-12-07 17:55:00.000000000 +0100
|
||||
+++ libjava/classpath/doc/Makefile.am 2007-12-07 18:55:28.000000000 +0100
|
||||
@@ -30,7 +30,7 @@ TOOLS_MANFILES = \
|
||||
gserialver.1 \
|
||||
gtnameserv.1
|
||||
|
||||
-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
|
||||
+POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
|
||||
TEXI2POD = perl $(srcdir)/texi2pod.pl
|
||||
STAMP = echo timestamp >
|
||||
|
||||
--- libjava/classpath/doc/Makefile.in.jj 2007-12-07 17:55:00.000000000 +0100
|
||||
+++ libjava/classpath/doc/Makefile.in 2007-12-07 18:55:43.000000000 +0100
|
||||
@@ -357,7 +357,7 @@ TOOLS_MANFILES = \
|
||||
gserialver.1 \
|
||||
gtnameserv.1
|
||||
|
||||
-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
|
||||
+POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
|
||||
TEXI2POD = perl $(srcdir)/texi2pod.pl
|
||||
STAMP = echo timestamp >
|
||||
@GENINSRC_FALSE@STAMP_GENINSRC =
|
|
@ -1,30 +0,0 @@
|
|||
* Fortran would have searched for arm-angstrom-gnueabi-gfortran but would have used
|
||||
used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler from our cross
|
||||
directory.
|
||||
|
||||
diff --git a/libgfortran/configure b/libgfortran/configure
|
||||
index f7d86fb..d0966ec 100755
|
||||
--- a/libgfortran/configure
|
||||
+++ b/libgfortran/configure
|
||||
@@ -4475,6 +4475,6 @@ exec 5>>./config.log
|
||||
|
||||
# We need gfortran to compile parts of the library
|
||||
#AC_PROG_FC(gfortran)
|
||||
-FC="$GFORTRAN"
|
||||
+#FC="$GFORTRAN"
|
||||
ac_ext=${FC_SRCEXT-f}
|
||||
ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
|
||||
\ No newline at end of file
|
||||
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
|
||||
index 4661306..9f83e55 100644
|
||||
--- a/libgfortran/configure.ac
|
||||
+++ b/libgfortran/configure.ac
|
||||
@@ -140,7 +140,7 @@ AC_SUBST(enable_static)
|
||||
|
||||
# We need gfortran to compile parts of the library
|
||||
#AC_PROG_FC(gfortran)
|
||||
-FC="$GFORTRAN"
|
||||
+#FC="$GFORTRAN"
|
||||
AC_PROG_FC(gfortran)
|
||||
|
||||
# extra LD Flags which are required for targets
|
|
@ -1,48 +0,0 @@
|
|||
f951 (fortran) links to MPFR and GMP of our staging area but when executing
|
||||
the command the libs can not be found. Use rpath like all the other apps in
|
||||
our staging bin/ directory.
|
||||
|
||||
Patch the configure to avoid the regeneration...
|
||||
|
||||
Index: gcc-4.2.2/configure
|
||||
===================================================================
|
||||
--- gcc-4.2.2.orig/configure 2008-01-15 23:23:41.000000000 +0100
|
||||
+++ gcc-4.2.2/configure 2008-01-15 23:25:20.000000000 +0100
|
||||
@@ -2278,14 +2278,14 @@
|
||||
|
||||
|
||||
if test "x$with_mpfr" != x; then
|
||||
- gmplibs="-L$with_mpfr/lib $gmplibs"
|
||||
+ gmplibs="-static -L$with_mpfr/lib $gmplibs"
|
||||
gmpinc="-I$with_mpfr/include"
|
||||
fi
|
||||
if test "x$with_mpfr_include" != x; then
|
||||
gmpinc="-I$with_mpfr_include"
|
||||
fi
|
||||
if test "x$with_mpfr_lib" != x; then
|
||||
- gmplibs="-L$with_mpfr_lib $gmplibs"
|
||||
+ gmplibs="-static -L$with_mpfr_lib $gmplibs"
|
||||
fi
|
||||
|
||||
# Specify a location for gmp
|
||||
Index: gcc-4.2.2/configure.in
|
||||
===================================================================
|
||||
--- gcc-4.2.2.orig/configure.in 2008-01-15 23:23:41.000000000 +0100
|
||||
+++ gcc-4.2.2/configure.in 2008-01-15 23:24:36.000000000 +0100
|
||||
@@ -1066,14 +1066,14 @@
|
||||
AC_ARG_WITH(mpfr_lib, [ --with-mpfr-lib=PATH Specify the directory for the installed MPFR library])
|
||||
|
||||
if test "x$with_mpfr" != x; then
|
||||
- gmplibs="-L$with_mpfr/lib $gmplibs"
|
||||
+ gmplibs="-static -L$with_mpfr/lib $gmplibs"
|
||||
gmpinc="-I$with_mpfr/include"
|
||||
fi
|
||||
if test "x$with_mpfr_include" != x; then
|
||||
gmpinc="-I$with_mpfr_include"
|
||||
fi
|
||||
if test "x$with_mpfr_lib" != x; then
|
||||
- gmplibs="-L$with_mpfr_lib $gmplibs"
|
||||
+ gmplibs="-static -L$with_mpfr_lib $gmplibs"
|
||||
fi
|
||||
|
||||
# Specify a location for gmp
|
|
@ -1,319 +0,0 @@
|
|||
Adds support for Freescale Power architecture e300c2 and e300c3 cores.
|
||||
http://www.bitshrine.org/gpp/tc-fsl-x86lnx-e300c3-nptl-4.0.2-2.src.rpm
|
||||
|
||||
Leon Woestenberg <leonw@mailcan.com>
|
||||
|
||||
---
|
||||
gcc/config.gcc | 2
|
||||
gcc/config/rs6000/e300c2c3.md | 189 ++++++++++++++++++++++++++++++++++++++++++
|
||||
gcc/config/rs6000/rs6000.c | 24 +++++
|
||||
gcc/config/rs6000/rs6000.h | 4
|
||||
gcc/config/rs6000/rs6000.md | 3
|
||||
5 files changed, 220 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-4.3.1/gcc/config/rs6000/e300c2c3.md
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ gcc-4.3.1/gcc/config/rs6000/e300c2c3.md 2008-08-23 16:51:33.000000000 -0700
|
||||
@@ -0,0 +1,189 @@
|
||||
+;; Pipeline description for Motorola PowerPC e300c3 core.
|
||||
+;; Copyright (C) 2003 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_automaton "ppce300c3_most,ppce300c3_long,ppce300c3_retire")
|
||||
+(define_cpu_unit "ppce300c3_decode_0,ppce300c3_decode_1" "ppce300c3_most")
|
||||
+
|
||||
+;; We don't simulate general issue queue (GIC). If we have SU insn
|
||||
+;; and then SU1 insn, they can not be issued on the same cycle
|
||||
+;; (although SU1 insn and then SU insn can be issued) because the SU
|
||||
+;; insn will go to SU1 from GIC0 entry. Fortunately, the first cycle
|
||||
+;; multipass insn scheduling will find the situation and issue the SU1
|
||||
+;; insn and then the SU insn.
|
||||
+(define_cpu_unit "ppce300c3_issue_0,ppce300c3_issue_1" "ppce300c3_most")
|
||||
+
|
||||
+;; We could describe completion buffers slots in combination with the
|
||||
+;; retirement units and the order of completion but the result
|
||||
+;; automaton would behave in the same way because we can not describe
|
||||
+;; real latency time with taking in order completion into account.
|
||||
+;; Actually we could define the real latency time by querying reserved
|
||||
+;; automaton units but the current scheduler uses latency time before
|
||||
+;; issuing insns and making any reservations.
|
||||
+;;
|
||||
+;; So our description is aimed to achieve a insn schedule in which the
|
||||
+;; insns would not wait in the completion buffer.
|
||||
+(define_cpu_unit "ppce300c3_retire_0,ppce300c3_retire_1" "ppce300c3_retire")
|
||||
+
|
||||
+;; Branch unit:
|
||||
+(define_cpu_unit "ppce300c3_bu" "ppce300c3_most")
|
||||
+
|
||||
+;; IU:
|
||||
+(define_cpu_unit "ppce300c3_iu0_stage0,ppce300c3_iu1_stage0" "ppce300c3_most")
|
||||
+
|
||||
+;; IU: This used to describe non-pipelined division.
|
||||
+(define_cpu_unit "ppce300c3_mu_div" "ppce300c3_long")
|
||||
+
|
||||
+;; SRU:
|
||||
+(define_cpu_unit "ppce300c3_sru_stage0" "ppce300c3_most")
|
||||
+
|
||||
+;; Here we simplified LSU unit description not describing the stages.
|
||||
+(define_cpu_unit "ppce300c3_lsu" "ppce300c3_most")
|
||||
+
|
||||
+;; FPU:
|
||||
+(define_cpu_unit "ppce300c3_fpu" "ppce300c3_most")
|
||||
+
|
||||
+;; The following units are used to make automata deterministic
|
||||
+(define_cpu_unit "present_ppce300c3_decode_0" "ppce300c3_most")
|
||||
+(define_cpu_unit "present_ppce300c3_issue_0" "ppce300c3_most")
|
||||
+(define_cpu_unit "present_ppce300c3_retire_0" "ppce300c3_retire")
|
||||
+(define_cpu_unit "present_ppce300c3_iu0_stage0" "ppce300c3_most")
|
||||
+
|
||||
+;; The following sets to make automata deterministic when option ndfa is used.
|
||||
+(presence_set "present_ppce300c3_decode_0" "ppce300c3_decode_0")
|
||||
+(presence_set "present_ppce300c3_issue_0" "ppce300c3_issue_0")
|
||||
+(presence_set "present_ppce300c3_retire_0" "ppce300c3_retire_0")
|
||||
+(presence_set "present_ppce300c3_iu0_stage0" "ppce300c3_iu0_stage0")
|
||||
+
|
||||
+;; Some useful abbreviations.
|
||||
+(define_reservation "ppce300c3_decode"
|
||||
+ "ppce300c3_decode_0|ppce300c3_decode_1+present_ppce300c3_decode_0")
|
||||
+(define_reservation "ppce300c3_issue"
|
||||
+ "ppce300c3_issue_0|ppce300c3_issue_1+present_ppce300c3_issue_0")
|
||||
+(define_reservation "ppce300c3_retire"
|
||||
+ "ppce300c3_retire_0|ppce300c3_retire_1+present_ppce300c3_retire_0")
|
||||
+(define_reservation "ppce300c3_iu_stage0"
|
||||
+ "ppce300c3_iu0_stage0|ppce300c3_iu1_stage0+present_ppce300c3_iu0_stage0")
|
||||
+
|
||||
+;; Compares can be executed either one of the IU or SRU
|
||||
+(define_insn_reservation "ppce300c3_cmp" 1
|
||||
+ (and (eq_attr "type" "cmp,compare,delayed_compare,fast_compare")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+(ppce300c3_iu_stage0|ppce300c3_sru_stage0) \
|
||||
+ +ppce300c3_retire")
|
||||
+
|
||||
+;; Other one cycle IU insns
|
||||
+(define_insn_reservation "ppce300c3_iu" 1
|
||||
+ (and (eq_attr "type" "integer,insert_word")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0+ppce300c3_retire")
|
||||
+
|
||||
+;; Branch. Actually this latency time is not used by the scheduler.
|
||||
+(define_insn_reservation "ppce300c3_branch" 1
|
||||
+ (and (eq_attr "type" "jmpreg,branch")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_bu,ppce300c3_retire")
|
||||
+
|
||||
+;; Multiply is non-pipelined but can be executed in any IU
|
||||
+(define_insn_reservation "ppce300c3_multiply" 2
|
||||
+ (and (eq_attr "type" "imul,imul2,imul3,imul_compare")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0, \
|
||||
+ ppce300c3_iu_stage0+ppce300c3_retire")
|
||||
+
|
||||
+;; Divide. We use the average latency time here. We omit reserving a
|
||||
+;; retire unit because of the result automata will be huge.
|
||||
+(define_insn_reservation "ppce300c3_divide" 20
|
||||
+ (and (eq_attr "type" "idiv")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0+ppce300c3_mu_div,\
|
||||
+ ppce300c3_mu_div*19")
|
||||
+
|
||||
+;; CR logical
|
||||
+(define_insn_reservation "ppce300c3_cr_logical" 1
|
||||
+ (and (eq_attr "type" "cr_logical,delayed_cr")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
|
||||
+
|
||||
+;; Mfcr
|
||||
+(define_insn_reservation "ppce300c3_mfcr" 1
|
||||
+ (and (eq_attr "type" "mfcr")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
|
||||
+
|
||||
+;; Mtcrf
|
||||
+(define_insn_reservation "ppce300c3_mtcrf" 1
|
||||
+ (and (eq_attr "type" "mtcr")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
|
||||
+
|
||||
+;; Mtjmpr
|
||||
+(define_insn_reservation "ppce300c3_mtjmpr" 1
|
||||
+ (and (eq_attr "type" "mtjmpr,mfjmpr")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
|
||||
+
|
||||
+;; Float point instructions
|
||||
+(define_insn_reservation "ppce300c3_fpcompare" 3
|
||||
+ (and (eq_attr "type" "fpcompare")
|
||||
+ (eq_attr "cpu" "ppce300c3"))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,nothing,ppce300c3_retire")
|
||||
+
|
||||
+(define_insn_reservation "ppce300c3_fp" 3
|
||||
+ (and (eq_attr "type" "fp")
|
||||
+ (eq_attr "cpu" "ppce300c3"))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,nothing,ppce300c3_retire")
|
||||
+
|
||||
+(define_insn_reservation "ppce300c3_dmul" 4
|
||||
+ (and (eq_attr "type" "dmul")
|
||||
+ (eq_attr "cpu" "ppce300c3"))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu,nothing,ppce300c3_retire")
|
||||
+
|
||||
+; Divides are not pipelined
|
||||
+(define_insn_reservation "ppce300c3_sdiv" 18
|
||||
+ (and (eq_attr "type" "sdiv")
|
||||
+ (eq_attr "cpu" "ppce300c3"))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu*17")
|
||||
+
|
||||
+(define_insn_reservation "ppce300c3_ddiv" 33
|
||||
+ (and (eq_attr "type" "ddiv")
|
||||
+ (eq_attr "cpu" "ppce300c3"))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu*32")
|
||||
+
|
||||
+;; Loads
|
||||
+(define_insn_reservation "ppce300c3_load" 2
|
||||
+ (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
|
||||
+
|
||||
+(define_insn_reservation "ppce300c3_fpload" 2
|
||||
+ (and (eq_attr "type" "fpload,fpload_ux,fpload_u")
|
||||
+ (eq_attr "cpu" "ppce300c3"))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
|
||||
+
|
||||
+;; Stores.
|
||||
+(define_insn_reservation "ppce300c3_store" 2
|
||||
+ (and (eq_attr "type" "store,store_ux,store_u")
|
||||
+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
|
||||
+
|
||||
+(define_insn_reservation "ppce300c3_fpstore" 2
|
||||
+ (and (eq_attr "type" "fpstore,fpstore_ux,fpstore_u")
|
||||
+ (eq_attr "cpu" "ppce300c3"))
|
||||
+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
|
||||
Index: gcc-4.3.1/gcc/config/rs6000/rs6000.c
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/gcc/config/rs6000/rs6000.c 2008-08-23 16:49:39.000000000 -0700
|
||||
+++ gcc-4.3.1/gcc/config/rs6000/rs6000.c 2008-08-23 16:54:25.000000000 -0700
|
||||
@@ -669,6 +669,21 @@ struct processor_costs ppc8540_cost = {
|
||||
1, /* prefetch streams /*/
|
||||
};
|
||||
|
||||
+/* Instruction costs on E300C2 and E300C3 cores. */
|
||||
+static const
|
||||
+struct processor_costs ppce300c2c3_cost = {
|
||||
+ COSTS_N_INSNS (4), /* mulsi */
|
||||
+ COSTS_N_INSNS (4), /* mulsi_const */
|
||||
+ COSTS_N_INSNS (4), /* mulsi_const9 */
|
||||
+ COSTS_N_INSNS (4), /* muldi */
|
||||
+ COSTS_N_INSNS (19), /* divsi */
|
||||
+ COSTS_N_INSNS (19), /* divdi */
|
||||
+ COSTS_N_INSNS (3), /* fp */
|
||||
+ COSTS_N_INSNS (4), /* dmul */
|
||||
+ COSTS_N_INSNS (18), /* sdiv */
|
||||
+ COSTS_N_INSNS (33), /* ddiv */
|
||||
+};
|
||||
+
|
||||
/* Instruction costs on POWER4 and POWER5 processors. */
|
||||
static const
|
||||
struct processor_costs power4_cost = {
|
||||
@@ -1420,6 +1435,8 @@ rs6000_override_options (const char *def
|
||||
{"8540", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_STRICT_ALIGN},
|
||||
/* 8548 has a dummy entry for now. */
|
||||
{"8548", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_STRICT_ALIGN},
|
||||
+ {"e300c2", PROCESSOR_PPCE300C2, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
|
||||
+ {"e300c3", PROCESSOR_PPCE300C3, POWERPC_BASE_MASK},
|
||||
{"860", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
|
||||
{"970", PROCESSOR_POWER4,
|
||||
POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64},
|
||||
@@ -1845,6 +1862,11 @@ rs6000_override_options (const char *def
|
||||
rs6000_cost = &ppc8540_cost;
|
||||
break;
|
||||
|
||||
+ case PROCESSOR_PPCE300C2:
|
||||
+ case PROCESSOR_PPCE300C3:
|
||||
+ rs6000_cost = &ppce300c2c3_cost;
|
||||
+ break;
|
||||
+
|
||||
case PROCESSOR_POWER4:
|
||||
case PROCESSOR_POWER5:
|
||||
rs6000_cost = &power4_cost;
|
||||
@@ -18606,6 +18628,8 @@ rs6000_issue_rate (void)
|
||||
case CPU_PPC7400:
|
||||
case CPU_PPC8540:
|
||||
case CPU_CELL:
|
||||
+ case CPU_PPCE300C2:
|
||||
+ case CPU_PPCE300C3:
|
||||
return 2;
|
||||
case CPU_RIOS2:
|
||||
case CPU_PPC604:
|
||||
Index: gcc-4.3.1/gcc/config/rs6000/rs6000.h
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/gcc/config/rs6000/rs6000.h 2008-01-26 09:18:35.000000000 -0800
|
||||
+++ gcc-4.3.1/gcc/config/rs6000/rs6000.h 2008-08-23 16:55:30.000000000 -0700
|
||||
@@ -117,6 +117,8 @@
|
||||
%{mcpu=G5: -mpower4 -maltivec} \
|
||||
%{mcpu=8540: -me500} \
|
||||
%{mcpu=8548: -me500} \
|
||||
+%{mcpu=e300c2: -mppc} \
|
||||
+%{mcpu=e300c3: -mppc -mpmr} \
|
||||
%{maltivec: -maltivec} \
|
||||
-many"
|
||||
|
||||
@@ -262,6 +264,8 @@ enum processor_type
|
||||
PROCESSOR_PPC7400,
|
||||
PROCESSOR_PPC7450,
|
||||
PROCESSOR_PPC8540,
|
||||
+ PROCESSOR_PPCE300C2,
|
||||
+ PROCESSOR_PPCE300C3,
|
||||
PROCESSOR_POWER4,
|
||||
PROCESSOR_POWER5,
|
||||
PROCESSOR_POWER6,
|
||||
Index: gcc-4.3.1/gcc/config/rs6000/rs6000.md
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/gcc/config/rs6000/rs6000.md 2008-02-13 16:14:45.000000000 -0800
|
||||
+++ gcc-4.3.1/gcc/config/rs6000/rs6000.md 2008-08-23 16:57:29.000000000 -0700
|
||||
@@ -133,7 +133,7 @@
|
||||
;; Processor type -- this attribute must exactly match the processor_type
|
||||
;; enumeration in rs6000.h.
|
||||
|
||||
-(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,power4,power5,power6,cell"
|
||||
+(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,power4,power5,power6,cell,ppce300c2,ppce300c3"
|
||||
(const (symbol_ref "rs6000_cpu_attr")))
|
||||
|
||||
|
||||
@@ -166,6 +166,7 @@
|
||||
(include "7xx.md")
|
||||
(include "7450.md")
|
||||
(include "8540.md")
|
||||
+(include "e300c2c3.md")
|
||||
(include "power4.md")
|
||||
(include "power5.md")
|
||||
(include "power6.md")
|
||||
Index: gcc-4.3.1/gcc/config.gcc
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/gcc/config.gcc 2008-08-23 16:49:43.000000000 -0700
|
||||
+++ gcc-4.3.1/gcc/config.gcc 2008-08-23 17:03:55.000000000 -0700
|
||||
@@ -3144,7 +3144,7 @@ case "${target}" in
|
||||
| rios | rios1 | rios2 | rsc | rsc1 | rs64a \
|
||||
| 401 | 403 | 405 | 405fp | 440 | 440fp | 505 \
|
||||
| 601 | 602 | 603 | 603e | ec603e | 604 \
|
||||
- | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
|
||||
+ | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 | e300c[23] \
|
||||
| 854[08] | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
|
||||
# OK
|
||||
;;
|
|
@ -1,23 +0,0 @@
|
|||
Change gcc build : Enable m4 and m4-nofpu (needed for kernel) for sh4-gnu-linux
|
||||
|
||||
Signed-off-by: Carl Shaw <carl.shaw@st.com>
|
||||
|
||||
Index: gcc/gcc/config.gcc
|
||||
===================================================================
|
||||
--- gcc.orig/gcc/config.gcc 2008-07-18 10:37:54.000000000 +0100
|
||||
+++ gcc/gcc/config.gcc 2008-07-18 11:00:42.000000000 +0100
|
||||
@@ -2097,11 +2097,12 @@
|
||||
if test x${sh_multilibs} = x ; then
|
||||
case ${target} in
|
||||
sh64-superh-linux* | \
|
||||
- sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
|
||||
sh64* | sh5*) sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;;
|
||||
- sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
|
||||
+ sh-superh-* | \
|
||||
+ sh4-*-linux*) sh_multilibs=m4,m4-nofpu ;;
|
||||
sh*-*-linux*) sh_multilibs=m1,m3e,m4 ;;
|
||||
sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
|
||||
+ sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
|
||||
*) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
|
||||
esac
|
||||
if test x$with_fp = xno; then
|
|
@ -1,31 +0,0 @@
|
|||
---
|
||||
configure | 2 +-
|
||||
configure.ac | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-4.3.1/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/configure.ac 2008-07-21 12:29:18.000000000 -0700
|
||||
+++ gcc-4.3.1/configure.ac 2008-07-21 12:29:35.000000000 -0700
|
||||
@@ -2352,7 +2352,7 @@ fi
|
||||
# for target_alias and gcc doesn't manage it consistently.
|
||||
target_configargs="--cache-file=./config.cache ${target_configargs}"
|
||||
|
||||
-FLAGS_FOR_TARGET=
|
||||
+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
|
||||
case " $target_configdirs " in
|
||||
*" newlib "*)
|
||||
case " $target_configargs " in
|
||||
Index: gcc-4.3.1/configure
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/configure 2008-07-21 12:29:48.000000000 -0700
|
||||
+++ gcc-4.3.1/configure 2008-07-21 12:29:59.000000000 -0700
|
||||
@@ -5841,7 +5841,7 @@ fi
|
||||
# for target_alias and gcc doesn't manage it consistently.
|
||||
target_configargs="--cache-file=./config.cache ${target_configargs}"
|
||||
|
||||
-FLAGS_FOR_TARGET=
|
||||
+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
|
||||
case " $target_configdirs " in
|
||||
*" newlib "*)
|
||||
case " $target_configargs " in
|
File diff suppressed because it is too large
Load Diff
|
@ -1,25 +0,0 @@
|
|||
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35964
|
||||
Index: gcc-4.3.0/gcc/regrename.c
|
||||
===================================================================
|
||||
--- gcc-4.3.0.orig/gcc/regrename.c 2008-05-28 08:31:15.000000000 -0700
|
||||
+++ gcc-4.3.0/gcc/regrename.c 2008-05-28 08:34:00.000000000 -0700
|
||||
@@ -782,6 +782,10 @@
|
||||
|| (predicated && recog_data.operand_type[i] == OP_OUT))
|
||||
recog_data.operand_type[i] = OP_INOUT;
|
||||
}
|
||||
+ /* Unshare dup_loc RTL */
|
||||
+ for (i = 0; i < recog_data.n_dups; i++)
|
||||
+ *recog_data.dup_loc[i] = copy_rtx(*recog_data.dup_loc[i]);
|
||||
+
|
||||
|
||||
/* Step 1: Close chains for which we have overlapping reads. */
|
||||
for (i = 0; i < n_ops; i++)
|
||||
@@ -813,7 +817,7 @@
|
||||
OP_IN, 0);
|
||||
|
||||
for (i = 0; i < recog_data.n_dups; i++)
|
||||
- *recog_data.dup_loc[i] = copy_rtx (old_dups[i]);
|
||||
+ *recog_data.dup_loc[i] = old_dups[i];
|
||||
for (i = 0; i < n_ops; i++)
|
||||
*recog_data.operand_loc[i] = old_operands[i];
|
||||
if (recog_data.n_dups)
|
|
@ -1,279 +0,0 @@
|
|||
Index: gcc-4.3.2/Makefile.def
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/Makefile.def 2008-08-28 18:21:19.000000000 -0700
|
||||
+++ gcc-4.3.2/Makefile.def 2008-08-28 18:21:41.000000000 -0700
|
||||
@@ -207,6 +207,7 @@
|
||||
flags_to_pass = { flag= BISON ; };
|
||||
flags_to_pass = { flag= CC_FOR_BUILD ; };
|
||||
flags_to_pass = { flag= CFLAGS_FOR_BUILD ; };
|
||||
+flags_to_pass = { flag= CPPFLAGS_FOR_BUILD ; };
|
||||
flags_to_pass = { flag= CXX_FOR_BUILD ; };
|
||||
flags_to_pass = { flag= EXPECT ; };
|
||||
flags_to_pass = { flag= FLEX ; };
|
||||
Index: gcc-4.3.2/gcc/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/gcc/Makefile.in 2008-08-28 18:21:20.000000000 -0700
|
||||
+++ gcc-4.3.2/gcc/Makefile.in 2008-08-28 18:21:41.000000000 -0700
|
||||
@@ -673,7 +673,7 @@
|
||||
|
||||
# Native linker and preprocessor flags. For x-fragment overrides.
|
||||
BUILD_LDFLAGS=@BUILD_LDFLAGS@
|
||||
-BUILD_CPPFLAGS=$(ALL_CPPFLAGS)
|
||||
+BUILD_CPPFLAGS=$(INCLUDES) @BUILD_CPPFLAGS@ $(X_CPPFLAGS)
|
||||
|
||||
# Actual name to use when installing a native compiler.
|
||||
GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
|
||||
Index: gcc-4.3.2/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/gcc/configure.ac 2008-08-28 18:21:20.000000000 -0700
|
||||
+++ gcc-4.3.2/gcc/configure.ac 2008-08-28 18:21:41.000000000 -0700
|
||||
@@ -1775,10 +1775,11 @@
|
||||
# Also, we cannot run fixincludes or fix-header.
|
||||
|
||||
# These are the normal (build=host) settings:
|
||||
-CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
|
||||
-BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
|
||||
-BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
|
||||
-STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
|
||||
+CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
|
||||
+BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
|
||||
+BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
|
||||
+BUILD_CPPFLAGS='$(ALL_CPPFLAGS)' AC_SUBST(BUILD_CPPFLAGS)
|
||||
+STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
|
||||
|
||||
# Possibly disable fixproto, on a per-target basis.
|
||||
case ${use_fixproto} in
|
||||
@@ -1796,6 +1797,7 @@
|
||||
then
|
||||
BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
|
||||
+ BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
|
||||
|
||||
if test "x$TARGET_SYSTEM_ROOT" = x; then
|
||||
if test "x$STMP_FIXPROTO" != x; then
|
||||
Index: gcc-4.3.2/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/Makefile.in 2008-08-28 18:21:20.000000000 -0700
|
||||
+++ gcc-4.3.2/Makefile.in 2008-08-28 18:21:41.000000000 -0700
|
||||
@@ -272,6 +272,7 @@
|
||||
AS_FOR_BUILD = @AS_FOR_BUILD@
|
||||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||
+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
|
||||
CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
|
||||
CXX_FOR_BUILD = @CXX_FOR_BUILD@
|
||||
DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
|
||||
@@ -502,6 +503,7 @@
|
||||
"BISON=$(BISON)" \
|
||||
"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
|
||||
"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
|
||||
+ "CPPFLAGS_FOR_BUILD=$(CPPFLAGS_FOR_BUILD)" \
|
||||
"CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
|
||||
"EXPECT=$(EXPECT)" \
|
||||
"FLEX=$(FLEX)" \
|
||||
Index: gcc-4.3.2/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/gcc/configure 2008-08-28 18:21:20.000000000 -0700
|
||||
+++ gcc-4.3.2/gcc/configure 2008-08-28 18:21:50.000000000 -0700
|
||||
@@ -458,7 +458,7 @@
|
||||
# include <unistd.h>
|
||||
#endif"
|
||||
|
||||
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn cxx_compat_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT host_cc_for_libada CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN ac_ct_AR STRIP ac_ct_STRIP lt_ECHO objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs target_cpu_default GMPLIBS GMPINC LIBOBJS LTLIBOBJS'
|
||||
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP loose_warn cxx_compat_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT host_cc_for_libada CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS BUILD_CPPFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN ac_ct_AR STRIP ac_ct_STRIP lt_ECHO objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs target_cpu_default GMPLIBS GMPINC LIBOBJS LTLIBOBJS'
|
||||
ac_subst_files='language_hooks'
|
||||
|
||||
# Initialize some variables set by options.
|
||||
@@ -13471,6 +13471,7 @@
|
||||
CC_FOR_BUILD='$(CC)'
|
||||
BUILD_CFLAGS='$(ALL_CFLAGS)'
|
||||
BUILD_LDFLAGS='$(LDFLAGS)'
|
||||
+BUILD_CPPFLAGS='$(ALL_CPPFLAGS)'
|
||||
STMP_FIXINC=stmp-fixinc
|
||||
|
||||
# Possibly disable fixproto, on a per-target basis.
|
||||
@@ -13489,6 +13490,7 @@
|
||||
then
|
||||
BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
|
||||
+ BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
|
||||
|
||||
if test "x$TARGET_SYSTEM_ROOT" = x; then
|
||||
if test "x$STMP_FIXPROTO" != x; then
|
||||
@@ -14067,13 +14069,13 @@
|
||||
else
|
||||
lt_cv_nm_interface="BSD nm"
|
||||
echo "int some_variable = 0;" > conftest.$ac_ext
|
||||
- (eval echo "\"\$as_me:14070: $ac_compile\"" >&5)
|
||||
+ (eval echo "\"\$as_me:14072: $ac_compile\"" >&5)
|
||||
(eval "$ac_compile" 2>conftest.err)
|
||||
cat conftest.err >&5
|
||||
- (eval echo "\"\$as_me:14073: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
|
||||
+ (eval echo "\"\$as_me:14075: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
|
||||
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
|
||||
cat conftest.err >&5
|
||||
- (eval echo "\"\$as_me:14076: output\"" >&5)
|
||||
+ (eval echo "\"\$as_me:14078: output\"" >&5)
|
||||
cat conftest.out >&5
|
||||
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
|
||||
lt_cv_nm_interface="MS dumpbin"
|
||||
@@ -15128,7 +15130,7 @@
|
||||
;;
|
||||
*-*-irix6*)
|
||||
# Find out which ABI we are using.
|
||||
- echo '#line 15131 "configure"' > conftest.$ac_ext
|
||||
+ echo '#line 15133 "configure"' > conftest.$ac_ext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
(eval $ac_compile) 2>&5
|
||||
ac_status=$?
|
||||
@@ -15748,11 +15750,11 @@
|
||||
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
- (eval echo "\"\$as_me:15751: $lt_compile\"" >&5)
|
||||
+ (eval echo "\"\$as_me:15753: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
- echo "$as_me:15755: \$? = $ac_status" >&5
|
||||
+ echo "$as_me:15757: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings other than the usual output.
|
||||
@@ -16070,11 +16072,11 @@
|
||||
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
- (eval echo "\"\$as_me:16073: $lt_compile\"" >&5)
|
||||
+ (eval echo "\"\$as_me:16075: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
- echo "$as_me:16077: \$? = $ac_status" >&5
|
||||
+ echo "$as_me:16079: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings other than the usual output.
|
||||
@@ -16175,11 +16177,11 @@
|
||||
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
- (eval echo "\"\$as_me:16178: $lt_compile\"" >&5)
|
||||
+ (eval echo "\"\$as_me:16180: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>out/conftest.err)
|
||||
ac_status=$?
|
||||
cat out/conftest.err >&5
|
||||
- echo "$as_me:16182: \$? = $ac_status" >&5
|
||||
+ echo "$as_me:16184: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s out/conftest2.$ac_objext
|
||||
then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
@@ -16230,11 +16232,11 @@
|
||||
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
- (eval echo "\"\$as_me:16233: $lt_compile\"" >&5)
|
||||
+ (eval echo "\"\$as_me:16235: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>out/conftest.err)
|
||||
ac_status=$?
|
||||
cat out/conftest.err >&5
|
||||
- echo "$as_me:16237: \$? = $ac_status" >&5
|
||||
+ echo "$as_me:16239: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s out/conftest2.$ac_objext
|
||||
then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
@@ -19027,7 +19029,7 @@
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 19030 "configure"
|
||||
+#line 19032 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@@ -19127,7 +19129,7 @@
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
-#line 19130 "configure"
|
||||
+#line 19132 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@@ -23938,6 +23940,7 @@
|
||||
s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
|
||||
s,@BUILD_CFLAGS@,$BUILD_CFLAGS,;t t
|
||||
s,@BUILD_LDFLAGS@,$BUILD_LDFLAGS,;t t
|
||||
+s,@BUILD_CPPFLAGS@,$BUILD_CPPFLAGS,;t t
|
||||
s,@STMP_FIXINC@,$STMP_FIXINC,;t t
|
||||
s,@STMP_FIXPROTO@,$STMP_FIXPROTO,;t t
|
||||
s,@collect2@,$collect2,;t t
|
||||
Index: gcc-4.3.2/Makefile.tpl
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/Makefile.tpl 2008-08-28 18:21:20.000000000 -0700
|
||||
+++ gcc-4.3.2/Makefile.tpl 2008-08-28 18:21:41.000000000 -0700
|
||||
@@ -275,6 +275,7 @@
|
||||
AS_FOR_BUILD = @AS_FOR_BUILD@
|
||||
CC_FOR_BUILD = @CC_FOR_BUILD@
|
||||
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
|
||||
+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
|
||||
CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
|
||||
CXX_FOR_BUILD = @CXX_FOR_BUILD@
|
||||
DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
|
||||
Index: gcc-4.3.2/configure
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/configure 2008-08-28 18:21:20.000000000 -0700
|
||||
+++ gcc-4.3.2/configure 2008-08-28 18:21:41.000000000 -0700
|
||||
@@ -272,7 +272,7 @@
|
||||
PACKAGE_BUGREPORT=
|
||||
|
||||
ac_unique_file="move-if-change"
|
||||
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_noncanonical host_noncanonical target_noncanonical host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN LN_S TOPLEVEL_CONFIGURE_ARGUMENTS build_libsubdir build_subdir host_subdir target_subdir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE do_compare gmplibs gmpinc stage1_languages SYSROOT_CFLAGS_FOR_TARGET DEBUG_PREFIX_CFLAGS_FOR_TARGET CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET RPATH_ENVVAR tooldir build_tooldir CONFIGURE_GDB_TK GDB_TK INSTALL_GDB_TK build_configargs build_configdirs host_configargs configdirs target_configargs AR_FOR_BUILD AS_FOR_BUILD CC_FOR_BUILD CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CXX_FOR_BUILD DLLTOOL_FOR_BUILD GCJ_FOR_BUILD GFORTRAN_FOR_BUILD LDFLAGS_FOR_BUILD LD_FOR_BUILD NM_FOR_BUILD RANLIB_FOR_BUILD WINDMC_FOR_BUILD WINDRES_FOR_BUILD config_shell YACC BISON M4 LEX FLEX MAKEINFO EXPECT RUNTEST AR AS DLLTOOL LD LIPO NM RANLIB STRIP WINDRES WINDMC OBJCOPY OBJDUMP CC_FOR_TARGET CXX_FOR_TARGET GCC_FOR_TARGET GCJ_FOR_TARGET GFORTRAN_FOR_TARGET AR_FOR_TARGET AS_FOR_TARGET DLLTOOL_FOR_TARGET LD_FOR_TARGET LIPO_FOR_TARGET NM_FOR_TARGET OBJDUMP_FOR_TARGET RANLIB_FOR_TARGET STRIP_FOR_TARGET WINDRES_FOR_TARGET WINDMC_FOR_TARGET RAW_CXX_FOR_TARGET FLAGS_FOR_TARGET COMPILER_AS_FOR_TARGET COMPILER_LD_FOR_TARGET COMPILER_NM_FOR_TARGET MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT stage1_cflags stage1_checking stage2_werror_flag datarootdir docdir pdfdir htmldir LIBOBJS LTLIBOBJS'
|
||||
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_noncanonical host_noncanonical target_noncanonical host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN LN_S TOPLEVEL_CONFIGURE_ARGUMENTS build_libsubdir build_subdir host_subdir target_subdir CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE do_compare gmplibs gmpinc stage1_languages SYSROOT_CFLAGS_FOR_TARGET DEBUG_PREFIX_CFLAGS_FOR_TARGET CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET RPATH_ENVVAR tooldir build_tooldir CONFIGURE_GDB_TK GDB_TK INSTALL_GDB_TK build_configargs build_configdirs host_configargs configdirs target_configargs AR_FOR_BUILD AS_FOR_BUILD CC_FOR_BUILD CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CXX_FOR_BUILD DLLTOOL_FOR_BUILD GCJ_FOR_BUILD GFORTRAN_FOR_BUILD LDFLAGS_FOR_BUILD LD_FOR_BUILD NM_FOR_BUILD RANLIB_FOR_BUILD WINDMC_FOR_BUILD WINDRES_FOR_BUILD config_shell YACC BISON M4 LEX FLEX MAKEINFO EXPECT RUNTEST AR AS DLLTOOL LD LIPO NM RANLIB STRIP WINDRES WINDMC OBJCOPY OBJDUMP CC_FOR_TARGET CXX_FOR_TARGET GCC_FOR_TARGET GCJ_FOR_TARGET GFORTRAN_FOR_TARGET AR_FOR_TARGET AS_FOR_TARGET DLLTOOL_FOR_TARGET LD_FOR_TARGET LIPO_FOR_TARGET NM_FOR_TARGET OBJDUMP_FOR_TARGET RANLIB_FOR_TARGET STRIP_FOR_TARGET WINDRES_FOR_TARGET WINDMC_FOR_TARGET RAW_CXX_FOR_TARGET FLAGS_FOR_TARGET COMPILER_AS_FOR_TARGET COMPILER_LD_FOR_TARGET COMPILER_NM_FOR_TARGET MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT stage1_cflags stage1_checking stage2_werror_flag datarootdir docdir pdfdir htmldir LIBOBJS LTLIBOBJS'
|
||||
ac_subst_files='serialization_dependencies host_makefile_frag target_makefile_frag alphaieee_frag ospace_frag'
|
||||
|
||||
# Initialize some variables set by options.
|
||||
@@ -5914,6 +5914,7 @@
|
||||
# our build compiler if desired.
|
||||
if test x"${build}" = x"${host}" ; then
|
||||
CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
|
||||
+ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
|
||||
CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
|
||||
LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
|
||||
fi
|
||||
@@ -5991,6 +5992,7 @@
|
||||
|
||||
|
||||
|
||||
+
|
||||
# Generate default definitions for YACC, M4, LEX and other programs that run
|
||||
# on the build machine. These are used if the Makefile can't locate these
|
||||
# programs in objdir.
|
||||
@@ -12874,6 +12876,7 @@
|
||||
s,@AS_FOR_BUILD@,$AS_FOR_BUILD,;t t
|
||||
s,@CC_FOR_BUILD@,$CC_FOR_BUILD,;t t
|
||||
s,@CFLAGS_FOR_BUILD@,$CFLAGS_FOR_BUILD,;t t
|
||||
+s,@CPPFLAGS_FOR_BUILD@,$CPPFLAGS_FOR_BUILD,;t t
|
||||
s,@CXXFLAGS_FOR_BUILD@,$CXXFLAGS_FOR_BUILD,;t t
|
||||
s,@CXX_FOR_BUILD@,$CXX_FOR_BUILD,;t t
|
||||
s,@DLLTOOL_FOR_BUILD@,$DLLTOOL_FOR_BUILD,;t t
|
||||
Index: gcc-4.3.2/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4.3.2.orig/configure.ac 2008-08-28 18:21:20.000000000 -0700
|
||||
+++ gcc-4.3.2/configure.ac 2008-08-28 18:21:41.000000000 -0700
|
||||
@@ -2425,6 +2425,7 @@
|
||||
# our build compiler if desired.
|
||||
if test x"${build}" = x"${host}" ; then
|
||||
CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
|
||||
+ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
|
||||
CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
|
||||
LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
|
||||
fi
|
||||
@@ -2489,6 +2490,7 @@
|
||||
AC_SUBST(AS_FOR_BUILD)
|
||||
AC_SUBST(CC_FOR_BUILD)
|
||||
AC_SUBST(CFLAGS_FOR_BUILD)
|
||||
+AC_SUBST(CPPFLAGS_FOR_BUILD)
|
||||
AC_SUBST(CXXFLAGS_FOR_BUILD)
|
||||
AC_SUBST(CXX_FOR_BUILD)
|
||||
AC_SUBST(DLLTOOL_FOR_BUILD)
|
|
@ -1,265 +0,0 @@
|
|||
--- foo/gcc/config/arm/arm.c 2008/06/11 10:51:34 136660
|
||||
+++ foo/gcc/config/arm/arm.c 2008/06/11 10:52:55 136661
|
||||
@@ -14830,124 +14830,190 @@
|
||||
{
|
||||
unsigned int i, fcode = ARM_BUILTIN_NEON_BASE;
|
||||
|
||||
+ tree neon_intQI_type_node;
|
||||
+ tree neon_intHI_type_node;
|
||||
+ tree neon_polyQI_type_node;
|
||||
+ tree neon_polyHI_type_node;
|
||||
+ tree neon_intSI_type_node;
|
||||
+ tree neon_intDI_type_node;
|
||||
+ tree neon_float_type_node;
|
||||
+
|
||||
+ tree intQI_pointer_node;
|
||||
+ tree intHI_pointer_node;
|
||||
+ tree intSI_pointer_node;
|
||||
+ tree intDI_pointer_node;
|
||||
+ tree float_pointer_node;
|
||||
+
|
||||
+ tree const_intQI_node;
|
||||
+ tree const_intHI_node;
|
||||
+ tree const_intSI_node;
|
||||
+ tree const_intDI_node;
|
||||
+ tree const_float_node;
|
||||
+
|
||||
+ tree const_intQI_pointer_node;
|
||||
+ tree const_intHI_pointer_node;
|
||||
+ tree const_intSI_pointer_node;
|
||||
+ tree const_intDI_pointer_node;
|
||||
+ tree const_float_pointer_node;
|
||||
+
|
||||
+ tree V8QI_type_node;
|
||||
+ tree V4HI_type_node;
|
||||
+ tree V2SI_type_node;
|
||||
+ tree V2SF_type_node;
|
||||
+ tree V16QI_type_node;
|
||||
+ tree V8HI_type_node;
|
||||
+ tree V4SI_type_node;
|
||||
+ tree V4SF_type_node;
|
||||
+ tree V2DI_type_node;
|
||||
+
|
||||
+ tree intUQI_type_node;
|
||||
+ tree intUHI_type_node;
|
||||
+ tree intUSI_type_node;
|
||||
+ tree intUDI_type_node;
|
||||
+
|
||||
+ tree intEI_type_node;
|
||||
+ tree intOI_type_node;
|
||||
+ tree intCI_type_node;
|
||||
+ tree intXI_type_node;
|
||||
+
|
||||
+ tree V8QI_pointer_node;
|
||||
+ tree V4HI_pointer_node;
|
||||
+ tree V2SI_pointer_node;
|
||||
+ tree V2SF_pointer_node;
|
||||
+ tree V16QI_pointer_node;
|
||||
+ tree V8HI_pointer_node;
|
||||
+ tree V4SI_pointer_node;
|
||||
+ tree V4SF_pointer_node;
|
||||
+ tree V2DI_pointer_node;
|
||||
+
|
||||
+ tree void_ftype_pv8qi_v8qi_v8qi;
|
||||
+ tree void_ftype_pv4hi_v4hi_v4hi;
|
||||
+ tree void_ftype_pv2si_v2si_v2si;
|
||||
+ tree void_ftype_pv2sf_v2sf_v2sf;
|
||||
+ tree void_ftype_pdi_di_di;
|
||||
+ tree void_ftype_pv16qi_v16qi_v16qi;
|
||||
+ tree void_ftype_pv8hi_v8hi_v8hi;
|
||||
+ tree void_ftype_pv4si_v4si_v4si;
|
||||
+ tree void_ftype_pv4sf_v4sf_v4sf;
|
||||
+ tree void_ftype_pv2di_v2di_v2di;
|
||||
+
|
||||
+ tree reinterp_ftype_dreg[5][5];
|
||||
+ tree reinterp_ftype_qreg[5][5];
|
||||
+ tree dreg_types[5], qreg_types[5];
|
||||
+
|
||||
/* Create distinguished type nodes for NEON vector element types,
|
||||
and pointers to values of such types, so we can detect them later. */
|
||||
- tree neon_intQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode));
|
||||
- tree neon_intHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode));
|
||||
- tree neon_polyQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode));
|
||||
- tree neon_polyHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode));
|
||||
- tree neon_intSI_type_node = make_signed_type (GET_MODE_PRECISION (SImode));
|
||||
- tree neon_intDI_type_node = make_signed_type (GET_MODE_PRECISION (DImode));
|
||||
- tree neon_float_type_node = make_node (REAL_TYPE);
|
||||
-
|
||||
- tree intQI_pointer_node = build_pointer_type (neon_intQI_type_node);
|
||||
- tree intHI_pointer_node = build_pointer_type (neon_intHI_type_node);
|
||||
- tree intSI_pointer_node = build_pointer_type (neon_intSI_type_node);
|
||||
- tree intDI_pointer_node = build_pointer_type (neon_intDI_type_node);
|
||||
- tree float_pointer_node = build_pointer_type (neon_float_type_node);
|
||||
+ neon_intQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode));
|
||||
+ neon_intHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode));
|
||||
+ neon_polyQI_type_node = make_signed_type (GET_MODE_PRECISION (QImode));
|
||||
+ neon_polyHI_type_node = make_signed_type (GET_MODE_PRECISION (HImode));
|
||||
+ neon_intSI_type_node = make_signed_type (GET_MODE_PRECISION (SImode));
|
||||
+ neon_intDI_type_node = make_signed_type (GET_MODE_PRECISION (DImode));
|
||||
+ neon_float_type_node = make_node (REAL_TYPE);
|
||||
+ TYPE_PRECISION (neon_float_type_node) = FLOAT_TYPE_SIZE;
|
||||
+ layout_type (neon_float_type_node);
|
||||
+
|
||||
+ intQI_pointer_node = build_pointer_type (neon_intQI_type_node);
|
||||
+ intHI_pointer_node = build_pointer_type (neon_intHI_type_node);
|
||||
+ intSI_pointer_node = build_pointer_type (neon_intSI_type_node);
|
||||
+ intDI_pointer_node = build_pointer_type (neon_intDI_type_node);
|
||||
+ float_pointer_node = build_pointer_type (neon_float_type_node);
|
||||
|
||||
/* Next create constant-qualified versions of the above types. */
|
||||
- tree const_intQI_node = build_qualified_type (neon_intQI_type_node,
|
||||
- TYPE_QUAL_CONST);
|
||||
- tree const_intHI_node = build_qualified_type (neon_intHI_type_node,
|
||||
- TYPE_QUAL_CONST);
|
||||
- tree const_intSI_node = build_qualified_type (neon_intSI_type_node,
|
||||
- TYPE_QUAL_CONST);
|
||||
- tree const_intDI_node = build_qualified_type (neon_intDI_type_node,
|
||||
- TYPE_QUAL_CONST);
|
||||
- tree const_float_node = build_qualified_type (neon_float_type_node,
|
||||
- TYPE_QUAL_CONST);
|
||||
-
|
||||
- tree const_intQI_pointer_node = build_pointer_type (const_intQI_node);
|
||||
- tree const_intHI_pointer_node = build_pointer_type (const_intHI_node);
|
||||
- tree const_intSI_pointer_node = build_pointer_type (const_intSI_node);
|
||||
- tree const_intDI_pointer_node = build_pointer_type (const_intDI_node);
|
||||
- tree const_float_pointer_node = build_pointer_type (const_float_node);
|
||||
+ const_intQI_node = build_qualified_type (neon_intQI_type_node,
|
||||
+ TYPE_QUAL_CONST);
|
||||
+ const_intHI_node = build_qualified_type (neon_intHI_type_node,
|
||||
+ TYPE_QUAL_CONST);
|
||||
+ const_intSI_node = build_qualified_type (neon_intSI_type_node,
|
||||
+ TYPE_QUAL_CONST);
|
||||
+ const_intDI_node = build_qualified_type (neon_intDI_type_node,
|
||||
+ TYPE_QUAL_CONST);
|
||||
+ const_float_node = build_qualified_type (neon_float_type_node,
|
||||
+ TYPE_QUAL_CONST);
|
||||
+
|
||||
+ const_intQI_pointer_node = build_pointer_type (const_intQI_node);
|
||||
+ const_intHI_pointer_node = build_pointer_type (const_intHI_node);
|
||||
+ const_intSI_pointer_node = build_pointer_type (const_intSI_node);
|
||||
+ const_intDI_pointer_node = build_pointer_type (const_intDI_node);
|
||||
+ const_float_pointer_node = build_pointer_type (const_float_node);
|
||||
|
||||
/* Now create vector types based on our NEON element types. */
|
||||
/* 64-bit vectors. */
|
||||
- tree V8QI_type_node =
|
||||
+ V8QI_type_node =
|
||||
build_vector_type_for_mode (neon_intQI_type_node, V8QImode);
|
||||
- tree V4HI_type_node =
|
||||
+ V4HI_type_node =
|
||||
build_vector_type_for_mode (neon_intHI_type_node, V4HImode);
|
||||
- tree V2SI_type_node =
|
||||
+ V2SI_type_node =
|
||||
build_vector_type_for_mode (neon_intSI_type_node, V2SImode);
|
||||
- tree V2SF_type_node =
|
||||
+ V2SF_type_node =
|
||||
build_vector_type_for_mode (neon_float_type_node, V2SFmode);
|
||||
/* 128-bit vectors. */
|
||||
- tree V16QI_type_node =
|
||||
+ V16QI_type_node =
|
||||
build_vector_type_for_mode (neon_intQI_type_node, V16QImode);
|
||||
- tree V8HI_type_node =
|
||||
+ V8HI_type_node =
|
||||
build_vector_type_for_mode (neon_intHI_type_node, V8HImode);
|
||||
- tree V4SI_type_node =
|
||||
+ V4SI_type_node =
|
||||
build_vector_type_for_mode (neon_intSI_type_node, V4SImode);
|
||||
- tree V4SF_type_node =
|
||||
+ V4SF_type_node =
|
||||
build_vector_type_for_mode (neon_float_type_node, V4SFmode);
|
||||
- tree V2DI_type_node =
|
||||
+ V2DI_type_node =
|
||||
build_vector_type_for_mode (neon_intDI_type_node, V2DImode);
|
||||
|
||||
/* Unsigned integer types for various mode sizes. */
|
||||
- tree intUQI_type_node = make_unsigned_type (GET_MODE_PRECISION (QImode));
|
||||
- tree intUHI_type_node = make_unsigned_type (GET_MODE_PRECISION (HImode));
|
||||
- tree intUSI_type_node = make_unsigned_type (GET_MODE_PRECISION (SImode));
|
||||
- tree intUDI_type_node = make_unsigned_type (GET_MODE_PRECISION (DImode));
|
||||
+ intUQI_type_node = make_unsigned_type (GET_MODE_PRECISION (QImode));
|
||||
+ intUHI_type_node = make_unsigned_type (GET_MODE_PRECISION (HImode));
|
||||
+ intUSI_type_node = make_unsigned_type (GET_MODE_PRECISION (SImode));
|
||||
+ intUDI_type_node = make_unsigned_type (GET_MODE_PRECISION (DImode));
|
||||
|
||||
/* Opaque integer types for structures of vectors. */
|
||||
- tree intEI_type_node = make_signed_type (GET_MODE_PRECISION (EImode));
|
||||
- tree intOI_type_node = make_signed_type (GET_MODE_PRECISION (OImode));
|
||||
- tree intCI_type_node = make_signed_type (GET_MODE_PRECISION (CImode));
|
||||
- tree intXI_type_node = make_signed_type (GET_MODE_PRECISION (XImode));
|
||||
+ intEI_type_node = make_signed_type (GET_MODE_PRECISION (EImode));
|
||||
+ intOI_type_node = make_signed_type (GET_MODE_PRECISION (OImode));
|
||||
+ intCI_type_node = make_signed_type (GET_MODE_PRECISION (CImode));
|
||||
+ intXI_type_node = make_signed_type (GET_MODE_PRECISION (XImode));
|
||||
|
||||
/* Pointers to vector types. */
|
||||
- tree V8QI_pointer_node = build_pointer_type (V8QI_type_node);
|
||||
- tree V4HI_pointer_node = build_pointer_type (V4HI_type_node);
|
||||
- tree V2SI_pointer_node = build_pointer_type (V2SI_type_node);
|
||||
- tree V2SF_pointer_node = build_pointer_type (V2SF_type_node);
|
||||
- tree V16QI_pointer_node = build_pointer_type (V16QI_type_node);
|
||||
- tree V8HI_pointer_node = build_pointer_type (V8HI_type_node);
|
||||
- tree V4SI_pointer_node = build_pointer_type (V4SI_type_node);
|
||||
- tree V4SF_pointer_node = build_pointer_type (V4SF_type_node);
|
||||
- tree V2DI_pointer_node = build_pointer_type (V2DI_type_node);
|
||||
+ V8QI_pointer_node = build_pointer_type (V8QI_type_node);
|
||||
+ V4HI_pointer_node = build_pointer_type (V4HI_type_node);
|
||||
+ V2SI_pointer_node = build_pointer_type (V2SI_type_node);
|
||||
+ V2SF_pointer_node = build_pointer_type (V2SF_type_node);
|
||||
+ V16QI_pointer_node = build_pointer_type (V16QI_type_node);
|
||||
+ V8HI_pointer_node = build_pointer_type (V8HI_type_node);
|
||||
+ V4SI_pointer_node = build_pointer_type (V4SI_type_node);
|
||||
+ V4SF_pointer_node = build_pointer_type (V4SF_type_node);
|
||||
+ V2DI_pointer_node = build_pointer_type (V2DI_type_node);
|
||||
|
||||
/* Operations which return results as pairs. */
|
||||
- tree void_ftype_pv8qi_v8qi_v8qi =
|
||||
+ void_ftype_pv8qi_v8qi_v8qi =
|
||||
build_function_type_list (void_type_node, V8QI_pointer_node, V8QI_type_node,
|
||||
V8QI_type_node, NULL);
|
||||
- tree void_ftype_pv4hi_v4hi_v4hi =
|
||||
+ void_ftype_pv4hi_v4hi_v4hi =
|
||||
build_function_type_list (void_type_node, V4HI_pointer_node, V4HI_type_node,
|
||||
V4HI_type_node, NULL);
|
||||
- tree void_ftype_pv2si_v2si_v2si =
|
||||
+ void_ftype_pv2si_v2si_v2si =
|
||||
build_function_type_list (void_type_node, V2SI_pointer_node, V2SI_type_node,
|
||||
V2SI_type_node, NULL);
|
||||
- tree void_ftype_pv2sf_v2sf_v2sf =
|
||||
+ void_ftype_pv2sf_v2sf_v2sf =
|
||||
build_function_type_list (void_type_node, V2SF_pointer_node, V2SF_type_node,
|
||||
V2SF_type_node, NULL);
|
||||
- tree void_ftype_pdi_di_di =
|
||||
+ void_ftype_pdi_di_di =
|
||||
build_function_type_list (void_type_node, intDI_pointer_node,
|
||||
neon_intDI_type_node, neon_intDI_type_node, NULL);
|
||||
- tree void_ftype_pv16qi_v16qi_v16qi =
|
||||
+ void_ftype_pv16qi_v16qi_v16qi =
|
||||
build_function_type_list (void_type_node, V16QI_pointer_node,
|
||||
V16QI_type_node, V16QI_type_node, NULL);
|
||||
- tree void_ftype_pv8hi_v8hi_v8hi =
|
||||
+ void_ftype_pv8hi_v8hi_v8hi =
|
||||
build_function_type_list (void_type_node, V8HI_pointer_node, V8HI_type_node,
|
||||
V8HI_type_node, NULL);
|
||||
- tree void_ftype_pv4si_v4si_v4si =
|
||||
+ void_ftype_pv4si_v4si_v4si =
|
||||
build_function_type_list (void_type_node, V4SI_pointer_node, V4SI_type_node,
|
||||
V4SI_type_node, NULL);
|
||||
- tree void_ftype_pv4sf_v4sf_v4sf =
|
||||
+ void_ftype_pv4sf_v4sf_v4sf =
|
||||
build_function_type_list (void_type_node, V4SF_pointer_node, V4SF_type_node,
|
||||
V4SF_type_node, NULL);
|
||||
- tree void_ftype_pv2di_v2di_v2di =
|
||||
+ void_ftype_pv2di_v2di_v2di =
|
||||
build_function_type_list (void_type_node, V2DI_pointer_node, V2DI_type_node,
|
||||
V2DI_type_node, NULL);
|
||||
|
||||
- tree reinterp_ftype_dreg[5][5];
|
||||
- tree reinterp_ftype_qreg[5][5];
|
||||
- tree dreg_types[5], qreg_types[5];
|
||||
-
|
||||
- TYPE_PRECISION (neon_float_type_node) = FLOAT_TYPE_SIZE;
|
||||
- layout_type (neon_float_type_node);
|
||||
-
|
||||
/* Define typedefs which exactly correspond to the modes we are basing vector
|
||||
types on. If you change these names you'll need to change
|
||||
the table used by arm_mangle_type too. */
|
|
@ -1,22 +0,0 @@
|
|||
--- gcc-3.4.4/configure.in.orig 2005-08-09 19:57:51.504323183 -0700
|
||||
+++ gcc-3.4.4/configure.in 2005-08-09 20:00:12.073168623 -0700
|
||||
@@ -1907,7 +1907,7 @@
|
||||
*) gxx_include_dir=${with_gxx_include_dir} ;;
|
||||
esac
|
||||
|
||||
-FLAGS_FOR_TARGET=
|
||||
+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
|
||||
case " $target_configdirs " in
|
||||
*" newlib "*)
|
||||
case " $target_configargs " in
|
||||
--- gcc-3.4.4/configure.orig 2005-08-09 21:02:29.668360660 -0700
|
||||
+++ gcc-3.4.4/configure 2005-08-09 21:02:50.157649970 -0700
|
||||
@@ -2669,7 +2669,7 @@
|
||||
*) gxx_include_dir=${with_gxx_include_dir} ;;
|
||||
esac
|
||||
|
||||
-FLAGS_FOR_TARGET=
|
||||
+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
|
||||
case " $target_configdirs " in
|
||||
*" newlib "*)
|
||||
case " $target_configargs " in
|
|
@ -1,74 +0,0 @@
|
|||
2007-07-22 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* config/rs6000/sysv4.h (LINK_EH_SPEC): Add --build-id for
|
||||
non-relocatable link.
|
||||
* config/linux.h (LINK_EH_SPEC): Likewise.
|
||||
* config/sparc/linux.h (LINK_EH_SPEC): Likewise.
|
||||
* config/sparc/linux64.h (LINK_EH_SPEC): Likewise.
|
||||
* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
|
||||
* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
|
||||
|
||||
--- gcc/config/rs6000/sysv4.h.~1~
|
||||
+++ gcc/config/rs6000/sysv4.h
|
||||
@@ -1044,7 +1044,7 @@ extern int fixuplabelno;
|
||||
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
|
||||
#endif
|
||||
|
||||
#define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
|
||||
--- gcc/config/linux.h.~1~
|
||||
+++ gcc/config/linux.h
|
||||
@@ -85,7 +85,7 @@ Boston, MA 02110-1301, USA. */
|
||||
} while (0)
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
|
||||
#endif
|
||||
|
||||
/* Define this so we can compile MS code for use with WINE. */
|
||||
--- gcc/config/sparc/linux64.h.~1~
|
||||
+++ gcc/config/sparc/linux64.h
|
||||
@@ -316,7 +316,7 @@ do { \
|
||||
#define DITF_CONVERSION_LIBFUNCS 1
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_AS_TLS
|
||||
--- gcc/config/sparc/linux.h.~1~
|
||||
+++ gcc/config/sparc/linux.h
|
||||
@@ -188,7 +188,7 @@ do { \
|
||||
#define DITF_CONVERSION_LIBFUNCS 1
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_AS_TLS
|
||||
--- gcc/config/alpha/elf.h.~1~
|
||||
+++ gcc/config/alpha/elf.h
|
||||
@@ -453,5 +453,5 @@ extern int alpha_this_gpdisp_sequence_nu
|
||||
I imagine that other systems will catch up. In the meantime, it
|
||||
doesn't harm to make sure that the data exists to be used later. */
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
|
||||
#endif
|
||||
--- gcc/config/ia64/linux.h.~1~
|
||||
+++ gcc/config/ia64/linux.h
|
||||
@@ -56,7 +56,7 @@ do { \
|
||||
Signalize that because we have fde-glibc, we don't need all C shared libs
|
||||
linked against -lgcc_s. */
|
||||
#undef LINK_EH_SPEC
|
||||
-#define LINK_EH_SPEC ""
|
||||
+#define LINK_EH_SPEC "%{!r:--build-id} "
|
||||
|
||||
#define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
2007-08-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
|
||||
* config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use
|
||||
rs6000_elf_end_indicate_exec_stack.
|
||||
* config/ia64/ia64.c (ia64_linux_file_end): new.
|
||||
* config/ia64/linux.h (TARGET_ASM_FILE_END): Use ia64_linux_file_end.
|
||||
|
||||
--- gcc/config/rs6000/rs6000.c.jj 2007-12-07 18:41:08.000000000 +0100
|
||||
+++ gcc/config/rs6000/rs6000.c 2007-12-07 18:42:12.000000000 +0100
|
||||
@@ -746,6 +746,7 @@ static void rs6000_file_start (void);
|
||||
static int rs6000_elf_reloc_rw_mask (void);
|
||||
static void rs6000_elf_asm_out_constructor (rtx, int);
|
||||
static void rs6000_elf_asm_out_destructor (rtx, int);
|
||||
+static void rs6000_elf_end_indicate_exec_stack (void) ATTRIBUTE_UNUSED;
|
||||
static void rs6000_elf_asm_init_sections (void);
|
||||
static section *rs6000_elf_select_rtx_section (enum machine_mode, rtx,
|
||||
unsigned HOST_WIDE_INT);
|
||||
@@ -20418,6 +20419,20 @@ rs6000_elf_declare_function_name (FILE *
|
||||
}
|
||||
ASM_OUTPUT_LABEL (file, name);
|
||||
}
|
||||
+
|
||||
+static void
|
||||
+rs6000_elf_end_indicate_exec_stack (void)
|
||||
+{
|
||||
+ if (TARGET_32BIT)
|
||||
+ file_end_indicate_exec_stack ();
|
||||
+ else
|
||||
+ {
|
||||
+ int saved_trampolines_created = trampolines_created;
|
||||
+ trampolines_created = 0;
|
||||
+ file_end_indicate_exec_stack ();
|
||||
+ trampolines_created = saved_trampolines_created;
|
||||
+ }
|
||||
+}
|
||||
#endif
|
||||
|
||||
#if TARGET_XCOFF
|
||||
--- gcc/config/rs6000/linux64.h.jj 2007-12-07 17:18:06.000000000 +0100
|
||||
+++ gcc/config/rs6000/linux64.h 2007-12-07 18:41:21.000000000 +0100
|
||||
@@ -504,7 +504,7 @@ extern int dot_symbols;
|
||||
#undef DRAFT_V4_STRUCT_RET
|
||||
#define DRAFT_V4_STRUCT_RET (!TARGET_64BIT)
|
||||
|
||||
-#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
|
||||
+#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack
|
||||
|
||||
#define TARGET_POSIX_IO
|
||||
|
||||
--- gcc/config/ia64/linux.h.jj 2007-12-07 18:17:43.000000000 +0100
|
||||
+++ gcc/config/ia64/linux.h 2007-12-07 18:41:21.000000000 +0100
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#define TARGET_VERSION fprintf (stderr, " (IA-64) Linux");
|
||||
|
||||
-#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
|
||||
+#define TARGET_ASM_FILE_END ia64_linux_file_end
|
||||
|
||||
/* This is for -profile to use -lc_p instead of -lc. */
|
||||
#undef CC1_SPEC
|
||||
--- gcc/config/ia64/ia64.c.jj 2007-12-07 15:41:58.000000000 +0100
|
||||
+++ gcc/config/ia64/ia64.c 2007-12-07 18:43:18.000000000 +0100
|
||||
@@ -262,6 +262,8 @@ static section *ia64_select_rtx_section
|
||||
static void ia64_output_dwarf_dtprel (FILE *, int, rtx)
|
||||
ATTRIBUTE_UNUSED;
|
||||
static unsigned int ia64_section_type_flags (tree, const char *, int);
|
||||
+static void ia64_linux_file_end (void)
|
||||
+ ATTRIBUTE_UNUSED;
|
||||
static void ia64_init_libfuncs (void)
|
||||
ATTRIBUTE_UNUSED;
|
||||
static void ia64_hpux_init_libfuncs (void)
|
||||
@@ -9957,4 +9959,13 @@ ia64_c_mode_for_suffix (char suffix)
|
||||
return VOIDmode;
|
||||
}
|
||||
|
||||
+static void
|
||||
+ia64_linux_file_end (void)
|
||||
+{
|
||||
+ int saved_trampolines_created = trampolines_created;
|
||||
+ trampolines_created = 0;
|
||||
+ file_end_indicate_exec_stack ();
|
||||
+ trampolines_created = saved_trampolines_created;
|
||||
+}
|
||||
+
|
||||
#include "gt-ia64.h"
|
|
@ -1,40 +0,0 @@
|
|||
The patch below fixes a crash building libgfortran on arm-linux-gnueabi.
|
||||
|
||||
This target doesn't really have a 128-bit integer type, however it does use
|
||||
TImode to represent the return value of certain special ABI defined library
|
||||
functions. This results in type_for_size(TImode) being called.
|
||||
|
||||
Because TImode deosn't correspond to any gfortran integer kind
|
||||
gfc_type_for_size returns NULL and we segfault shortly after.
|
||||
|
||||
The patch below fixes this by making gfc_type_for_size handle TImode in the
|
||||
same way as the C frontend.
|
||||
|
||||
Tested on x86_64-linux and arm-linux-gnueabi.
|
||||
Applied to trunk.
|
||||
|
||||
Paul
|
||||
|
||||
2007-05-15 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
gcc/fortran/
|
||||
* trans-types.c (gfc_type_for_size): Handle signed TImode.
|
||||
|
||||
Index: gcc-4.2.1/gcc/fortran/trans-types.c
|
||||
===================================================================
|
||||
--- gcc-4.2.1/gcc/fortran/trans-types.c (revision 170435)
|
||||
+++ gcc-4.2.1/gcc/fortran/trans-types.c (working copy)
|
||||
@@ -1800,6 +1800,13 @@ gfc_type_for_size (unsigned bits, int un
|
||||
if (type && bits == TYPE_PRECISION (type))
|
||||
return type;
|
||||
}
|
||||
+
|
||||
+ /* Handle TImode as a special case because it is used by some backends
|
||||
+ (eg. ARM) even though it is not available for normal use. */
|
||||
+#if HOST_BITS_PER_WIDE_INT >= 64
|
||||
+ if (bits == TYPE_PRECISION (intTI_type_node))
|
||||
+ return intTI_type_node;
|
||||
+#endif
|
||||
}
|
||||
else
|
||||
{
|
|
@ -1,42 +0,0 @@
|
|||
Index: gcc-4.3.3/gcc/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-4.3.3.orig/gcc/Makefile.in 2009-09-11 17:51:50.000000000 +0100
|
||||
+++ gcc-4.3.3/gcc/Makefile.in 2009-09-11 17:56:48.000000000 +0100
|
||||
@@ -378,7 +378,7 @@
|
||||
MD5_H = $(srcdir)/../include/md5.h
|
||||
|
||||
# Default native SYSTEM_HEADER_DIR, to be overridden by targets.
|
||||
-NATIVE_SYSTEM_HEADER_DIR = /usr/include
|
||||
+NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@
|
||||
# Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
|
||||
CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
|
||||
|
||||
Index: gcc-4.3.3/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-4.3.3.orig/gcc/configure 2009-09-11 17:49:58.000000000 +0100
|
||||
+++ gcc-4.3.3/gcc/configure 2009-09-11 18:00:16.000000000 +0100
|
||||
@@ -7315,7 +7315,7 @@
|
||||
enable_shared=yes
|
||||
fi;
|
||||
|
||||
-
|
||||
+NATIVE_SYSTEM_HEADER_DIR=$NATIVE_SYSTEM_HEADER_DIR
|
||||
|
||||
# Check whether --with-build-sysroot or --without-build-sysroot was given.
|
||||
if test "${with_build_sysroot+set}" = set; then
|
||||
@@ -7323,7 +7323,6 @@
|
||||
|
||||
fi;
|
||||
|
||||
-
|
||||
# Check whether --with-sysroot or --without-sysroot was given.
|
||||
if test "${with_sysroot+set}" = set; then
|
||||
withval="$with_sysroot"
|
||||
@@ -23882,6 +23881,7 @@
|
||||
s,@TARGET_SYSTEM_ROOT@,$TARGET_SYSTEM_ROOT,;t t
|
||||
s,@TARGET_SYSTEM_ROOT_DEFINE@,$TARGET_SYSTEM_ROOT_DEFINE,;t t
|
||||
s,@CROSS_SYSTEM_HEADER_DIR@,$CROSS_SYSTEM_HEADER_DIR,;t t
|
||||
+s,@NATIVE_SYSTEM_HEADER_DIR@,$NATIVE_SYSTEM_HEADER_DIR,;t t
|
||||
s,@onestep@,$onestep,;t t
|
||||
s,@PKGVERSION@,$PKGVERSION,;t t
|
||||
s,@REPORT_BUGS_TO@,$REPORT_BUGS_TO,;t t
|
|
@ -1,24 +0,0 @@
|
|||
--- gcc-4.2.0/gcc/config/arm/bpabi.h
|
||||
+++ gcc-4.2.0/gcc/config/arm/bpabi.h
|
||||
@@ -33,9 +33,19 @@
|
||||
#undef FPUTYPE_DEFAULT
|
||||
#define FPUTYPE_DEFAULT FPUTYPE_VFP
|
||||
|
||||
+/*
|
||||
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
|
||||
+ * (big endian) configurations.
|
||||
+ */
|
||||
+#if TARGET_BIG_ENDIAN_DEFAULT
|
||||
+#define TARGET_ENDIAN_DEFAULT MASK_BIG_END
|
||||
+#else
|
||||
+#define TARGET_ENDIAN_DEFAULT 0
|
||||
+#endif
|
||||
+
|
||||
/* EABI targets should enable interworking by default. */
|
||||
#undef TARGET_DEFAULT
|
||||
-#define TARGET_DEFAULT MASK_INTERWORK
|
||||
+#define TARGET_DEFAULT (MASK_INTERWORK | TARGET_ENDIAN_DEFAULT)
|
||||
|
||||
/* The ARM BPABI functions return a boolean; they use no special
|
||||
calling convention. */
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
--- /tmp/Makefile.in 2006-02-23 20:56:01.399758728 +0100
|
||||
+++ gcc-4.1-20060217/Makefile.in 2006-02-23 20:56:16.874406224 +0100
|
||||
@@ -334,7 +334,7 @@
|
||||
CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
|
||||
LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
|
||||
LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
|
||||
-LDFLAGS_FOR_TARGET =
|
||||
+LDFLAGS_FOR_TARGET = @LDFLAGS@
|
||||
PICFLAG_FOR_TARGET =
|
||||
|
||||
# ------------------------------------
|
||||
--- /tmp/Makefile.tpl 2006-02-23 20:50:34.077519272 +0100
|
||||
+++ gcc-4.1-20060217/Makefile.tpl 2006-02-23 21:04:31.092273688 +0100
|
||||
@@ -337,7 +337,7 @@
|
||||
CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
|
||||
LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
|
||||
LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
|
||||
-LDFLAGS_FOR_TARGET =
|
||||
+LDFLAGS_FOR_TARGET = @LDFLAGS@
|
||||
PICFLAG_FOR_TARGET =
|
||||
|
||||
# ------------------------------------
|
|
@ -1,23 +0,0 @@
|
|||
gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++
|
||||
will not run correctly since my default the linker will try and link against libstdc++
|
||||
which shouldn't exist yet. We need an option to disable the automatically added -lstdc++
|
||||
option whilst leaving -lc, -lgcc and other automatic library dependencies. This patch
|
||||
adds such an option which only disables the -lstdc++ linkage.
|
||||
|
||||
A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to
|
||||
do this officially, the likely answer is don't build libstdc++ separately.
|
||||
|
||||
RP 29/6/10
|
||||
|
||||
Index: gcc-4.3.3/gcc/cp/g++spec.c
|
||||
===================================================================
|
||||
--- gcc-4.3.3.orig/gcc/cp/g++spec.c 2010-06-29 00:06:03.901695025 +0100
|
||||
+++ gcc-4.3.3/gcc/cp/g++spec.c 2010-06-29 00:06:58.800325439 +0100
|
||||
@@ -131,6 +131,7 @@
|
||||
if (argv[i][0] == '-')
|
||||
{
|
||||
if (strcmp (argv[i], "-nostdlib") == 0
|
||||
+ || strcmp (argv[i], "-nostdlib++") == 0
|
||||
|| strcmp (argv[i], "-nodefaultlibs") == 0)
|
||||
{
|
||||
library = -1;
|
|
@ -1,16 +0,0 @@
|
|||
Index: gcc-4.1.2/gcc/fold-const.c
|
||||
===================================================================
|
||||
--- gcc-4.1.2.orig/gcc/fold-const.c 2007-11-21 18:53:42.000000000 +0100
|
||||
+++ gcc-4.1.2/gcc/fold-const.c 2007-11-21 18:56:26.000000000 +0100
|
||||
@@ -5339,7 +5339,10 @@
|
||||
}
|
||||
break;
|
||||
}
|
||||
- /* FALLTHROUGH */
|
||||
+ /* If the constant is negative, we cannot simplify this. */
|
||||
+ if (tree_int_cst_sgn (c) == -1)
|
||||
+ break;
|
||||
+ /* FALLTHROUGH */
|
||||
case NEGATE_EXPR:
|
||||
if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
|
||||
return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
|
|
@ -1,38 +0,0 @@
|
|||
Fix PR 35942: remove -lstdc++ from libtool postdeps for CXX.
|
||||
|
||||
libstdc++-v3/ChangeLog:
|
||||
2010-01-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
PR libstdc++/35942
|
||||
* configure.ac: Remove -lstdc++ from libtool's postdeps_CXX.
|
||||
* configure: Regenerate.
|
||||
|
||||
|
||||
Index: gcc-4.3.3/libstdc++-v3/configure
|
||||
===================================================================
|
||||
--- gcc-4.3.3.orig/libstdc++-v3/configure 2010-03-26 17:57:51.000000000 +0000
|
||||
+++ gcc-4.3.3/libstdc++-v3/configure 2010-03-26 17:57:58.000000000 +0000
|
||||
@@ -13759,6 +13759,9 @@
|
||||
|
||||
|
||||
|
||||
+# Eliminate -lstdc++ addition to postdeps for cross compiles.
|
||||
+postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
|
||||
+
|
||||
# Possibly disable most of the library.
|
||||
## TODO: Consider skipping unncessary tests altogether in this case, rather
|
||||
## than just ignoring the results. Faster /and/ more correct, win win.
|
||||
Index: gcc-4.3.3/libstdc++-v3/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4.3.3.orig/libstdc++-v3/configure.ac 2010-03-26 17:57:54.000000000 +0000
|
||||
+++ gcc-4.3.3/libstdc++-v3/configure.ac 2010-03-26 17:57:58.000000000 +0000
|
||||
@@ -89,6 +89,9 @@
|
||||
AC_SUBST(enable_shared)
|
||||
AC_SUBST(enable_static)
|
||||
|
||||
+# Eliminate -lstdc++ addition to postdeps for cross compiles.
|
||||
+postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
|
||||
+
|
||||
# Possibly disable most of the library.
|
||||
## TODO: Consider skipping unncessary tests altogether in this case, rather
|
||||
## than just ignoring the results. Faster /and/ more correct, win win.
|
|
@ -1,22 +0,0 @@
|
|||
--- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~ 2003-08-27 22:29:42.000000000 +0100
|
||||
+++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am 2004-07-22 16:41:45.152130128 +0100
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
libmath_la_SOURCES = stubs.c
|
||||
|
||||
-AM_CPPFLAGS = $(CANADIAN_INCLUDES)
|
||||
+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
|
||||
|
||||
# Only compiling "C" sources in this directory.
|
||||
LIBTOOL = @LIBTOOL@ --tag CC
|
||||
--- gcc-3.4.1/libstdc++-v3/fragment.am.old 2004-07-22 18:24:58.024083656 +0100
|
||||
+++ gcc-3.4.1/libstdc++-v3/fragment.am 2004-07-22 18:24:59.019932264 +0100
|
||||
@@ -18,7 +18,7 @@
|
||||
$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
|
||||
|
||||
# -I/-D flags to pass when compiling.
|
||||
-AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
|
||||
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
|
||||
|
||||
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- gcc-4.1.1/gcc/Makefile.in_orig 2007-01-31 21:24:23.000000000 +0000
|
||||
+++ gcc-4.1.1/gcc/Makefile.in 2007-01-31 21:24:43.000000000 +0000
|
||||
@@ -3772,8 +3772,6 @@
|
||||
$(INSTALL_SCRIPT) $(mkinstalldirs) \
|
||||
$(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
|
||||
$(INSTALL_SCRIPT) $(srcdir)/fixproto $(DESTDIR)$(itoolsdir)/fixproto ; \
|
||||
- $(INSTALL_PROGRAM) build/fix-header$(build_exeext) \
|
||||
- $(DESTDIR)$(itoolsdir)/fix-header$(build_exeext) ; \
|
||||
else :; fi
|
||||
echo 'SYSTEM_HEADER_DIR="'"$(SYSTEM_HEADER_DIR)"'"' \
|
||||
> $(DESTDIR)$(itoolsdatadir)/mkheaders.conf
|
|
@ -1,18 +0,0 @@
|
|||
Index: gcc-4.2.4/gcc/config/sh/linux-unwind.h
|
||||
===================================================================
|
||||
--- gcc-4.2.4.orig/gcc/config/sh/linux-unwind.h 2008-10-04 00:05:29.434889757 +0200
|
||||
+++ gcc-4.2.4/gcc/config/sh/linux-unwind.h 2008-10-04 00:06:02.594883544 +0200
|
||||
@@ -26,6 +26,7 @@
|
||||
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
|
||||
+#ifndef inhibit_libc
|
||||
/* Do code reading to identify a signal frame, and set the frame
|
||||
state data appropriately. See unwind-dw2.c for the structs. */
|
||||
|
||||
@@ -251,3 +252,5 @@
|
||||
return _URC_NO_REASON;
|
||||
}
|
||||
#endif /* defined (__SH5__) */
|
||||
+
|
||||
+#endif /* defined inhibit_libc */
|
|
@ -1,20 +0,0 @@
|
|||
Fix a missing config.h dependency when building sparseset.o to prevent
|
||||
"conflicting types for 'strsignal'" error, which can intermittently crop
|
||||
up for high values of make -j.
|
||||
|
||||
Thanks to Richard Purdie and Jeff Dike for their help in tracking this
|
||||
down.
|
||||
|
||||
Scott Garman <scott.a.garman@intel.com> 2010-07-13
|
||||
diff -urN gcc-4.3.3.orig//gcc/Makefile.in gcc-4.3.3/gcc/Makefile.in
|
||||
--- gcc-4.3.3.orig//gcc/Makefile.in 2008-12-04 15:00:19.000000000 -0800
|
||||
+++ gcc-4.3.3/gcc/Makefile.in 2010-07-13 21:30:01.864681358 -0700
|
||||
@@ -1789,7 +1789,7 @@
|
||||
$(FLAGS_H) hard-reg-set.h $(BASIC_BLOCK_H) $(OBSTACK_H)
|
||||
ebitmap.o: ebitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(EBITMAP_H)
|
||||
-sparseset.o: sparseset.c $(SYSTEM_H) sparseset.h
|
||||
+sparseset.o: sparseset.c $(CONFIG_H) $(SYSTEM_H) sparseset.h
|
||||
|
||||
COLLECT2_OBJS = collect2.o tlink.o intl.o version.o
|
||||
COLLECT2_LIBS = @COLLECT2_LIBS@
|
|
@ -1,12 +0,0 @@
|
|||
diff -urN gcc-4.1.1/gcc/config/arm/linux-eabi.h gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h
|
||||
--- gcc-4.1.1/gcc/config/arm/linux-eabi.h 2006-10-22 11:11:49.000000000 -0700
|
||||
+++ gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h 2006-10-24 21:34:01.000000000 -0700
|
||||
@@ -45,7 +45,7 @@
|
||||
The ARM10TDMI core is the default for armv5t, so set
|
||||
SUBTARGET_CPU_DEFAULT to achieve this. */
|
||||
#undef SUBTARGET_CPU_DEFAULT
|
||||
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
|
||||
+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
|
||||
|
||||
#undef SUBTARGET_EXTRA_LINK_SPEC
|
||||
#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi"
|
|
@ -1,31 +0,0 @@
|
|||
Index: gcc-4.0.2/gcc/c-incpath.c
|
||||
===================================================================
|
||||
--- gcc-4.0.2.orig/gcc/c-incpath.c 2005-01-23 16:05:27.000000000 +0100
|
||||
+++ gcc-4.0.2/gcc/c-incpath.c 2006-05-15 21:23:02.000000000 +0200
|
||||
@@ -350,6 +350,26 @@
|
||||
p->construct = 0;
|
||||
p->user_supplied_p = user_supplied_p;
|
||||
|
||||
+#ifdef CROSS_DIRECTORY_STRUCTURE
|
||||
+ /* A common error when cross compiling is including
|
||||
+ host headers. This code below will try to fail fast
|
||||
+ for cross compiling. Currently we consider /usr/include,
|
||||
+ /opt/include and /sw/include as harmful. */
|
||||
+ {
|
||||
+ /* printf("Adding Path: %s\n", p->name ); */
|
||||
+ if( strstr(p->name, "/usr/include" ) == p->name ) {
|
||||
+ fprintf(stderr, _("CROSS COMPILE Badness: /usr/include in INCLUDEPATH: %s\n"), p->name);
|
||||
+ abort();
|
||||
+ } else if( strstr(p->name, "/sw/include") == p->name ) {
|
||||
+ fprintf(stderr, _("CROSS COMPILE Badness: /sw/include in INCLUDEPATH: %s\n"), p->name);
|
||||
+ abort();
|
||||
+ } else if( strstr(p->name, "/opt/include") == p->name ) {
|
||||
+ fprintf(stderr, _("CROSS COMPILE Badness: /opt/include in INCLUDEPATH: %s\n"), p->name);
|
||||
+ abort();
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
add_cpp_dir_path (p, chain);
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
upstream: n/a
|
||||
comment: Use the preprocessor we have just compiled instead the one of
|
||||
the system. There might be incompabilities between us and them.
|
||||
|
||||
Index: gcc-4.3.1/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/Makefile.in 2008-08-19 01:09:56.000000000 -0700
|
||||
+++ gcc-4.3.1/Makefile.in 2008-08-19 01:13:27.000000000 -0700
|
||||
@@ -204,6 +204,7 @@
|
||||
AR="$(AR_FOR_TARGET)"; export AR; \
|
||||
AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
|
||||
CC="$(CC_FOR_TARGET)"; export CC; \
|
||||
+ CPP="$(CC_FOR_TARGET) -E"; export CPP; \
|
||||
CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
|
||||
CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
|
||||
CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
|
||||
Index: gcc-4.3.1/Makefile.tpl
|
||||
===================================================================
|
||||
--- gcc-4.3.1.orig/Makefile.tpl 2008-08-21 00:07:58.000000000 -0700
|
||||
+++ gcc-4.3.1/Makefile.tpl 2008-08-21 00:09:52.000000000 -0700
|
||||
@@ -223,6 +223,7 @@
|
||||
AR="$(AR_FOR_TARGET)"; export AR; \
|
||||
AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
|
||||
CC="$(CC_FOR_TARGET)"; export CC; \
|
||||
+ CPP="$(CC_FOR_TARGET) -E"; export CPP; \
|
||||
CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
|
||||
CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
|
||||
CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
|
|
@ -1,24 +0,0 @@
|
|||
inherit cross-canadian
|
||||
|
||||
require gcc-${PV}.inc
|
||||
require gcc-cross-canadian.inc
|
||||
require gcc-configure-sdk.inc
|
||||
require gcc-package-sdk.inc
|
||||
|
||||
PR = "r20"
|
||||
|
||||
DEPENDS += "gmp-nativesdk mpfr-nativesdk"
|
||||
RDEPENDS_${PN} += "mpfr-nativesdk"
|
||||
|
||||
SYSTEMHEADERS = "/usr/include"
|
||||
SYSTEMLIBS = "/lib/"
|
||||
SYSTEMLIBS1 = "/usr/lib/"
|
||||
|
||||
EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
|
||||
--disable-libgomp --disable-libmudflap \
|
||||
--with-mpfr=${STAGING_DIR_HOST}${layout_exec_prefix}"
|
||||
|
||||
# to find libmpfr
|
||||
# export LD_LIBRARY_PATH = "{STAGING_DIR_HOST}${layout_exec_prefix}"
|
||||
|
||||
PARALLEL_MAKE = ""
|
|
@ -1,5 +0,0 @@
|
|||
require gcc-cross_${PV}.bb
|
||||
require gcc-cross-initial.inc
|
||||
|
||||
PR = "r5"
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
require gcc-cross_${PV}.bb
|
||||
require gcc-cross-intermediate.inc
|
||||
PR = "r5"
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# This kernel compiler is required by the Freecom FSG-3 machine
|
||||
# This kernel compiler is required by the Nokia tablets
|
||||
# Please talk to Rod Whitby and Richard Purdie before considering removing this file.
|
||||
|
||||
require gcc-csl-arm-2005q3.inc
|
||||
require gcc-cross.inc
|
||||
require gcc-cross-initial.inc
|
||||
require gcc-cross-kernel.inc
|
||||
|
||||
DEFAULT_PREFERENCE = "-1"
|
||||
|
||||
PR = "r4"
|
||||
|
||||
SRC_URI += "file://gcc-3.4.4-makefile-fix.patch;patch=1"
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
PR = "r17"
|
||||
|
||||
require gcc-${PV}.inc
|
||||
require gcc-cross4.inc
|
||||
|
||||
SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
|
||||
|
||||
EXTRA_OECONF += "--disable-libunwind-exceptions --with-mpfr=${STAGING_DIR_NATIVE}${prefix_native}"
|
||||
|
||||
ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_DIR_TARGET}${target_includedir}"
|
|
@ -1,3 +0,0 @@
|
|||
require gcc-cross-initial_${PV}.bb
|
||||
require gcc-crosssdk-initial.inc
|
||||
PR = "r6"
|
|
@ -1,3 +0,0 @@
|
|||
require gcc-cross-intermediate_${PV}.bb
|
||||
require gcc-crosssdk-intermediate.inc
|
||||
PR = "r8"
|
|
@ -1,3 +0,0 @@
|
|||
require gcc-cross_${PV}.bb
|
||||
require gcc-crosssdk.inc
|
||||
PR="r3"
|
|
@ -1,11 +0,0 @@
|
|||
PR = "r18"
|
||||
|
||||
require gcc-${PV}.inc
|
||||
require gcc-configure-runtime.inc
|
||||
require gcc-package-runtime.inc
|
||||
|
||||
SRC_URI_append = "file://fortran-cross-compile-hack.patch;patch=1"
|
||||
|
||||
ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR}"
|
||||
|
||||
EXTRA_OECONF += "--disable-libunwind-exceptions"
|
|
@ -1,10 +0,0 @@
|
|||
PR = "r12"
|
||||
|
||||
require gcc-${PV}.inc
|
||||
require gcc-configure-target.inc
|
||||
require gcc-package-target.inc
|
||||
|
||||
SRC_URI_append = "file://fortran-cross-compile-hack.patch;patch=1"
|
||||
|
||||
ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR}"
|
||||
|
Loading…
Reference in New Issue