From 434271f1321cc78ecf422af73af741b8a59b17f0 Mon Sep 17 00:00:00 2001 From: Carlos Eduardo Seo Date: Wed, 26 Jan 2022 16:19:33 -0300 Subject: [PATCH] TODO(spec): cheri: __LP64__ is not defined for purecap ABI TODO: there is no good ABI macro to check, for now we assume __CHERI_PURE_CAPABILITY__ implies 64 bit long, 64 bit address and 128 bit pointer. --- bits/typesizes.h | 2 +- sysdeps/aarch64/bits/wordsize.h | 2 +- sysdeps/unix/sysv/linux/generic/bits/typesizes.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bits/typesizes.h b/bits/typesizes.h index fffb6bfb64..186853968d 100644 --- a/bits/typesizes.h +++ b/bits/typesizes.h @@ -62,7 +62,7 @@ #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE #define __CPU_MASK_TYPE __ULONGWORD_TYPE -#ifdef __LP64__ +#if defined __LP64__ || defined __CHERI_PURE_CAPABILITY__ /* Tell the libc code that off_t and off64_t are actually the same type for all ABI purposes, even if possibly expressed as different base types for C type-checking purposes. */ diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/aarch64/bits/wordsize.h index 4635431f0e..8fbf6503d8 100644 --- a/sysdeps/aarch64/bits/wordsize.h +++ b/sysdeps/aarch64/bits/wordsize.h @@ -17,7 +17,7 @@ License along with the GNU C Library; if not, see . */ -#ifdef __LP64__ +#if defined __LP64__ || defined __CHERI_PURE_CAPABILITY__ # define __WORDSIZE 64 #else # define __WORDSIZE 32 diff --git a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h index 6b13ff315c..c70dcbccd8 100644 --- a/sysdeps/unix/sysv/linux/generic/bits/typesizes.h +++ b/sysdeps/unix/sysv/linux/generic/bits/typesizes.h @@ -75,7 +75,7 @@ #define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE #define __CPU_MASK_TYPE __ULONGWORD_TYPE -#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32) +#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32) || defined __CHERI_PURE_CAPABILITY__ /* Tell the libc code that off_t and off64_t are actually the same type for all ABI purposes, even if possibly expressed as different base types for C type-checking purposes. */