Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 20 Apr 2015 21:35:25 -0400
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: x86_64 and x32 fail to build

On Tue, Apr 21, 2015 at 02:56:27AM +0300, Alexander Monakov wrote:
> > When building without --enable-warnings, there are many false positives from
> > -Wpointer-to-int-cast about x32 __scc(); at least from 4.5 onwards GCC enables
> > this warning by default, so perhaps if musl really wants to silence it, it
> > should test the corresponding -Wno-... flag outside of x$warnings == xyes
> > test?
> 
> Could it be possible that implementation of __scc() can be adjusted to avoid
> triggering the warning?  I hoped the following would achieve that:
> 
> // Cast X to signed integral type of corresponding size
> #define __scc1(X) (__typeof__((X)-(__typeof__(1?(X):0))0)) (X)
> #define __scc(X) sizeof(1?(X):0ULL) < 8 ? (unsigned long) __scc1(X) : (long long) __scc1(X)
> 
> .... but unfortunately it doesn't work with -Werror=pointer-arith when type of
> X is 'void *'.

Indeed, introducing invalid C to make a warning go away is not a nice
tradeoff.

Rich

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.