Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1519705 > unrolled thread
| Started by | Jiri Slaby <jslaby@suse.cz> |
|---|---|
| First post | 2016-11-11 12:30 +0100 |
| Last post | 2016-11-11 18:30 +0100 |
| Articles | 8 — 4 participants |
Back to article view | Back to linux.kernel
Kbuild: CC= handling broken for tools/ Jiri Slaby <jslaby@suse.cz> - 2016-11-11 12:30 +0100
Re: Kbuild: CC= handling broken for tools/ Michal Marek <mmarek@suse.com> - 2016-11-11 13:40 +0100
Re: Kbuild: CC= handling broken for tools/ Jiri Olsa <jolsa@redhat.com> - 2016-11-11 15:10 +0100
Re: Kbuild: CC= handling broken for tools/ Jiri Slaby <jslaby@suse.cz> - 2016-11-11 15:10 +0100
Re: Kbuild: CC= handling broken for tools/ Jiri Olsa <jolsa@redhat.com> - 2016-11-11 16:20 +0100
Re: Kbuild: CC= handling broken for tools/ Josh Poimboeuf <jpoimboe@redhat.com> - 2016-11-11 16:40 +0100
Re: Kbuild: CC= handling broken for tools/ Jiri Slaby <jslaby@suse.cz> - 2016-11-11 18:10 +0100
Re: Kbuild: CC= handling broken for tools/ Josh Poimboeuf <jpoimboe@redhat.com> - 2016-11-11 18:30 +0100
| From | Jiri Slaby <jslaby@suse.cz> |
|---|---|
| Date | 2016-11-11 12:30 +0100 |
| Subject | Kbuild: CC= handling broken for tools/ |
| Message-ID | <sCibT-3Ek-7@gated-at.bofh.it> |
Hi,
I am trying a new gcc with new warnings enabled:
make O=../a/gcc7/ CC='gcc-7' V=1 kernel/exit.o
EXTRA_CFLAGS='-Wimplicit-fallthrough=3'
But the build fails when building under tools/:
...
make -f /home/latest/linux/tools/build/Makefile.build dir=. obj=fixdep
gcc
-Wp,-MD,/home/latest/a/gcc7/tools/objtool/.exec-cmd.o.d,-MT,/home/latest/a/gcc7/tools/objtool/exec-cmd.o
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wshadow -Wstrict-aliasing=3 -Wstrict-prototypes
-Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat
-Wimplicit-fallthrough=3 -ggdb3 -Wall -Wextra -std=gnu99 -O6
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC -Werror
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-I/home/latest/linux/tools/include/ -I/home/latest/linux/include/uapi
-I/home/latest/linux/include -D"BUILD_STR(s)=#s" -c -o
/home/latest/a/gcc7/tools/objtool/exec-cmd.o exec-cmd.c
gcc: error: unrecognized command line option ‘-Wimplicit-fallthrough=3’;
did you mean ‘-Wno-fallthrough’?
Apparently, CC is not respected for tools/ dir.
Well, it is used (tools/build/Makefile.build):
# Compile command
quiet_cmd_cc_o_c = CC $@
cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
But I don't know why CFLAGS propagate from Makefile to tools/, but CC
doesn't (both are exported)? Any ideas?
thanks,
--
js
suse labs
[toc] | [next] | [standalone]
| From | Michal Marek <mmarek@suse.com> |
|---|---|
| Date | 2016-11-11 13:40 +0100 |
| Message-ID | <sCjhE-4ky-13@gated-at.bofh.it> |
| In reply to | #1519705 |
On 2016-11-11 12:23, Jiri Slaby wrote: > Hi, > > I am trying a new gcc with new warnings enabled: > > make O=../a/gcc7/ CC='gcc-7' V=1 kernel/exit.o > EXTRA_CFLAGS='-Wimplicit-fallthrough=3' Note that EXTRA_CFLAGS is a makefile variable read by both kbuild and tools/build apparently. > > But the build fails when building under tools/: [...] > gcc: error: unrecognized command line option ‘-Wimplicit-fallthrough=3’; > did you mean ‘-Wno-fallthrough’? > > > Apparently, CC is not respected for tools/ dir. Jiri can better explain the behavior of the tools/ Makefiles, but if you want to use extra flags for kernel compilation, you should be using the KCFLAGS variable (see Documentation/kbuild/kbuild.txt). Michal
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2016-11-11 15:10 +0100 |
| Message-ID | <sCkGJ-5mT-3@gated-at.bofh.it> |
| In reply to | #1519705 |
On Fri, Nov 11, 2016 at 12:23:25PM +0100, Jiri Slaby wrote: > Hi, > > I am trying a new gcc with new warnings enabled: > > make O=../a/gcc7/ CC='gcc-7' V=1 kernel/exit.o > EXTRA_CFLAGS='-Wimplicit-fallthrough=3' > > But the build fails when building under tools/: > ... > make -f /home/latest/linux/tools/build/Makefile.build dir=. obj=fixdep > gcc > -Wp,-MD,/home/latest/a/gcc7/tools/objtool/.exec-cmd.o.d,-MT,/home/latest/a/gcc7/tools/objtool/exec-cmd.o > -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security > -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes > -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked > -Wredundant-decls -Wshadow -Wstrict-aliasing=3 -Wstrict-prototypes > -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat > -Wimplicit-fallthrough=3 -ggdb3 -Wall -Wextra -std=gnu99 -O6 > -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC -Werror > -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE > -I/home/latest/linux/tools/include/ -I/home/latest/linux/include/uapi > -I/home/latest/linux/include -D"BUILD_STR(s)=#s" -c -o > /home/latest/a/gcc7/tools/objtool/exec-cmd.o exec-cmd.c > gcc: error: unrecognized command line option ‘-Wimplicit-fallthrough=3’; > did you mean ‘-Wno-fallthrough’? > > > Apparently, CC is not respected for tools/ dir. > > Well, it is used (tools/build/Makefile.build): > # Compile command > quiet_cmd_cc_o_c = CC $@ > cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< > > > But I don't know why CFLAGS propagate from Makefile to tools/, but CC > doesn't (both are exported)? Any ideas? so the root Makefile assign CC directly: CC = $(CROSS_COMPILE)gcc we are trying to be a little bit smarter in perf and set it only if it's not set by user # Allow setting CC and AR and LD, or setting CROSS_COMPILE as a prefix. $(call allow-override,CC,$(CROSS_COMPILE)gcc) $(call allow-override,AR,$(CROSS_COMPILE)ar) $(call allow-override,LD,$(CROSS_COMPILE)ld) I did not check the other tools.. thanks, jirka
[toc] | [prev] | [next] | [standalone]
| From | Jiri Slaby <jslaby@suse.cz> |
|---|---|
| Date | 2016-11-11 15:10 +0100 |
| Message-ID | <sCkGJ-5mT-1@gated-at.bofh.it> |
| In reply to | #1519815 |
On 11/11/2016, 03:00 PM, Jiri Olsa wrote: > On Fri, Nov 11, 2016 at 12:23:25PM +0100, Jiri Slaby wrote: >> Hi, >> >> I am trying a new gcc with new warnings enabled: >> >> make O=../a/gcc7/ CC='gcc-7' V=1 kernel/exit.o >> EXTRA_CFLAGS='-Wimplicit-fallthrough=3' >> >> But the build fails when building under tools/: >> ... >> make -f /home/latest/linux/tools/build/Makefile.build dir=. obj=fixdep >> gcc >> -Wp,-MD,/home/latest/a/gcc7/tools/objtool/.exec-cmd.o.d,-MT,/home/latest/a/gcc7/tools/objtool/exec-cmd.o >> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security >> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes >> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked >> -Wredundant-decls -Wshadow -Wstrict-aliasing=3 -Wstrict-prototypes >> -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat >> -Wimplicit-fallthrough=3 -ggdb3 -Wall -Wextra -std=gnu99 -O6 >> -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC -Werror >> -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE >> -I/home/latest/linux/tools/include/ -I/home/latest/linux/include/uapi >> -I/home/latest/linux/include -D"BUILD_STR(s)=#s" -c -o >> /home/latest/a/gcc7/tools/objtool/exec-cmd.o exec-cmd.c >> gcc: error: unrecognized command line option ‘-Wimplicit-fallthrough=3’; >> did you mean ‘-Wno-fallthrough’? >> >> >> Apparently, CC is not respected for tools/ dir. >> >> Well, it is used (tools/build/Makefile.build): >> # Compile command >> quiet_cmd_cc_o_c = CC $@ >> cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< >> >> >> But I don't know why CFLAGS propagate from Makefile to tools/, but CC >> doesn't (both are exported)? Any ideas? > > so the root Makefile assign CC directly: > CC = $(CROSS_COMPILE)gcc > > we are trying to be a little bit smarter in perf > and set it only if it's not set by user > > # Allow setting CC and AR and LD, or setting CROSS_COMPILE as a prefix. > $(call allow-override,CC,$(CROSS_COMPILE)gcc) > $(call allow-override,AR,$(CROSS_COMPILE)ar) > $(call allow-override,LD,$(CROSS_COMPILE)ld) > > I did not check the other tools.. Note that I don't care about tools at all. objtool (see the dump above) is apparently needed to build the kernel proper, so it is built as a part of kernel. BTW shouldn't it use HOSTCC anyway? thanks, -- js suse labs
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2016-11-11 16:20 +0100 |
| Message-ID | <sClMt-5Zj-17@gated-at.bofh.it> |
| In reply to | #1519816 |
On Fri, Nov 11, 2016 at 03:04:35PM +0100, Jiri Slaby wrote: > On 11/11/2016, 03:00 PM, Jiri Olsa wrote: > > On Fri, Nov 11, 2016 at 12:23:25PM +0100, Jiri Slaby wrote: > >> Hi, > >> > >> I am trying a new gcc with new warnings enabled: > >> > >> make O=../a/gcc7/ CC='gcc-7' V=1 kernel/exit.o > >> EXTRA_CFLAGS='-Wimplicit-fallthrough=3' > >> > >> But the build fails when building under tools/: > >> ... > >> make -f /home/latest/linux/tools/build/Makefile.build dir=. obj=fixdep > >> gcc > >> -Wp,-MD,/home/latest/a/gcc7/tools/objtool/.exec-cmd.o.d,-MT,/home/latest/a/gcc7/tools/objtool/exec-cmd.o > >> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security > >> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes > >> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked > >> -Wredundant-decls -Wshadow -Wstrict-aliasing=3 -Wstrict-prototypes > >> -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat > >> -Wimplicit-fallthrough=3 -ggdb3 -Wall -Wextra -std=gnu99 -O6 > >> -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC -Werror > >> -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE > >> -I/home/latest/linux/tools/include/ -I/home/latest/linux/include/uapi > >> -I/home/latest/linux/include -D"BUILD_STR(s)=#s" -c -o > >> /home/latest/a/gcc7/tools/objtool/exec-cmd.o exec-cmd.c > >> gcc: error: unrecognized command line option ‘-Wimplicit-fallthrough=3’; > >> did you mean ‘-Wno-fallthrough’? > >> > >> > >> Apparently, CC is not respected for tools/ dir. > >> > >> Well, it is used (tools/build/Makefile.build): > >> # Compile command > >> quiet_cmd_cc_o_c = CC $@ > >> cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< > >> > >> > >> But I don't know why CFLAGS propagate from Makefile to tools/, but CC > >> doesn't (both are exported)? Any ideas? > > > > so the root Makefile assign CC directly: > > CC = $(CROSS_COMPILE)gcc > > > > we are trying to be a little bit smarter in perf > > and set it only if it's not set by user > > > > # Allow setting CC and AR and LD, or setting CROSS_COMPILE as a prefix. > > $(call allow-override,CC,$(CROSS_COMPILE)gcc) > > $(call allow-override,AR,$(CROSS_COMPILE)ar) > > $(call allow-override,LD,$(CROSS_COMPILE)ld) > > > > I did not check the other tools.. > > Note that I don't care about tools at all. objtool (see the dump above) > is apparently needed to build the kernel proper, so it is built as a > part of kernel. > > BTW shouldn't it use HOSTCC anyway? hum, probably.. adding Josh to the loop jirka
[toc] | [prev] | [next] | [standalone]
| From | Josh Poimboeuf <jpoimboe@redhat.com> |
|---|---|
| Date | 2016-11-11 16:40 +0100 |
| Message-ID | <sCm5P-65D-17@gated-at.bofh.it> |
| In reply to | #1519847 |
On Fri, Nov 11, 2016 at 04:14:27PM +0100, Jiri Olsa wrote: > On Fri, Nov 11, 2016 at 03:04:35PM +0100, Jiri Slaby wrote: > > On 11/11/2016, 03:00 PM, Jiri Olsa wrote: > > > On Fri, Nov 11, 2016 at 12:23:25PM +0100, Jiri Slaby wrote: > > >> Hi, > > >> > > >> I am trying a new gcc with new warnings enabled: > > >> > > >> make O=../a/gcc7/ CC='gcc-7' V=1 kernel/exit.o > > >> EXTRA_CFLAGS='-Wimplicit-fallthrough=3' > > >> > > >> But the build fails when building under tools/: > > >> ... > > >> make -f /home/latest/linux/tools/build/Makefile.build dir=. obj=fixdep > > >> gcc > > >> -Wp,-MD,/home/latest/a/gcc7/tools/objtool/.exec-cmd.o.d,-MT,/home/latest/a/gcc7/tools/objtool/exec-cmd.o > > >> -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security > > >> -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes > > >> -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked > > >> -Wredundant-decls -Wshadow -Wstrict-aliasing=3 -Wstrict-prototypes > > >> -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat > > >> -Wimplicit-fallthrough=3 -ggdb3 -Wall -Wextra -std=gnu99 -O6 > > >> -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC -Werror > > >> -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE > > >> -I/home/latest/linux/tools/include/ -I/home/latest/linux/include/uapi > > >> -I/home/latest/linux/include -D"BUILD_STR(s)=#s" -c -o > > >> /home/latest/a/gcc7/tools/objtool/exec-cmd.o exec-cmd.c > > >> gcc: error: unrecognized command line option ‘-Wimplicit-fallthrough=3’; > > >> did you mean ‘-Wno-fallthrough’? > > >> > > >> > > >> Apparently, CC is not respected for tools/ dir. > > >> > > >> Well, it is used (tools/build/Makefile.build): > > >> # Compile command > > >> quiet_cmd_cc_o_c = CC $@ > > >> cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< > > >> > > >> > > >> But I don't know why CFLAGS propagate from Makefile to tools/, but CC > > >> doesn't (both are exported)? Any ideas? > > > > > > so the root Makefile assign CC directly: > > > CC = $(CROSS_COMPILE)gcc > > > > > > we are trying to be a little bit smarter in perf > > > and set it only if it's not set by user > > > > > > # Allow setting CC and AR and LD, or setting CROSS_COMPILE as a prefix. > > > $(call allow-override,CC,$(CROSS_COMPILE)gcc) > > > $(call allow-override,AR,$(CROSS_COMPILE)ar) > > > $(call allow-override,LD,$(CROSS_COMPILE)ld) > > > > > > I did not check the other tools.. > > > > Note that I don't care about tools at all. objtool (see the dump above) > > is apparently needed to build the kernel proper, so it is built as a > > part of kernel. > > > > BTW shouldn't it use HOSTCC anyway? > > hum, probably.. adding Josh to the loop Does it work if you use KCFLAGS instead of EXTRA_CFLAGS? -- Josh
[toc] | [prev] | [next] | [standalone]
| From | Jiri Slaby <jslaby@suse.cz> |
|---|---|
| Date | 2016-11-11 18:10 +0100 |
| Message-ID | <sCnuW-77s-13@gated-at.bofh.it> |
| In reply to | #1519857 |
On 11/11/2016, 04:30 PM, Josh Poimboeuf wrote: > Does it work if you use KCFLAGS instead of EXTRA_CFLAGS? Yes, the kernel builds with the flags now. But objtool is unexpectedly still built by a different compiler. I would also prefer the flags (like the warning above) to be passed even when building host commands. thanks, -- js suse labs
[toc] | [prev] | [next] | [standalone]
| From | Josh Poimboeuf <jpoimboe@redhat.com> |
|---|---|
| Date | 2016-11-11 18:30 +0100 |
| Message-ID | <sCnOh-7dZ-7@gated-at.bofh.it> |
| In reply to | #1519911 |
On Fri, Nov 11, 2016 at 06:08:24PM +0100, Jiri Slaby wrote: > On 11/11/2016, 04:30 PM, Josh Poimboeuf wrote: > > Does it work if you use KCFLAGS instead of EXTRA_CFLAGS? > > Yes, the kernel builds with the flags now. > > But objtool is unexpectedly still built by a different compiler. > > I would also prefer the flags (like the warning above) to be passed even > when building host commands. In that case, if you want to build *everything* in tools and kernel with the new compiler and new flags, I think you'll need to set HOSTCC, HOSTCFLAGS, and CFLAGS, in addition to CC and KCFLAGS. objtool uses the host compiler, but it doesn't support setting HOSTCC or HOSTCFLAGS yet. It always just uses 'gcc'. I'll add HOSTCC/HOSTCFLAGS to the TODO list, though feel free to work up a patch. -- Josh
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web