Introduce target-specific LDFLAGS, the same way we have CFLAGS for the target.
It seems to be helping gcc somewhat into telling the correct endianness to ld that sticks with little endian even when the target is big (eg armeb-unknown-linux-uclibcgnueabi).
There's still work to do, especially finish the gcc part that is not in this commit.
/trunk/scripts/functions | 9 7 2 0 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
1 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.cc
2 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc 2007-08-03 20:30:21.000000000 +0200
3 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.cc 2007-08-03 20:30:53.000000000 +0200
6 #include <bits/c++locale_internal.h>
8 -#ifndef __UCLIBC_HAS_XLOCALE__
9 -#define __strtol_l(S, E, B, L) strtol((S), (E), (B))
10 -#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B))
11 -#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B))
12 -#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B))
13 -#define __strtof_l(S, E, L) strtof((S), (E))
14 -#define __strtod_l(S, E, L) strtod((S), (E))
15 -#define __strtold_l(S, E, L) strtold((S), (E))
16 -#warning should dummy __newlocale check for C|POSIX ?
17 -#define __newlocale(a, b, c) NULL
18 -#define __freelocale(a) ((void)0)
19 -#define __duplocale(a) __c_locale()
25 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.h
26 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h 2007-08-03 20:30:21.000000000 +0200
27 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.h 2007-08-03 20:30:53.000000000 +0200
30 extern "C" __typeof(uselocale) __uselocale;
32 +#define __uselocale uselocale
36 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
37 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2007-08-03 20:30:21.000000000 +0200
38 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2007-08-03 20:30:53.000000000 +0200
40 extern "C" __typeof(wctype_l) __wctype_l;
43 +# define __nl_langinfo_l nl_langinfo_l
44 +# define __strcoll_l strcoll_l
45 +# define __strftime_l strftime_l
46 +# define __strtod_l strtod_l
47 +# define __strtof_l strtof_l
48 +# define __strtold_l strtold_l
49 +# define __strxfrm_l strxfrm_l
50 +# define __newlocale newlocale
51 +# define __freelocale freelocale
52 +# define __duplocale duplocale
53 +# define __uselocale uselocale
55 +# ifdef _GLIBCXX_USE_WCHAR_T
56 +# define __iswctype_l iswctype_l
57 +# define __towlower_l towlower_l
58 +# define __towupper_l towupper_l
59 +# define __wcscoll_l wcscoll_l
60 +# define __wcsftime_l wcsftime_l
61 +# define __wcsxfrm_l wcsxfrm_l
62 +# define __wctype_l wctype_l
66 +# define __nl_langinfo_l(N, L) nl_langinfo((N))
67 +# define __strcoll_l(S1, S2, L) strcoll((S1), (S2))
68 +# define __strtod_l(S, E, L) strtod((S), (E))
69 +# define __strtof_l(S, E, L) strtof((S), (E))
70 +# define __strtold_l(S, E, L) strtold((S), (E))
71 +# define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N))
72 +# warning should dummy __newlocale check for C|POSIX ?
73 +# define __newlocale(a, b, c) NULL
74 +# define __freelocale(a) ((void)0)
75 +# define __duplocale(a) __c_locale()
76 +//# define __uselocale ?
78 +# ifdef _GLIBCXX_USE_WCHAR_T
79 +# define __iswctype_l(C, M, L) iswctype((C), (M))
80 +# define __towlower_l(C, L) towlower((C))
81 +# define __towupper_l(C, L) towupper((C))
82 +# define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2))
83 +//# define __wcsftime_l(S, M, F, T, L) wcsftime((S), (M), (F), (T))
84 +# define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N))
85 +# define __wctype_l(S, L) wctype((S))
88 #endif // GLIBC 2.3 and later
89 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/collate_members.cc
90 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc 2007-08-03 20:30:21.000000000 +0200
91 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/collate_members.cc 2007-08-03 20:30:53.000000000 +0200
94 #include <bits/c++locale_internal.h>
96 -#ifndef __UCLIBC_HAS_XLOCALE__
97 -#define __strcoll_l(S1, S2, L) strcoll((S1), (S2))
98 -#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N))
99 -#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2))
100 -#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N))
105 // These are basically extensions to char_traits, and perhaps should
106 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc
107 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2007-08-03 20:30:21.000000000 +0200
108 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2007-08-03 20:30:53.000000000 +0200
111 #include <bits/c++locale_internal.h>
113 -#ifndef __UCLIBC_HAS_XLOCALE__
114 -#define __wctype_l(S, L) wctype((S))
115 -#define __towupper_l(C, L) towupper((C))
116 -#define __towlower_l(C, L) towlower((C))
117 -#define __iswctype_l(C, M, L) iswctype((C), (M))
122 // NB: The other ctype<char> specializations are in src/locale.cc and
123 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.cc
124 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc 2007-08-03 20:30:21.000000000 +0200
125 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.cc 2007-08-03 20:30:53.000000000 +0200
127 #ifdef __UCLIBC_MJN3_ONLY__
128 #warning fix gettext stuff
130 -#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
131 -extern "C" char *__dcgettext(const char *domainname,
132 - const char *msgid, int category);
134 -#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
135 +#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
136 +#define gettext(msgid) dcgettext(NULL, msgid, LC_MESSAGES)
139 #define gettext(msgid) (msgid)
142 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.h
143 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h 2007-08-03 20:30:21.000000000 +0200
144 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.h 2007-08-03 20:30:53.000000000 +0200
146 #ifdef __UCLIBC_MJN3_ONLY__
147 #warning fix prototypes for *textdomain funcs
149 -#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
150 -extern "C" char *__textdomain(const char *domainname);
151 -extern "C" char *__bindtextdomain(const char *domainname,
152 - const char *dirname);
155 -#undef __bindtextdomain
156 -#define __textdomain(D) ((void)0)
157 -#define __bindtextdomain(D,P) ((void)0)
158 +#ifndef __UCLIBC_HAS_GETTEXT_AWARENESS__
160 +#undef bindtextdomain
161 +#define textdomain(D) ((void)0)
162 +#define bindtextdomain(D,P) ((void)0)
165 // Non-virtual member functions.
167 messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,
168 const char* __dir) const
170 - __bindtextdomain(__s.c_str(), __dir);
171 + bindtextdomain(__s.c_str(), __dir);
172 return this->do_open(__s, __loc);
177 // No error checking is done, assume the catalog exists and can
179 - __textdomain(__s.c_str());
180 + textdomain(__s.c_str());
184 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc
185 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2007-08-03 20:30:21.000000000 +0200
186 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2007-08-03 20:30:53.000000000 +0200
188 #warning tailor for stub locale support
191 -#ifndef __UCLIBC_HAS_XLOCALE__
192 -#define __nl_langinfo_l(N, L) nl_langinfo((N))
197 // Construct and return valid pattern consisting of some combination of:
198 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc
199 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2007-08-03 20:30:21.000000000 +0200
200 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2007-08-03 20:30:53.000000000 +0200
202 #ifdef __UCLIBC_MJN3_ONLY__
203 #warning tailor for stub locale support
205 -#ifndef __UCLIBC_HAS_XLOCALE__
206 -#define __nl_langinfo_l(N, L) nl_langinfo((N))
211 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/time_members.cc
212 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/time_members.cc 2007-08-03 20:30:21.000000000 +0200
213 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/time_members.cc 2007-08-03 20:30:53.000000000 +0200
215 #ifdef __UCLIBC_MJN3_ONLY__
216 #warning tailor for stub locale support
218 -#ifndef __UCLIBC_HAS_XLOCALE__
219 -#define __nl_langinfo_l(N, L) nl_langinfo((N))