mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 09:32:13 +02:00
meta: Drop further remnants of uclibc support
uclibc support was removed a while ago and musl works much better. Start to remove the various overrides and patches related to uclibc which are no longer needed. uclibc support in a layer would still be possible. I have strong reasons to believe nobody is still using uclibc since patches are missing and I doubt the metadata even parses anymore. (From OE-Core rev: ec03023d2165b49a52b83bac1ea2f0bfded7b852) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -85,7 +85,6 @@ PID = "${@os.getpid()}"
|
||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||
|
||||
LDCONFIGDEPEND ?= "ldconfig-native:do_populate_sysroot"
|
||||
LDCONFIGDEPEND_libc-uclibc = ""
|
||||
LDCONFIGDEPEND_libc-musl = ""
|
||||
|
||||
# This is needed to have depmod data in PKGDATA_DIR,
|
||||
|
||||
@@ -108,7 +108,7 @@ PKG_CONFIG_SYSROOT_DIR = ""
|
||||
PKG_CONFIG_SYSTEM_LIBRARY_PATH[unexport] = "1"
|
||||
PKG_CONFIG_SYSTEM_INCLUDE_PATH[unexport] = "1"
|
||||
|
||||
# we dont want libc-uclibc or libc-glibc to kick in for native recipes
|
||||
# we dont want libc-*libc to kick in for native recipes
|
||||
LIBCOVERRIDE = ""
|
||||
CLASSOVERRIDE = "class-native"
|
||||
MACHINEOVERRIDES = ""
|
||||
|
||||
@@ -3,7 +3,6 @@ inherit toolchain-scripts-base siteinfo kernel-arch
|
||||
# We want to be able to change the value of MULTIMACH_TARGET_SYS, because it
|
||||
# doesn't always match our expectations... but we default to the stock value
|
||||
REAL_MULTIMACH_TARGET_SYS ?= "${MULTIMACH_TARGET_SYS}"
|
||||
TARGET_CC_ARCH_append_libc-uclibc = " -muclibc"
|
||||
TARGET_CC_ARCH_append_libc-musl = " -mmusl"
|
||||
|
||||
# default debug prefix map isn't valid in the SDK
|
||||
|
||||
@@ -23,7 +23,6 @@ EXTRA_OECONF += "M4=m4"
|
||||
SRC_URI[md5sum] = "c342201de104cc9ce0a21e0ad10d4021"
|
||||
SRC_URI[sha256sum] = "a72428c7917bdf9fa93cb8181c971b6e22834125848cf1d03ce10b1bb0716fe1"
|
||||
|
||||
LDFLAGS_prepend_libc-uclibc = " -lrt "
|
||||
DEPENDS_class-native = "gettext-minimal-native"
|
||||
|
||||
inherit autotools gettext texinfo
|
||||
|
||||
@@ -31,12 +31,6 @@ SRC_URI = "\
|
||||
${BASEURI} \
|
||||
${BACKPORTS} \
|
||||
file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
|
||||
file://0002-uclibc-conf.patch \
|
||||
file://0003-gcc-uclibc-locale-ctype_touplow_t.patch \
|
||||
file://0004-uclibc-locale.patch \
|
||||
file://0005-uclibc-locale-no__x.patch \
|
||||
file://0006-uclibc-locale-wchar_fix.patch \
|
||||
file://0007-uclibc-locale-update.patch \
|
||||
file://0008-missing-execinfo_h.patch \
|
||||
file://0009-c99-snprintf.patch \
|
||||
file://0010-gcc-poison-system-directories.patch \
|
||||
@@ -138,8 +132,6 @@ EXTRA_OECONF_INITIAL = "\
|
||||
gcc_cv_libc_provides_ssp=yes \
|
||||
"
|
||||
|
||||
EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
|
||||
|
||||
EXTRA_OECONF_PATHS = "\
|
||||
--with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
|
||||
--with-sysroot=/not/exist \
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
From b67c3a844bccec1766a7ec120e2d18cdcbc5f114 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:38:25 +0400
|
||||
Subject: [PATCH 02/46] uclibc-conf
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
contrib/regression/objs-gcc.sh | 4 ++++
|
||||
libjava/classpath/ltconfig | 4 ++--
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh
|
||||
index 60b0497..6dc7ead 100755
|
||||
--- a/contrib/regression/objs-gcc.sh
|
||||
+++ b/contrib/regression/objs-gcc.sh
|
||||
@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
|
||||
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
|
||||
diff --git a/libjava/classpath/ltconfig b/libjava/classpath/ltconfig
|
||||
index 743d951..ae4ea60 100755
|
||||
--- a/libjava/classpath/ltconfig
|
||||
+++ b/libjava/classpath/ltconfig
|
||||
@@ -603,7 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||
|
||||
# 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
|
||||
|
||||
@@ -1247,7 +1247,7 @@ linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
|
||||
;;
|
||||
|
||||
# This must be Linux ELF.
|
||||
-linux-gnu*)
|
||||
+linux*)
|
||||
version_type=linux
|
||||
need_lib_prefix=no
|
||||
need_version=no
|
||||
--
|
||||
2.6.3
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
From 9bcb3a1848ff0f8990301ca09a25b15c2cf90c6f Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:40:12 +0400
|
||||
Subject: [PATCH 03/46] gcc-uclibc-locale-ctype_touplow_t
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
libstdc++-v3/config/locale/generic/c_locale.cc | 5 +++++
|
||||
libstdc++-v3/config/locale/generic/c_locale.h | 9 +++++++++
|
||||
libstdc++-v3/config/os/gnu-linux/ctype_base.h | 9 +++++++++
|
||||
3 files changed, 23 insertions(+)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc
|
||||
index 6da5f22..2f85c2f 100644
|
||||
--- a/libstdc++-v3/config/locale/generic/c_locale.cc
|
||||
+++ b/libstdc++-v3/config/locale/generic/c_locale.cc
|
||||
@@ -263,5 +263,10 @@ _GLIBCXX_END_NAMESPACE_VERSION
|
||||
#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||
#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
|
||||
extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
|
||||
+#ifdef __UCLIBC__
|
||||
+// This is because __c_locale is of type __ctype_touplow_t* which is short on uclibc. for glibc its int*
|
||||
+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPs, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPs);
|
||||
+#else
|
||||
_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
|
||||
+#endif
|
||||
#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||
diff --git a/libstdc++-v3/config/locale/generic/c_locale.h b/libstdc++-v3/config/locale/generic/c_locale.h
|
||||
index ee3ef86..7fd5485 100644
|
||||
--- a/libstdc++-v3/config/locale/generic/c_locale.h
|
||||
+++ b/libstdc++-v3/config/locale/generic/c_locale.h
|
||||
@@ -40,13 +40,22 @@
|
||||
|
||||
#include <clocale>
|
||||
|
||||
+#ifdef __UCLIBC__
|
||||
+#include <features.h>
|
||||
+#include <ctype.h>
|
||||
+#endif
|
||||
+
|
||||
#define _GLIBCXX_NUM_CATEGORIES 0
|
||||
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
+#ifdef __UCLIBC__
|
||||
+ typedef __ctype_touplow_t* __c_locale;
|
||||
+#else
|
||||
typedef int* __c_locale;
|
||||
+#endif
|
||||
|
||||
// Convert numeric value of type double and long double to string and
|
||||
// return length of string. If vsnprintf is available use it, otherwise
|
||||
diff --git a/libstdc++-v3/config/os/gnu-linux/ctype_base.h b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
|
||||
index fd52b73..2627cf3 100644
|
||||
--- a/libstdc++-v3/config/os/gnu-linux/ctype_base.h
|
||||
+++ b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
|
||||
@@ -33,6 +33,11 @@
|
||||
|
||||
// Information as gleaned from /usr/include/ctype.h
|
||||
|
||||
+#ifdef __UCLIBC__
|
||||
+#include <features.h>
|
||||
+#include <ctype.h>
|
||||
+#endif
|
||||
+
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
@@ -41,7 +46,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
struct ctype_base
|
||||
{
|
||||
// Non-standard typedefs.
|
||||
+#ifdef __UCLIBC__
|
||||
+ typedef const __ctype_touplow_t* __to_type;
|
||||
+#else
|
||||
typedef const int* __to_type;
|
||||
+#endif
|
||||
|
||||
// NB: Offsets into ctype<char>::_M_table force a particular size
|
||||
// on the mask type. Because of this, we don't use an enum.
|
||||
--
|
||||
2.6.3
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,257 +0,0 @@
|
||||
From 72a1a4af3c18627f59aa5ba1f753a89011b4e4f0 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:42:36 +0400
|
||||
Subject: [PATCH 05/46] uclibc-locale-no__x
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
.../config/locale/uclibc/c++locale_internal.h | 45 ++++++++++++++++++++++
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.cc | 14 -------
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.h | 1 +
|
||||
.../config/locale/uclibc/collate_members.cc | 7 ----
|
||||
libstdc++-v3/config/locale/uclibc/ctype_members.cc | 7 ----
|
||||
.../config/locale/uclibc/messages_members.cc | 7 +---
|
||||
.../config/locale/uclibc/messages_members.h | 18 ++++-----
|
||||
.../config/locale/uclibc/monetary_members.cc | 4 --
|
||||
.../config/locale/uclibc/numeric_members.cc | 3 --
|
||||
libstdc++-v3/config/locale/uclibc/time_members.cc | 3 --
|
||||
10 files changed, 55 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
index 2ae3e4a..e74fddf 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
@@ -60,4 +60,49 @@ extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
|
||||
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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
index 5081dc1..21430d0 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
@@ -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<>
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
index da07c1f..4bca5f1 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
@@ -68,6 +68,7 @@ namespace __gnu_cxx
|
||||
{
|
||||
extern "C" __typeof(uselocale) __uselocale;
|
||||
}
|
||||
+#define __uselocale uselocale
|
||||
#endif
|
||||
|
||||
namespace std
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/collate_members.cc b/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
index c2664a7..ec5c329 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
@@ -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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
index 7294e3a..7b12861 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
@@ -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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.cc b/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
index 13594d9..d7693b4 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
@@ -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
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
index 1424078..d89da33 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
@@ -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 @@ extern "C" char *__bindtextdomain(const char *domainname,
|
||||
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 @@ extern "C" char *__bindtextdomain(const char *domainname,
|
||||
{
|
||||
// No error checking is done, assume the catalog exists and can
|
||||
// be used.
|
||||
- __textdomain(__s.c_str());
|
||||
+ textdomain(__s.c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
index aa52731..2e6f80a 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
@@ -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:
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
index 883ec1a..2c70642 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
@@ -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
|
||||
{
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
index e0707d7..d848ed5 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
@@ -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
|
||||
{
|
||||
--
|
||||
2.6.3
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
From b1298344f0c221c382a95af689f7f3ecd864f531 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:45:57 +0400
|
||||
Subject: [PATCH 06/46] uclibc-locale-wchar_fix
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
libstdc++-v3/config/locale/uclibc/monetary_members.cc | 4 ++--
|
||||
libstdc++-v3/config/locale/uclibc/numeric_members.cc | 13 +++++++++++++
|
||||
2 files changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
index 2e6f80a..31ebb9f 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
@@ -401,7 +401,7 @@ namespace std
|
||||
# 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 @@ namespace std
|
||||
# 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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
index 2c70642..d5c8961 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
@@ -127,12 +127,25 @@ namespace std
|
||||
{
|
||||
// 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 = "";
|
||||
--
|
||||
2.6.3
|
||||
|
||||
@@ -1,542 +0,0 @@
|
||||
From e9d7cb62741c22d667fe56e98d50753d89aefdc3 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:46:58 +0400
|
||||
Subject: [PATCH 07/46] uclibc-locale-update
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
.../config/locale/uclibc/c++locale_internal.h | 3 +
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.cc | 74 ++++++++++------------
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.h | 42 ++++++------
|
||||
libstdc++-v3/config/locale/uclibc/ctype_members.cc | 51 +++++++++++----
|
||||
.../config/locale/uclibc/messages_members.h | 12 ++--
|
||||
.../config/locale/uclibc/monetary_members.cc | 34 ++++++----
|
||||
.../config/locale/uclibc/numeric_members.cc | 5 ++
|
||||
libstdc++-v3/config/locale/uclibc/time_members.cc | 18 ++++--
|
||||
libstdc++-v3/config/locale/uclibc/time_members.h | 17 +++--
|
||||
9 files changed, 158 insertions(+), 98 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
index e74fddf..971a6b4 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
@@ -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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
index 21430d0..1b9d8e1 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
@@ -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 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
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 @@ namespace __gnu_cxx
|
||||
"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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
index 4bca5f1..64a6d46 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
@@ -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 @@ namespace std
|
||||
#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 @@ namespace std
|
||||
# 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);
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
index 7b12861..13e011d 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
@@ -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 @@ namespace std
|
||||
#endif
|
||||
}
|
||||
}
|
||||
+ ctype_byname<char>::~ctype_byname()
|
||||
+ { }
|
||||
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
ctype<wchar_t>::__wmask_type
|
||||
@@ -138,17 +144,33 @@ namespace std
|
||||
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 @@ namespace std
|
||||
#endif
|
||||
}
|
||||
#endif // _GLIBCXX_USE_WCHAR_T
|
||||
-}
|
||||
+
|
||||
+_GLIBCXX_END_NAMESPACE
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
index d89da33..067657a 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
@@ -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>
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
index 31ebb9f..7679b9c 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
@@ -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 @@ namespace std
|
||||
}
|
||||
break;
|
||||
default:
|
||||
- ;
|
||||
+ __ret = pattern();
|
||||
}
|
||||
return __ret;
|
||||
}
|
||||
@@ -390,7 +395,9 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
#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 @@ namespace std
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -545,8 +552,11 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
#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 @@ namespace std
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
index d5c8961..8ae8969 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
@@ -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__
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
index d848ed5..f24d53e 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
@@ -53,11 +53,14 @@ namespace std
|
||||
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 @@ namespace std
|
||||
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)
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.h b/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
index ba8e858..1665dde 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
@@ -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>
|
||||
--
|
||||
2.6.3
|
||||
|
||||
@@ -32,12 +32,6 @@ BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2"
|
||||
SRC_URI = "\
|
||||
${BASEURI} \
|
||||
file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
|
||||
file://0002-uclibc-conf.patch \
|
||||
file://0003-gcc-uclibc-locale-ctype_touplow_t.patch \
|
||||
file://0004-uclibc-locale.patch \
|
||||
file://0005-uclibc-locale-no__x.patch \
|
||||
file://0006-uclibc-locale-wchar_fix.patch \
|
||||
file://0007-uclibc-locale-update.patch \
|
||||
file://0008-missing-execinfo_h.patch \
|
||||
file://0009-c99-snprintf.patch \
|
||||
file://0010-gcc-poison-system-directories.patch \
|
||||
@@ -128,8 +122,6 @@ EXTRA_OECONF_INITIAL = "\
|
||||
gcc_cv_libc_provides_ssp=yes \
|
||||
"
|
||||
|
||||
EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
|
||||
|
||||
EXTRA_OECONF_PATHS = "\
|
||||
--with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
|
||||
--with-sysroot=/not/exist \
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
From 4efc5a258c812875743647d756f75c93c4d514a5 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:38:25 +0400
|
||||
Subject: [PATCH 02/46] uclibc-conf
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
contrib/regression/objs-gcc.sh | 4 ++++
|
||||
libjava/classpath/ltconfig | 4 ++--
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh
|
||||
index 60b0497..6dc7ead 100755
|
||||
--- a/contrib/regression/objs-gcc.sh
|
||||
+++ b/contrib/regression/objs-gcc.sh
|
||||
@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
|
||||
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
|
||||
diff --git a/libjava/classpath/ltconfig b/libjava/classpath/ltconfig
|
||||
index d318957..df55950 100755
|
||||
--- a/libjava/classpath/ltconfig
|
||||
+++ b/libjava/classpath/ltconfig
|
||||
@@ -603,7 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||
|
||||
# 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
|
||||
|
||||
@@ -1247,7 +1247,7 @@ linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
|
||||
;;
|
||||
|
||||
# This must be Linux ELF.
|
||||
-linux-gnu*)
|
||||
+linux*)
|
||||
version_type=linux
|
||||
need_lib_prefix=no
|
||||
need_version=no
|
||||
--
|
||||
2.8.2
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
From ad5fd283fc7ef04f66c7fb003805364ea3bd34e9 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:40:12 +0400
|
||||
Subject: [PATCH 03/46] gcc-uclibc-locale-ctype_touplow_t
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
libstdc++-v3/config/locale/generic/c_locale.cc | 5 +++++
|
||||
libstdc++-v3/config/locale/generic/c_locale.h | 9 +++++++++
|
||||
libstdc++-v3/config/os/gnu-linux/ctype_base.h | 9 +++++++++
|
||||
3 files changed, 23 insertions(+)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc
|
||||
index ef6ce8f..4740636 100644
|
||||
--- a/libstdc++-v3/config/locale/generic/c_locale.cc
|
||||
+++ b/libstdc++-v3/config/locale/generic/c_locale.cc
|
||||
@@ -273,5 +273,10 @@ _GLIBCXX_END_NAMESPACE_VERSION
|
||||
#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||
#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
|
||||
extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
|
||||
+#ifdef __UCLIBC__
|
||||
+// This is because __c_locale is of type __ctype_touplow_t* which is short on uclibc. for glibc its int*
|
||||
+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPs, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPs);
|
||||
+#else
|
||||
_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
|
||||
+#endif
|
||||
#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||
diff --git a/libstdc++-v3/config/locale/generic/c_locale.h b/libstdc++-v3/config/locale/generic/c_locale.h
|
||||
index 794471e..d65f955 100644
|
||||
--- a/libstdc++-v3/config/locale/generic/c_locale.h
|
||||
+++ b/libstdc++-v3/config/locale/generic/c_locale.h
|
||||
@@ -40,13 +40,22 @@
|
||||
|
||||
#include <clocale>
|
||||
|
||||
+#ifdef __UCLIBC__
|
||||
+#include <features.h>
|
||||
+#include <ctype.h>
|
||||
+#endif
|
||||
+
|
||||
#define _GLIBCXX_NUM_CATEGORIES 0
|
||||
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
+#ifdef __UCLIBC__
|
||||
+ typedef __ctype_touplow_t* __c_locale;
|
||||
+#else
|
||||
typedef int* __c_locale;
|
||||
+#endif
|
||||
|
||||
// Convert numeric value of type double and long double to string and
|
||||
// return length of string. If vsnprintf is available use it, otherwise
|
||||
diff --git a/libstdc++-v3/config/os/gnu-linux/ctype_base.h b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
|
||||
index 591c793..55eb0e9 100644
|
||||
--- a/libstdc++-v3/config/os/gnu-linux/ctype_base.h
|
||||
+++ b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
|
||||
@@ -33,6 +33,11 @@
|
||||
|
||||
// Information as gleaned from /usr/include/ctype.h
|
||||
|
||||
+#ifdef __UCLIBC__
|
||||
+#include <features.h>
|
||||
+#include <ctype.h>
|
||||
+#endif
|
||||
+
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
@@ -41,7 +46,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
struct ctype_base
|
||||
{
|
||||
// Non-standard typedefs.
|
||||
+#ifdef __UCLIBC__
|
||||
+ typedef const __ctype_touplow_t* __to_type;
|
||||
+#else
|
||||
typedef const int* __to_type;
|
||||
+#endif
|
||||
|
||||
// NB: Offsets into ctype<char>::_M_table force a particular size
|
||||
// on the mask type. Because of this, we don't use an enum.
|
||||
--
|
||||
2.8.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,257 +0,0 @@
|
||||
From c01c14e8e9be382ecd4121ee70f5003b4cb0f904 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:42:36 +0400
|
||||
Subject: [PATCH 05/46] uclibc-locale-no__x
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
.../config/locale/uclibc/c++locale_internal.h | 45 ++++++++++++++++++++++
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.cc | 14 -------
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.h | 1 +
|
||||
.../config/locale/uclibc/collate_members.cc | 7 ----
|
||||
libstdc++-v3/config/locale/uclibc/ctype_members.cc | 7 ----
|
||||
.../config/locale/uclibc/messages_members.cc | 7 +---
|
||||
.../config/locale/uclibc/messages_members.h | 18 ++++-----
|
||||
.../config/locale/uclibc/monetary_members.cc | 4 --
|
||||
.../config/locale/uclibc/numeric_members.cc | 3 --
|
||||
libstdc++-v3/config/locale/uclibc/time_members.cc | 3 --
|
||||
10 files changed, 55 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
index 2ae3e4a..e74fddf 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
@@ -60,4 +60,49 @@ extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
|
||||
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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
index 5081dc1..21430d0 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
@@ -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<>
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
index da07c1f..4bca5f1 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
@@ -68,6 +68,7 @@ namespace __gnu_cxx
|
||||
{
|
||||
extern "C" __typeof(uselocale) __uselocale;
|
||||
}
|
||||
+#define __uselocale uselocale
|
||||
#endif
|
||||
|
||||
namespace std
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/collate_members.cc b/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
index c2664a7..ec5c329 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
@@ -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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
index 7294e3a..7b12861 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
@@ -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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.cc b/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
index 13594d9..d7693b4 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
@@ -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
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
index 1424078..d89da33 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
@@ -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 @@ extern "C" char *__bindtextdomain(const char *domainname,
|
||||
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 @@ extern "C" char *__bindtextdomain(const char *domainname,
|
||||
{
|
||||
// No error checking is done, assume the catalog exists and can
|
||||
// be used.
|
||||
- __textdomain(__s.c_str());
|
||||
+ textdomain(__s.c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
index aa52731..2e6f80a 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
@@ -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:
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
index 883ec1a..2c70642 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
@@ -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
|
||||
{
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
index e0707d7..d848ed5 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
@@ -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
|
||||
{
|
||||
--
|
||||
2.8.2
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
From e7a4760fb40008cae33e6fc7dc4cfef6c2fd5f93 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:45:57 +0400
|
||||
Subject: [PATCH 06/46] uclibc-locale-wchar_fix
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
libstdc++-v3/config/locale/uclibc/monetary_members.cc | 4 ++--
|
||||
libstdc++-v3/config/locale/uclibc/numeric_members.cc | 13 +++++++++++++
|
||||
2 files changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
index 2e6f80a..31ebb9f 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
@@ -401,7 +401,7 @@ namespace std
|
||||
# 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 @@ namespace std
|
||||
# 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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
index 2c70642..d5c8961 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
@@ -127,12 +127,25 @@ namespace std
|
||||
{
|
||||
// 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 = "";
|
||||
--
|
||||
2.8.2
|
||||
|
||||
@@ -1,542 +0,0 @@
|
||||
From 8d53a38a3038104e6830ecea5e4beadce54457c1 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:46:58 +0400
|
||||
Subject: [PATCH 07/46] uclibc-locale-update
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
.../config/locale/uclibc/c++locale_internal.h | 3 +
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.cc | 74 ++++++++++------------
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.h | 42 ++++++------
|
||||
libstdc++-v3/config/locale/uclibc/ctype_members.cc | 51 +++++++++++----
|
||||
.../config/locale/uclibc/messages_members.h | 12 ++--
|
||||
.../config/locale/uclibc/monetary_members.cc | 34 ++++++----
|
||||
.../config/locale/uclibc/numeric_members.cc | 5 ++
|
||||
libstdc++-v3/config/locale/uclibc/time_members.cc | 18 ++++--
|
||||
libstdc++-v3/config/locale/uclibc/time_members.h | 17 +++--
|
||||
9 files changed, 158 insertions(+), 98 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
index e74fddf..971a6b4 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
@@ -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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
index 21430d0..1b9d8e1 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
@@ -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 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
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 @@ namespace __gnu_cxx
|
||||
"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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
index 4bca5f1..64a6d46 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
@@ -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 @@ namespace std
|
||||
#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 @@ namespace std
|
||||
# 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);
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
index 7b12861..13e011d 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
@@ -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 @@ namespace std
|
||||
#endif
|
||||
}
|
||||
}
|
||||
+ ctype_byname<char>::~ctype_byname()
|
||||
+ { }
|
||||
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
ctype<wchar_t>::__wmask_type
|
||||
@@ -138,17 +144,33 @@ namespace std
|
||||
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 @@ namespace std
|
||||
#endif
|
||||
}
|
||||
#endif // _GLIBCXX_USE_WCHAR_T
|
||||
-}
|
||||
+
|
||||
+_GLIBCXX_END_NAMESPACE
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
index d89da33..067657a 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
@@ -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>
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
index 31ebb9f..7679b9c 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
@@ -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 @@ namespace std
|
||||
}
|
||||
break;
|
||||
default:
|
||||
- ;
|
||||
+ __ret = pattern();
|
||||
}
|
||||
return __ret;
|
||||
}
|
||||
@@ -390,7 +395,9 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
#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 @@ namespace std
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -545,8 +552,11 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
#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 @@ namespace std
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
index d5c8961..8ae8969 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
@@ -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__
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
index d848ed5..f24d53e 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
@@ -53,11 +53,14 @@ namespace std
|
||||
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 @@ namespace std
|
||||
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)
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.h b/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
index ba8e858..1665dde 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
@@ -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>
|
||||
--
|
||||
2.8.2
|
||||
|
||||
@@ -32,12 +32,6 @@ BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2"
|
||||
SRC_URI = "\
|
||||
${BASEURI} \
|
||||
file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
|
||||
file://0002-uclibc-conf.patch \
|
||||
file://0003-gcc-uclibc-locale-ctype_touplow_t.patch \
|
||||
file://0004-uclibc-locale.patch \
|
||||
file://0005-uclibc-locale-no__x.patch \
|
||||
file://0006-uclibc-locale-wchar_fix.patch \
|
||||
file://0007-uclibc-locale-update.patch \
|
||||
file://0008-c99-snprintf.patch \
|
||||
file://0009-gcc-poison-system-directories.patch \
|
||||
file://0010-gcc-poison-dir-extend.patch \
|
||||
@@ -124,8 +118,6 @@ EXTRA_OECONF_INITIAL = "\
|
||||
gcc_cv_libc_provides_ssp=yes \
|
||||
"
|
||||
|
||||
EXTRA_OECONF_append_libc-uclibc = " --disable-decimal-float "
|
||||
|
||||
EXTRA_OECONF_PATHS = "\
|
||||
--with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
|
||||
--with-sysroot=/not/exist \
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
From b4edd6af6e5c007d04ba0a0b6f614ac5773c9b36 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:38:25 +0400
|
||||
Subject: [PATCH 02/47] uclibc-conf
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
contrib/regression/objs-gcc.sh | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh
|
||||
index 60b0497fea2..6dc7eadff36 100755
|
||||
--- a/contrib/regression/objs-gcc.sh
|
||||
+++ b/contrib/regression/objs-gcc.sh
|
||||
@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
|
||||
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
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
From e53fb4bcf1e584413ca7207511757287a0156147 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:40:12 +0400
|
||||
Subject: [PATCH 03/47] gcc-uclibc-locale-ctype_touplow_t
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
libstdc++-v3/config/locale/generic/c_locale.cc | 5 +++++
|
||||
libstdc++-v3/config/locale/generic/c_locale.h | 9 +++++++++
|
||||
libstdc++-v3/config/os/gnu-linux/ctype_base.h | 9 +++++++++
|
||||
3 files changed, 23 insertions(+)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc
|
||||
index bd311e300f8..3190973d164 100644
|
||||
--- a/libstdc++-v3/config/locale/generic/c_locale.cc
|
||||
+++ b/libstdc++-v3/config/locale/generic/c_locale.cc
|
||||
@@ -273,5 +273,10 @@ _GLIBCXX_END_NAMESPACE_VERSION
|
||||
#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||
#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
|
||||
extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
|
||||
+#ifdef __UCLIBC__
|
||||
+// This is because __c_locale is of type __ctype_touplow_t* which is short on uclibc. for glibc its int*
|
||||
+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPs, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPs);
|
||||
+#else
|
||||
_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
|
||||
+#endif
|
||||
#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
|
||||
diff --git a/libstdc++-v3/config/locale/generic/c_locale.h b/libstdc++-v3/config/locale/generic/c_locale.h
|
||||
index ce9fbb80d76..54211bee314 100644
|
||||
--- a/libstdc++-v3/config/locale/generic/c_locale.h
|
||||
+++ b/libstdc++-v3/config/locale/generic/c_locale.h
|
||||
@@ -40,13 +40,22 @@
|
||||
|
||||
#include <clocale>
|
||||
|
||||
+#ifdef __UCLIBC__
|
||||
+#include <features.h>
|
||||
+#include <ctype.h>
|
||||
+#endif
|
||||
+
|
||||
#define _GLIBCXX_NUM_CATEGORIES 0
|
||||
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
|
||||
+#ifdef __UCLIBC__
|
||||
+ typedef __ctype_touplow_t* __c_locale;
|
||||
+#else
|
||||
typedef int* __c_locale;
|
||||
+#endif
|
||||
|
||||
// Convert numeric value of type double and long double to string and
|
||||
// return length of string. If vsnprintf is available use it, otherwise
|
||||
diff --git a/libstdc++-v3/config/os/gnu-linux/ctype_base.h b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
|
||||
index 6ee1debdc2a..94bf3cf00aa 100644
|
||||
--- a/libstdc++-v3/config/os/gnu-linux/ctype_base.h
|
||||
+++ b/libstdc++-v3/config/os/gnu-linux/ctype_base.h
|
||||
@@ -33,6 +33,11 @@
|
||||
|
||||
// Information as gleaned from /usr/include/ctype.h
|
||||
|
||||
+#ifdef __UCLIBC__
|
||||
+#include <features.h>
|
||||
+#include <ctype.h>
|
||||
+#endif
|
||||
+
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
@@ -41,7 +46,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
struct ctype_base
|
||||
{
|
||||
// Non-standard typedefs.
|
||||
+#ifdef __UCLIBC__
|
||||
+ typedef const __ctype_touplow_t* __to_type;
|
||||
+#else
|
||||
typedef const int* __to_type;
|
||||
+#endif
|
||||
|
||||
// NB: Offsets into ctype<char>::_M_table force a particular size
|
||||
// on the mask type. Because of this, we don't use an enum.
|
||||
--
|
||||
2.12.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,257 +0,0 @@
|
||||
From 78592335e36f76bebb3b60b50bced1cde5586a9b Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:42:36 +0400
|
||||
Subject: [PATCH 05/47] uclibc-locale-no__x
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
.../config/locale/uclibc/c++locale_internal.h | 45 ++++++++++++++++++++++
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.cc | 14 -------
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.h | 1 +
|
||||
.../config/locale/uclibc/collate_members.cc | 7 ----
|
||||
libstdc++-v3/config/locale/uclibc/ctype_members.cc | 7 ----
|
||||
.../config/locale/uclibc/messages_members.cc | 7 +---
|
||||
.../config/locale/uclibc/messages_members.h | 18 ++++-----
|
||||
.../config/locale/uclibc/monetary_members.cc | 4 --
|
||||
.../config/locale/uclibc/numeric_members.cc | 3 --
|
||||
libstdc++-v3/config/locale/uclibc/time_members.cc | 3 --
|
||||
10 files changed, 55 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
index 2ae3e4aaad9..e74fddfa409 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
@@ -60,4 +60,49 @@ extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
|
||||
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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
index 5081dc1cc64..21430d05834 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
@@ -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<>
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
index da07c1f7dcf..4bca5f1f8d6 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
@@ -68,6 +68,7 @@ namespace __gnu_cxx
|
||||
{
|
||||
extern "C" __typeof(uselocale) __uselocale;
|
||||
}
|
||||
+#define __uselocale uselocale
|
||||
#endif
|
||||
|
||||
namespace std
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/collate_members.cc b/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
index c2664a77f30..ec5c3291699 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/collate_members.cc
|
||||
@@ -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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
index 7294e3a84e1..7b12861303c 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
@@ -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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.cc b/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
index 13594d9fe9a..d7693b4c413 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.cc
|
||||
@@ -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
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
index 1424078173a..d89da339d59 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
@@ -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 @@ extern "C" char *__bindtextdomain(const char *domainname,
|
||||
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 @@ extern "C" char *__bindtextdomain(const char *domainname,
|
||||
{
|
||||
// No error checking is done, assume the catalog exists and can
|
||||
// be used.
|
||||
- __textdomain(__s.c_str());
|
||||
+ textdomain(__s.c_str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
index aa52731695f..2e6f80a98d4 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
@@ -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:
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
index 883ec1a1d4d..2c7064242b1 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
@@ -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
|
||||
{
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
index e0707d76a66..d848ed5a442 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
@@ -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
|
||||
{
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
From 119f6b4b8a6fcaa536ad567deedf8cad3104d51d Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:45:57 +0400
|
||||
Subject: [PATCH 06/47] uclibc-locale-wchar_fix
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
libstdc++-v3/config/locale/uclibc/monetary_members.cc | 4 ++--
|
||||
libstdc++-v3/config/locale/uclibc/numeric_members.cc | 13 +++++++++++++
|
||||
2 files changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
index 2e6f80a98d4..31ebb9f47f3 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
@@ -401,7 +401,7 @@ namespace std
|
||||
# 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 @@ namespace std
|
||||
# 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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
index 2c7064242b1..d5c896152a5 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
@@ -127,12 +127,25 @@ namespace std
|
||||
{
|
||||
// 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 = "";
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,542 +0,0 @@
|
||||
From 2c05fb5dc63c3366da55683dd9744246dc75af29 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:46:58 +0400
|
||||
Subject: [PATCH 07/47] uclibc-locale-update
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
.../config/locale/uclibc/c++locale_internal.h | 3 +
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.cc | 74 ++++++++++------------
|
||||
libstdc++-v3/config/locale/uclibc/c_locale.h | 42 ++++++------
|
||||
libstdc++-v3/config/locale/uclibc/ctype_members.cc | 51 +++++++++++----
|
||||
.../config/locale/uclibc/messages_members.h | 12 ++--
|
||||
.../config/locale/uclibc/monetary_members.cc | 34 ++++++----
|
||||
.../config/locale/uclibc/numeric_members.cc | 5 ++
|
||||
libstdc++-v3/config/locale/uclibc/time_members.cc | 18 ++++--
|
||||
libstdc++-v3/config/locale/uclibc/time_members.h | 17 +++--
|
||||
9 files changed, 158 insertions(+), 98 deletions(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
index e74fddfa409..971a6b4e5fb 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
|
||||
@@ -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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.cc b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
index 21430d05834..1b9d8e185b3 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.cc
|
||||
@@ -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 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
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 @@ namespace __gnu_cxx
|
||||
"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
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/c_locale.h b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
index 4bca5f1f8d6..64a6d46a787 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/c_locale.h
|
||||
@@ -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 @@ namespace std
|
||||
#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 @@ namespace std
|
||||
# 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);
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/ctype_members.cc b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
index 7b12861303c..13e011de617 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/ctype_members.cc
|
||||
@@ -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 @@ namespace std
|
||||
#endif
|
||||
}
|
||||
}
|
||||
+ ctype_byname<char>::~ctype_byname()
|
||||
+ { }
|
||||
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
ctype<wchar_t>::__wmask_type
|
||||
@@ -138,17 +144,33 @@ namespace std
|
||||
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 @@ namespace std
|
||||
#endif
|
||||
}
|
||||
#endif // _GLIBCXX_USE_WCHAR_T
|
||||
-}
|
||||
+
|
||||
+_GLIBCXX_END_NAMESPACE
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/messages_members.h b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
index d89da339d59..067657aa71f 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/messages_members.h
|
||||
@@ -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>
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
index 31ebb9f47f3..7679b9c9b36 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
|
||||
@@ -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 @@ namespace std
|
||||
}
|
||||
break;
|
||||
default:
|
||||
- ;
|
||||
+ __ret = pattern();
|
||||
}
|
||||
return __ret;
|
||||
}
|
||||
@@ -390,7 +395,9 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
#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 @@ namespace std
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -545,8 +552,11 @@ namespace std
|
||||
__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 @@ namespace std
|
||||
#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 @@ namespace std
|
||||
#ifdef __UCLIBC_HAS_XLOCALE__
|
||||
__uselocale(__old);
|
||||
#else
|
||||
- setlocale(LC_ALL, __old);
|
||||
- free(__old);
|
||||
+ setlocale(LC_ALL, __sav);
|
||||
+ delete [] __sav;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
index d5c896152a5..8ae8969d55e 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
|
||||
@@ -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__
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.cc b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
index d848ed5a442..f24d53ec9e8 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/time_members.cc
|
||||
@@ -53,11 +53,14 @@ namespace std
|
||||
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 @@ namespace std
|
||||
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)
|
||||
diff --git a/libstdc++-v3/config/locale/uclibc/time_members.h b/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
index ba8e8587c0f..1665dde239a 100644
|
||||
--- a/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
+++ b/libstdc++-v3/config/locale/uclibc/time_members.h
|
||||
@@ -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>
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -53,9 +53,7 @@ export gcc_cv_collect2_libs = 'none required'
|
||||
# in the config.log files (which might not get generated until do_compile
|
||||
# hence being missed by the insane do_configure check).
|
||||
|
||||
# Build uclibc compilers without cxa_atexit support
|
||||
EXTRA_OECONF_append_linux = " --enable-__cxa_atexit"
|
||||
EXTRA_OECONF_append_libc-uclibc = " --enable-__cxa_atexit"
|
||||
|
||||
EXTRA_OECONF_append_mips64 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
|
||||
EXTRA_OECONF_append_mips64el = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
|
||||
|
||||
@@ -48,7 +48,6 @@ EXTRA_OECONF += "${@['--without-libltdl-prefix --without-libgmp-prefix --without
|
||||
EXTRA_OECONF_append_class-target = " --with-libunistring-prefix=${STAGING_LIBDIR} \
|
||||
--with-libgmp-prefix=${STAGING_LIBDIR} \
|
||||
--with-libltdl-prefix=${STAGING_LIBDIR}"
|
||||
EXTRA_OECONF_append_libc-uclibc = " guile_cv_use_csqrt=no "
|
||||
|
||||
CFLAGS_append_libc-musl = " -DHAVE_GC_SET_FINALIZER_NOTIFIER \
|
||||
-DHAVE_GC_GET_HEAP_USAGE_SAFE \
|
||||
|
||||
@@ -124,28 +124,6 @@ do_configure() {
|
||||
cat $i >> config.sh-${TARGET_ARCH}-${TARGET_OS}
|
||||
done
|
||||
|
||||
# Fixups for uclibc
|
||||
if [ "${TARGET_OS}" = "linux-uclibc" -o "${TARGET_OS}" = "linux-uclibceabi" ]; then
|
||||
sed -i -e "s,\(d_crypt_r=\)'define',\1'undef',g" \
|
||||
-e "s,\(d_futimes=\)'define',\1'undef',g" \
|
||||
-e "s,\(d_finitel=\)'define',\1'undef',g" \
|
||||
-e "s,\(crypt_r_proto=\)'\w+',\1'0',g" \
|
||||
-e "s,\(d_getnetbyname_r=\)'define',\1'undef',g" \
|
||||
-e "s,\(getnetbyname_r_proto=\)'\w+',\1'0',g" \
|
||||
-e "s,\(d_getnetbyaddr_r=\)'define',\1'undef',g" \
|
||||
-e "s,\(getnetbyaddr_r_proto=\)'\w+',\1'0',g" \
|
||||
-e "s,\(d_getnetent_r=\)'define',\1'undef',g" \
|
||||
-e "s,\(getnetent_r_proto=\)'\w+',\1'0',g" \
|
||||
-e "s,\(d_sockatmark=\)'define',\1'undef',g" \
|
||||
-e "s,\(d_sockatmarkproto=\)'\w+',\1'0',g" \
|
||||
-e "s,\(d_eaccess=\)'define',\1'undef',g" \
|
||||
-e "s,\(d_stdio_ptr_lval=\)'define',\1'undef',g" \
|
||||
-e "s,\(d_stdio_ptr_lval_sets_cnt=\)'define',\1'undef',g" \
|
||||
-e "s,\(d_stdiobase=\)'define',\1'undef',g" \
|
||||
-e "s,\(d_stdstdio=\)'define',\1'undef',g" \
|
||||
-e "s,-fstack-protector,-fno-stack-protector,g" \
|
||||
config.sh-${TARGET_ARCH}-${TARGET_OS}
|
||||
fi
|
||||
# Fixups for musl
|
||||
if [ "${TARGET_OS}" = "linux-musl" -o "${TARGET_OS}" = "linux-musleabi" ]; then
|
||||
sed -i -e "s,\(d_libm_lib_version=\)'define',\1'undef',g" \
|
||||
|
||||
@@ -73,7 +73,6 @@ CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
|
||||
# which fixes build path issue in DWARF.
|
||||
SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}"
|
||||
|
||||
CFLAGS_append_libc-uclibc = " -D__UCLIBC__ "
|
||||
CFLAGS += "-no-pie"
|
||||
|
||||
def get_mcpu(d):
|
||||
|
||||
@@ -10,8 +10,6 @@ LICENSE = "GPLv2"
|
||||
|
||||
PR = "r9"
|
||||
|
||||
BUILDPERF_libc-uclibc = "no"
|
||||
|
||||
PACKAGECONFIG ??= "scripting tui libunwind"
|
||||
PACKAGECONFIG[scripting] = ",NO_LIBPERL=1 NO_LIBPYTHON=1,perl python"
|
||||
# gui support was added with kernel 3.6.35
|
||||
|
||||
@@ -17,11 +17,6 @@ UPSTREAM_CHECK_URI = "https://01.org/powertop/downloads"
|
||||
|
||||
inherit autotools gettext pkgconfig
|
||||
|
||||
# we need to explicitly link with libintl in uClibc systems
|
||||
EXTRA_LDFLAGS ?= ""
|
||||
EXTRA_LDFLAGS_libc-uclibc = "-lintl"
|
||||
LDFLAGS += "${EXTRA_LDFLAGS}"
|
||||
|
||||
# we do not want libncursesw if we can
|
||||
do_configure_prepend() {
|
||||
# configure.ac checks for delwin() in "ncursesw ncurses" so let's drop first one
|
||||
|
||||
Reference in New Issue
Block a user