mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@libc.org>
To: Denis Ovsienko <denis@ovsienko.info>
Cc: musl@lists.openwall.com
Subject: Re: [musl] musl CMSG_NXTHDR() triggers a -Wsign-compare from Clang
Date: Fri, 29 Mar 2024 22:06:15 -0400	[thread overview]
Message-ID: <20240330020614.GN4163@brightrain.aerifal.cx> (raw)
In-Reply-To: <20240329165047.6bc7a7c9@atlas-11>

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 <sys/socket.h> 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

  reply	other threads:[~2024-03-30  2:08 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-29 16:50 Denis Ovsienko
2024-03-30  2:06 ` Rich Felker [this message]
2024-04-01 15:39   ` James Y Knight

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240330020614.GN4163@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=denis@ovsienko.info \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).