summaryrefslogtreecommitdiffstats
path: root/gl/cdefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'gl/cdefs.h')
-rw-r--r--gl/cdefs.h23
1 files changed, 13 insertions, 10 deletions
diff --git a/gl/cdefs.h b/gl/cdefs.h
index ab57d4a..7b8ed5b 100644
--- a/gl/cdefs.h
+++ b/gl/cdefs.h
@@ -1,4 +1,4 @@
1/* Copyright (C) 1992-2021 Free Software Foundation, Inc. 1/* Copyright (C) 1992-2022 Free Software Foundation, Inc.
2 Copyright The GNU Toolchain Authors. 2 Copyright The GNU Toolchain Authors.
3 This file is part of the GNU C Library. 3 This file is part of the GNU C Library.
4 4
@@ -41,7 +41,9 @@
41 Similarly for __has_builtin, etc. */ 41 Similarly for __has_builtin, etc. */
42#if (defined __has_attribute \ 42#if (defined __has_attribute \
43 && (!defined __clang_minor__ \ 43 && (!defined __clang_minor__ \
44 || 3 < __clang_major__ + (5 <= __clang_minor__))) 44 || (defined __apple_build_version__ \
45 ? 6000000 <= __apple_build_version__ \
46 : 3 < __clang_major__ + (5 <= __clang_minor__))))
45# define __glibc_has_attribute(attr) __has_attribute (attr) 47# define __glibc_has_attribute(attr) __has_attribute (attr)
46#else 48#else
47# define __glibc_has_attribute(attr) 0 49# define __glibc_has_attribute(attr) 0
@@ -143,7 +145,8 @@
143#define __bos0(ptr) __builtin_object_size (ptr, 0) 145#define __bos0(ptr) __builtin_object_size (ptr, 0)
144 146
145/* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */ 147/* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */
146#if __USE_FORTIFY_LEVEL == 3 && __glibc_clang_prereq (9, 0) 148#if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \
149 || __GNUC_PREREQ (12, 0))
147# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0) 150# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0)
148# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1) 151# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1)
149#else 152#else
@@ -161,15 +164,15 @@
161 || (__builtin_constant_p (__l) && (__l) > 0)) 164 || (__builtin_constant_p (__l) && (__l) > 0))
162 165
163/* Length is known to be safe at compile time if the __L * __S <= __OBJSZ 166/* Length is known to be safe at compile time if the __L * __S <= __OBJSZ
164 condition can be folded to a constant and if it is true. The -1 check is 167 condition can be folded to a constant and if it is true, or unknown (-1) */
165 redundant because since it implies that __glibc_safe_len_cond is true. */
166#define __glibc_safe_or_unknown_len(__l, __s, __osz) \ 168#define __glibc_safe_or_unknown_len(__l, __s, __osz) \
167 (__glibc_unsigned_or_positive (__l) \ 169 ((__osz) == (__SIZE_TYPE__) -1 \
168 && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \ 170 || (__glibc_unsigned_or_positive (__l) \
169 __s, __osz)) \ 171 && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \
170 && __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) 172 (__s), (__osz))) \
173 && __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), (__s), (__osz))))
171 174
172/* Conversely, we know at compile time that the length is safe if the 175/* Conversely, we know at compile time that the length is unsafe if the
173 __L * __S <= __OBJSZ condition can be folded to a constant and if it is 176 __L * __S <= __OBJSZ condition can be folded to a constant and if it is
174 false. */ 177 false. */
175#define __glibc_unsafe_len(__l, __s, __osz) \ 178#define __glibc_unsafe_len(__l, __s, __osz) \