misc/176628: [stdint.h] use safer way of definint __WORDSIZE
Dmitry Marakasov
amdmi3 at amdmi3.ru
Wed Mar 6 20:40:01 UTC 2013
The following reply was made to PR kern/176628; it has been noted by GNATS.
From: Dmitry Marakasov <amdmi3 at amdmi3.ru>
To: Bruce Evans <brde at optusnet.com.au>
Cc: FreeBSD-gnats-submit at FreeBSD.org, freebsd-bugs at FreeBSD.org
Subject: Re: misc/176628: [stdint.h] use safer way of definint __WORDSIZE
Date: Thu, 7 Mar 2013 00:38:44 +0400
* Bruce Evans (brde at optusnet.com.au) wrote:
> > __WORDSIZE is always defined as 32, which is wrong on 64bit systems.
> >
> > I have two solutions for the problem.
> > First one uses the same way of testing for 64bit pointers, but doesn't define __WORDSIZE if it can't be detected reliably.
>
> C++ code should be happier with __WORDSIZE being undefined that with it
> being defined to garbage.
>
> > Second one uses different way of testing for 64bit pointers with checking for __LP64__.
> >
> > The second one looks much more useful, but I'm not sure if __LP64__ has the right semantics and will work in all platforms.
>
> Not right, but better than the UINTPTR_MAX test. Both are broken and default
> to __WORDSIZE == 32 if pointers are not precisely 64 bits. Actually, the
> __LP64__ test is more fragile, since it fails if __L32_P64__ and many systems
> use that. Just not any FreeBSD systems, so it is valid to use a hackish
> ifdef that only works on current FreeBSD systems.
So, what solution do you think is the best in current situation?
--
Dmitry Marakasov . 55B5 0596 FF1E 8D84 5F56 9510 D35A 80DD F9D2 F77D
amdmi3 at amdmi3.ru ..: jabber: amdmi3 at jabber.ru http://www.amdmi3.ru
More information about the freebsd-bugs
mailing list