Skip to contentSkip to conversation

argp-standalone: fix build with > GCC5.1

PATCH New Matt Weber 3 participants 5 messages Oct 31, 2017 – Nov 26, 2017

lore
Share & tools
lore

Matt Weber

author
#0 lore raw

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
index 7a7028c..977b954 100644
@@ -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
#1 lore raw

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=y

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
#2 lore raw

PATCH 1/1 argp-standalone: fix build with > GCC5.1

In reply to Matt Weber

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=y

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
#3 lore raw

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.html

Quoted 7 lines

Fixes:
http://autobuild.buildroot.net/results/a9c/a9cedc54829b7bd2dd7ae6ff2bd6c6db242f1c35//

Tested via test-pkg with the following cfg
BR2_PACKAGE_ARGP_STANDALONE=y

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

#4 lore raw

PATCH 1/1 argp-standalone: fix build with > GCC5.1

In reply to Thomas Petazzoni
Quoted 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.html

Quoted 7 lines

Fixes:
http://autobuild.buildroot.net/results/a9c/a9cedc54829b7bd2dd7ae6ff2bd6c6db242f1c35//

Tested via test-pkg with the following cfg
BR2_PACKAGE_ARGP_STANDALONE=y

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