Repair sys/cdefs.h enough to be usable with GCC 5.x

The __alloc_size and __alloc_align need to be defined to
nothingness for lint, but the existing check is deficient
and allows attributes with working __has_attrubute() to
slip through.
This commit is contained in:
Alexander Kabaev 2015-08-27 14:00:23 +00:00
parent c247c492af
commit 2c51488ec8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=287206

View File

@ -39,7 +39,6 @@
/* /*
* Testing against Clang-specific extensions. * Testing against Clang-specific extensions.
*/ */
#ifndef __has_attribute #ifndef __has_attribute
#define __has_attribute(x) 0 #define __has_attribute(x) 0
#endif #endif
@ -212,6 +211,8 @@
#define __unused #define __unused
#define __packed #define __packed
#define __aligned(x) #define __aligned(x)
#define __alloc_align(x)
#define __alloc_size(x)
#define __section(x) #define __section(x)
#define __weak_symbol #define __weak_symbol
#else #else
@ -236,6 +237,16 @@
#define __aligned(x) __attribute__((__aligned__(x))) #define __aligned(x) __attribute__((__aligned__(x)))
#define __section(x) __attribute__((__section__(x))) #define __section(x) __attribute__((__section__(x)))
#endif #endif
#if __has_attribute(alloc_size) || __GNUC_PREREQ__(4, 3)
#define __alloc_size(x) __attribute__((__alloc_size__(x)))
#else
#define __alloc_size(x)
#endif
#if __has_attribute(alloc_align) || __GNUC_PREREQ__(4, 9)
#define __alloc_align(x) __attribute__((__alloc_align__(x)))
#else
#define __alloc_align(x)
#endif
#endif /* lint */ #endif /* lint */
#if !__GNUC_PREREQ__(2, 95) #if !__GNUC_PREREQ__(2, 95)
@ -371,24 +382,12 @@
#define __returns_twice #define __returns_twice
#endif #endif
#if __has_attribute(alloc_size) || __GNUC_PREREQ__(4, 3)
#define __alloc_size(x) __attribute__((__alloc_size__(x)))
#else
#define __alloc_size(x)
#endif
#if __has_builtin(__builtin_unreachable) || __GNUC_PREREQ__(4, 6) #if __has_builtin(__builtin_unreachable) || __GNUC_PREREQ__(4, 6)
#define __unreachable() __builtin_unreachable() #define __unreachable() __builtin_unreachable()
#else #else
#define __unreachable() ((void)0) #define __unreachable() ((void)0)
#endif #endif
#if __has_attribute(alloc_align) || __GNUC_PREREQ__(4, 9)
#define __alloc_align(x) __attribute__((__alloc_align__(x)))
#else
#define __alloc_align(x)
#endif
/* XXX: should use `#if __STDC_VERSION__ < 199901'. */ /* XXX: should use `#if __STDC_VERSION__ < 199901'. */
#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER) #if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
#define __func__ NULL #define __func__ NULL