argp-standalone: fix build with > GCC5.1
PATCH 1/1 argp-standalone: fix build with > GCC5.1
The problem is the change of the default C standard from gnu89 to gnu11 which changes the semantics of 'inline'. The issue is described in the Porting guide at https://gcc.gnu.org/gcc-5/porting_to.html. Adding the '-fgnu89-inline' option fixes the issue.
Similar issue:
https://www.mail-archive.com/ptxdist at pengutronix.de/msg09746.html
Fixes:
http://autobuild.buildroot.net/results/a9c/a9cedc54829b7bd2dd7ae6ff2bd6c6db242f1c35//
Tested via test-pkg with the following cfg
BR2_PACKAGE_ARGP_STANDALONE=y
--- package/argp-standalone/argp-standalone.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
package/argp-standalone/argp-standalone.mk +1 -1
@@ -10,7 +10,7 @@ ARGP_STANDALONE_INSTALL_STAGING = YES ARGP_STANDALONE_LICENSE = LGPL-2.0+ ARGP_STANDALONE_CONF_ENV = \ - CFLAGS="$(TARGET_CFLAGS) -fPIC" + CFLAGS="$(TARGET_CFLAGS) -fPIC -fgnu89-inline" define ARGP_STANDALONE_INSTALL_STAGING_CMDS $(INSTALL) -D $(@D)/libargp.a $(STAGING_DIR)/usr/lib/libargp.a
Signature · 1 line
2.7.4
PATCH 1/1 argp-standalone: fix build with > GCC5.1
Hello,
Quoted 8 lines · Matt Weber
The problem is the change of the default C standard from gnu89 to gnu11 which changes the semantics of 'inline'. The issue is described in the Porting guide at https://gcc.gnu.org/gcc-5/porting_to.html. Adding the '-fgnu89-inline' option fixes the issue.
Similar issue:
https://www.mail-archive.com/ptxdist at pengutronix.de/msg09746.html
Quoted 7 lines
Fixes:
http://autobuild.buildroot.net/results/a9c/a9cedc54829b7bd2dd7ae6ff2bd6c6db242f1c35//Tested via test-pkg with the following cfg
BR2_PACKAGE_ARGP_STANDALONE=ySigned-off-by Matthew Weber <[email protected]>
Thanks for looking into this. A few questions though:
- Why does this happen only on ARC ?
- Why are we seeing this issue only now, while we have started to use gcc 5.x a long, long time ago ?
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
PATCH 1/1 argp-standalone: fix build with > GCC5.1
In reply to Matt WeberHello,
Quoted 8 lines · Matt Weber
The problem is the change of the default C standard from gnu89 to gnu11 which changes the semantics of 'inline'. The issue is described in the Porting guide at https://gcc.gnu.org/gcc-5/porting_to.html. Adding the '-fgnu89-inline' option fixes the issue.
Similar issue:
https://www.mail-archive.com/ptxdist at pengutronix.de/msg09746.html
Quoted 7 lines
Fixes:
http://autobuild.buildroot.net/results/a9c/a9cedc54829b7bd2dd7ae6ff2bd6c6db242f1c35//Tested via test-pkg with the following cfg
BR2_PACKAGE_ARGP_STANDALONE=ySigned-off-by Matthew Weber <[email protected]>
So, I've applied, but with those tweaks. Indeed, your patch could definitely not be fixing an issue with gcc >= 5.x, because we have been using gcc 5.x for a while, and this build error was not popping up with anything but gcc 7.x.
So, what happened is that in commit a662ff7e79630ca0875dd8529fe54db27a275007, we added a patch that fixes the build with C99 compilers (in fact this means gcc 5.x, which uses C99 inline semantics). This changed "extern inline" to just "inline". But that broke again with gcc 7.x, and causes the problem we're seeing now.
So instead, I've dropped the chunk of the patch that changed from extern inline to inline, and passsed -fgnu89-inline as you suggested. I updated the commit log accordingly.
See
https://git.buildroot.org/buildroot/commit/?id=f0b65bd90ce4429d6b7e952ce7de2d5f92a2dd26
for more details.
Thanks for all your research behind this issue!
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
PATCH 1/1 argp-standalone: fix build with > GCC5.1
Thomas,
Quoted 36 lines · Thomas Petazzoni
Hello,
Quoted 8 lines · Matt Weber
The problem is the change of the default C standard from gnu89 to gnu11 which changes the semantics of 'inline'. The issue is described in the Porting guide at https://gcc.gnu.org/gcc-5/porting_to.html. Adding the '-fgnu89-inline' option fixes the issue.
Similar issue:
https://www.mail-archive.com/ptxdist at pengutronix.de/msg09746.htmlQuoted 7 lines
Fixes:
http://autobuild.buildroot.net/results/a9c/a9cedc54829b7bd2dd7ae6ff2bd6c6db242f1c35//Tested via test-pkg with the following cfg
BR2_PACKAGE_ARGP_STANDALONE=ySigned-off-by Matthew Weber <[email protected]>So, I've applied, but with those tweaks. Indeed, your patch could definitely not be fixing an issue with gcc >= 5.x, because we have been using gcc 5.x for a while, and this build error was not popping up with anything but gcc 7.x.
So, what happened is that in commit
a662ff7e79630ca0875dd8529fe54db27a275007, we added a patch that fixes the build with C99 compilers (in fact this means gcc 5.x, which uses C99 inline semantics). This changed "extern inline" to just "inline". But that broke again with gcc 7.x, and causes the problem we're seeing now.So instead, I've dropped the chunk of the patch that changed from extern inline to inline, and passsed -fgnu89-inline as you suggested. I updated the commit log accordingly.
Quoted 6 lines
See
https://git.buildroot.org/buildroot/commit/?id=f0b65bd90ce4429d6b7e952ce7de2d5f92a2dd26
for more details.Thanks for all your research behind this issue!
NP, appreciate the follow-up and now the details make a lot more sense. Plus it's good to see that it indirectly found a toolchain coverage issue with the test-pkg.
Matt
PATCH 1/1 argp-standalone: fix build with > GCC5.1
In reply to Thomas PetazzoniQuoted 32 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas Petazzoni <[email protected]> writes:
Hello,
Quoted 8 lines · Matt Weber
The problem is the change of the default C standard from gnu89 to gnu11 which changes the semantics of 'inline'. The issue is described in the Porting guide at https://gcc.gnu.org/gcc-5/porting_to.html. Adding the '-fgnu89-inline' option fixes the issue.
Similar issue:
https://www.mail-archive.com/ptxdist at pengutronix.de/msg09746.htmlQuoted 7 lines
Fixes:
http://autobuild.buildroot.net/results/a9c/a9cedc54829b7bd2dd7ae6ff2bd6c6db242f1c35//Tested via test-pkg with the following cfg
BR2_PACKAGE_ARGP_STANDALONE=ySigned-off-by Matthew Weber <[email protected]>So, I've applied, but with those tweaks. Indeed, your patch could definitely not be fixing an issue with gcc >= 5.x, because we have been using gcc 5.x for a while, and this build error was not popping up with anything but gcc 7.x.
So, what happened is that in commit
a662ff7e79630ca0875dd8529fe54db27a275007, we added a patch that fixes the build with C99 compilers (in fact this means gcc 5.x, which uses C99 inline semantics). This changed "extern inline" to just "inline". But that broke again with gcc 7.x, and causes the problem we're seeing now.
Quoted 7 lines
So instead, I've dropped the chunk of the patch that changed from extern inline to inline, and passsed -fgnu89-inline as you suggested. I updated the commit log accordingly.
See
https://git.buildroot.org/buildroot/commit/?id=f0b65bd90ce4429d6b7e952ce7de2d5f92a2dd26
for more details.
Committed the revised patch to 2017.02.x and 2017.08.x, thanks both!
Signature · 1 line
Bye, Peter Korsgaard