aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-06-27 17:52:42 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-06-27 17:52:42 +0000
commitac782f9e9ab0a39a3054e4c97653fafa8ea47a62 (patch)
tree0afe5ff050d761b017bef5fecf09fe5975f9b6c1 /elf
parente4043b84c49e1cf9bcf1e8320233343ecc34f8eb (diff)
downloadglibc-ac782f9e9ab0a39a3054e4c97653fafa8ea47a62.zip
glibc-ac782f9e9ab0a39a3054e4c97653fafa8ea47a62.tar.gz
glibc-ac782f9e9ab0a39a3054e4c97653fafa8ea47a62.tar.bz2
Fix elf/loadtest.c build with GCC 8.
Building the testsuite with current GCC mainline fails with: loadtest.c: In function 'main': loadtest.c:76:3: error: macro expands to multiple statements [-Werror=multistatement-macros] for (map = MAPS; map != NULL; map = map->l_next) \ ^ loadtest.c:165:2: note: in expansion of macro 'OUT' OUT; ^~~ loadtest.c:164:7: note: some parts of macro expansion are not guarded by this 'if' clause if (debug) ^~ This seems like a genuine bug, although fairly harmless; it means the fflush call in the OUT macro is unconditional instead of being inside the conditional as presumably intended. This patch makes this macro use do { } while (0) to avoid the problem. Tested for x86_64 (testsuite), and with build-many-glibcs.py for aarch64-linux-gnu with GCC mainline. * elf/loadtest.c (OUT): Define using do { } while (0).
Diffstat (limited to 'elf')
-rw-r--r--elf/loadtest.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/elf/loadtest.c b/elf/loadtest.c
index 727469b..b5eab5e 100644
--- a/elf/loadtest.c
+++ b/elf/loadtest.c
@@ -72,12 +72,16 @@ static const struct
#define MAPS ((struct link_map *) _r_debug.r_map)
-#define OUT \
- for (map = MAPS; map != NULL; map = map->l_next) \
- if (map->l_type == lt_loaded) \
- printf ("name = \"%s\", direct_opencount = %d\n", \
- map->l_name, (int) map->l_direct_opencount); \
- fflush (stdout)
+#define OUT \
+ do \
+ { \
+ for (map = MAPS; map != NULL; map = map->l_next) \
+ if (map->l_type == lt_loaded) \
+ printf ("name = \"%s\", direct_opencount = %d\n", \
+ map->l_name, (int) map->l_direct_opencount); \
+ fflush (stdout); \
+ } \
+ while (0)
int