[Buildroot] nios2 : gcc 4.9.x buildroot toolchain broken
From: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Date: 2015-08-03 15:48:07
On 2 August 2015 at 02:48, Chung-Lin Tang [off-list ref] wrote:
On 2015/8/2 12:08 AM, Ezequiel Garcia wrote:quoted
On 07/27/2015 05:48 PM, Thomas Petazzoni wrote:quoted
Dear Brendan Heading,Hi Brendan, Thanks a lot for the report.quoted
On Mon, 27 Jul 2015 21:28:21 +0100, Brendan Heading wrote:quoted
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/quoted
quoted
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?quoted
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.quoted
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).I recently committed the patch to remove the '#include <asm/unistd.h>' line to upstream 5.x, 4.9.x branches, though it's not in 4.9.3. You can get it immediately if there's an option in buildroot to checkout stable branches of upstream GCC (as opposed to only released tarballs)
That's great! thanks for the update, -- Ezequiel Garc?a, VanguardiaSur www.vanguardiasur.com.ar