svn commit: r232264 - in head/sys: amd64/include i386/include
pc98/include x86/include
Tijl Coosemans
tijl at freebsd.org
Sun Mar 4 20:05:27 UTC 2012
On Sunday 04 March 2012 19:51:22 John Baldwin wrote:
> On Tuesday, February 28, 2012 01:38:34 PM Tijl Coosemans wrote:
>> Author: tijl
>> Date: Tue Feb 28 18:38:33 2012
>> New Revision: 232264
>> URL: http://svn.freebsd.org/changeset/base/232264
>>
>> Log:
>> Copy amd64 _stdint.h to x86 and merge with i386 _stdint.h. Replace
>> amd64/i386/pc98 _stdint.h with stubs.
>>
>> Added:
>> head/sys/x86/include/_stdint.h
>> - copied, changed from r232259, head/sys/amd64/include/_stdint.h
>
> This broke C++ software (such as the audio/flac port), that #includes
> <stdint.h> with __STDC_LIMIT_MACROS defined but not __STDC_CONSTANT_MACROS
> defined. The problem is that you have changed UINT64_MAX and INT64_MAX to use
> UINT64_C() and INT64_C(), so in this case UINT64_MAX now expands to
> UINT64_C(...) which can't be resolved to a constant.
>
> You should be able to reproduce this via the following:
>
> % cat > bar.cc
> #define __STDC_LIMIT_MACROS
> #include <stdint.h>
> % c++ -c bar.cc
>
> (The test to see if __WORDSIZE should be defined at the end of stdint.h trips
> over this bug.)
>
> While you could do something like add __INT64_C() and __UINT64_C() macros that
> are always defined and use them for INT64_MAX and UINT64_MAX, I think the
> simplest fix is probably to just use #ifdef _LP64 tests to define INT64_MAX
> and UINT64_MAX as pure constants as those are the only two macros effected.
>
> (I've just hardcoded those two constants on my little netbook so I can keep
> building ports and that worked fine for audio/flac).
Fixed in r232519.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 228 bytes
Desc: This is a digitally signed message part.
Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20120304/fd828984/attachment.pgp
More information about the svn-src-all
mailing list