Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 2 Aug 2020 21:53:19 +0300 (MSK)
From: Alexander Monakov <>
Subject: Re: Musl's FD_{SET,ISSET,CLR} macros from sys/select.h trigger
 gcc's -Wsign-conversion warnings

On Sun, 2 Aug 2020, Petr Skocik wrote:

>     #define FD_SET(d, s)   ((s)->fds_bits[(d)/(8*(int)sizeof(long))] |=
> (1UL<<((d)%(8*(int)sizeof(long)))))
>     #define FD_CLR(d, s)   ((s)->fds_bits[(d)/(8*(int)sizeof(long))] &=
> ~(1UL<<((d)%(8*(int)sizeof(long)))))
>     #define FD_ISSET(d, s) !!((s)->fds_bits[(d)/(8*(int)sizeof(long))] &
> (1UL<<((d)%(8*(int)sizeof(long)))))
> You might want to add them.

(casting 'd' to size_t would have been more appropriate, as there's no need
to perform signed division and modulus here)

This is one of the cases where the warning should have been suppressed by
GCC unless -Wsystem-headers is also given: the problem appears when expanding
a macro defined in a system header, so the user can't cleanly avoid it.

Would you care to open an issue in the GCC Bugzilla about it?


Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.