From 2f62b9ee0c086f72ded8abfe84c6d5ab86c49ab1 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sun, 30 Dec 2012 13:07:07 -0500 Subject: [PATCH] sys/cdefs.h: export __attribute_alloc_size__ Since we want to use this in installed headers, move it to the installed sys/cdefs.h. This requires a slight tweaking of the name (add trailing underscores). Signed-off-by: Mike Frysinger --- ChangeLog | 7 +++++++ include/programs/xmalloc.h | 6 +++--- include/sys/cdefs.h | 2 -- misc/sys/cdefs.h | 9 +++++++++ 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3767bf1dee..12559ab9df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-02-18 Mike Frysinger + + * include/programs/xmalloc.h: Change __attribute_alloc_size to + __attribute_alloc_size__. + * include/sys/cdefs.h (__attribute_alloc_size): Macro removed. + * misc/sys/cdefs.h (__attribute_alloc_size__): New macro. + 2013-02-18 Mike Frysinger * include/programs/xmalloc.h: New file. diff --git a/include/programs/xmalloc.h b/include/programs/xmalloc.h index 7f3aba5f37..f4278852be 100644 --- a/include/programs/xmalloc.h +++ b/include/programs/xmalloc.h @@ -23,11 +23,11 @@ /* Prototypes for a few program-wide used functions. */ extern void *xmalloc (size_t n) - __attribute_malloc__ __attribute_alloc_size (1); + __attribute_malloc__ __attribute_alloc_size__ ((1)); extern void *xcalloc (size_t n, size_t s) - __attribute_malloc__ __attribute_alloc_size (1, 2); + __attribute_malloc__ __attribute_alloc_size__ ((1, 2)); extern void *xrealloc (void *o, size_t n) - __attribute_malloc__ __attribute_alloc_size (2); + __attribute_malloc__ __attribute_alloc_size__ ((2)); extern char *xstrdup (const char *) __attribute_malloc__; #endif /* xmalloc.h */ diff --git a/include/sys/cdefs.h b/include/sys/cdefs.h index 71baa1a2d2..524fe57a25 100644 --- a/include/sys/cdefs.h +++ b/include/sys/cdefs.h @@ -13,8 +13,6 @@ extern void __chk_fail (void) __attribute__ ((__noreturn__)); libc_hidden_proto (__chk_fail) rtld_hidden_proto (__chk_fail) - -# define __attribute_alloc_size(...) __attribute__ ((alloc_size (__VA_ARGS__))) #endif #endif diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index 7794e4e26d..f5f18e914c 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -214,6 +214,15 @@ # define __attribute_malloc__ /* Ignore */ #endif +/* Tell the compiler which arguments to an allocation function + indicate the size of the allocation. */ +#if __GNUC_PREREQ (4, 3) +# define __attribute_alloc_size__(params) \ + __attribute__ ((__alloc_size__ params)) +#else +# define __attribute_alloc_size__(params) /* Ignore. */ +#endif + /* At some point during the gcc 2.96 development the `pure' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */