diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2022-09-28 20:36:57 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-09-29 12:23:07 +0200 |
commit | 505a33e9f9d9d766e39fd9c54c6cb2136ae99ecb (patch) | |
tree | c25fbbd8556040494b6f7407a443c62ddd886069 | |
parent | 65b649017c7e42b1c03de46fc9f2a918c53e64d9 (diff) | |
download | passt-505a33e9f9d9d766e39fd9c54c6cb2136ae99ecb.tar passt-505a33e9f9d9d766e39fd9c54c6cb2136ae99ecb.tar.gz passt-505a33e9f9d9d766e39fd9c54c6cb2136ae99ecb.tar.bz2 passt-505a33e9f9d9d766e39fd9c54c6cb2136ae99ecb.tar.lz passt-505a33e9f9d9d766e39fd9c54c6cb2136ae99ecb.tar.xz passt-505a33e9f9d9d766e39fd9c54c6cb2136ae99ecb.tar.zst passt-505a33e9f9d9d766e39fd9c54c6cb2136ae99ecb.zip |
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>
-rw-r--r-- | Makefile | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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 |