Message ID | 20181026015850.15579-1-suyj.fnst@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs-progs: fix gcc8 default build warning caused by '-Wformat-truncation' | expand |
On 2018/10/26 上午9:58, Su Yanjun wrote: > When using gcc8 compiles utils.c, it complains as below: > > utils.c:852:45: warning: '%s' directive output may be truncated writing > up to 4095 bytes into a region of size 4084 [-Wformat-truncation=] > snprintf(path, sizeof(path), "/dev/mapper/%s", name); > ^~ ~~~~ As long as we're using snprintf(), we expect some string to be truncated, so it's not a problem at all. > In file included from /usr/include/stdio.h:873, > from utils.c:20: > /usr/include/bits/stdio2.h:67:10: note: '__builtin___snprintf_chk' > output between 13 and 4108 bytes into a destination of size 4096 > return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > __bos (__s), __fmt, __va_arg_pack ()); > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > This isn't a type of warning we care about, particularly when PATH_MAX > is much less than either. > > Using the GCC option -Wno-format-truncation to disable this for default > build. > > Signed-off-by: Su Yanjun <suyj.fnst@cn.fujitsu.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Thanks, Qu > --- > Makefile.extrawarn | 1 + > configure.ac | 2 +- > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/Makefile.extrawarn b/Makefile.extrawarn > index 1f4bda94a167..ed76fb5b5554 100644 > --- a/Makefile.extrawarn > +++ b/Makefile.extrawarn > @@ -47,6 +47,7 @@ warning-1 += -Wold-style-definition > warning-1 += $(call cc-option, -Wmissing-include-dirs) > warning-1 += $(call cc-option, -Wunused-but-set-variable) > warning-1 += $(call cc-disable-warning, missing-field-initializers) > +warning-1 += $(call cc-option, -Wformat-truncation) > > warning-2 := -Waggregate-return > warning-2 += -Wcast-align > diff --git a/configure.ac b/configure.ac > index df02f20655d9..c626beca8b77 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -12,7 +12,7 @@ LIBBTRFS_MAJOR=0 > LIBBTRFS_MINOR=1 > LIBBTRFS_PATCHLEVEL=2 > > -CFLAGS=${CFLAGS:-"-g -O1 -Wall -D_FORTIFY_SOURCE=2"} > +CFLAGS=${CFLAGS:-"-g -O1 -Wall -D_FORTIFY_SOURCE=2 -Wno-format-truncation"} > AC_SUBST([CFLAGS]) > > AC_PREREQ([2.60]) >
On 2018/10/26 上午9:58, Su Yanjun wrote: > When using gcc8 compiles utils.c, it complains as below: > > utils.c:852:45: warning: '%s' directive output may be truncated writing > up to 4095 bytes into a region of size 4084 [-Wformat-truncation=] > snprintf(path, sizeof(path), "/dev/mapper/%s", name); > ^~ ~~~~ > In file included from /usr/include/stdio.h:873, > from utils.c:20: > /usr/include/bits/stdio2.h:67:10: note: '__builtin___snprintf_chk' > output between 13 and 4108 bytes into a destination of size 4096 > return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > __bos (__s), __fmt, __va_arg_pack ()); > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > This isn't a type of warning we care about, particularly when PATH_MAX > is much less than either. > > Using the GCC option -Wno-format-truncation to disable this for default > build. > > Signed-off-by: Su Yanjun <suyj.fnst@cn.fujitsu.com> > --- > Makefile.extrawarn | 1 + > configure.ac | 2 +- > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/Makefile.extrawarn b/Makefile.extrawarn > index 1f4bda94a167..ed76fb5b5554 100644 > --- a/Makefile.extrawarn > +++ b/Makefile.extrawarn > @@ -47,6 +47,7 @@ warning-1 += -Wold-style-definition > warning-1 += $(call cc-option, -Wmissing-include-dirs) > warning-1 += $(call cc-option, -Wunused-but-set-variable) > warning-1 += $(call cc-disable-warning, missing-field-initializers) > +warning-1 += $(call cc-option, -Wformat-truncation) Have you tried "make W=1"? This won't work. You should use cc-disable-warning, however we forgot to include that function. I'll fix it and put your patch into my pile of make W=1 cleanups. Thanks, Qu > > warning-2 := -Waggregate-return > warning-2 += -Wcast-align > diff --git a/configure.ac b/configure.ac > index df02f20655d9..c626beca8b77 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -12,7 +12,7 @@ LIBBTRFS_MAJOR=0 > LIBBTRFS_MINOR=1 > LIBBTRFS_PATCHLEVEL=2 > > -CFLAGS=${CFLAGS:-"-g -O1 -Wall -D_FORTIFY_SOURCE=2"} > +CFLAGS=${CFLAGS:-"-g -O1 -Wall -D_FORTIFY_SOURCE=2 -Wno-format-truncation"} > AC_SUBST([CFLAGS]) > > AC_PREREQ([2.60]) >
diff --git a/Makefile.extrawarn b/Makefile.extrawarn index 1f4bda94a167..ed76fb5b5554 100644 --- a/Makefile.extrawarn +++ b/Makefile.extrawarn @@ -47,6 +47,7 @@ warning-1 += -Wold-style-definition warning-1 += $(call cc-option, -Wmissing-include-dirs) warning-1 += $(call cc-option, -Wunused-but-set-variable) warning-1 += $(call cc-disable-warning, missing-field-initializers) +warning-1 += $(call cc-option, -Wformat-truncation) warning-2 := -Waggregate-return warning-2 += -Wcast-align diff --git a/configure.ac b/configure.ac index df02f20655d9..c626beca8b77 100644 --- a/configure.ac +++ b/configure.ac @@ -12,7 +12,7 @@ LIBBTRFS_MAJOR=0 LIBBTRFS_MINOR=1 LIBBTRFS_PATCHLEVEL=2 -CFLAGS=${CFLAGS:-"-g -O1 -Wall -D_FORTIFY_SOURCE=2"} +CFLAGS=${CFLAGS:-"-g -O1 -Wall -D_FORTIFY_SOURCE=2 -Wno-format-truncation"} AC_SUBST([CFLAGS]) AC_PREREQ([2.60])
When using gcc8 compiles utils.c, it complains as below: utils.c:852:45: warning: '%s' directive output may be truncated writing up to 4095 bytes into a region of size 4084 [-Wformat-truncation=] snprintf(path, sizeof(path), "/dev/mapper/%s", name); ^~ ~~~~ In file included from /usr/include/stdio.h:873, from utils.c:20: /usr/include/bits/stdio2.h:67:10: note: '__builtin___snprintf_chk' output between 13 and 4108 bytes into a destination of size 4096 return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ __bos (__s), __fmt, __va_arg_pack ()); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This isn't a type of warning we care about, particularly when PATH_MAX is much less than either. Using the GCC option -Wno-format-truncation to disable this for default build. Signed-off-by: Su Yanjun <suyj.fnst@cn.fujitsu.com> --- Makefile.extrawarn | 1 + configure.ac | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-)