>> This is bad news... A 32-bit pointer's sign extension is
>> implementation defined, which means it may as well be undefined
>> behavior...
>>
>> GCC sign extends. I think you can get around it with an intermediate
>> cast to uintptr_t:
>>
>>    cb->aio_buf = (uint64_t)(uintptr_t)buf;
>
> The kernel sources seem to use a cast to (unsigned long) in the system
> call definitions...  Someone else will have to figure out how this is
> supposed to work...

Yeah, maybe Andy can jump in.

I known what the kernel is doing is just plain wrong because the C
language does not make the size guarantees they are depending on. For
some reason, they feel the C language rules don't apply to them. The
language rules are important because that's what the compiler authors
follow. Q.v...
-- 
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to