[openssl-project] OS/X builds failing

Viktor Dukhovni openssl-users at dukhovni.org
Fri Feb 9 16:36:07 UTC 2018

> On Feb 9, 2018, at 11:23 AM, Richard Levitte <levitte at openssl.org> wrote:
> From those errors, it looks to me like uintmax_t isn't 64-bit on that
> Mac OS/X machine, unless 'unsigned long' and 'unsigned long long' are
> the same.

No, the compiler is not telling you they're not actually the same, rather
it is telling you that their definitions are independent, and they *could*
be different, and so the code is not portable.

> (that error does surprise me, since uintmax_t is supposed to be the
> largest integer type possible, and yet, the error suggests that this
> isn't the case here)

See above.  Compiling the below on the latest MacOS/X:

$ cat size.c
#include <stdio.h>
#include <stdint.h>

int main(int argc, char **argv)
        printf("char = %zu\n", sizeof(unsigned char));
        printf("short = %zu\n", sizeof(unsigned short));
        printf("int = %zu\n", sizeof(unsigned int));
        printf("long = %zu\n", sizeof(unsigned long int));
        printf("long long = %zu\n", sizeof(unsigned long long int));

        printf("int8_t = %zu\n", sizeof(uint8_t));
        printf("int16_t = %zu\n", sizeof(uint16_t));
        printf("int32_t = %zu\n", sizeof(uint32_t));
        printf("int64_t = %zu\n", sizeof(uint64_t));
        printf("intmax_t = %zu\n", sizeof(uintmax_t));
        return 0;

shows that long, long long, int64_t and intmax_t are presently all the same:

$ ./size
char = 1
short = 2
int = 4
long = 8
long long = 8
int8_t = 1
int16_t = 2
int32_t = 4
int64_t = 8
intmax_t = 8


More information about the openssl-project mailing list