ctype macros broken on 64-bits builds?

Jeff Johnston jjohnstn@redhat.com
Tue Jul 29 17:19:00 GMT 2008

Joseph S. Myers wrote:
> On Mon, 21 Jul 2008, Jeff Johnston wrote:
>>  I have checked in the accompanying patch which implements the alternative you
>> mention above.  To prevent breakage in existing code, I have created a new
>> pointer: __ctype_ptr__ and changed the ctype macros/functions to use it.
> By removing the _ctype_ declaration, this breaks building libstdc++-v3, 
> which has headers knowing about the internals of ctype on several 
> different systems: the newlib version of those headers 
> (config/os/newlib/ctype_noninline.h) uses _ctype_.
> I recommend restoring that compatibility declaration, so that existing 
> libstdc++-v3 versions still build.
I had been contacted about this already off-list and a patch had been 
proposed.  I guess it was never
checked in.  Anyway, I have added the old definition again.  I have no 
idea why C++ wouldn't just use the
macros and avoid accessing the internal table directly.  Using that 
table will only ever get the default table.  If newlib implements ctype 
locale change support, that method will be broken.  The proposed change
sent to me to look at just changed to use the new __ctype_ptr__ instead 
of _ctype_.

-- Jeff J.

More information about the Newlib mailing list