[PATCH v2] bfd/elf32-or1k: fix building with gcc version < 5

Giulio Benetti giulio.benetti@benettiengineering.com
Thu Jun 10 14:48:46 GMT 2021


Hello Alan, All,

On 6/10/21 3:06 PM, Alan Modra wrote:
> On Thu, Jun 10, 2021 at 11:07:13AM +0200, Giulio Benetti wrote:
>> Hello Alan, All,
>>
>> On 6/10/21 3:19 AM, Alan Modra wrote:
>>> On Wed, Jun 09, 2021 at 11:52:33PM +0200, Giulio Benetti wrote:
>>>> Gcc version >= 5 has standard C mode not set to -std=gnu11, so if we use
>>>> an old compiler(i.e. gcc 4.9) build fails on:
>>>> ```
>>>> elf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in
>>>> C99 or C11 mode
>>>>       for (size_t i = 0; i < insn_count; i++)
>>>>       ^
>>>> ```
>>>
>>> Did you find this problem on current mainline binutils?  The configure
>>> machinery is supposed to supply the appropriate -std=c99 or -std=gnu99
>>> when using older compilers.  That happens for me when I build with
>>> gcc-4.9.  I don't think any patch is needed for mainline.
>>>
>>
>> On Buildroot they don't pass -std=c99/g99 and this is the result:
>> https://gitlab.com/bootlin/toolchains-builder/-/jobs/1325646298
> 
> That appears to be building binutils 2.35.2
> 
>> This patch seems to follow all the rest code style of binutils
> 
> True, we've only just switched over to requiring C99.

Ok so...

>> since no
>> other part of it fails and this happens only after patch [1] has been
>> upstreamed.
>>
>> Here [2] you can see all the other toolchains built succesfully and only
>> Openrisc fails after the patch provided by Stafford([1]).
>>
>> [1]: http://patches-tcwg.linaro.org/patch/53151/
>> [2]: https://gitlab.com/bootlin/toolchains-builder/-/jobs
> 
> OK, so the real problem is in a backport.  It isn't current mainline
> binutils configure, which is what I was worried about.

...it happens on mainline too but it can be solved by adding -std=c99 to 
CFLAGS.

> BTW, thank you for posting a fix here, even if it isn't strictly
> necessary for mainline.  Please note that I'm not advocating against
> your patch.  If target maintainers want to keep their code compatible
> with C89 that's fine by me.
>
I didn't know about this since no other file failed building on C99. 
What it seems strange to me is that on buildroot binutils seem to be 
built without -std=c99

Best regards
-- 
Giulio Benetti
Benetti Engineering sas


More information about the Binutils mailing list