* Re: Problem configuring uclinux toolchain
[not found] ` <4C378A3A.8070309@moxielogic.com>
@ 2010-07-11 19:21 ` Maxim Kuvyrkov
2010-07-12 12:44 ` Anthony Green
2010-07-15 16:00 ` [PATCH] Fix building several uclinux target Maxim Kuvyrkov
0 siblings, 2 replies; 7+ messages in thread
From: Maxim Kuvyrkov @ 2010-07-11 19:21 UTC (permalink / raw)
To: Anthony Green; +Cc: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 931 bytes --]
[Moving from gcc@ to gcc-patches@]
On 7/10/10 12:44 AM, Anthony Green wrote:
> On 7/9/2010 11:59 AM, Maxim Kuvyrkov wrote:
>> On 7/9/10 3:22 PM, Anthony Green wrote:
>>> Hi Maxim,
>>>
>>> Recent changes to config.gcc are preventing me from building a
>>> moxie-uclinux toolchain.
The following patch should fix the build of moxie-uclinux toolchain.
The problem was that the piece of config.gcc defining supported linux C
libraries isn't executed for most uclinux targets, moxie included.
Still, many uclinux targets includes linux.h and linux.opt, which
yielded an error.
The patch moves definitions of constants enumerating C libraries to top
level and moves Android-specific definitions from
LINUX_TARGET_OS_CPP_BUILTINS to ANDROID_TARGET_OS_CPP_BUILTINS.
Tested with arm-linux-androideabi build and partial moxie-uclinux build.
OK to apply?
--
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724
[-- Attachment #2: android-uclinux-fix.ChangeLog --]
[-- Type: text/plain, Size: 376 bytes --]
2010-07-11 Maxim Kuvyrkov <maxim@codesourcery.com>
gcc/
* config.gcc (LIBC_GLIBC, LIBC_UCLIBC, LIBC_BIONIC): Move constants
to top level.
* config/linux.h (LINUX_TARGET_OS_CPP_BUILTINS): Move Android-specific
definitions ...
* config/linux-android.h (ANDROID_TARGET_OS_CPP_BUILTINS): ... here.
New macro.
* config/arm/linux-eabi.h (TARGET_OS_CPP_BUILTINS): Use it.
[-- Attachment #3: android-uclinux-fix.patch --]
[-- Type: text/plain, Size: 2122 bytes --]
Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc (revision 162059)
+++ gcc/config.gcc (working copy)
@@ -405,6 +405,9 @@ case ${target} in
;;
esac
+# Common C libraries. There are mere constants.
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+
# Common parts for widely ported systems.
case ${target} in
*-*-darwin*)
@@ -508,8 +511,6 @@ case ${target} in
*-*-gnu*)
tmake_file="$tmake_file t-gnu";;
esac
- # Common C libraries.
- tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
# glibc / uclibc / bionic switch.
# uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
case $target in
Index: gcc/config/linux.h
===================================================================
--- gcc/config/linux.h (revision 162059)
+++ gcc/config/linux.h (working copy)
@@ -96,8 +96,6 @@ see the files COPYING3 and COPYING.RUNTI
builtin_assert ("system=linux"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=posix"); \
- if (OPTION_ANDROID) \
- builtin_define ("__ANDROID__"); \
} while (0)
#if defined(HAVE_LD_EH_FRAME_HDR)
Index: gcc/config/linux-android.h
===================================================================
--- gcc/config/linux-android.h (revision 162059)
+++ gcc/config/linux-android.h (working copy)
@@ -20,6 +20,12 @@
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+#define ANDROID_TARGET_OS_CPP_BUILTINS() \
+ do { \
+ if (OPTION_ANDROID) \
+ builtin_define ("__ANDROID__"); \
+ } while (0)
+
#if ANDROID_DEFAULT
# define NOANDROID "mno-android"
#else
Index: gcc/config/arm/linux-eabi.h
===================================================================
--- gcc/config/arm/linux-eabi.h (revision 162059)
+++ gcc/config/arm/linux-eabi.h (working copy)
@@ -27,6 +27,7 @@
{ \
TARGET_BPABI_CPP_BUILTINS(); \
LINUX_TARGET_OS_CPP_BUILTINS(); \
+ ANDROID_TARGET_OS_CPP_BUILTINS(); \
} \
while (false)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Problem configuring uclinux toolchain
2010-07-11 19:21 ` Problem configuring uclinux toolchain Maxim Kuvyrkov
@ 2010-07-12 12:44 ` Anthony Green
2010-07-15 16:00 ` [PATCH] Fix building several uclinux target Maxim Kuvyrkov
1 sibling, 0 replies; 7+ messages in thread
From: Anthony Green @ 2010-07-12 12:44 UTC (permalink / raw)
To: Maxim Kuvyrkov; +Cc: gcc-patches
On 7/11/2010 3:20 PM, Maxim Kuvyrkov wrote:
> [Moving from gcc@ to gcc-patches@]
>
> On 7/10/10 12:44 AM, Anthony Green wrote:
>> On 7/9/2010 11:59 AM, Maxim Kuvyrkov wrote:
>>> On 7/9/10 3:22 PM, Anthony Green wrote:
>>>> Hi Maxim,
>>>>
>>>> Recent changes to config.gcc are preventing me from building a
>>>> moxie-uclinux toolchain.
>
> The following patch should fix the build of moxie-uclinux toolchain. The
> problem was that the piece of config.gcc defining supported linux C
> libraries isn't executed for most uclinux targets, moxie included.
> Still, many uclinux targets includes linux.h and linux.opt, which
> yielded an error.
>
> The patch moves definitions of constants enumerating C libraries to top
> level and moves Android-specific definitions from
> LINUX_TARGET_OS_CPP_BUILTINS to ANDROID_TARGET_OS_CPP_BUILTINS.
>
> Tested with arm-linux-androideabi build and partial moxie-uclinux build.
Thanks Maxim! I've just tested this and confirm that it fixes the
problem for moxie-uclinux.
AG
>
> OK to apply?
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] Fix building several uclinux target
2010-07-11 19:21 ` Problem configuring uclinux toolchain Maxim Kuvyrkov
2010-07-12 12:44 ` Anthony Green
@ 2010-07-15 16:00 ` Maxim Kuvyrkov
2010-07-19 16:33 ` Mark Mitchell
2010-07-20 18:20 ` Nathan Froyd
1 sibling, 2 replies; 7+ messages in thread
From: Maxim Kuvyrkov @ 2010-07-15 16:00 UTC (permalink / raw)
To: Anthony Green; +Cc: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 1102 bytes --]
On 7/11/10 11:20 PM, Maxim Kuvyrkov wrote:
> [Moving from gcc@ to gcc-patches@]
>
> On 7/10/10 12:44 AM, Anthony Green wrote:
>> On 7/9/2010 11:59 AM, Maxim Kuvyrkov wrote:
>>> On 7/9/10 3:22 PM, Anthony Green wrote:
>>>> Hi Maxim,
>>>>
>>>> Recent changes to config.gcc are preventing me from building a
>>>> moxie-uclinux toolchain.
>
> The following patch should fix the build of moxie-uclinux toolchain. The
> problem was that the piece of config.gcc defining supported linux C
> libraries isn't executed for most uclinux targets, moxie included.
> Still, many uclinux targets includes linux.h and linux.opt, which
> yielded an error.
Ping.
Anthony reported in another message that the patch fixes moxie-uclinux
build.
>
> The patch moves definitions of constants enumerating C libraries to top
> level and moves Android-specific definitions from
> LINUX_TARGET_OS_CPP_BUILTINS to ANDROID_TARGET_OS_CPP_BUILTINS.
>
> Tested with arm-linux-androideabi build and partial moxie-uclinux build.
>
> OK to apply?
>
Thanks,
--
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724
[-- Attachment #2: android-uclinux-fix.ChangeLog --]
[-- Type: text/plain, Size: 376 bytes --]
2010-07-11 Maxim Kuvyrkov <maxim@codesourcery.com>
gcc/
* config.gcc (LIBC_GLIBC, LIBC_UCLIBC, LIBC_BIONIC): Move constants
to top level.
* config/linux.h (LINUX_TARGET_OS_CPP_BUILTINS): Move Android-specific
definitions ...
* config/linux-android.h (ANDROID_TARGET_OS_CPP_BUILTINS): ... here.
New macro.
* config/arm/linux-eabi.h (TARGET_OS_CPP_BUILTINS): Use it.
[-- Attachment #3: android-uclinux-fix.patch --]
[-- Type: text/plain, Size: 2122 bytes --]
Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc (revision 162059)
+++ gcc/config.gcc (working copy)
@@ -405,6 +405,9 @@ case ${target} in
;;
esac
+# Common C libraries. There are mere constants.
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+
# Common parts for widely ported systems.
case ${target} in
*-*-darwin*)
@@ -508,8 +511,6 @@ case ${target} in
*-*-gnu*)
tmake_file="$tmake_file t-gnu";;
esac
- # Common C libraries.
- tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
# glibc / uclibc / bionic switch.
# uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
case $target in
Index: gcc/config/linux.h
===================================================================
--- gcc/config/linux.h (revision 162059)
+++ gcc/config/linux.h (working copy)
@@ -96,8 +96,6 @@ see the files COPYING3 and COPYING.RUNTI
builtin_assert ("system=linux"); \
builtin_assert ("system=unix"); \
builtin_assert ("system=posix"); \
- if (OPTION_ANDROID) \
- builtin_define ("__ANDROID__"); \
} while (0)
#if defined(HAVE_LD_EH_FRAME_HDR)
Index: gcc/config/linux-android.h
===================================================================
--- gcc/config/linux-android.h (revision 162059)
+++ gcc/config/linux-android.h (working copy)
@@ -20,6 +20,12 @@
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+#define ANDROID_TARGET_OS_CPP_BUILTINS() \
+ do { \
+ if (OPTION_ANDROID) \
+ builtin_define ("__ANDROID__"); \
+ } while (0)
+
#if ANDROID_DEFAULT
# define NOANDROID "mno-android"
#else
Index: gcc/config/arm/linux-eabi.h
===================================================================
--- gcc/config/arm/linux-eabi.h (revision 162059)
+++ gcc/config/arm/linux-eabi.h (working copy)
@@ -27,6 +27,7 @@
{ \
TARGET_BPABI_CPP_BUILTINS(); \
LINUX_TARGET_OS_CPP_BUILTINS(); \
+ ANDROID_TARGET_OS_CPP_BUILTINS(); \
} \
while (false)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix building several uclinux target
2010-07-15 16:00 ` [PATCH] Fix building several uclinux target Maxim Kuvyrkov
@ 2010-07-19 16:33 ` Mark Mitchell
2010-07-20 18:20 ` Nathan Froyd
1 sibling, 0 replies; 7+ messages in thread
From: Mark Mitchell @ 2010-07-19 16:33 UTC (permalink / raw)
To: Maxim Kuvyrkov; +Cc: Anthony Green, gcc-patches
Maxim Kuvyrkov wrote:
>> The patch moves definitions of constants enumerating C libraries to top
>> level and moves Android-specific definitions from
>> LINUX_TARGET_OS_CPP_BUILTINS to ANDROID_TARGET_OS_CPP_BUILTINS.
>>
>> Tested with arm-linux-androideabi build and partial moxie-uclinux build.
>>
>> OK to apply?
OK.
--
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix building several uclinux target
2010-07-15 16:00 ` [PATCH] Fix building several uclinux target Maxim Kuvyrkov
2010-07-19 16:33 ` Mark Mitchell
@ 2010-07-20 18:20 ` Nathan Froyd
2010-07-21 18:39 ` Maxim Kuvyrkov
1 sibling, 1 reply; 7+ messages in thread
From: Nathan Froyd @ 2010-07-20 18:20 UTC (permalink / raw)
To: Maxim Kuvyrkov; +Cc: Anthony Green, gcc-patches
On Thu, Jul 15, 2010 at 08:00:24PM +0400, Maxim Kuvyrkov wrote:
>> The following patch should fix the build of moxie-uclinux toolchain. The
>> problem was that the piece of config.gcc defining supported linux C
>> libraries isn't executed for most uclinux targets, moxie included.
>> Still, many uclinux targets includes linux.h and linux.opt, which
>> yielded an error.
This patch breaks building a cross to powerpc-eabispe (possibly other
powerpc SysV4-ish non-Linux targets). Reverting this
bit:
> Index: gcc/config.gcc
> ===================================================================
> --- gcc/config.gcc (revision 162059)
> +++ gcc/config.gcc (working copy)
> @@ -405,6 +405,9 @@ case ${target} in
> ;;
> esac
>
> +# Common C libraries. There are mere constants.
> +tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
> +
> # Common parts for widely ported systems.
> case ${target} in
> *-*-darwin*)
> @@ -508,8 +511,6 @@ case ${target} in
> *-*-gnu*)
> tmake_file="$tmake_file t-gnu";;
> esac
> - # Common C libraries.
> - tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
> # glibc / uclibc / bionic switch.
> # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
> case $target in
fixes things.
I think this is because of this hunk in config/rs6000/sysv4.h:
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
#if DEFAULT_LIBC == LIBC_UCLIBC
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
#elif DEFAULT_LIBC == LIBC_GLIBC
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define LINUX_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
After your patch, LIBC_{UCLIBC,GLIBC} are defined unconditionally;
DEFAULT_LIBC is not defined, so we now fall through to the #error case.
Perhaps the toplevel code should now be:
case $target in
*-*-*linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
# Common C libraries.
tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
;;
esac
to catch the uclinux targets as well?
-Nathan
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix building several uclinux target
2010-07-20 18:20 ` Nathan Froyd
@ 2010-07-21 18:39 ` Maxim Kuvyrkov
2010-07-21 23:09 ` David Edelsohn
0 siblings, 1 reply; 7+ messages in thread
From: Maxim Kuvyrkov @ 2010-07-21 18:39 UTC (permalink / raw)
To: Nathan Froyd, David Edelsohn; +Cc: Anthony Green, gcc-patches
[-- Attachment #1: Type: text/plain, Size: 2042 bytes --]
On 7/20/10 10:20 PM, Nathan Froyd wrote:
> On Thu, Jul 15, 2010 at 08:00:24PM +0400, Maxim Kuvyrkov wrote:
>>> The following patch should fix the build of moxie-uclinux toolchain. The
>>> problem was that the piece of config.gcc defining supported linux C
>>> libraries isn't executed for most uclinux targets, moxie included.
>>> Still, many uclinux targets includes linux.h and linux.opt, which
>>> yielded an error.
>
> This patch breaks building a cross to powerpc-eabispe (possibly other
> powerpc SysV4-ish non-Linux targets).
...
> I think this is because of this hunk in config/rs6000/sysv4.h:
>
> #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
> #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
> #if DEFAULT_LIBC == LIBC_UCLIBC
> #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
> #elif DEFAULT_LIBC == LIBC_GLIBC
> #define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
> #else
> #error "Unsupported DEFAULT_LIBC"
> #endif
> #define LINUX_DYNAMIC_LINKER \
> CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
>
> After your patch, LIBC_{UCLIBC,GLIBC} are defined unconditionally;
> DEFAULT_LIBC is not defined, so we now fall through to the #error case.
>
> Perhaps the toplevel code should now be:
>
> case $target in
> *-*-*linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
> # Common C libraries.
> tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
> ;;
> esac
>
> to catch the uclinux targets as well?
Nathan,
Thanks for the analysis.
I would rather not duplicate the case statement which matches a
non-trivial list of targets. It would be just too error prone.
How about instead we make the implicit effects of config/rs6000/sysv4.h
explicit? I.e., default to GLIBC when no C library is specified. This
was the behavior before UCLIBC_DEFAULT was replaced with DEFAULT_LIBC.
David,
Does the attached patch look OK?
Thank you,
--
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724
[-- Attachment #2: fsf-gcc-ppc-sysv4.ChangeLog --]
[-- Type: text/plain, Size: 154 bytes --]
2010-07-21 Maxim Kuvyrkov <maxim@codesourcery.com>
* config/rs6000/sysv4.h (CHOOSE_DYNAMIC_LINKER): Default to GLIBC
when no C library is specified.
[-- Attachment #3: fsf-gcc-ppc-sysv4.patch --]
[-- Type: text/plain, Size: 566 bytes --]
Index: config/rs6000/sysv4.h
===================================================================
--- config/rs6000/sysv4.h (revision 162345)
+++ config/rs6000/sysv4.h (working copy)
@@ -905,7 +905,7 @@ SVR4_ASM_SPEC \
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
#if DEFAULT_LIBC == LIBC_UCLIBC
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
-#elif DEFAULT_LIBC == LIBC_GLIBC
+#elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
#else
#error "Unsupported DEFAULT_LIBC"
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix building several uclinux target
2010-07-21 18:39 ` Maxim Kuvyrkov
@ 2010-07-21 23:09 ` David Edelsohn
0 siblings, 0 replies; 7+ messages in thread
From: David Edelsohn @ 2010-07-21 23:09 UTC (permalink / raw)
To: Maxim Kuvyrkov; +Cc: Nathan Froyd, Anthony Green, gcc-patches
On Wed, Jul 21, 2010 at 2:39 PM, Maxim Kuvyrkov <maxim@codesourcery.com> wrote:
> I would rather not duplicate the case statement which matches a non-trivial
> list of targets. It would be just too error prone.
>
> How about instead we make the implicit effects of config/rs6000/sysv4.h
> explicit? I.e., default to GLIBC when no C library is specified. This was
> the behavior before UCLIBC_DEFAULT was replaced with DEFAULT_LIBC.
That seems like a reasonable solution.
Okay.
Thanks, David
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2010-07-21 23:09 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <4C370662.8050906@moxielogic.com>
[not found] ` <4C374760.8070705@codesourcery.com>
[not found] ` <4C378A3A.8070309@moxielogic.com>
2010-07-11 19:21 ` Problem configuring uclinux toolchain Maxim Kuvyrkov
2010-07-12 12:44 ` Anthony Green
2010-07-15 16:00 ` [PATCH] Fix building several uclinux target Maxim Kuvyrkov
2010-07-19 16:33 ` Mark Mitchell
2010-07-20 18:20 ` Nathan Froyd
2010-07-21 18:39 ` Maxim Kuvyrkov
2010-07-21 23:09 ` David Edelsohn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).