NOTE: The reference for the patches was the patchset of the buildroot project. see: http://git.buildroot.net/buildroot/tree/toolchain/gcc/4.4.2user/amery/mess
@ -1,27 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/103-uclibc-conf-noupstream.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
--- 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,229 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/203-uclibc-locale-no__x.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
--- gcc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2006-03-10 15:32:37 +0100
|
|||
@@ -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 |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc 2006-03-10 15:32:37 +0100
|
|||
@@ -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<> |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/collate_members.cc.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/collate_members.cc 2006-03-10 15:32:37 +0100
|
|||
@@ -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 |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2006-03-10 15:32:37 +0100
|
|||
@@ -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: |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2006-03-10 15:32:37 +0100
|
|||
@@ -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 |
|||
{ |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/time_members.cc.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/time_members.cc 2006-03-10 15:32:37 +0100
|
|||
@@ -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 |
|||
{ |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2006-03-10 15:32:37 +0100
|
|||
@@ -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 |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/messages_members.cc.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/messages_members.cc 2006-03-10 15:32:37 +0100
|
|||
@@ -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 |
|||
|
|||
--- gcc/libstdc++-v3/config/locale/uclibc/messages_members.h.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/messages_members.h 2006-03-10 15:32:37 +0100
|
|||
@@ -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; |
|||
} |
|||
|
|||
--- gcc/libstdc++-v3/config/locale/uclibc/c_locale.h.uclibc200no__x~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/c_locale.h 2006-03-10 15:32:37 +0100
|
|||
@@ -68,6 +68,7 @@
|
|||
{ |
|||
extern "C" __typeof(uselocale) __uselocale; |
|||
} |
|||
+#define __uselocale uselocale
|
|||
#endif |
|||
|
|||
namespace std |
@ -1,64 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/204-uclibc-locale-wchar_fix.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
--- 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,363 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/205-uclibc-locale-update.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
--- gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc.uclibc200_update~ 2006-03-10 15:32:37 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc 2006-03-10 15:39:14 +0100
|
|||
@@ -46,16 +47,13 @@
|
|||
__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 +61,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 +75,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,7 +102,7 @@
|
|||
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); |
|||
} |
|||
|
|||
--- gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc.uclibc200_update~ 2006-03-10 15:32:37 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2006-03-10 15:39:14 +0100
|
|||
@@ -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> |
|||
|
|||
namespace std |
|||
@@ -138,20 +143,34 @@
|
|||
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; |
|||
} |
|||
-
|
|||
+
|
|||
const wchar_t* |
|||
ctype<wchar_t>:: |
|||
do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/messages_members.h.uclibc200_update~ 2006-03-10 15:32:37 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/messages_members.h 2006-03-10 15:39:14 +0100
|
|||
@@ -47,18 +47,21 @@
|
|||
template<typename _CharT> |
|||
messages<_CharT>::messages(size_t __refs) |
|||
: facet(__refs), _M_c_locale_messages(_S_get_c_locale()), |
|||
- _M_name_messages(_S_get_c_name())
|
|||
+ _M_name_messages(_S_get_c_name())
|
|||
{ } |
|||
|
|||
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> |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc.uclibc200_update~ 2006-03-10 15:37:27 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2006-03-10 15:39:14 +0100
|
|||
@@ -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; |
|||
} |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc.uclibc200_update~ 2006-03-10 15:37:27 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2006-03-10 15:39:14 +0100
|
|||
@@ -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__ |
|||
--- gcc/libstdc++-v3/config/locale/uclibc/time_members.h.uclibc200_update~ 2006-03-10 15:06:17 +0100
|
|||
+++ gcc/libstdc++-v3/config/locale/uclibc/time_members.h 2006-03-10 15:39:14 +0100
|
|||
@@ -37,25 +37,33 @@
|
|||
template<typename _CharT> |
|||
__timepunct<_CharT>::__timepunct(size_t __refs) |
|||
: facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), |
|||
- _M_name_timepunct(_S_get_c_name())
|
|||
+ _M_name_timepunct(_S_get_c_name())
|
|||
{ _M_initialize_timepunct(); } |
|||
|
|||
template<typename _CharT> |
|||
__timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) |
|||
: facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), |
|||
- _M_name_timepunct(_S_get_c_name())
|
|||
+ _M_name_timepunct(_S_get_c_name())
|
|||
{ _M_initialize_timepunct(); } |
|||
|
|||
template<typename _CharT> |
|||
__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> |
|||
--- gcc-4.2/libstdc++-v3/config/locale/uclibc/c_locale.h.old 2006-09-28 11:39:00.000000000 +0200
|
|||
+++ gcc-4.2/libstdc++-v3/config/locale/uclibc/c_locale.h 2006-09-28 12:10:41.000000000 +0200
|
|||
@@ -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 |
|||
|
|||
@@ -62,7 +64,7 @@
|
|||
#endif |
|||
// #define _GLIBCXX_NUM_CATEGORIES 6 |
|||
#define _GLIBCXX_NUM_CATEGORIES 0 |
|||
-
|
|||
+
|
|||
#ifdef __UCLIBC_HAS_XLOCALE__ |
|||
namespace __gnu_cxx |
|||
{ |
|||
@@ -79,22 +81,24 @@
|
|||
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); |
@ -1,66 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/300-libstdc++-pic.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
# DP: Build and install libstdc++_pic.a library. |
|||
|
|||
--- gcc/libstdc++-v3/src/Makefile.am
|
|||
+++ gcc/libstdc++-v3/src/Makefile.am
|
|||
@@ -214,6 +214,12 @@
|
|||
$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ |
|||
|
|||
|
|||
+install-exec-local:
|
|||
+ifeq ($(enable_shared),yes)
|
|||
+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
|
|||
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
|
|||
+endif
|
|||
+
|
|||
# Added bits to build debug library. |
|||
if GLIBCXX_BUILD_DEBUG |
|||
all-local: build_debug |
|||
--- gcc/libstdc++-v3/src/Makefile.in
|
|||
+++ gcc/libstdc++-v3/src/Makefile.in
|
|||
@@ -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 \ |
|||
@@ -743,6 +743,13 @@
|
|||
install_debug: |
|||
(cd ${debugdir} && $(MAKE) \ |
|||
toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) |
|||
+
|
|||
+install-exec-local:
|
|||
+ifeq ($(enable_shared),yes)
|
|||
+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
|
|||
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
|
|||
+endif
|
|||
+
|
|||
# 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,28 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/303-c99-complex-ugly-hack.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
--- 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,52 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/306-libstdc++-namespace.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
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,42 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/307-locale_facets.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
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> |
|||
|
|||
--- gcc-4.2.1/libstdc++-v3/include/bits/locale_facets.tcc 2006-10-17 18:43:47.000000000 +0200
|
|||
+++ gcc-4.2.1-st/libstdc++-v3/include/bits/locale_facets.tcc 2007-08-22 18:54:23.000000000 +0200
|
|||
@@ -1143,7 +1143,7 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
|
|||
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 |
|||
|
|||
@@ -1777,7 +1777,7 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
|
|||
// max_exponent10 + 1 for the integer part, + 2 for sign and '\0'. |
|||
const int __cs_size = numeric_limits<long double>::max_exponent10 + 3; |
|||
char* __cs = static_cast<char*>(__builtin_alloca(__cs_size)); |
|||
- int __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, "%.*Lf",
|
|||
+ int __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, "%.*Lf",
|
|||
0, __units); |
|||
#endif |
|||
string_type __digits(__len, char_type()); |
@ -1,29 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/402-libbackend_dep_gcov-iov.h.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
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,83 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/800-arm-bigendian.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
By Lennert Buytenhek <buytenh@wantstofly.org> |
|||
Adds support for arm*b-linux* big-endian ARM targets |
|||
|
|||
See http://gcc.gnu.org/PR16350 |
|||
|
|||
--- gcc-4.2.0/gcc/config/arm/linux-elf.h
|
|||
+++ gcc-4.2.0/gcc/config/arm/linux-elf.h
|
|||
@@ -28,19 +28,33 @@
|
|||
#undef TARGET_VERSION |
|||
#define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr); |
|||
|
|||
+/*
|
|||
+ * '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
|
|||
+#define TARGET_ENDIAN_OPTION "mbig-endian"
|
|||
+#define TARGET_LINKER_EMULATION "armelfb_linux"
|
|||
+#else
|
|||
+#define TARGET_ENDIAN_DEFAULT 0
|
|||
+#define TARGET_ENDIAN_OPTION "mlittle-endian"
|
|||
+#define TARGET_LINKER_EMULATION "armelf_linux"
|
|||
+#endif
|
|||
+
|
|||
#undef TARGET_DEFAULT_FLOAT_ABI |
|||
#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD |
|||
|
|||
#undef TARGET_DEFAULT |
|||
-#define TARGET_DEFAULT (0)
|
|||
+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
|
|||
|
|||
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 |
|||
|
|||
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
|
|||
+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
|
|||
|
|||
#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 |
|||
@@ -61,7 +75,7 @@
|
|||
%{rdynamic:-export-dynamic} \ |
|||
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "} \ |
|||
-X \ |
|||
- %{mbig-endian:-EB}" \
|
|||
+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
|
|||
SUBTARGET_EXTRA_LINK_SPEC |
|||
|
|||
#undef LINK_SPEC |
|||
--- gcc-4.2.0/gcc/config.gcc.orig 2006-09-22 14:53:41.000000000 +0200
|
|||
+++ gcc-4.2.0/gcc/config.gcc 2006-09-25 10:45:21.000000000 +0200
|
|||
@@ -696,6 +696,11 @@
|
|||
tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" |
|||
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" |
@ -0,0 +1,54 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/810-arm-softfloat-libgcc.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
[PATCH] add the correct symbols to libgcc for uclibc arm softfloat |
|||
|
|||
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk> |
|||
---
|
|||
gcc/config/arm/linux-elf.h | 2 +- |
|||
gcc/config/arm/t-linux | 6 +++++- |
|||
2 files changed, 6 insertions(+), 2 deletions(-) |
|||
|
|||
Index: gcc-4.4.0/gcc/config/arm/t-linux
|
|||
===================================================================
|
|||
--- gcc-4.4.0.orig/gcc/config/arm/t-linux
|
|||
+++ gcc-4.4.0/gcc/config/arm/t-linux
|
|||
@@ -4,7 +4,11 @@
|
|||
|
|||
LIB1ASMSRC = arm/lib1funcs.asm |
|||
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ |
|||
- _arm_addsubdf3 _arm_addsubsf3
|
|||
+ _arm_addsubdf3 _arm_addsubsf3 \
|
|||
+ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
|
|||
+ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
|
|||
+ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
|
|||
+ _arm_fixsfsi _arm_fixunssfsi
|
|||
|
|||
# MULTILIB_OPTIONS = mhard-float/msoft-float |
|||
# MULTILIB_DIRNAMES = hard-float soft-float |
|||
Index: gcc-4.4.0/gcc/config/arm/linux-elf.h
|
|||
===================================================================
|
|||
--- gcc-4.4.0.orig/gcc/config/arm/linux-elf.h
|
|||
+++ gcc-4.4.0/gcc/config/arm/linux-elf.h
|
|||
@@ -60,7 +60,7 @@
|
|||
%{shared:-lc} \ |
|||
%{!shared:%{profile:-lc_p}%{!profile:-lc}}" |
|||
|
|||
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
|
|||
+#define LIBGCC_SPEC "-lgcc"
|
|||
|
|||
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" |
|||
|
@ -1,169 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/904-flatten-switch-stmt-00.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
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,42 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/910-soft-float.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
--- gcc-4.2-20061205/gcc/config/arm/t-linux 2006-12-08 15:18:33.000000000 -0800
|
|||
+++ gcc-4.2-20061205/gcc/config/arm/t-linux 2006-12-08 15:18:33.000000000 -0800
|
|||
@@ -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 _floatundidf _floatdisf _floatundisf
|
|||
|
|||
# MULTILIB_OPTIONS = mhard-float/msoft-float |
|||
# MULTILIB_DIRNAMES = hard-float soft-float |
|||
|
|||
--- gcc-4.2-20061205/gcc/config/arm/linux-elf.h 2006-12-08 15:18:33.000000000 -0800
|
|||
+++ gcc-4.2-20061205/gcc/config/arm/linux-elf.h 2006-12-08 15:18:33.000000000 -0800
|
|||
@@ -63,7 +63,7 @@
|
|||
%{shared:-lc} \ |
|||
%{!shared:%{profile:-lc_p}%{!profile:-lc}}" |
|||
|
|||
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
|
|||
+#define LIBGCC_SPEC "-lgcc"
|
|||
|
|||
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" |
|||
|
@ -1,37 +0,0 @@ |
|||
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|||
# |
|||
# Filename: package/.../uclibc/pkg_patch/gcc/920-soft-float.patch |
|||
# Copyright (C) 2009 The OpenSDE Project |
|||
# |
|||
# More information can be found in the files COPYING and README. |
|||
# |
|||
# This patch file is dual-licensed. It is available under the license the |
|||
# patched project is licensed under, as long as it is an OpenSource license |
|||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|||
# of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# --- SDE-COPYRIGHT-NOTE-END --- |
|||
|
|||
diff -uNpr gcc-4.2.1_orig/gcc/config/rs6000/darwin-ldouble.c gcc-4.2.1/gcc/config/rs6000/darwin-ldouble.c
|
|||
--- gcc-4.2.1_orig/gcc/config/rs6000/darwin-ldouble.c 2007-03-05 11:54:00.000000000 -0500
|
|||
+++ gcc-4.2.1/gcc/config/rs6000/darwin-ldouble.c 2008-01-31 17:51:24.000000000 -0500
|
|||
@@ -70,6 +70,8 @@ Software Foundation, 51 Franklin Street,
|
|||
but GCC currently generates poor code when a union is used to turn |
|||
a long double into a pair of doubles. */ |
|||
|
|||
+#if defined (_SOFT_FLOAT) && defined (__LONG_DOUBLE_128__)
|
|||
+
|
|||
long double __gcc_qadd (double, double, double, double); |
|||
long double __gcc_qsub (double, double, double, double); |
|||
long double __gcc_qmul (double, double, double, double); |
|||
@@ -219,8 +221,6 @@ __gcc_qdiv (double a, double b, double c
|
|||
return z.ldval; |
|||
} |
|||
|
|||
-#if defined (_SOFT_FLOAT) && defined (__LONG_DOUBLE_128__)
|
|||
-
|
|||
long double __gcc_qneg (double, double); |
|||
int __gcc_qeq (double, double, double, double); |
|||
int __gcc_qne (double, double, double, double); |