mirror of
https://passt.top/passt
synced 2025-01-12 15:43:05 +00:00
Makefile: Extend noinline workarounds for LTO and -O2 to gcc 12
Commit 1a563a0cbd49 ("passt: Address gcc 11 warnings") works around an issue where the remote address passed to hash functions is seen as uninitialised by gcc, with -flto and -O2. It turns out we get the same exact behaviour on gcc 12.1 and 12.2, so extend the applicability of the same workaround to gcc 12. Don't go further than that, though: should the issue reported at: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78993 happen to be fixed in a later version of gcc, we won't need the noinline attributes anymore. Otherwise, we'll notice. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
65b649017c
commit
505a33e9f9
6
Makefile
6
Makefile
@ -45,12 +45,12 @@ PASST_HEADERS = arch.h arp.h checksum.h conf.h dhcp.h dhcpv6.h icmp.h \
|
||||
pcap.h port_fwd.h siphash.h tap.h tcp.h tcp_splice.h udp.h util.h
|
||||
HEADERS = $(PASST_HEADERS) seccomp.h
|
||||
|
||||
# On gcc 11.2, with -O2 and -flto, tcp_hash() and siphash_20b(), if inlined,
|
||||
# seem to be hitting something similar to:
|
||||
# On gcc 11 and 12, with -O2 and -flto, tcp_hash() and siphash_20b(), if
|
||||
# inlined, seem to be hitting something similar to:
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78993
|
||||
# from the pointer arithmetic used from the tcp_tap_handler() path to get the
|
||||
# remote connection address.
|
||||
ifeq ($(shell $(CC) -dumpversion),11)
|
||||
ifeq (,$(filter-out 11 12, $(shell $(CC) -dumpversion)))
|
||||
ifneq (,$(filter -flto%,$(FLAGS) $(CFLAGS)))
|
||||
ifneq (,$(filter -O2,$(FLAGS) $(CFLAGS)))
|
||||
FLAGS += -DTCP_HASH_NOINLINE
|
||||
|
Loading…
x
Reference in New Issue
Block a user