Skip to content

Commit 1dd56db

Browse files
gitvbmcb30
authored andcommittedJul 22, 2019
[build] Workaround compilation error with gcc 9.1
Compiling with gcc 9.1 generates lots of "taking address of packed member of ... may result in an unaligned pointer value" warnings. Some of these warnings are genuine, and indicate correctly that parts of iPXE currently require the CPU (or runtime environment) to support unaligned accesses. For example: the TCP/IP receive data path will attempt to access 32-bit fields that may not be aligned to a 32-bit boundary. Other warnings are either spurious (such as when the pointer is to a variable-length byte array, which can have no alignment requirement anyway) or unhelpful (such as when the pointer is used solely to provide a debug colour value for the DBGC() macro). There appears to be no easy way to silence the spurious warnings. Since the ability to perform unaligned accesses is already a requirement for iPXE, work around the problem by silencing this class of warnings. Signed-off-by: Valentine Barshak <gvaxon@gmail.com> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
1 parent 412acd7 commit 1dd56db

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed
 

‎src/Makefile.housekeeping

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,15 @@ WNST_TEST = $(CC) -Wstringop-truncation -x c -c /dev/null -o /dev/null \
185185
>/dev/null 2>&1
186186
WNST_FLAGS := $(shell $(WNST_TEST) && $(ECHO) '-Wno-stringop-truncation')
187187
WORKAROUND_CFLAGS += $(WNST_FLAGS)
188+
189+
# gcc 9.1 generates warnings for taking address of packed member which
190+
# may result in an unaligned pointer value. Inhibit the warnings.
191+
#
192+
WNAPM_TEST = $(CC) -Wno-address-of-packed-member -x c -c /dev/null \
193+
-o /dev/null >/dev/null 2>&1
194+
WNAPM_FLAGS := $(shell $(WNAPM_TEST) && \
195+
$(ECHO) '-Wno-address-of-packed-member')
196+
WORKAROUND_CFLAGS += $(WNAPM_FLAGS)
188197
endif
189198

190199
# Some versions of gas choke on division operators, treating them as

0 commit comments

Comments
 (0)
Please sign in to comment.