Sheng Yang <sh...@linux.intel.com> wrote: > Got this building failure: > > In file included from qemu-img.c:68: > > > qemu-img-cmds.h:22:1: error: unterminated argument list invoking macro > "printf" > > cc1: warnings being treated as errors > qemu-img.c: In function ‘help’: > qemu-img.c:95: warning: statement with no effect > qemu-img.c:71: error: expected ‘;’ before string constant > qemu-img.c:95: error: expected statement before ‘)’ token > make: *** [qemu-img.o] Error 1 > > And git bisect figure out the commit: 84958305, "Enable _FORTIFY_SOURCE=2". > > And the code is here: > > printf("qemu-img version " QEMU_VERSION ", Copyright (c) 2004-2008 > Fabrice > Bellard\n" > "usage: qemu-img command [command options]\n" > "QEMU disk image utility\n" > "\n" > "Command syntax:\n" > #define DEF(option, callback, arg_string) \ > " " arg_string "\n" > #include "qemu-img-cmds.h" > #undef DEF > #undef GEN_DOCS > .... > > Seems gcc take "printf" as a marco. I added a "#undef printf" before the > line, > then it works... > > So any clue on what's happened and how to fix? > > GCC version is 4.1.2.
I looks like that GCC + _FORTIFY_SOURCE=2 is broken on your platfrom. What is better, to remove the multi-line string (it appears that is the only one there) or to make a test to check that _FORTIFY_SOURCE works on platforms. Anthony, what do you preffer? Later, Juan.