From: Bruce Rogers Date: Tue, 24 Apr 2018 14:47:32 +0000 (-0600) Subject: [build] Disable gcc stringop-truncation warnings X-Git-Tag: v1.20.1~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ed4e3049f5fcb3a0b32f5190940e78c61654cff;p=thirdparty%2Fipxe.git [build] Disable gcc stringop-truncation warnings The gcc 8 compiler introduces a warning for certain string manipulation functions, flagging usages which _may_ not be intended. An audit of the iPXE sources indicates all usages of strncat and strncpy are as intended, so the warnings currently issued are not helpful, especially if warnings are considered errors. Fix by detecting gcc's support for -Wno-stringop-truncation and, if detected, using that option to avoid the warning. Signed-off-by: Bruce Rogers Modified-by: Michael Brown Also-fixed-by: Christian Hesse Also-fixed-by: Roman Kagan Also-fixed-by: Bernhard M. Wiedemann Also-fixed-by: Olaf Hering Signed-off-by: Michael Brown --- diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping index 00b079263..b53377bd5 100644 --- a/src/Makefile.housekeeping +++ b/src/Makefile.housekeeping @@ -177,6 +177,14 @@ ifeq ($(CCTYPE),gcc) WNA_TEST = $(CC) -Wno-address -x c -c /dev/null -o /dev/null >/dev/null 2>&1 WNA_FLAGS := $(shell $(WNA_TEST) && $(ECHO) '-Wno-address') WORKAROUND_CFLAGS += $(WNA_FLAGS) + +# gcc 8.0 generates warnings for certain suspect string operations. Our +# sources have been vetted for correct usage. Turn off these warnings. +# +WNST_TEST = $(CC) -Wno-stringop-truncation -x c -c /dev/null -o /dev/null \ + >/dev/null 2>&1 +WNST_FLAGS := $(shell $(WNST_TEST) && $(ECHO) '-Wno-stringop-truncation') +WORKAROUND_CFLAGS += $(WNST_FLAGS) endif # Some versions of gas choke on division operators, treating them as @@ -437,7 +445,7 @@ endif CFLAGS += $(WORKAROUND_CFLAGS) $(EXTRA_CFLAGS) ASFLAGS += $(WORKAROUND_ASFLAGS) $(EXTRA_ASFLAGS) LDFLAGS += $(WORKAROUND_LDFLAGS) $(EXTRA_LDFLAGS) -HOST_CFLAGS += -O2 -g +HOST_CFLAGS += $(WORKAROUND_CFLAGS) -O2 -g # Inhibit -Werror if NO_WERROR is specified on make command line #