Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Feb 2013 14:11:39 +0100
From:      Borja Marcos <borjam@sarenet.es>
To:        freebsd-hackers@freebsd.org
Subject:   Stupid question about integer sizes
Message-ID:  <77B93E04-9254-4EF1-8BDB-ED9214CEC2BC@sarenet.es>

next in thread | raw e-mail | index | archive | help

Hello,

I'm really sorry if this is a stupid question, but as far as I know, =
u_int64_t defined in /usr/include/sys/types.h should *always* be
a 64 bit unsigned integer, right?=20

Seems there's a bug (or I need more and stronger coffee). Compiling a =
program on a 64 bit system with -m32 gets the 64 bit integer types =
wrong.

% cat tachin.c=20
#include <sys/types.h>
#include <stdio.h>


main()
{
	printf("sizeof uint64_t =3D %d\n", sizeof(uint64_t));
	printf("sizeof u_int64_t =3D %d\n", sizeof(u_int64_t));
}



uname -a
FreeBSD splunk 9.1-RELEASE FreeBSD 9.1-RELEASE #14: Wed Jan 23 17:24:05 =
CET 2013     root@splunk:/usr/obj/usr/src/sys/SPLUNK  amd64

% gcc -o tachin tachin.c
% ./tachin
sizeof uint64_t =3D 8
sizeof u_int64_t =3D 8

% ./tachin
sizeof uint64_t =3D 4                       <=3D=3D=3D=3D=3D=3D=3D =
WRONG!!
sizeof u_int64_t =3D 4                    <=3D=3D=3D=3D=3D=3D=3D WRONG!!

The same happens with clang.

% clang -m32 -o tachin tachin.c
tachin.c:5:1: warning: type specifier missing, defaults to 'int' =
[-Wimplicit-int]
main()
^~~~
1 warning generated.
% ./tachin
sizeof uint64_t =3D 4			<=3D=3D=3D=3D=3D=3D=3D WRONG!!
sizeof u_int64_t =3D 4			<=3D=3D=3D=3D=3D=3D=3D WRONG!!


if I do the same on a i386 system (8.2-RELEASE, but it should be =
irrelevant) the u_int64 types have the correct size.

%gcc -o tachin tachin.c
%./tachin
sizeof uint64_t =3D 8
sizeof u_int64_t =3D 8





Am I missing anything? Seems like a too stupid problem to be a real bug. =
Sorry if I am wrong.






Borja.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?77B93E04-9254-4EF1-8BDB-ED9214CEC2BC>