From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.4 Received: from second.openwall.net (second.openwall.net [193.110.157.125]) by inbox.vuxu.org (Postfix) with SMTP id 1DD9421731 for ; Sat, 30 Mar 2024 03:08:38 +0100 (CET) Received: (qmail 29742 invoked by uid 550); 30 Mar 2024 02:06:04 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 28650 invoked from network); 30 Mar 2024 02:06:04 -0000 Date: Fri, 29 Mar 2024 22:06:15 -0400 From: Rich Felker To: Denis Ovsienko Cc: musl@lists.openwall.com Message-ID: <20240330020614.GN4163@brightrain.aerifal.cx> References: <20240329165047.6bc7a7c9@atlas-11> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240329165047.6bc7a7c9@atlas-11> User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [musl] musl CMSG_NXTHDR() triggers a -Wsign-compare from Clang On Fri, Mar 29, 2024 at 04:50:47PM +0000, Denis Ovsienko wrote: > Hello all. > > To see how well libpcap compiles with musl libc, I used Alpine Linux > 3.19 and noticed that one of the musl headers triggers warnings in > libpcap source, which in development environments tends to use -Werror > because normally it produces no compiler warnings. The warning in musl > libc becomes a warning in libpcap pcap-bt-linux.c and > fails the build. The workaround is not difficult, but fixing it in > upstream would make more sense from my point of view. The problem > reproduces using Clang only. > > $ /usr/lib/libc.so > musl libc (x86_64) > Version 1.2.4_git20230717 > Dynamic Program Loader > Usage: /usr/lib/libc.so [options] [--] pathname [args] > > $ clang --version > Alpine clang version 17.0.5 > Target: x86_64-alpine-linux-musl > Thread model: posix > InstalledDir: /usr/bin > Configuration file: /etc/clang17/x86_64-alpine-linux-musl.cfg > > $ clang > -fvisibility=hidden -W > -Wall -Wcomma > -Wdocumentation > -Wformat-nonliteral -Wmissing-noreturn -Wmissing-prototypes > -Wmissing-variable-declarations -Wnull-pointer-subtraction > -Wpointer-arith -Wpointer-sign -Wshadow -Wshorten-64-to-32 > -Wsign-compare -Wstrict-prototypes -Wundef -Wunreachable-code > -Wunused-but-set-parameter -Wunused-but-set-variable -Wunused-parameter > -Wused-but-marked-unused -fpic -I. -I/usr/include/libnl3 > -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -DBUILDING_PCAP > -Dpcap_EXPORTS -DHAVE_CONFIG_H -Werror -c ./pcap-bt-linux.c > > ../pcap-bt-linux.c:373:10: error: comparison of integers of different signs: 'unsigned long' and 'long' [-Werror,-Wsign-compare] > 373 | cmsg = CMSG_NXTHDR(&msg, cmsg); > | ^~~~~~~~~~~~~~~~~~~~~~~ > /usr/include/sys/socket.h:358:44: note: expanded from macro 'CMSG_NXTHDR' > 358 | __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \ > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 1 error generated. > make: *** [Makefile:87: pcap-bt-linux.o] Error 1 This issue has come up serveral times. It's not clear to me why clang (ang gcc?) fail to suppress this as coming from -isystem. Clearly they now where the macro was expanded from; it's even in the above message. If there's no path forward on getting compilers not to do this, maybe we should look into working around the warning this one time? :/ Rich