delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2020/08/03/06:46:42

X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D76D93861013
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1596451558;
bh=ZoY08g4UOjN+3LmPOgvDKtygOOPabQ/UbEQWaTd9Dq8=;
h=Date:From:To:Subject:References:In-Reply-To:List-Id:
List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:
Reply-To:Cc:From;
b=ngbfnDcx9BcHLzYwGJM4psLyTZN3ybZ0GC9qWrEi0drQj9/1k46AaparjHXB2Fmhh
K6ABG/JmbJe+NDZZsGsVtkoZaiW0QL7r2wh/mDlqRYdhH7z34id4JyZPg074YbMS7q
hvmZJzq046IaafsNdb/bCeHzcHcE8SSy501/MfMs=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0CA643858D35
Authentication-Results: sourceware.org;
dmarc=none (p=none dis=none) header.from=cygwin.com
Authentication-Results: sourceware.org;
spf=fail smtp.mailfrom=corinna-cygwin AT cygwin DOT com
Date: Mon, 3 Aug 2020 12:45:52 +0200
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
To: Petr Skocik <pskocik AT gmail DOT com>
Subject: Re: FD_{SET,ISSET,CLR} macros from sys/select.h triggerring gcc's
-Wsign-conversion warnings
Message-ID: <20200803104552.GJ460314@calimero.vinschen.de>
Mail-Followup-To: Petr Skocik <pskocik AT gmail DOT com>, cygwin AT cygwin DOT com
References: <1f188b7e-6dc4-73af-e458-013760210469 AT gmail DOT com>
MIME-Version: 1.0
In-Reply-To: <1f188b7e-6dc4-73af-e458-013760210469@gmail.com>
X-Provags-ID: V03:K1:7ER4nqbXVhu2glPNsoHGIRMVyNOO59PbFRrrptDRcS8NUeZwIvC
KhvhHnFbxmD/RgmF6P3fKFMGzC2MtH8Vm9rNnkCs8ZaYTV7Bcm8f8QqWC8a+F4EXuXAdzvz
n4mUfCoOEQAMrAzk2Ls3er47zNywjJo7Ms3U1PPm7FMjBbGoO1V266k8VJt2a5JgBtn0Nf1
NZIlVz3mx0ypTsdrYudbQ==
X-UI-Out-Filterresults: notjunk:1;V03:K0:P2NnELNE3ZA=:Mdx06pe+WNoxICwwRxoaeb
87pAQs92M7ZaaxWXI+hSrZ2r2WFIVv1r5dKSfQV95+pGaqnejrrog/CgfJ7FWnF2qDI1X0nNO
JlqK9jNQDRMbn+V1psjjU2/GiRMCzAzAtgBo+5J9GMWIyuwayHdaNoAiLqzr8HE5xR1e7iN8R
60fkpSisMBimZxbJosZjhKQcKBrJwa6QSkGwD44BbFU7cPLGcZm8aPoyAauIpUWqGiy43F3UK
SqIuk3n8TygBBXWhWa6B6y9cgYFsPfx967eNuef96adu9vYPVjp3q2km5Hm5I4BQ7fKNidHqf
xg+AuECRIpxjpI3nBHnEwr3TQ0l2ntnYLDScEMqz9W1VNwkPjTN4ZEdwnYZgtP1+m+Y9TQw0V
Z34P45JXuesvyLNMqAgFLkDzCaNjEdCQmGEHjNxZgAFIkdTzrIqxoJXn+mhgzb3UQ1pjtBRSJ
8CTAaTK8UL9w+ctIQyFh9RRrKjApD0hxJVQvyx1uq/hBq8HUBsFjuKwAOuWZtiC/AVq76pxHW
XgoOdIQkJyjq4Vwt2bK5B4+UAaGWgHQuN2KdCDQvajsp+t2bqUruiqJmqspKcA4NoCYg5OF/9
5ffNYUz6xuYDb6tS7LbF8z4/PJ+8+KWmVOxSzJKeHTayB6FmI49KCSJX4fsKOjRTPRrgrnvqK
UcAKPGrISBRfw5wgOwjx71zXsgVyuBnmhjOOSSfBczN96lCVcVdxld7hVKjNiE/SgriKOuSFd
YgajVtAigtqPkSU9bzEhpJ7EsjDc0A8Jf6ZpDu4hlcLt94JV6PBw0deeV0A6a+Pzuc6qNw4K8
S32RbAzTZJka8HXNwkGHPeU0AIf/nRR3oOaEwVnz8sK5wdd7hYyiBgRMZn0cEJFW2Uw2wt54g
o4KSgmrsRdmlqVcwIlNg==
X-Spam-Status: No, score=-99.7 required=5.0 tests=BAYES_00,
GOOD_FROM_CORINNA_CYGWIN, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS,
RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NEUTRAL,
TXREP autolearn=ham autolearn_force=no version=3.4.2
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
server2.sourceware.org
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.29
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
Reply-To: cygwin AT cygwin DOT com
Cc: cygwin AT cygwin DOT com
Errors-To: cygwin-bounces AT cygwin DOT com
Sender: "Cygwin" <cygwin-bounces AT cygwin DOT com>
X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 073AkOmH011488

Hi Petr,

On Aug  2 20:08, Petr Skocik via Cygwin wrote:
> Example:
> 
> #include <sys/select.h>
> void f(int X)
> {
>     fd_set set;
>     FD_ZERO(&set);
>     FD_SET(X,&set);
>     FD_CLR(X+1,&set);
>     (void)FD_ISSET(X+2,&set);
> }
> 
> causes
> 
> fds.c:7:2: warning: conversion to ‘long unsigned int’ from ‘int’ may
> change the sign of the result [-Wsign-conversion]
>   FD_SET(X,&set);
>   ^~~~~~
> [...]
> on gcc with -Wconversion -Wsign-conversion.
> 
> The problem is caused by the following macros:
> 
>     #  define    NFDBITS    (sizeof (fd_mask) * 8)    /* bits per mask */
>     #  define    FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1L <<
> ((n) % NFDBITS)))
>     #  define    FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1L <<
> ((n) % NFDBITS)))
>     #  define    FD_ISSET(n, p)    ((p)->fds_bits[(n)/NFDBITS] & (1L <<
> ((n) % NFDBITS)))
> 
> int-casting the sizeof and using 1UL instead of 1L fixes the problem:

Thanks.  I pushed a patch which will show up in the next Cygwin release:
https://sourceware.org/git/?p=newlib-cygwin.git;a=commitdiff;h=5717262b8ecf

Funny enough, while the GLibc version of sys/select.h does not generate
these warnings, the same problem still exists in the upstream FreeBSD
code.

For testing I uploaded a new developer snapshot to
https://cygwin.com/snapshots/  You only need to fetch the new
sys/select.h file.


Thanks,
Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019