George Dunlap
2011-May-06 11:14 UTC
[Xen-devel] c/s 23253:a3db6b91f32d causes build failure with gcc 4.4.3-4ubuntu5
gcc -O1 -fno-omit-frame-pointer -m32 -march=i686 -g -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wno-unused-value -Wdeclaration-after-statement -D__XEN_TOOLS__ -MMD -MF .libxl_dm.o.d -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -fno-optimize-sibling-calls -mno-tls-direct-seg-refs -Werror -Wno-format-zero-length -Wmissing-declarations -I. -fPIC -I/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl/../../tools/libxc -I/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl/../../tools/include -I/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl/../../tools/libxc -I/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl/../../tools/include -I/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl/../../tools/xenstore -I/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl/../../tools/include -I/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl/../../tools/blktap2/control -I/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl/../../tools/blktap2/include -I/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl/../../tools/include -c -o libxl_dm.o libxl_dm.c cc1: warnings being treated as errors libxl_dm.c: In function ‘libxl__create_device_model’: libxl_dm.c:776: error: format not a string literal and no format arguments make[3]: *** [libxl_dm.o] Error 1 make[3]: Leaving directory `/home/gdunlap/hg/open-source/xen-unstable.hg/tools/libxl'' make[2]: *** [subdir-install-libxl] Error 2 make[2]: Leaving directory `/home/gdunlap/hg/open-source/xen-unstable.hg/tools'' make[1]: *** [subdirs-install] Error 2 make[1]: Leaving directory `/home/gdunlap/hg/open-source/xen-unstable.hg/tools'' make: *** [install-tools] Error 2 $ gcc --version gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3 (This is Ubuntu 10.10.) The line in question is: libxl__xs_write(gc, XBT_NULL, libxl__sprintf(gc, "%s/bios", path), libxl__domain_bios(gc, info)); Looks like libxl__xs_write() is expecting the 4th argument to be a format string...? -George _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ian Campbell
2011-May-06 12:33 UTC
[Xen-devel] Re: c/s 23253:a3db6b91f32d causes build failure with gcc 4.4.3-4ubuntu5
On Fri, 2011-05-06 at 12:14 +0100, George Dunlap wrote:> The line in question is: > libxl__xs_write(gc, XBT_NULL, libxl__sprintf(gc, "%s/bios", path), > libxl__domain_bios(gc, info)); > > Looks like libxl__xs_write() is expecting the 4th argument to be a > format string...?Yes, and hence it needs to be a const char * not a char *, so we should change both libxl__domain_bios and libxl__xs_write I think. Does this help? It works for me, but my compiler doesn''t appear to complain in this way... Ian. 8<------------------------------------------- # HG changeset patch # User Ian Campbell <ian.campbell@citrix.com> # Date 1304685175 -3600 # Node ID 4e5487962178e7affd7d7d0341a90dde8c60915e # Parent faca1c90188e536eb0f02992c766d06759be376f libxl: libxl__xs_write format string should be const. George Dunlap reports that gcc 4.4.3 complains: libxl_dm.c: In function libxl__create_device_mode: libxl_dm.c:776: error: format not a string literal and no format arguments And indeed the format argument here is a char * from libxl__domain_bios(). Make the argument to libxl__xs_write a const char * and change libxl__domain_bios to return a const char too. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_dm.c --- a/tools/libxl/libxl_dm.c Fri May 06 13:14:24 2011 +0100 +++ b/tools/libxl/libxl_dm.c Fri May 06 13:32:55 2011 +0100 @@ -68,12 +68,12 @@ const char *libxl__domain_device_model(l return dm; } -static char *libxl__domain_bios(libxl__gc *gc, +static const char *libxl__domain_bios(libxl__gc *gc, libxl_device_model_info *info) { switch (info->device_model_version) { - case 1: return libxl__strdup(gc, "rombios"); - case 2: return libxl__strdup(gc, "seabios"); + case 1: return "rombios"; + case 2: return "seabios"; default:return NULL; } } diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_internal.h --- a/tools/libxl/libxl_internal.h Fri May 06 13:14:24 2011 +0100 +++ b/tools/libxl/libxl_internal.h Fri May 06 13:32:55 2011 +0100 @@ -153,7 +153,7 @@ _hidden char **libxl__xs_kvs_of_flexarra _hidden int libxl__xs_writev(libxl__gc *gc, xs_transaction_t t, char *dir, char **kvs); _hidden int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, - char *path, char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); + char *path, const char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); /* Each fn returns 0 on success. * On error: returns -1, sets errno (no logging) */ diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_xshelp.c --- a/tools/libxl/libxl_xshelp.c Fri May 06 13:14:24 2011 +0100 +++ b/tools/libxl/libxl_xshelp.c Fri May 06 13:32:55 2011 +0100 @@ -69,7 +69,7 @@ int libxl__xs_writev(libxl__gc *gc, xs_t } int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, - char *path, char *fmt, ...) + char *path, const char *fmt, ...) { libxl_ctx *ctx = libxl__gc_owner(gc); char *s; _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
George Dunlap
2011-May-06 12:50 UTC
Re: [Xen-devel] Re: c/s 23253:a3db6b91f32d causes build failure with gcc 4.4.3-4ubuntu5
Unfortunately not. Looks like we could either make libxl__domain_bios() a #define (not tested), or make the argument "%s" (which seems to work, patch attached). Adding a format string of just a string seems kind of dumb, but I don''t think this is a really hot path... -George On Fri, May 6, 2011 at 1:33 PM, Ian Campbell <Ian.Campbell@eu.citrix.com> wrote:> On Fri, 2011-05-06 at 12:14 +0100, George Dunlap wrote: > >> The line in question is: >> libxl__xs_write(gc, XBT_NULL, libxl__sprintf(gc, "%s/bios", path), >> libxl__domain_bios(gc, info)); >> >> Looks like libxl__xs_write() is expecting the 4th argument to be a >> format string...? > > Yes, and hence it needs to be a const char * not a char *, so we should > change both libxl__domain_bios and libxl__xs_write I think. > > Does this help? It works for me, but my compiler doesn''t appear to > complain in this way... > > Ian. > > 8<------------------------------------------- > > # HG changeset patch > # User Ian Campbell <ian.campbell@citrix.com> > # Date 1304685175 -3600 > # Node ID 4e5487962178e7affd7d7d0341a90dde8c60915e > # Parent faca1c90188e536eb0f02992c766d06759be376f > libxl: libxl__xs_write format string should be const. > > George Dunlap reports that gcc 4.4.3 complains: > libxl_dm.c: In function libxl__create_device_mode: > libxl_dm.c:776: error: format not a string literal and no format arguments > And indeed the format argument here is a char * from libxl__domain_bios(). > > Make the argument to libxl__xs_write a const char * and change > libxl__domain_bios to return a const char too. > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > > diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_dm.c > --- a/tools/libxl/libxl_dm.c Fri May 06 13:14:24 2011 +0100 > +++ b/tools/libxl/libxl_dm.c Fri May 06 13:32:55 2011 +0100 > @@ -68,12 +68,12 @@ const char *libxl__domain_device_model(l > return dm; > } > > -static char *libxl__domain_bios(libxl__gc *gc, > +static const char *libxl__domain_bios(libxl__gc *gc, > libxl_device_model_info *info) > { > switch (info->device_model_version) { > - case 1: return libxl__strdup(gc, "rombios"); > - case 2: return libxl__strdup(gc, "seabios"); > + case 1: return "rombios"; > + case 2: return "seabios"; > default:return NULL; > } > } > diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_internal.h > --- a/tools/libxl/libxl_internal.h Fri May 06 13:14:24 2011 +0100 > +++ b/tools/libxl/libxl_internal.h Fri May 06 13:32:55 2011 +0100 > @@ -153,7 +153,7 @@ _hidden char **libxl__xs_kvs_of_flexarra > _hidden int libxl__xs_writev(libxl__gc *gc, xs_transaction_t t, > char *dir, char **kvs); > _hidden int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, > - char *path, char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); > + char *path, const char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); > /* Each fn returns 0 on success. > * On error: returns -1, sets errno (no logging) */ > > diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_xshelp.c > --- a/tools/libxl/libxl_xshelp.c Fri May 06 13:14:24 2011 +0100 > +++ b/tools/libxl/libxl_xshelp.c Fri May 06 13:32:55 2011 +0100 > @@ -69,7 +69,7 @@ int libxl__xs_writev(libxl__gc *gc, xs_t > } > > int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, > - char *path, char *fmt, ...) > + char *path, const char *fmt, ...) > { > libxl_ctx *ctx = libxl__gc_owner(gc); > char *s; > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ian Campbell
2011-May-06 12:58 UTC
Re: [Xen-devel] Re: c/s 23253:a3db6b91f32d causes build failure with gcc 4.4.3-4ubuntu5
On Fri, 2011-05-06 at 13:50 +0100, George Dunlap wrote:> Unfortunately not. > > Looks like we could either make libxl__domain_bios() a #define (not > tested), or make the argument "%s" (which seems to work, patch > attached). > > Adding a format string of just a string seems kind of dumb, but I > don''t think this is a really hot path...It''s actually sensible to use "%s" when the string might be untrusted but in this case it''s really just a string literal, I guess the laundering through a function is enough to hide that from gcc. Using %s is the best fix, I think. Ian.> > -George > > > On Fri, May 6, 2011 at 1:33 PM, Ian Campbell <Ian.Campbell@eu.citrix.com> wrote: > > On Fri, 2011-05-06 at 12:14 +0100, George Dunlap wrote: > > > >> The line in question is: > >> libxl__xs_write(gc, XBT_NULL, libxl__sprintf(gc, "%s/bios", path), > >> libxl__domain_bios(gc, info)); > >> > >> Looks like libxl__xs_write() is expecting the 4th argument to be a > >> format string...? > > > > Yes, and hence it needs to be a const char * not a char *, so we should > > change both libxl__domain_bios and libxl__xs_write I think. > > > > Does this help? It works for me, but my compiler doesn''t appear to > > complain in this way... > > > > Ian. > > > > 8<------------------------------------------- > > > > # HG changeset patch > > # User Ian Campbell <ian.campbell@citrix.com> > > # Date 1304685175 -3600 > > # Node ID 4e5487962178e7affd7d7d0341a90dde8c60915e > > # Parent faca1c90188e536eb0f02992c766d06759be376f > > libxl: libxl__xs_write format string should be const. > > > > George Dunlap reports that gcc 4.4.3 complains: > > libxl_dm.c: In function libxl__create_device_mode: > > libxl_dm.c:776: error: format not a string literal and no format arguments > > And indeed the format argument here is a char * from libxl__domain_bios(). > > > > Make the argument to libxl__xs_write a const char * and change > > libxl__domain_bios to return a const char too. > > > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > > > > diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_dm.c > > --- a/tools/libxl/libxl_dm.c Fri May 06 13:14:24 2011 +0100 > > +++ b/tools/libxl/libxl_dm.c Fri May 06 13:32:55 2011 +0100 > > @@ -68,12 +68,12 @@ const char *libxl__domain_device_model(l > > return dm; > > } > > > > -static char *libxl__domain_bios(libxl__gc *gc, > > +static const char *libxl__domain_bios(libxl__gc *gc, > > libxl_device_model_info *info) > > { > > switch (info->device_model_version) { > > - case 1: return libxl__strdup(gc, "rombios"); > > - case 2: return libxl__strdup(gc, "seabios"); > > + case 1: return "rombios"; > > + case 2: return "seabios"; > > default:return NULL; > > } > > } > > diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_internal.h > > --- a/tools/libxl/libxl_internal.h Fri May 06 13:14:24 2011 +0100 > > +++ b/tools/libxl/libxl_internal.h Fri May 06 13:32:55 2011 +0100 > > @@ -153,7 +153,7 @@ _hidden char **libxl__xs_kvs_of_flexarra > > _hidden int libxl__xs_writev(libxl__gc *gc, xs_transaction_t t, > > char *dir, char **kvs); > > _hidden int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, > > - char *path, char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); > > + char *path, const char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); > > /* Each fn returns 0 on success. > > * On error: returns -1, sets errno (no logging) */ > > > > diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_xshelp.c > > --- a/tools/libxl/libxl_xshelp.c Fri May 06 13:14:24 2011 +0100 > > +++ b/tools/libxl/libxl_xshelp.c Fri May 06 13:32:55 2011 +0100 > > @@ -69,7 +69,7 @@ int libxl__xs_writev(libxl__gc *gc, xs_t > > } > > > > int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, > > - char *path, char *fmt, ...) > > + char *path, const char *fmt, ...) > > { > > libxl_ctx *ctx = libxl__gc_owner(gc); > > char *s; > > > > > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xensource.com > > http://lists.xensource.com/xen-devel > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Shriram Rajagopalan
2011-May-06 14:38 UTC
Re: [Xen-devel] Re: c/s 23253:a3db6b91f32d causes build failure with gcc 4.4.3-4ubuntu5
On Fri, May 6, 2011 at 7:58 AM, Ian Campbell <Ian.Campbell@eu.citrix.com>wrote:> On Fri, 2011-05-06 at 13:50 +0100, George Dunlap wrote: > > Unfortunately not. > > > > Looks like we could either make libxl__domain_bios() a #define (not > > tested), or make the argument "%s" (which seems to work, patch > > attached). > > > > Adding a format string of just a string seems kind of dumb, but I > > don''t think this is a really hot path... > > It''s actually sensible to use "%s" when the string might be untrusted > but in this case it''s really just a string literal, I guess the > laundering through a function is enough to hide that from gcc. Using %s > is the best fix, I think. > > Is this going to go in as a patch? I havent seen any so far (or probablymissed it). shriram> Ian. > > > > > -George > > > > > > On Fri, May 6, 2011 at 1:33 PM, Ian Campbell <Ian.Campbell@eu.citrix.com> > wrote: > > > On Fri, 2011-05-06 at 12:14 +0100, George Dunlap wrote: > > > > > >> The line in question is: > > >> libxl__xs_write(gc, XBT_NULL, libxl__sprintf(gc, "%s/bios", path), > > >> libxl__domain_bios(gc, info)); > > >> > > >> Looks like libxl__xs_write() is expecting the 4th argument to be a > > >> format string...? > > > > > > Yes, and hence it needs to be a const char * not a char *, so we should > > > change both libxl__domain_bios and libxl__xs_write I think. > > > > > > Does this help? It works for me, but my compiler doesn''t appear to > > > complain in this way... > > > > > > Ian. > > > > > > 8<------------------------------------------- > > > > > > # HG changeset patch > > > # User Ian Campbell <ian.campbell@citrix.com> > > > # Date 1304685175 -3600 > > > # Node ID 4e5487962178e7affd7d7d0341a90dde8c60915e > > > # Parent faca1c90188e536eb0f02992c766d06759be376f > > > libxl: libxl__xs_write format string should be const. > > > > > > George Dunlap reports that gcc 4.4.3 complains: > > > libxl_dm.c: In function libxl__create_device_mode: > > > libxl_dm.c:776: error: format not a string literal and no format > arguments > > > And indeed the format argument here is a char * from > libxl__domain_bios(). > > > > > > Make the argument to libxl__xs_write a const char * and change > > > libxl__domain_bios to return a const char too. > > > > > > Signed-off-by: Ian Campbell <ian.campbell@citrix.com> > > > > > > diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_dm.c > > > --- a/tools/libxl/libxl_dm.c Fri May 06 13:14:24 2011 +0100 > > > +++ b/tools/libxl/libxl_dm.c Fri May 06 13:32:55 2011 +0100 > > > @@ -68,12 +68,12 @@ const char *libxl__domain_device_model(l > > > return dm; > > > } > > > > > > -static char *libxl__domain_bios(libxl__gc *gc, > > > +static const char *libxl__domain_bios(libxl__gc *gc, > > > libxl_device_model_info *info) > > > { > > > switch (info->device_model_version) { > > > - case 1: return libxl__strdup(gc, "rombios"); > > > - case 2: return libxl__strdup(gc, "seabios"); > > > + case 1: return "rombios"; > > > + case 2: return "seabios"; > > > default:return NULL; > > > } > > > } > > > diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_internal.h > > > --- a/tools/libxl/libxl_internal.h Fri May 06 13:14:24 2011 +0100 > > > +++ b/tools/libxl/libxl_internal.h Fri May 06 13:32:55 2011 +0100 > > > @@ -153,7 +153,7 @@ _hidden char **libxl__xs_kvs_of_flexarra > > > _hidden int libxl__xs_writev(libxl__gc *gc, xs_transaction_t t, > > > char *dir, char **kvs); > > > _hidden int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, > > > - char *path, char *fmt, ...) PRINTF_ATTRIBUTE(4, 5); > > > + char *path, const char *fmt, ...) > PRINTF_ATTRIBUTE(4, 5); > > > /* Each fn returns 0 on success. > > > * On error: returns -1, sets errno (no logging) */ > > > > > > diff -r faca1c90188e -r 4e5487962178 tools/libxl/libxl_xshelp.c > > > --- a/tools/libxl/libxl_xshelp.c Fri May 06 13:14:24 2011 +0100 > > > +++ b/tools/libxl/libxl_xshelp.c Fri May 06 13:32:55 2011 +0100 > > > @@ -69,7 +69,7 @@ int libxl__xs_writev(libxl__gc *gc, xs_t > > > } > > > > > > int libxl__xs_write(libxl__gc *gc, xs_transaction_t t, > > > - char *path, char *fmt, ...) > > > + char *path, const char *fmt, ...) > > > { > > > libxl_ctx *ctx = libxl__gc_owner(gc); > > > char *s; > > > > > > > > > > > > _______________________________________________ > > > Xen-devel mailing list > > > Xen-devel@lists.xensource.com > > > http://lists.xensource.com/xen-devel > > > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ian Jackson
2011-May-24 16:12 UTC
[Xen-devel] Re: c/s 23253:a3db6b91f32d causes build failure with gcc 4.4.3-4ubuntu5 [and 1 more messages]
Ian Campbell writes ("[Xen-devel] Re: c/s 23253:a3db6b91f32d causes build failure with gcc 4.4.3-4ubuntu5"):> libxl: libxl__xs_write format string should be const.I have applied this, thanks. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel