diff options
| author | Brooks Davis <brooks@FreeBSD.org> | 2026-02-19 15:05:22 +0000 |
|---|---|---|
| committer | Brooks Davis <brooks@FreeBSD.org> | 2026-02-19 15:10:32 +0000 |
| commit | 2adc3f0db1877dbe9801e6dacfa9ae8df8879549 (patch) | |
| tree | 81451ade7b4a091131c3f312ec6a9d19ec141d67 | |
| parent | cb59eec9ebbf1ae3a24223431ed1d947674c8c6a (diff) | |
stddef.h: centralize definition of offsetof()
Move to sys/_offsetof.h and use __builtin_offsetof() instead of
__offsetof to avoid reintroducing sys/cdefs.h polution in stddef.h.
This has the side effect of allowing sys/stddef.h to be included after
stddef.h which can happen in compatability headers.
Effort: CHERI upstreaming
Sponsored by: DARPA, AFRL
Reviewed by: imp, kib
Differential Revision: https://reviews.freebsd.org/D55307
| -rw-r--r-- | include/stddef.h | 5 | ||||
| -rw-r--r-- | sys/sys/_offsetof.h | 19 | ||||
| -rw-r--r-- | sys/sys/stddef.h | 3 |
3 files changed, 21 insertions, 6 deletions
diff --git a/include/stddef.h b/include/stddef.h index 978a34affc0a..9c7f1f147289 100644 --- a/include/stddef.h +++ b/include/stddef.h @@ -33,6 +33,7 @@ #define _STDDEF_H_ #include <sys/_null.h> +#include <sys/_offsetof.h> #include <sys/_types.h> #include <sys/_visible.h> @@ -68,10 +69,6 @@ typedef __max_align_t max_align_t; #endif #endif -#ifndef offsetof -#define offsetof(type, field) __builtin_offsetof(type, field) -#endif - #if __EXT1_VISIBLE /* ISO/IEC 9899:2011 K.3.3.2 */ #ifndef _RSIZE_T_DEFINED diff --git a/sys/sys/_offsetof.h b/sys/sys/_offsetof.h new file mode 100644 index 000000000000..25982fad774a --- /dev/null +++ b/sys/sys/_offsetof.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2026 Capabilities Limited + * + * SPDX-License-Identifier: BSD-2-Clause + * + * This software was developed by SRI International, the University of + * Cambridge Computer Laboratory (Department of Computer Science and + * Technology), and Capabilities Limited under Defense Advanced Research + * Projects Agency / Air Force Research Laboratory (DARPA/AFRL) Contract + * No. FA8750-24-C-B047 ("DEC"). + */ +#ifndef _SYS__OFFSETOF_H_ +#define _SYS__OFFSETOF_H_ + +#ifndef offsetof +#define offsetof(type, field) __builtin_offsetof(type, field) +#endif + +#endif /* _SYS__OFFSETOF_H_ */ diff --git a/sys/sys/stddef.h b/sys/sys/stddef.h index 90186eed7624..911755f71aa8 100644 --- a/sys/sys/stddef.h +++ b/sys/sys/stddef.h @@ -31,6 +31,7 @@ #include <sys/cdefs.h> #include <sys/_null.h> +#include <sys/_offsetof.h> #include <sys/_types.h> #include <sys/_visible.h> @@ -46,6 +47,4 @@ typedef __ptrdiff_t ptrdiff_t; #define _PTRDIFF_T_DECLARED #endif -#define offsetof(type, field) __offsetof(type, field) - #endif /* !_SYS_STDDEF_H_ */ |
