package/dhcpdump: fix build at -O2
PATCH 1/1 package/dhcpdump: fix build at -O2
Since commit aa556e2035c023d4328185a46e15df532e566067 ("utils/genrandconfig: test with BR2_OPTIMIZE_2=y"), we are doing builds at -O2 instead of -Os. This has unveiled an issue in the strsep.c file:
strsep.c:65:23: error: register name not specified for 'delim'
register const char *delim;
This strsep.c compatibility code is compiled in if HAVE_STRSEP is not defined, but dhcpdump does not use any kind of configure script to detect the availability of strsep(). Therefore by default, it gets compiled in, and the "register" specifier used for some variable declarations in strsep.c cause build issues at -O2.
A previous commit in Buildroot from c2a7f0d6051f71f3bb9d83b574d70814339e4b95 ("dhcpdump: Fix strsep() feature test"), attempted to fix this problem by changing the test on HAVE_STRSEP by a test on _BSD_SOURCE.
Unfortunately, _BSD_SOURCE is not meant to be tested: it's a feature macro that is meant to be *defined* by some code to tell the C library headers to expose (or not) some given functionality.
So instead, we basically revert commit c2a7f0d6051f71f3bb9d83b574d70814339e4b95 by dropping the patch, and pass -DHAVE_STRSEP in the CFLAGS when building dhcpdump.
Fixes:
http://autobuild.buildroot.net/results/7231170d3d3e3637f02382c1a0a96009b0527618/
--- .../0002-fix-strsep-feature-test.patch | 27 ------------------- package/dhcpdump/dhcpdump.mk | 5 +++- 2 files changed, 4 insertions(+), 28 deletions(-) delete mode 100644 package/dhcpdump/0002-fix-strsep-feature-test.patch
package/dhcpdump/0002-fix-strsep-feature-test.patch deleted +0 -27
@@ -1,27 +0,0 @@ -Use the official _BSD_SOURCE feature test macro instead of the meaningless -HAVE_STRSEP macro in order to detect the availability of strsep(). - -This allows toolchains supporting strsep() to use it instead of the custom -implementation from dhcpdump, which also avoids the following error with some -toolchains: - - In file included from dhcpdump.c:30:0: - dhcpdump.c: At top level: - strsep.c:65:23: error: register name not specified for ?delim? - register const char *delim; - ^ - -Signed-off-by: Beno?t Th?baudeau <[email protected]> - -diff -Nrdup dhcpdump-1.8.orig/dhcpdump.c dhcpdump-1.8/dhcpdump.c ---- dhcpdump-1.8.orig/dhcpdump.c 2008-06-24 05:26:52.000000000 +0200 -+++ dhcpdump-1.8/dhcpdump.c 2011-05-31 19:22:15.987388498 +0200 -@@ -26,7 +26,7 @@ - #include <regex.h> - #include "dhcp_options.h" - --#ifndef HAVE_STRSEP -+#ifndef _BSD_SOURCE - #include "strsep.c" - #endif -
package/dhcpdump/dhcpdump.mk +4 -1
@@ -15,8 +15,11 @@ ifeq ($(BR2_STATIC_LIBS),y) DHCPDUMP_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` endif +# glibc, uclibc and musl have strsep() +DHCPDUMP_CFLAGS = $(TARGET_CFLAGS) -DHAVE_STRSEP + define DHCPDUMP_BUILD_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC) $(TARGET_CFLAGS) \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC) $(DHCPDUMP_CFLAGS) \ -D_GNU_SOURCE" LIBS="$(DHCPDUMP_LIBS)" endef
Signature · 1 line
2.20.1
Thomas Petazzoni
AppliedPATCH 1/1 package/dhcpdump: fix build at -O2
Hello,
Quoted 29 lines · Thomas Petazzoni
Since commit
aa556e2035c023d4328185a46e15df532e566067("utils/genrandconfig: test with BR2_OPTIMIZE_2=y"), we are doing builds at -O2 instead of -Os. This has unveiled an issue in thestrsep.cfile:strsep.c:65:23: error: register name not specified for 'delim'
register const char *delim;This
strsep.ccompatibility code is compiled in ifHAVE_STRSEPis not defined, but dhcpdump does not use any kind of configure script to detect the availability ofstrsep(). Therefore by default, it gets compiled in, and the "register" specifier used for some variable declarations instrsep.ccause build issues at -O2.A previous commit in Buildroot from
c2a7f0d6051f71f3bb9d83b574d70814339e4b95("dhcpdump: Fixstrsep()feature test"), attempted to fix this problem by changing the test onHAVE_STRSEPby a test on_BSD_SOURCE.Unfortunately,
_BSD_SOURCEis not meant to be tested: it's a feature macro that is meant to be *defined* by some code to tell the C library headers to expose (or not) some given functionality.So instead, we basically revert commit
c2a7f0d6051f71f3bb9d83b574d70814339e4b95by dropping the patch, and pass -DHAVE_STRSEP in the CFLAGS when building dhcpdump.Fixes:
Quoted 8 lines
http://autobuild.buildroot.net/results/7231170d3d3e3637f02382c1a0a96009b0527618/
Signed-off-by Thomas Petazzoni <[email protected]>--- .../0002-fix-strsep-feature-test.patch | 27 ------------------- package/dhcpdump/dhcpdump.mk | 5 +++- 2 files changed, 4 insertions(+), 28 deletions(-) delete mode 100644 package/dhcpdump/0002-fix-strsep-feature-test.patch
Applied to master, thanks.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
PATCH 1/1 package/dhcpdump: fix build at -O2
In reply to Thomas PetazzoniQuoted 29 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas Petazzoni <[email protected]> writes:
Since commit
aa556e2035c023d4328185a46e15df532e566067("utils/genrandconfig: test with BR2_OPTIMIZE_2=y"), we are doing builds at -O2 instead of -Os. This has unveiled an issue in thestrsep.cfile:strsep.c:65:23: error: register name not specified for 'delim'
register const char *delim;This
strsep.ccompatibility code is compiled in ifHAVE_STRSEPis not defined, but dhcpdump does not use any kind of configure script to detect the availability ofstrsep(). Therefore by default, it gets compiled in, and the "register" specifier used for some variable declarations instrsep.ccause build issues at -O2.A previous commit in Buildroot from
c2a7f0d6051f71f3bb9d83b574d70814339e4b95("dhcpdump: Fixstrsep()feature test"), attempted to fix this problem by changing the test onHAVE_STRSEPby a test on_BSD_SOURCE.Unfortunately,
_BSD_SOURCEis not meant to be tested: it's a feature macro that is meant to be *defined* by some code to tell the C library headers to expose (or not) some given functionality.So instead, we basically revert commit
c2a7f0d6051f71f3bb9d83b574d70814339e4b95by dropping the patch, and pass -DHAVE_STRSEP in the CFLAGS when building dhcpdump.
Quoted 5 lines
Fixes:
http://autobuild.buildroot.net/results/7231170d3d3e3637f02382c1a0a96009b0527618/
Signed-off-by Thomas Petazzoni <[email protected]>
Committed to 2018.02.x and 2018.11.x, thanks.
Signature · 1 line
Bye, Peter Korsgaard