gcc-4.4.1.inc: Make gcc 4.1.1 compilable for uclibc targets.
authorKhem Raj <raj.khem@gmail.com>
Fri, 7 Aug 2009 20:13:52 +0000 (13:13 -0700)
committerKhem Raj <raj.khem@gmail.com>
Fri, 7 Aug 2009 20:13:52 +0000 (13:13 -0700)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
recipes/gcc/gcc-4.4.1/gcc-uclibc-locale-ctype_touplow_t.patch [new file with mode: 0644]

diff --git a/recipes/gcc/gcc-4.4.1/gcc-uclibc-locale-ctype_touplow_t.patch b/recipes/gcc/gcc-4.4.1/gcc-uclibc-locale-ctype_touplow_t.patch
new file mode 100644 (file)
index 0000000..ffb37d2
--- /dev/null
@@ -0,0 +1,52 @@
+Index: gcc-4.4.1/libstdc++-v3/config/locale/generic/c_locale.h
+===================================================================
+--- gcc-4.4.1.orig/libstdc++-v3/config/locale/generic/c_locale.h       2009-08-06 23:38:32.398265633 -0700
++++ gcc-4.4.1/libstdc++-v3/config/locale/generic/c_locale.h    2009-08-06 23:41:09.778242281 -0700
+@@ -41,12 +41,17 @@
+ #include <clocale>
+ #include <cstddef>
++#include <features.h> 
++#include <ctype.h> 
+ #define _GLIBCXX_NUM_CATEGORIES 0
+ _GLIBCXX_BEGIN_NAMESPACE(std)
+-
+-  typedef int*                        __c_locale;
++#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
+Index: gcc-4.4.1/libstdc++-v3/config/os/gnu-linux/ctype_base.h
+===================================================================
+--- gcc-4.4.1.orig/libstdc++-v3/config/os/gnu-linux/ctype_base.h       2009-08-06 23:42:27.402242608 -0700
++++ gcc-4.4.1/libstdc++-v3/config/os/gnu-linux/ctype_base.h    2009-08-06 23:43:44.842241959 -0700
+@@ -33,14 +33,21 @@
+  */
+ // Information as gleaned from /usr/include/ctype.h
+-  
++
++#include <features.h> 
++#include <ctype.h> 
++
+ _GLIBCXX_BEGIN_NAMESPACE(std)
+   /// @brief  Base class for ctype.
+   struct ctype_base
+   {
+     // Non-standard typedefs.
+-    typedef const int*                __to_type;
++#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.