Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
On Sat, Feb 14, 2009 at 08:57:02PM +0100, Sam Ravnborg wrote: [...] --- a/Makefile +++ b/Makefile @@ -525,8 +525,6 @@ else KBUILD_CFLAGS+= -O2 endif -include $(srctree)/arch/$(SRCARCH)/Makefile - ifneq (CONFIG_FRAME_WARN,0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif @@ -555,6 +553,8 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif +include $(srctree)/arch/$(SRCARCH)/Makefile + # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) CHECKFLAGS += $(NOSTDINC_FLAGS) -- this patch is really for Sam to judge - Cc:-ed him. If we move the include further down then the following: # Force gcc to behave correct even for buggy distributions # Arch Makefiles may override this setting KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) will most likely fail. Hm... I don't get it, the comment says that the arch may override this setting, but currently it may not, since arch makefile is included before this line. So my patch also fixes this bug, no? Or arches supposed to overwrite cc-option behaviour? Hm.. There is an interesting commit: commit e06b8b98da071f7dd78fb7822991694288047df0 Author: Sam Ravnborg s...@ravnborg.org Date: Wed Feb 13 22:43:28 2008 +0100 kbuild: allow -fstack-protector to take effect [...] --- a/Makefile +++ b/Makefile @@ -507,6 +507,10 @@ else KBUILD_CFLAGS += -O2 endif +# Force gcc to behave correct even for buggy distributions +# Arch Makefiles may override this setting +KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) + include $(srctree)/arch/$(SRCARCH)/Makefile ifdef CONFIG_FRAME_POINTER @@ -525,9 +529,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif -# Force gcc to behave correct even for buggy distributions -KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) - # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) CHECKFLAGS += $(NOSTDINC_FLAGS) ^^ Which does the same (wrt fno-stack-protector) as the patch I sent, i.e. includes arch Makefile later. But then, this commit reverted things back (w/o your Ack): commit bef5b54bd7bf8117c75cb943d64549134c6d9a1f Author: Ralf Baechle r...@linux-mips.org Date: Wed Jul 16 13:02:24 2008 +0100 Fix MIPS cross-compile problem [...] Signed-off-by: Ralf Baechle r...@linux-mips.org Signed-off-by: Linus Torvalds torva...@linux-foundation.org [...] --- a/Makefile +++ b/Makefile @@ -508,6 +508,8 @@ else KBUILD_CFLAGS += -O2 endif +include $(srctree)/arch/$(SRCARCH)/Makefile + ifneq (CONFIG_FRAME_WARN,0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif @@ -516,8 +518,6 @@ endif # Arch Makefiles may override this setting KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) -include $(srctree)/arch/$(SRCARCH)/Makefile - ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls else :-? -- Anton Vorontsov email: cbouatmai...@gmail.com irc://irc.freenode.net/bd2 ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
On Mon, Feb 16, 2009 at 05:20:01PM +0300, Anton Vorontsov wrote: On Sat, Feb 14, 2009 at 08:57:02PM +0100, Sam Ravnborg wrote: [...] --- a/Makefile +++ b/Makefile @@ -525,8 +525,6 @@ else KBUILD_CFLAGS += -O2 endif -include $(srctree)/arch/$(SRCARCH)/Makefile - ifneq (CONFIG_FRAME_WARN,0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif @@ -555,6 +553,8 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif +include $(srctree)/arch/$(SRCARCH)/Makefile + # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) CHECKFLAGS += $(NOSTDINC_FLAGS) -- this patch is really for Sam to judge - Cc:-ed him. If we move the include further down then the following: # Force gcc to behave correct even for buggy distributions # Arch Makefiles may override this setting KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) will most likely fail. Hm... I don't get it, the comment says that the arch may override this setting, but currently it may not, since arch makefile is included before this line. So my patch also fixes this bug, no? Or arches supposed to overwrite cc-option behaviour? Hm.. There is an interesting commit: commit e06b8b98da071f7dd78fb7822991694288047df0 Author: Sam Ravnborg s...@ravnborg.org Date: Wed Feb 13 22:43:28 2008 +0100 kbuild: allow -fstack-protector to take effect [...] --- a/Makefile +++ b/Makefile @@ -507,6 +507,10 @@ else KBUILD_CFLAGS += -O2 endif +# Force gcc to behave correct even for buggy distributions +# Arch Makefiles may override this setting +KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) + include $(srctree)/arch/$(SRCARCH)/Makefile ifdef CONFIG_FRAME_POINTER @@ -525,9 +529,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif -# Force gcc to behave correct even for buggy distributions -KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) - # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) CHECKFLAGS += $(NOSTDINC_FLAGS) ^^ Which does the same (wrt fno-stack-protector) as the patch I sent, i.e. includes arch Makefile later. But then, this commit reverted things back (w/o your Ack): commit bef5b54bd7bf8117c75cb943d64549134c6d9a1f Author: Ralf Baechle r...@linux-mips.org Date: Wed Jul 16 13:02:24 2008 +0100 Fix MIPS cross-compile problem [...] Signed-off-by: Ralf Baechle r...@linux-mips.org Signed-off-by: Linus Torvalds torva...@linux-foundation.org Ok, I think I got it. It seems that Ralf was using this feature of arch/mips/Makefile: ifneq ($(SUBARCH),$(ARCH)) ifeq ($(CROSS_COMPILE),) CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux- $(tool-archpref)-linux-gnu- $(tool-archpref)-unknown-linux-gnu-) endif endif There are few arches that have auto detection of CROSS_COMPILE variable: mips, m68k, parisc, xtensa, h8300 and blackfin. So `normal' arches don't have any chance to overwrite the flags because of the few offenders above. ;-) [...] --- a/Makefile +++ b/Makefile @@ -508,6 +508,8 @@ else KBUILD_CFLAGS += -O2 endif +include $(srctree)/arch/$(SRCARCH)/Makefile + ifneq (CONFIG_FRAME_WARN,0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif @@ -516,8 +518,6 @@ endif # Arch Makefiles may override this setting KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) -include $(srctree)/arch/$(SRCARCH)/Makefile - ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls else -- Anton Vorontsov email: cbouatmai...@gmail.com irc://irc.freenode.net/bd2 ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
On Mon, Feb 16, 2009 at 05:20:01PM +0300, Anton Vorontsov wrote: [...] But then, this commit reverted things back (w/o your Ack): commit bef5b54bd7bf8117c75cb943d64549134c6d9a1f Author: Ralf Baechle r...@linux-mips.org Date: Wed Jul 16 13:02:24 2008 +0100 Fix MIPS cross-compile problem [...] Signed-off-by: Ralf Baechle r...@linux-mips.org Signed-off-by: Linus Torvalds torva...@linux-foundation.org [...] --- a/Makefile +++ b/Makefile @@ -508,6 +508,8 @@ else KBUILD_CFLAGS += -O2 endif +include $(srctree)/arch/$(SRCARCH)/Makefile + ifneq (CONFIG_FRAME_WARN,0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif @@ -516,8 +518,6 @@ endif # Arch Makefiles may override this setting KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) -include $(srctree)/arch/$(SRCARCH)/Makefile - ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls else Btw, I wonder if x86's CONFIG_CC_STACKPROTECTOR is a no-op since v2.6.27-rc1? Seems like it is. -- Anton Vorontsov email: cbouatmai...@gmail.com irc://irc.freenode.net/bd2 ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
* Anton Vorontsov avoront...@ru.mvista.com wrote: On Mon, Feb 16, 2009 at 05:20:01PM +0300, Anton Vorontsov wrote: [...] But then, this commit reverted things back (w/o your Ack): commit bef5b54bd7bf8117c75cb943d64549134c6d9a1f Author: Ralf Baechle r...@linux-mips.org Date: Wed Jul 16 13:02:24 2008 +0100 Fix MIPS cross-compile problem [...] Signed-off-by: Ralf Baechle r...@linux-mips.org Signed-off-by: Linus Torvalds torva...@linux-foundation.org [...] --- a/Makefile +++ b/Makefile @@ -508,6 +508,8 @@ else KBUILD_CFLAGS += -O2 endif +include $(srctree)/arch/$(SRCARCH)/Makefile + ifneq (CONFIG_FRAME_WARN,0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif @@ -516,8 +518,6 @@ endif # Arch Makefiles may override this setting KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) -include $(srctree)/arch/$(SRCARCH)/Makefile - ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls else Btw, I wonder if x86's CONFIG_CC_STACKPROTECTOR is a no-op since v2.6.27-rc1? Seems like it is. that's fixed and merged up for 2.6.30. Ingo ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
There are few arches that have auto detection of CROSS_COMPILE variable: mips, m68k, parisc, xtensa, h8300 and blackfin. So `normal' arches don't have any chance to overwrite the flags because of the few offenders above. ;-) We also have archs where we add options to gcc that may impact for example -fno-stack-protector. We had a bug in x86 in this area for a while. So the only sane thing is to only add the most generic options to KBUILD_CFLAGS before we include the arch specific part. And we can then add the conditional options later - like the KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) in this case. We learned a few lessons in this area over time as your history digging also showed. Sam ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
* Benjamin Herrenschmidt b...@kernel.crashing.org wrote: On Sat, 2009-02-14 at 23:03 +0100, Ingo Molnar wrote: So the question is: even with FRAME_POINTERS disabled on PPC, is __builtin_return_address(1)/(2) reliable, and is save_stack_trace() fast? (i.e. can it walk down the stack frame efficiently, or does it have to scan the full kernel stack) I.e. does PPC have all the material advantages of frame pointers? Yes, we do. We effectively have frame pointers in fact, they may only be omitted in leaf functions but then gcc __builtin_return_address() knows how to handle that afaik. So basically we want to define FRAME_POINTERS on PPC, but do not want the -fno-omit-frame-pointers flag. Originally (many moons ago) FRAME_POINTER _was_ just the toplevel Makefile detail, but these days we've got a handful of secondary uses as well, expressing the reliability of backtraces in essence. We could split the whole option (affecting lots of files), or we could zap that compiler flag in the PPC case - it is only PPC that worries about this anyway. Ingo ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
On Wed, Feb 04, 2009 at 10:26:12PM +0100, Ingo Molnar wrote: * Anton Vorontsov avoront...@ru.mvista.com wrote: This patch gives arches more freedom on overwriting CFLAGS, specifically on PowerPC we want to remove -fno-omit-frame-pointer flag. Signed-off-by: Anton Vorontsov avoront...@ru.mvista.com --- Makefile |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7715b2c..d1ba93f 100644 --- a/Makefile +++ b/Makefile @@ -525,8 +525,6 @@ else KBUILD_CFLAGS += -O2 endif -include $(srctree)/arch/$(SRCARCH)/Makefile - ifneq (CONFIG_FRAME_WARN,0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif @@ -555,6 +553,8 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif +include $(srctree)/arch/$(SRCARCH)/Makefile + # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) CHECKFLAGS += $(NOSTDINC_FLAGS) -- this patch is really for Sam to judge - Cc:-ed him. If we move the include further down then the following: # Force gcc to behave correct even for buggy distributions # Arch Makefiles may override this setting KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) will most likely fail. If popwerpc needs to get rid of -fno-omit-frame-pointer then we need a way to express this at KConfig level and NOT by doing some tricks with CFLAGS. Sam ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
On Wed, Feb 11, 2009 at 02:51:34PM +1100, Benjamin Herrenschmidt wrote: On Wed, 2009-02-04 at 22:26 +0100, Ingo Molnar wrote: +include $(srctree)/arch/$(SRCARCH)/Makefile + # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) CHECKFLAGS += $(NOSTDINC_FLAGS) -- this patch is really for Sam to judge - Cc:-ed him. Sam ? I have a few more powerpc patches depending on that one... so I'd like to know if it's totally doomed or not :-) See my answer to the mail from Ingo. We really need to do this on Kconfig level it at all possible. Sam ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
* Sam Ravnborg s...@ravnborg.org wrote: On Wed, Feb 04, 2009 at 10:26:12PM +0100, Ingo Molnar wrote: * Anton Vorontsov avoront...@ru.mvista.com wrote: This patch gives arches more freedom on overwriting CFLAGS, specifically on PowerPC we want to remove -fno-omit-frame-pointer flag. Signed-off-by: Anton Vorontsov avoront...@ru.mvista.com --- Makefile |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7715b2c..d1ba93f 100644 --- a/Makefile +++ b/Makefile @@ -525,8 +525,6 @@ else KBUILD_CFLAGS+= -O2 endif -include $(srctree)/arch/$(SRCARCH)/Makefile - ifneq (CONFIG_FRAME_WARN,0) KBUILD_CFLAGS += $(call cc-option,-Wframe-larger-than=${CONFIG_FRAME_WARN}) endif @@ -555,6 +553,8 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif +include $(srctree)/arch/$(SRCARCH)/Makefile + # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) CHECKFLAGS += $(NOSTDINC_FLAGS) -- this patch is really for Sam to judge - Cc:-ed him. If we move the include further down then the following: # Force gcc to behave correct even for buggy distributions # Arch Makefiles may override this setting KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector) will most likely fail. ah, ok. (I long ago made the mental note of dont change the toplevel Makefile if you can avoid it - this reinforces that.) If popwerpc needs to get rid of -fno-omit-frame-pointer then we need a way to express this at KConfig level and NOT by doing some tricks with CFLAGS. Here is what we have in the toplevel Makefile at the moment: ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls else KBUILD_CFLAGS += -fomit-frame-pointer endif My original suggestion (more than a week ago) was to make PPC always select FRAME_POINTERS. It was pointed out that -fno-omit-frame-pointers (i.e.: generate frame pointers) not only makes the code less optimal on PPC, but it can also be miscompiled. But instrumentation really needs to know whether __builtin_return_address(1) [etc] is reliable, whether stack tracing is fast - and other details - and PPC is the odd one out. So the question is: even with FRAME_POINTERS disabled on PPC, is __builtin_return_address(1)/(2) reliable, and is save_stack_trace() fast? (i.e. can it walk down the stack frame efficiently, or does it have to scan the full kernel stack) I.e. does PPC have all the material advantages of frame pointers? Ingo ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
On Sat, 2009-02-14 at 23:03 +0100, Ingo Molnar wrote: So the question is: even with FRAME_POINTERS disabled on PPC, is __builtin_return_address(1)/(2) reliable, and is save_stack_trace() fast? (i.e. can it walk down the stack frame efficiently, or does it have to scan the full kernel stack) I.e. does PPC have all the material advantages of frame pointers? Yes, we do. We effectively have frame pointers in fact, they may only be omitted in leaf functions but then gcc __builtin_return_address() knows how to handle that afaik. Cheers, Ben. ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
On Wed, 2009-02-11 at 14:23 +0100, Ingo Molnar wrote: * Benjamin Herrenschmidt b...@kernel.crashing.org wrote: On Wed, 2009-02-04 at 22:26 +0100, Ingo Molnar wrote: +include $(srctree)/arch/$(SRCARCH)/Makefile + # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) CHECKFLAGS += $(NOSTDINC_FLAGS) -- this patch is really for Sam to judge - Cc:-ed him. Sam ? I have a few more powerpc patches depending on that one... so I'd like to know if it's totally doomed or not :-) Well, toplevel Makefile changes are not to be taken lightly :-) Looks good to me but it's handy to have Sam's Ack on it too. Someone on IRC said that Sam is on vacation. This could take a while for an ACK. -- Steve ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
Re: [PATCH 1/3] Makefile: Include arch Makefiles as late as possible
On Wed, 2009-02-04 at 22:26 +0100, Ingo Molnar wrote: +include $(srctree)/arch/$(SRCARCH)/Makefile + # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) CHECKFLAGS += $(NOSTDINC_FLAGS) -- this patch is really for Sam to judge - Cc:-ed him. Sam ? I have a few more powerpc patches depending on that one... so I'd like to know if it's totally doomed or not :-) Cheers, Ben. ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev