I am abandoning this patch and sending another smaller one that is 
hopefully less controversial.

On Monday, August 6, 2018 at 11:37:22 AM UTC-4, Nadav Har'El wrote:
>
>
> On Mon, Aug 6, 2018 at 6:17 PM, Nadav Har'El <[email protected] 
> <javascript:>> wrote:
>
>>
>> Oh, I found the problem. It is OSv's bug, on the way we define uint64_t 
>> (we define it ourselves, we don't use gcc's headers):
>> In:
>>
>> include/api/x64/bits/alltypes.h.sh:TYPEDEF unsigned long      uint64_t;
>>
>> This is incorrect for -m32, where "unsigned long" is just 32 bits, not 64 
>> bits!
>>
>> I think this should either be changed to "unsigned long long" (but need 
>> to check the implications...) or probably better - use an #ifdef:
>>
>> #if __WORDSIZE == 64
>> typedef signed long int int64_t;
>> typedef unsigned long int uint64_t;
>> #else
>> typedef signed long long int __int64_t;
>> typedef unsigned long long int __uint64_t;
>> #endif
>>
>> then you wouldn't need to manually change the existing use of uint64_t.
>>
>
> I thought __WORDSIZE was a gcc builtin, but it isn't... So we can use the 
> builtin __x86_64__ :
>
> #ifdef __x86_64__
> typedef signed long int int64_t;
> typedef unsigned long int uint64_t;
> #else
> typedef signed long long int int64_t;
> typedef unsigned long long int uint64_t;
> #endif
>
> Also need to define the __* variants of the same type (they should just be 
> aliases to the ones without the __, I don't know why we didn't do that).
>
>

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to