Hello, Since we are creating a new ABI, it's time to take care of types :)
I have fixed a few cases that had been identified on hurd 32bit, so that hurd 64bit doesn't get affected. There is however one case which remains problematic: stat.st_dev, which the standars say to have type dev_t, is #defined to st_fsid on Hurd, since the pid of the translator is what is representative of the device number. It happens that dev_t is 32bit (__U32_TYPE) and fsid_t is 64bit (__UQUAD_TYPE), see BZ 23084. Perhaps we should just make dev_t UWORD_TYPE, so it becomes 64bit on Hurd 64bit, as the attached patch does? (it is UQUAD or 64bit on Linux ports) I have only checked what is tested by the testsuite, we should probably carefully review all types exposed by libc with hurd-specific definitions. Samuel
diff --git a/sysdeps/mach/hurd/bits/typesizes.h b/sysdeps/mach/hurd/bits/typesizes.h index 7b95bb0b91..646ee934bb 100644 --- a/sysdeps/mach/hurd/bits/typesizes.h +++ b/sysdeps/mach/hurd/bits/typesizes.h @@ -26,7 +26,7 @@ /* See <bits/types.h> for the meaning of these macros. This file exists so that <bits/types.h> need not vary across different GNU platforms. */ -#define __DEV_T_TYPE __U32_TYPE +#define __DEV_T_TYPE __UWORD_TYPE #define __UID_T_TYPE __U32_TYPE #define __GID_T_TYPE __U32_TYPE #define __INO_T_TYPE __ULONGWORD_TYPE