[Buildroot] nios2 : gcc 4.9.x buildroot toolchain broken

Ezequiel Garcia ezequiel at vanguardiasur.com.ar
Sat Aug 1 16:15:59 UTC 2015


(resending from a subscribed mail this time)

On 07/27/2015 05:48 PM, Thomas Petazzoni wrote:
> Dear Brendan Heading,
>

Hi Brendan,

Thanks a lot for the report.

> On Mon, 27 Jul 2015 21:28:21 +0100, Brendan Heading wrote:
>
>> While looking at the dmraid build bug on nios2 I noted that it is not
>> possible to build a buildroot toolchain based on GCC 4.9.x for that
>> platform.
>>
>> You can reproduce the problem using the following (one-line) defconfig :
>>
>> BR2_nios2=y
>>
>> I tested it against the commit : 5ccde01652bc41da325bf4c9a5abbf0031080784
>>
>> The error is as follows :
>>
>> =============
>> ../../../libgcc/config/nios2/linux-atomic.c:23:24: fatal error:
>> asm/unistd.h: No such file or directory
>>   #include <asm/unistd.h>
>>                          ^
>> compilation terminated.
>> =============
>>
>> The problem only occurs on GCC 4.9.x. GCC 5.x builds fine.
>>
>> Someone already submitted a patch to fix this :
>>
>> http://lists.busybox.net/pipermail/buildroot/2015-February/119084.html
>>
>> The submitter promised to do some more work but it seems to have been left
>> that way since last February.
>>

Not entirely true :-) I actually did re-submit the patch later,
together with the rest of the internal toolchain support (as was
requested):

http://patchwork.ozlabs.org/patch/440651/

>> We can either :
>> - disable GCC 4.9.x for nios2 (leaving 5.x as the only supported buildroot
>> toolchain)
>> - integrate & test the above patch
>>
>> What does everyone think ? Given that the above patch seems to be
>> considered incomplete maybe we should disable nios2 4.9.x for now until the
>> required additions have been submitted.
>
> Hum, that's interesting. I indeed saw that gcc 4.9.3 was not building
> properly for NIOS II. However, gcc 4.9.2 built fine for me. Look at
> http://autobuild.buildroot.org/toolchains/tarballs/br-nios2-full-2015.05.tar.bz2:
> it is a NIOS II gcc 4.9.2 toolchain generated by Buildroot.
>
> So I don't really understand how Ezequiel fall into the problem of
> <asm/unistd.h> with gcc 4.9.2. But I did indeed fall into this problem
> with gcc 4.9.3.
>

Hope I'm not being nonsense (it's been a while since February and I
haven't touched my nios2), but maybe you didn't fall because you had
my patch applied when you built that toolchain?

> Or maybe the problem is *not* gcc version related only, but also
> related to the kernel headers version?
>

Looking through the rest of the architectures, the only
ones that have any non-local includes are m68k and nios2:

$ find libgcc/config/ -name *atomic.c
libgcc/config/nios2/linux-atomic.c
libgcc/config/tilepro/atomic.c
libgcc/config/sh/linux-atomic.c
libgcc/config/m68k/linux-atomic.c
libgcc/config/arm/linux-atomic.c
libgcc/config/pa/linux-atomic.c

$ find libgcc/config/ -name *atomic.c | xargs grep "include <"
libgcc/config/nios2/linux-atomic.c:#include <asm/unistd.h>
libgcc/config/m68k/linux-atomic.c:#include <asm/unistd.h>
libgcc/config/m68k/linux-atomic.c:#include <stdbool.h>

The rest don't include anything, so I'd guess it's gcc what's wrong.
I don't know much about gcc, so it's really just a guess.

> But in any case, Ezequiel's patch seems fine to me, I'll try to apply
> something similar.
>

And maybe the GCC maintainers can manage to include this change
in future releases (Ccing Chung-Lin Tang).

-- 
Ezequiel García, VanguardiaSur
www.vanguardiasur.com.ar


More information about the buildroot mailing list