svn commit: r268137 - head/sys/sys

David Chisnall theraven at FreeBSD.org
Fri Jun 19 12:54:23 UTC 2015


On 19 Jun 2015, at 12:57, Hans Petter Selasky <hps at selasky.org> wrote:
> 
> Hi,
> 
>> Then they will get a compile error no matter what GNUstep’s Foundation.h does.  It can’t prevent cdefs.h from redefining __weak to be something different.
>> 
> 
> Except "#undef __weak”

Please read the example that I wrote.  This will *not* be fixed by #undef __weak.  In particular, the __weak keyword is implemented in Clang as a pre-defined macro, so after *any* inclusion of any C standard library header, every program that uses zeroing weak references needs to redefine __weak to whatever (implementation-defined and subject to change thing) that the compiler defines it to.

>> I’ve just looked at the GNUstep base changelog since that NetBSD commit and there are no relevant changes, so I’ve no idea what the NetBSD people are thinking there.
>> 
> 
> I think we should have a common cross-BSD solution for the proper definition of __weak, so that user-space applications which use it follow along.

Portable code should not rely on anything in cdefs.h.

> Is there a procedure for that? Possibly we should do an exp-run after changing this to ensure that we don't break more than we fix.

I’m not sure what we have any code in ports yet that uses ARC or GC in Objective-C, but I definitely know of people building out-of-ports programs on FreeBSD whose code you have just broken (including myself, though I do Objective-C stuff on 10, so haven’t yet encountered the breakage).

> I'll ask some GNUstep people I know about this.

Taking off my FreeBSD Core Team hat and putting on my GNUstep libobjc maintainer hat: Please fix this and do not define C-family language keywords or compiler reserved words to be incompatible things in cdefs.h.

David



More information about the svn-src-all mailing list