summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2019-06-10 09:42:43 +0200
committerMartin Liska <marxin@gcc.gnu.org>2019-06-10 07:42:43 +0000
commitde1ee900b045061cdc590fbbf47b46b64d296f04 (patch)
treee8d8028182dfcf97662fa924b29abdf06b8a3c6a /include
parent3bb0dcb6c02661bed2f8dd00052145fde3bbdecc (diff)
Add warn_unused_result attribute for memory-related functions in libiberty.
2019-06-10 Martin Liska <mliska@suse.cz> * ansidecl.h (ATTRIBUTE_WARN_UNUSED_RESULT): New macro. * libiberty.h (xmalloc): Use it. (xrealloc): Likewise. (xcalloc): Likewise. (xstrdup): Likewise. (xstrndup): Likewise. (xmemdup): Likewise. From-SVN: r272110
Diffstat (limited to 'include')
-rw-r--r--include/ChangeLog10
-rw-r--r--include/ansidecl.h9
-rw-r--r--include/libiberty.h12
3 files changed, 25 insertions, 6 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index ad383426efe..28f4664aa55 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,5 +1,15 @@
2019-06-10 Martin Liska <mliska@suse.cz>
+ * ansidecl.h (ATTRIBUTE_WARN_UNUSED_RESULT): New macro.
+ * libiberty.h (xmalloc): Use it.
+ (xrealloc): Likewise.
+ (xcalloc): Likewise.
+ (xstrdup): Likewise.
+ (xstrndup): Likewise.
+ (xmemdup): Likewise.
+
+2019-06-10 Martin Liska <mliska@suse.cz>
+
* ansidecl.h:
(ATTRIBUTE_RESULT_SIZE_1): Define new macro.
(ATTRIBUTE_RESULT_SIZE_2): Likewise.
diff --git a/include/ansidecl.h b/include/ansidecl.h
index 3035c33b8aa..445c8c3fb58 100644
--- a/include/ansidecl.h
+++ b/include/ansidecl.h
@@ -317,6 +317,15 @@ So instead we use the macro below and test it against specific values. */
#endif
#endif
+/* Attribute `warn_unused_result' was valid as of gcc 3.3. */
+#ifndef ATTRIBUTE_WARN_UNUSED_RESULT
+# if GCC_VERSION >= 3003
+# define ATTRIBUTE_WARN_UNUSED_RESULT __attribute__ ((warn_unused_result))
+# else
+# define ATTRIBUTE_WARN_UNUSED_RESULT
+# endif
+#endif
+
/* We use __extension__ in some places to suppress -pedantic warnings
about GCC extensions. This feature didn't work properly before
gcc 2.8. */
diff --git a/include/libiberty.h b/include/libiberty.h
index 0870163d945..635519e088a 100644
--- a/include/libiberty.h
+++ b/include/libiberty.h
@@ -310,30 +310,30 @@ extern void xmalloc_failed (size_t) ATTRIBUTE_NORETURN;
message to stderr (using the name set by xmalloc_set_program_name,
if any) and then call xexit. */
-extern void *xmalloc (size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_RESULT_SIZE_1;
+extern void *xmalloc (size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_RESULT_SIZE_1 ATTRIBUTE_WARN_UNUSED_RESULT;
/* Reallocate memory without fail. This works like xmalloc. Note,
realloc type functions are not suitable for attribute malloc since
they may return the same address across multiple calls. */
-extern void *xrealloc (void *, size_t) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_RESULT_SIZE_2;
+extern void *xrealloc (void *, size_t) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_RESULT_SIZE_2 ATTRIBUTE_WARN_UNUSED_RESULT;
/* Allocate memory without fail and set it to zero. This works like
xmalloc. */
-extern void *xcalloc (size_t, size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_RESULT_SIZE_1_2;
+extern void *xcalloc (size_t, size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_RESULT_SIZE_1_2 ATTRIBUTE_WARN_UNUSED_RESULT;
/* Copy a string into a memory buffer without fail. */
-extern char *xstrdup (const char *) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL;
+extern char *xstrdup (const char *) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_WARN_UNUSED_RESULT;
/* Copy at most N characters from string into a buffer without fail. */
-extern char *xstrndup (const char *, size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL;
+extern char *xstrndup (const char *, size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_WARN_UNUSED_RESULT;
/* Copy an existing memory buffer to a new memory buffer without fail. */
-extern void *xmemdup (const void *, size_t, size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL;
+extern void *xmemdup (const void *, size_t, size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_WARN_UNUSED_RESULT;
/* Physical memory routines. Return values are in BYTES. */
extern double physmem_total (void);