3897ded714
As described at:
4520524ba0
this commit continues a series of updates of ARC tools.
This time we're updating tools to arc-2016.09-eng007 tag plus a
couple of fixes on top of it that will all make its way in the
next engineering build.
We hope this patch will cure most buildroot ARC failures as it
contains important fixes:
1) PIE fix. We have added PIE support to ARC toolchain at last.
So that should prevent breakage of many packages. As ARC now
supports PIE we remove ARC from BR2_TOOLCHAIN_SUPPORTS_PIE
exclusion in toolchain/Config.in file.
2) Assembler fix. This patch also have changes that fixes frequent
assembler failures, e.g.:
http://autobuild.buildroot.net/results/543/5430b902d900943a34c1888e7e410bd5df367bc2//
We still keep GDB as it is of arc-2016.03 release because there're some
issues we'd like to resolve before releasing it to wider audience.
So again note this is next engineering builds of arc-2016.09 series
and it might have all kinds of breakages, please don't use it for
production builds.
Signed-off-by: Vlad Zakharov <vzakhar@synopsys.com>
[Thomas: remove uClibc PIE patch, since we have bumped uClibc in the
mean time, to a version that contains the PIE fix for ARC.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
274 lines
9.0 KiB
Diff
274 lines
9.0 KiB
Diff
Allow C99-depending features of libstdc++ with uClibc
|
|
|
|
The libstdc++ code is fairly restrictive on how it checks for C99
|
|
compatibility: it requires *complete* C99 support to enable certain
|
|
features. For example, uClibc provides a good number of C99 features,
|
|
but not C99 complex number support. For this reason, libstdc++
|
|
completely disables many the standard C++ methods that can in fact
|
|
work because uClibc provides the necessary functions.
|
|
|
|
This patch is similar and highly inspired from
|
|
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, but implemented in
|
|
a way that doesn't involve changing the configure.ac script, as
|
|
autoreconfiguring gcc is complicated. It simply relies on the fact
|
|
that uClibc defines the __UCLIBC__ definition.
|
|
|
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
|
|
Index: b/libstdc++-v3/config/locale/generic/c_locale.h
|
|
===================================================================
|
|
--- a/libstdc++-v3/config/locale/generic/c_locale.h
|
|
+++ b/libstdc++-v3/config/locale/generic/c_locale.h
|
|
@@ -70,7 +70,7 @@
|
|
__builtin_va_list __args;
|
|
__builtin_va_start(__args, __fmt);
|
|
|
|
-#ifdef _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
|
|
#else
|
|
const int __ret = __builtin_vsprintf(__out, __fmt, __args);
|
|
Index: b/libstdc++-v3/config/locale/gnu/c_locale.h
|
|
===================================================================
|
|
--- a/libstdc++-v3/config/locale/gnu/c_locale.h
|
|
+++ b/libstdc++-v3/config/locale/gnu/c_locale.h
|
|
@@ -88,7 +88,7 @@
|
|
__builtin_va_list __args;
|
|
__builtin_va_start(__args, __fmt);
|
|
|
|
-#ifdef _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
|
|
#else
|
|
const int __ret = __builtin_vsprintf(__out, __fmt, __args);
|
|
Index: b/libstdc++-v3/include/bits/basic_string.h
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/bits/basic_string.h
|
|
+++ b/libstdc++-v3/include/bits/basic_string.h
|
|
@@ -2809,7 +2809,7 @@
|
|
_GLIBCXX_END_NAMESPACE_VERSION
|
|
} // namespace
|
|
|
|
-#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \
|
|
+#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)) \
|
|
&& !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
|
|
|
|
#include <ext/string_conversions.h>
|
|
Index: b/libstdc++-v3/include/bits/locale_facets.tcc
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/bits/locale_facets.tcc
|
|
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
|
|
@@ -987,7 +987,7 @@
|
|
char __fbuf[16];
|
|
__num_base::_S_format_float(__io, __fbuf, __mod);
|
|
|
|
-#ifdef _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
// First try a buffer perhaps big enough (most probably sufficient
|
|
// for non-ios_base::fixed outputs)
|
|
int __cs_size = __max_digits * 3;
|
|
Index: b/libstdc++-v3/include/bits/locale_facets_nonio.tcc
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc
|
|
+++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc
|
|
@@ -572,7 +572,7 @@
|
|
{
|
|
const locale __loc = __io.getloc();
|
|
const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
|
|
-#ifdef _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
// First try a buffer perhaps big enough.
|
|
int __cs_size = 64;
|
|
char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
|
|
Index: b/libstdc++-v3/include/c_compatibility/math.h
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/c_compatibility/math.h
|
|
+++ b/libstdc++-v3/include/c_compatibility/math.h
|
|
@@ -56,7 +56,7 @@
|
|
using std::floor;
|
|
using std::fmod;
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
using std::fpclassify;
|
|
using std::isfinite;
|
|
using std::isinf;
|
|
Index: b/libstdc++-v3/include/c_compatibility/wchar.h
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/c_compatibility/wchar.h
|
|
+++ b/libstdc++-v3/include/c_compatibility/wchar.h
|
|
@@ -103,7 +103,7 @@
|
|
using std::wmemset;
|
|
using std::wcsftime;
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
using std::wcstold;
|
|
using std::wcstoll;
|
|
using std::wcstoull;
|
|
Index: b/libstdc++-v3/include/c_global/cstdlib
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/c_global/cstdlib
|
|
+++ b/libstdc++-v3/include/c_global/cstdlib
|
|
@@ -182,7 +182,7 @@
|
|
_GLIBCXX_END_NAMESPACE_VERSION
|
|
} // namespace
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
|
|
#undef _Exit
|
|
#undef llabs
|
|
Index: b/libstdc++-v3/include/c_global/cwchar
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/c_global/cwchar
|
|
+++ b/libstdc++-v3/include/c_global/cwchar
|
|
@@ -232,7 +232,7 @@
|
|
_GLIBCXX_END_NAMESPACE_VERSION
|
|
} // namespace
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
|
|
#undef wcstold
|
|
#undef wcstoll
|
|
@@ -289,7 +289,7 @@
|
|
using std::vwscanf;
|
|
#endif
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
using std::wcstold;
|
|
using std::wcstoll;
|
|
using std::wcstoull;
|
|
Index: b/libstdc++-v3/include/c_std/cstdio
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/c_std/cstdio
|
|
+++ b/libstdc++-v3/include/c_std/cstdio
|
|
@@ -139,7 +139,7 @@
|
|
using ::vsprintf;
|
|
} // namespace std
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
|
|
#undef snprintf
|
|
#undef vfscanf
|
|
Index: b/libstdc++-v3/include/c_std/cstdlib
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/c_std/cstdlib
|
|
+++ b/libstdc++-v3/include/c_std/cstdlib
|
|
@@ -180,7 +180,7 @@
|
|
_GLIBCXX_END_NAMESPACE_VERSION
|
|
} // namespace
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
|
|
#undef _Exit
|
|
#undef llabs
|
|
Index: b/libstdc++-v3/include/c_std/cwchar
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/c_std/cwchar
|
|
+++ b/libstdc++-v3/include/c_std/cwchar
|
|
@@ -228,7 +228,7 @@
|
|
_GLIBCXX_END_NAMESPACE_VERSION
|
|
} // namespace
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
|
|
#undef wcstold
|
|
#undef wcstoll
|
|
Index: b/libstdc++-v3/include/ext/vstring.h
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/ext/vstring.h
|
|
+++ b/libstdc++-v3/include/ext/vstring.h
|
|
@@ -2571,7 +2571,7 @@
|
|
_GLIBCXX_END_NAMESPACE_VERSION
|
|
} // namespace
|
|
|
|
-#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99))
|
|
+#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)))
|
|
|
|
#include <ext/string_conversions.h>
|
|
|
|
Index: b/libstdc++-v3/include/tr1/cstdio
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/tr1/cstdio
|
|
+++ b/libstdc++-v3/include/tr1/cstdio
|
|
@@ -33,7 +33,7 @@
|
|
|
|
#include <cstdio>
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
|
|
namespace std _GLIBCXX_VISIBILITY(default)
|
|
{
|
|
Index: b/libstdc++-v3/include/tr1/cstdlib
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/tr1/cstdlib
|
|
+++ b/libstdc++-v3/include/tr1/cstdlib
|
|
@@ -35,7 +35,7 @@
|
|
|
|
#if _GLIBCXX_HOSTED
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
|
|
namespace std _GLIBCXX_VISIBILITY(default)
|
|
{
|
|
Index: b/libstdc++-v3/include/tr1/cwchar
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/tr1/cwchar
|
|
+++ b/libstdc++-v3/include/tr1/cwchar
|
|
@@ -52,7 +52,7 @@
|
|
using std::vwscanf;
|
|
#endif
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
using std::wcstold;
|
|
using std::wcstoll;
|
|
using std::wcstoull;
|
|
Index: b/libstdc++-v3/include/tr1/stdlib.h
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/tr1/stdlib.h
|
|
+++ b/libstdc++-v3/include/tr1/stdlib.h
|
|
@@ -33,7 +33,7 @@
|
|
|
|
#if _GLIBCXX_HOSTED
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
|
|
using std::tr1::atoll;
|
|
using std::tr1::strtoll;
|
|
Index: b/libstdc++-v3/src/c++11/debug.cc
|
|
===================================================================
|
|
--- a/libstdc++-v3/src/c++11/debug.cc
|
|
+++ b/libstdc++-v3/src/c++11/debug.cc
|
|
@@ -787,7 +787,7 @@
|
|
int __n __attribute__ ((__unused__)),
|
|
const char* __fmt, _Tp __s) const throw ()
|
|
{
|
|
-#ifdef _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
std::snprintf(__buf, __n, __fmt, __s);
|
|
#else
|
|
std::sprintf(__buf, __fmt, __s);
|
|
Index: b/libstdc++-v3/include/c_global/cstdio
|
|
===================================================================
|
|
--- a/libstdc++-v3/include/c_global/cstdio
|
|
+++ b/libstdc++-v3/include/c_global/cstdio
|
|
@@ -139,7 +139,7 @@
|
|
using ::vsprintf;
|
|
} // namespace
|
|
|
|
-#if _GLIBCXX_USE_C99
|
|
+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
|
|
|
|
#undef snprintf
|
|
#undef vfscanf
|