From 3690e01ff38691f7fdf5ebd88724e5e7e7f93016 Mon Sep 17 00:00:00 2001
From: =?utf8?q?P=C3=A1draig=20Brady?=
Date: Tue, 28 Apr 2015 22:24:45 +0100
Subject: [PATCH] eealloc, pagealign_alloc, xalloc: avoid clang warnings
Avoid [-Wunknown-attributes] warnings like:
warning: unknown attribute '__alloc_size__' ignored
* lib/xalloc.h: Don't use the __alloc_size__ attribute
with clang, as support has been fully removed as of clang 3.5:
https://github.com/llvm-mirror/clang/commit/c047507a
* lib/eealloc.h: Likewise.
* lib/pagealign_alloc.h: Likewise.
---
ChangeLog | 11 +++++++++++
lib/eealloc.h | 25 +++++++++++++++----------
lib/pagealign_alloc.h | 29 +++++++++++++++--------------
lib/xalloc.h | 3 ++-
4 files changed, 43 insertions(+), 25 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index fcc638311e..6d9ba2c38f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2015-04-28 Pádraig Brady
+
+ eealloc, pagealign_alloc, xalloc: avoid clang warnings
+ Avoid [-Wunknown-attributes] warnings like:
+ warning: unknown attribute '__alloc_size__' ignored
+ * lib/xalloc.h: Don't use the __alloc_size__ attribute
+ with clang, as support has been fully removed as of clang 3.5:
+ https://github.com/llvm-mirror/clang/commit/c047507a
+ * lib/eealloc.h: Likewise.
+ * lib/pagealign_alloc.h: Likewise.
+
2015-04-27 Paul Eggert
tests: pacify GCC 5.1's stricter printf checking
diff --git a/lib/eealloc.h b/lib/eealloc.h
index ab2faa05ee..1029014dcf 100644
--- a/lib/eealloc.h
+++ b/lib/eealloc.h
@@ -39,17 +39,24 @@ _GL_INLINE_HEADER_BEGIN
# define EEALLOC_INLINE _GL_INLINE
#endif
+#if __GNUC__ >= 3
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+#else
+# define _GL_ATTRIBUTE_MALLOC
+#endif
+
+#if ! defined __clang__ && \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
+#else
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args)
+#endif
+
#if MALLOC_0_IS_NONNULL
# define eemalloc malloc
#else
-# if __GNUC__ >= 3
EEALLOC_INLINE void *eemalloc (size_t n)
- __attribute__ ((__malloc__))
-# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
- __attribute__ ((__alloc_size__ (1)))
-# endif
- ;
-# endif
+ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
EEALLOC_INLINE void *
eemalloc (size_t n)
{
@@ -63,10 +70,8 @@ eemalloc (size_t n)
#if REALLOC_0_IS_NONNULL
# define eerealloc realloc
#else
-# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
EEALLOC_INLINE void *eerealloc (void *p, size_t n)
- __attribute__ ((__alloc_size__ (2)));
-# endif
+ _GL_ATTRIBUTE_ALLOC_SIZE ((2));
EEALLOC_INLINE void *
eerealloc (void *p, size_t n)
{
diff --git a/lib/pagealign_alloc.h b/lib/pagealign_alloc.h
index 1fbbf08108..acdadc4076 100644
--- a/lib/pagealign_alloc.h
+++ b/lib/pagealign_alloc.h
@@ -20,6 +20,19 @@
# include
+#if __GNUC__ >= 3
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+#else
+# define _GL_ATTRIBUTE_MALLOC
+#endif
+
+#if ! defined __clang__ && \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
+#else
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args)
+#endif
+
/* Allocate a block of memory of SIZE bytes, aligned on a system page
boundary.
If SIZE is not a multiple of the system page size, it will be rounded up
@@ -27,24 +40,12 @@
Return a pointer to the start of the memory block. Upon allocation failure,
return NULL and set errno. */
extern void *pagealign_alloc (size_t size)
-# if __GNUC__ >= 3
- __attribute__ ((__malloc__))
-# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
- __attribute__ ((__alloc_size__ (1)))
-# endif
-# endif
- ;
+ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
/* Like pagealign_alloc, except it exits the program if the allocation
fails. */
extern void *pagealign_xalloc (size_t size)
-# if __GNUC__ >= 3
- __attribute__ ((__malloc__))
-# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
- __attribute__ ((__alloc_size__ (1)))
-# endif
-# endif
- ;
+ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
/* Free a memory block.
PTR must be a non-NULL pointer returned by pagealign_alloc or
diff --git a/lib/xalloc.h b/lib/xalloc.h
index 68f847a2c4..81ef680a3a 100644
--- a/lib/xalloc.h
+++ b/lib/xalloc.h
@@ -41,7 +41,8 @@ extern "C" {
# define _GL_ATTRIBUTE_MALLOC
#endif
-#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
+#if ! defined __clang__ && \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
#else
# define _GL_ATTRIBUTE_ALLOC_SIZE(args)
--
2.39.5