diff options
author | Christian Lamparter <chunkeey@gmail.com> | 2018-12-20 18:07:40 +0100 |
---|---|---|
committer | Christian Lamparter <chunkeey@gmail.com> | 2018-12-20 19:21:42 +0100 |
commit | a8bae35914f12383ab60b43e8114bdba7fc355b9 (patch) | |
tree | c9e88860b2e925d90fa8178d2f997608f63930da /package/libs | |
parent | 99c81eab785e8f50963c6c730a183a2f95ef4a54 (diff) | |
download | upstream-a8bae35914f12383ab60b43e8114bdba7fc355b9.tar.gz upstream-a8bae35914f12383ab60b43e8114bdba7fc355b9.tar.bz2 upstream-a8bae35914f12383ab60b43e8114bdba7fc355b9.zip |
elfutils: fix gcc 8.0+ multistatement macros warning/error
GCC 8.0+ <https://gcc.gnu.org/gcc-8/changes.html> introduces a new
warning about unsafe macros expanding to multiple statements used
as a body of a statement such as if, else, while, switch, or for.
In combination with -Werror this can cause the compilation to fail:
|In file included from xmalloc.c:37:
|xmalloc.c: In function 'xmalloc':
|system.h:39:2: error: macro expands to multiple statements [-Werror=multistatement-macros]
| fflush(stdout); \
| ^~~~~~
|xmalloc.c:52:5: note: in expansion of macro 'error'
| error (EXIT_FAILURE, 0, _("memory exhausted"));
| ^~~~~
|xmalloc.c:51:3: note: some parts of macro expansion are not guarded by this 'if' clause
| if (p == NULL)
| ^~
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Diffstat (limited to 'package/libs')
-rw-r--r-- | package/libs/elfutils/patches/100-musl-compat.patch | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/package/libs/elfutils/patches/100-musl-compat.patch b/package/libs/elfutils/patches/100-musl-compat.patch index f8e9a29235..9631ce05d6 100644 --- a/package/libs/elfutils/patches/100-musl-compat.patch +++ b/package/libs/elfutils/patches/100-musl-compat.patch @@ -2,7 +2,7 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 --- a/lib/system.h +++ b/lib/system.h -@@ -30,7 +30,16 @@ +@@ -30,7 +30,18 @@ #define LIB_SYSTEM_H 1 #include <errno.h> @@ -12,15 +12,17 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 +#else +#include "err.h" +#include <stdio.h> -+#define error(status, errno, ...) \ -+ fflush(stdout); \ -+ warn(__VA_ARGS__); \ -+ if (status) exit(status) ++#define error(status, errno, ...) \ ++ do { \ ++ fflush(stdout); \ ++ warn(__VA_ARGS__); \ ++ if (status) exit(status); \ ++ } while(0) +#endif #include <stddef.h> #include <stdint.h> #include <sys/param.h> -@@ -38,6 +47,10 @@ +@@ -38,6 +49,10 @@ #include <byteswap.h> #include <unistd.h> |