소스 검색

[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>
tags/v1.20.1
Valentine Barshak 5 년 전
부모
커밋
1dd56dbd11
1개의 변경된 파일9개의 추가작업 그리고 0개의 파일을 삭제
  1. 9
    0
      src/Makefile.housekeeping

+ 9
- 0
src/Makefile.housekeeping 파일 보기

@@ -185,6 +185,15 @@ WNST_TEST = $(CC) -Wstringop-truncation -x c -c /dev/null -o /dev/null \
185 185
 		  >/dev/null 2>&1
186 186
 WNST_FLAGS := $(shell $(WNST_TEST) && $(ECHO) '-Wno-stringop-truncation')
187 187
 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)
188 197
 endif
189 198
 
190 199
 # Some versions of gas choke on division operators, treating them as

Loading…
취소
저장