The branch main has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=dca634d1544b5cd202dcd06c8c5ea5cbea6c3300
commit dca634d1544b5cd202dcd06c8c5ea5cbea6c3300 Author: Brooks Davis <[email protected]> AuthorDate: 2025-11-27 14:54:55 +0000 Commit: Brooks Davis <[email protected]> CommitDate: 2025-11-27 14:54:55 +0000 new type: ptraddr_t ptraddr_t is an unsigned integer type that can hold the address of any pointer. It differes from uintptr_t in that it does not carry provenance which is useful for CHERI in that it can disambigurate the provenance of uintptr_t expressions. It differes from size_t in that some segmented architecture (not supported by FreeBSD) may have a size_t that does not hold an address. ptraddr_t is not yet standardized, but is currently proposed for inclusion in C++2Y. Prefer the compiler defined __PTRADDR_TYPE__ defintion where available as this a new type and we don't need to worry about historical values. Fall back to __size_t where unavailable. Reviewed by: kib, markj Effort: CHERI upstreaming Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D53817 --- share/man/man7/arch.7 | 5 +++-- sys/sys/_types.h | 6 ++++++ sys/sys/stddef.h | 8 ++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/share/man/man7/arch.7 b/share/man/man7/arch.7 index 5170a27768b8..628d3837f011 100644 --- a/share/man/man7/arch.7 +++ b/share/man/man7/arch.7 @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd October 1, 2025 +.Dd November 27, 2025 .Dt ARCH 7 .Os .Sh NAME @@ -48,7 +48,8 @@ and later, unless otherwise noted. .Fx uses a flat address space. Variables of types -.Vt unsigned long +.Vt unsigned long , +.Vt ptraddr_t , and .Vt size_t have the same representation. diff --git a/sys/sys/_types.h b/sys/sys/_types.h index 6b70b8dc6e32..6e69b06f689d 100644 --- a/sys/sys/_types.h +++ b/sys/sys/_types.h @@ -103,6 +103,12 @@ typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */ #error unsupported ptrdiff_t size #endif +#ifdef __PTRADDR_TYPE__ +typedef __PTRADDR_TYPE__ __ptraddr_t; +#else +typedef __size_t __ptraddr_t; +#endif + /* * Target-dependent type definitions. */ diff --git a/sys/sys/stddef.h b/sys/sys/stddef.h index 73636f5a2370..90186eed7624 100644 --- a/sys/sys/stddef.h +++ b/sys/sys/stddef.h @@ -32,6 +32,14 @@ #include <sys/cdefs.h> #include <sys/_null.h> #include <sys/_types.h> +#include <sys/_visible.h> + +#if __BSD_VISIBLE +#ifndef _PTRADDR_T_DECLARED +typedef __ptraddr_t ptraddr_t; +#define _PTRADDR_T_DECLARED +#endif +#endif #ifndef _PTRDIFF_T_DECLARED typedef __ptrdiff_t ptrdiff_t;
