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 <vapier@gentoo.org>
This commit is contained in:
Mike Frysinger 2012-12-30 13:07:07 -05:00
parent 6ff444c418
commit 2f62b9ee0c
4 changed files with 19 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2013-02-18 Mike Frysinger <vapier@gentoo.org>
* 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 <vapier@gentoo.org>
* include/programs/xmalloc.h: New file.

View File

@ -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 */

View File

@ -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

View File

@ -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. */