[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20180816022431.GA28753@thunk.org>
Date: Wed, 15 Aug 2018 22:24:31 -0400
From: "Theodore Y. Ts'o" <tytso@....edu>
To: ykp@...tonmail.ch
Cc: "linux-ext4@...r.kernel.org" <linux-ext4@...r.kernel.org>,
Jaco Kroon <jaco@....co.za>
Subject: Re: [PATCH] ext2/e2fsprogs: fix cppcheck warnings
On Wed, Aug 15, 2018 at 01:56:42PM +0000, ykp@...tonmail.ch wrote:
>
> gcc-wall generate a lot of noice, for example 45 such warnings in /debugfs/debugfs.c:
>
> > ../../debugfs/debugfs.c:221:49: warning: declaration of ‘sci_idx’ shadows a global declaration [-Wshadow]
> > void do_open_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
> > ../../debugfs/debugfs.h:28:12: note: shadowed declaration is here
> > extern int sci_idx;
> > ^~~~~~~
Yeah, that's something which I had thought I had fixed, but I forgot a
rename in debugfs.h. I'll fix it upstream:
diff --git a/debugfs/debugfs.h b/debugfs/debugfs.h
index 449740be8..d1d13b455 100644
--- a/debugfs/debugfs.h
+++ b/debugfs/debugfs.h
@@ -25,7 +25,7 @@
extern ext2_filsys current_fs;
extern quota_ctx_t current_qctx;
extern ext2_ino_t root, cwd;
-extern int sci_idx;
+extern int ss_sci_idx;
extern ss_request_table debug_cmds, extent_cmds;
extern void reset_getopt(void);
Yes, even with the above fix, gcc-wall is a bit noise. I don't always
fix all gcc warnings....
> I've tried clang as you suggested.
> I've replaced "CC = gcc" by "CC = clang" or even "CC = clang -Weverything -pedantic",
> but output remains the same as if I just normally compile the project with make and gcc.
> What is wrong?
Here's an example:
<tytso@...c> {/tmp/e2fsprogs}
1070% CC=clang /usr/projects/e2fsprogs/e2fsprogs/configure
...
<tytso@...c> {/tmp/e2fsprogs}
1070% grep clang MCONFIG
CC = clang
BUILD_CC = clang
LD = $(PURE) clang
You can verify what C compiler and cc flags are in use by using V=1
(this a convention from Kernel builds):
<tytso@...c> {/tmp/e2fsprogs}
1071% cd util ; make V=1
echo "/* fake dirpaths.h for config.h */" > dirpaths.h
clang -c -g -flto -ffat-lto-objects -g -O2 -I. -I../lib -I/usr/projects/e2fsprogs/e2fsprogs/lib -DHAVE_CONFIG_H /usr/projects/e2fsprogs/e2fsprogs/util/subst.c -o subst.o
clang: warning: optimization flag '-ffat-lto-objects' is not supported [-Wignored-optimization-argument]
clang -g -flto -ffat-lto-objects -o subst subst.o
clang -c -g -flto -ffat-lto-objects -g -O2 -I. -I../lib -I/usr/projects/e2fsprogs/e2fsprogs/lib -DHAVE_CONFIG_H /usr/projects/e2fsprogs/e2fsprogs/util/symlinks.c -o symlinks.o
clang: warning: optimization flag '-ffat-lto-objects' is not supported [-Wignored-optimization-argument]
clang -g -flto -ffat-lto-objects -o symlinks symlinks.o
(The complaint about -ffat-lto-objects is recent, since we only
recently added LTO support --- the next/master branch is our
development branch and so will often be new gcc warnings that pop up.
LTO support is pretty new, and doesn't work the same across gcc/clang
or different versions of gcc for that matter. I'm going to change the
autoconf file to not enable LTO by default, since it our current LTO
is clearly broken for clang.)
To learn more about the build system, look at MCONFIG.in in the source
directory, MCONFIG in the build directory, and look first dozen lines
or so of e2fsck/Makefile.in, libext2fs/Makefile.in, etc.
- Ted
Powered by blists - more mailing lists