* [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc @ 2017-08-15 1:29 Matthias Kaehlcke 2017-08-15 1:29 ` [PATCH v2 2/2] x86/build: Fix stack alignment for CLang Matthias Kaehlcke 2017-08-16 15:03 ` [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc Masahiro Yamada 0 siblings, 2 replies; 4+ messages in thread From: Matthias Kaehlcke @ 2017-08-15 1:29 UTC (permalink / raw) To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Masahiro Yamada, Michal Marek Cc: x86, linux-kbuild, linux-kernel, dianders, Michael Davidson, Greg Hackmann, Nick Desaulniers, Stephen Hines, Kees Cook, Arnd Bergmann, Bernhard.Rosenkranzer, Matthias Kaehlcke The macro cc-option receives two parameters (the second may be empty). It returns the first parameter if it is a valid compiler option, otherwise the second one. It is not evaluated if the second parameter is a valid compiler option. This seems to be fine in virtually all cases, however there are scenarios where the second parameter needs to be evaluated too, and an empty value (or a third option) should be returned if it is not valid. The new macro try-run-opt receives a 'base command' and two options as parameters. It runs 'base command' + option 1 and returns option 1 upon success. In case of failure 'base command' + option 2 is executed, in case of success option 2 is returned, otherwise an empty string. Rework [__]cc-option, ld-option, and cc-ldoption to use try-run-opt instead of try-run to make sure the alternative option is evaluated. Signed-off-by: Matthias Kaehlcke <mka@chromium.org> --- Changes in v2: - add try-run-opt instead of cc-option-3 - use try-run-opt for [__]cc-option, ld-option and ccld-option - updated subject (was 'kbuild: Add macros cc-option-3 and __cc-option-3') and commit message scripts/Kbuild.include | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index dd8e2dde0b34..48a6d0e9b073 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include @@ -85,8 +85,8 @@ TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/) # try-run # Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise) -# Exit code chooses option. "$$TMP" is can be used as temporary file and -# is automatically cleaned up. +# Runs the command $1, exit code chooses option. "$$TMP" is used as temporary +# file and is automatically cleaned up. try-run = $(shell set -e; \ TMP="$(TMPOUT).$$$$.tmp"; \ TMPO="$(TMPOUT).$$$$.o"; \ @@ -96,6 +96,23 @@ try-run = $(shell set -e; \ fi; \ rm -f "$$TMP" "$$TMPO") +# try-run-opt +# Usage: option = $(call try-run-opt, $(CC)...-o "$$TMP",option-ok,otherwise) +# Runs the command '$1 $2' and outputs $2 if the execution was successful. +# Otherwise runs '$1 $3' (if $3 is not empty) and outputs $3 upon success. No +# output if both commands fail. "$$TMP" is used as temporary file and is +# automatically cleaned up. +try-run-opt = $(shell set -e; \ + TMP="$(TMPOUT).$$$$.tmp"; \ + TMPO="$(TMPOUT).$$$$.o"; \ + if ($(1) $(2)) >/dev/null 2>&1; \ + then echo "$(2)"; \ + elif [ -n "$(3)" ] && ($(1) $(3)) >/dev/null 2>&1; \ + then echo "$(3)"; \ + else echo ""; \ + fi; \ + rm -f "$$TMP" "$$TMPO") + # as-option # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) @@ -110,8 +127,8 @@ as-instr = $(call try-run,\ # __cc-option # Usage: MY_CFLAGS += $(call __cc-option,$(CC),$(MY_CFLAGS),-march=winchip-c6,-march=i586) -__cc-option = $(call try-run,\ - $(1) -Werror $(2) $(3) -c -x c /dev/null -o "$$TMP",$(3),$(4)) +__cc-option = $(call try-run-opt,\ + $(1) -Werror $(2) -c -x c /dev/null -o "$$TMP",$(3),$(4)) # Do not attempt to build with gcc plugins during cc-option tests. # (And this uses delayed resolution so the flags will be up to date.) @@ -159,13 +176,13 @@ cc-if-fullversion = $(shell [ $(cc-fullversion) $(1) $(2) ] && echo $(3) || echo # cc-ldoption # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) -cc-ldoption = $(call try-run,\ - $(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) +cc-ldoption = $(call try-run-opt,\ + $(CC) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) # ld-option # Usage: LDFLAGS += $(call ld-option, -X) -ld-option = $(call try-run,\ - $(CC) -x c /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) +ld-option = $(call try-run-opt,\ + $(CC) -x c /dev/null -c -o "$$TMPO" ; $(LD) "$$TMPO" -o "$$TMP",$(1),$(2)) # ar-option # Usage: KBUILD_ARFLAGS := $(call ar-option,D) -- 2.14.0.434.g98096fd7a8-goog ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/2] x86/build: Fix stack alignment for CLang 2017-08-15 1:29 [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc Matthias Kaehlcke @ 2017-08-15 1:29 ` Matthias Kaehlcke 2017-08-16 15:03 ` [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc Masahiro Yamada 1 sibling, 0 replies; 4+ messages in thread From: Matthias Kaehlcke @ 2017-08-15 1:29 UTC (permalink / raw) To: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Masahiro Yamada, Michal Marek Cc: x86, linux-kbuild, linux-kernel, dianders, Michael Davidson, Greg Hackmann, Nick Desaulniers, Stephen Hines, Kees Cook, Arnd Bergmann, Bernhard.Rosenkranzer, Matthias Kaehlcke Commit: d77698df39a5 ("x86/build: Specify stack alignment for clang") intended to use the same stack alignment for clang as with gcc. The two compilers use different options to configure the stack alignment (gcc: -mpreferred-stack-boundary=n, clang: -mstack-alignment=n). The above commit assumes that the clang option uses the same parameter type as gcc, i.e. that the alignment is specified as 2^n. However clang interprets the value of this option literally to use an alignment of n, in consequence the stack remains misaligned. Change the values used with -mstack-alignment to be the actual alignment instead of a power of two. Signed-off-by: Matthias Kaehlcke <mka@chromium.org> --- Changes in v2: - use the reworked [__]cc-option instead of cc-option-3, the macro now also evaluates the alternative option arch/x86/Makefile | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 1e902f926be3..c7b25ba2d2fa 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -11,14 +11,6 @@ else KBUILD_DEFCONFIG := $(ARCH)_defconfig endif -# For gcc stack alignment is specified with -mpreferred-stack-boundary, -# clang has the option -mstack-alignment for that purpose. -ifneq ($(call cc-option, -mpreferred-stack-boundary=4),) - cc_stack_align_opt := -mpreferred-stack-boundary -else ifneq ($(call cc-option, -mstack-alignment=4),) - cc_stack_align_opt := -mstack-alignment -endif - # How to compile the 16-bit code. Note we always compile for -march=i386; # that way we can complain to the user if the CPU is insufficient. # @@ -36,7 +28,9 @@ REALMODE_CFLAGS := $(M16_CFLAGS) -g -Os -D__KERNEL__ \ REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -ffreestanding) REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), -fno-stack-protector) -REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS), $(cc_stack_align_opt)=2) +REALMODE_CFLAGS += $(call __cc-option, $(CC), $(REALMODE_CFLAGS),\ + -mpreferred-stack-boundary=2,-mstack-alignment=4) + export REALMODE_CFLAGS # BITS is used as extension for files which are available in a 32 bit @@ -76,7 +70,7 @@ ifeq ($(CONFIG_X86_32),y) # Align the stack to the register width instead of using the default # alignment of 16 bytes. This reduces stack usage and the number of # alignment instructions. - KBUILD_CFLAGS += $(call cc-option,$(cc_stack_align_opt)=2) + KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2,-mstack-alignment=4) # Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use # a lot more stack due to the lack of sharing of stacklots: @@ -115,7 +109,7 @@ else # default alignment which keep the stack *mis*aligned. # Furthermore an alignment to the register width reduces stack usage # and the number of alignment instructions. - KBUILD_CFLAGS += $(call cc-option,$(cc_stack_align_opt)=3) + KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3,-mstack-alignment=8) # Use -mskip-rax-setup if supported. KBUILD_CFLAGS += $(call cc-option,-mskip-rax-setup) -- 2.14.0.434.g98096fd7a8-goog ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc 2017-08-15 1:29 [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc Matthias Kaehlcke 2017-08-15 1:29 ` [PATCH v2 2/2] x86/build: Fix stack alignment for CLang Matthias Kaehlcke @ 2017-08-16 15:03 ` Masahiro Yamada 2017-08-16 22:58 ` Matthias Kaehlcke 1 sibling, 1 reply; 4+ messages in thread From: Masahiro Yamada @ 2017-08-16 15:03 UTC (permalink / raw) To: Matthias Kaehlcke Cc: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Michal Marek, X86 ML, Linux Kbuild mailing list, Linux Kernel Mailing List, Douglas Anderson, Michael Davidson, Greg Hackmann, Nick Desaulniers, Stephen Hines, Kees Cook, Arnd Bergmann, Bernhard Rosenkränzer Hi Matthias, 2017-08-15 10:29 GMT+09:00 Matthias Kaehlcke <mka@chromium.org>: > The macro cc-option receives two parameters (the second may be empty). It > returns the first parameter if it is a valid compiler option, otherwise > the second one. It is not evaluated if the second parameter is a valid > compiler option. This seems to be fine in virtually all cases, however > there are scenarios where the second parameter needs to be evaluated > too, and an empty value (or a third option) should be returned if it is > not valid. > > The new macro try-run-opt receives a 'base command' and two options as > parameters. It runs 'base command' + option 1 and returns option 1 > upon success. In case of failure 'base command' + option 2 is executed, > in case of success option 2 is returned, otherwise an empty string. > > Rework [__]cc-option, ld-option, and cc-ldoption to use try-run-opt > instead of try-run to make sure the alternative option is evaluated. > > Signed-off-by: Matthias Kaehlcke <mka@chromium.org> > --- > Changes in v2: > - add try-run-opt instead of cc-option-3 > - use try-run-opt for [__]cc-option, ld-option and ccld-option > - updated subject (was 'kbuild: Add macros cc-option-3 and __cc-option-3') > and commit message > > scripts/Kbuild.include | 33 +++++++++++++++++++++++++-------- > 1 file changed, 25 insertions(+), 8 deletions(-) > > diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include > index dd8e2dde0b34..48a6d0e9b073 100644 > --- a/scripts/Kbuild.include > +++ b/scripts/Kbuild.include > @@ -85,8 +85,8 @@ TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/) > > # try-run > # Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise) > -# Exit code chooses option. "$$TMP" is can be used as temporary file and > -# is automatically cleaned up. > +# Runs the command $1, exit code chooses option. "$$TMP" is used as temporary > +# file and is automatically cleaned up. > try-run = $(shell set -e; \ > TMP="$(TMPOUT).$$$$.tmp"; \ > TMPO="$(TMPOUT).$$$$.o"; \ > @@ -96,6 +96,23 @@ try-run = $(shell set -e; \ > fi; \ > rm -f "$$TMP" "$$TMPO") > > +# try-run-opt > +# Usage: option = $(call try-run-opt, $(CC)...-o "$$TMP",option-ok,otherwise) > +# Runs the command '$1 $2' and outputs $2 if the execution was successful. > +# Otherwise runs '$1 $3' (if $3 is not empty) and outputs $3 upon success. No > +# output if both commands fail. "$$TMP" is used as temporary file and is > +# automatically cleaned up. > +try-run-opt = $(shell set -e; \ > + TMP="$(TMPOUT).$$$$.tmp"; \ > + TMPO="$(TMPOUT).$$$$.o"; \ > + if ($(1) $(2)) >/dev/null 2>&1; \ > + then echo "$(2)"; \ > + elif [ -n "$(3)" ] && ($(1) $(3)) >/dev/null 2>&1; \ > + then echo "$(3)"; \ > + else echo ""; \ > + fi; \ > + rm -f "$$TMP" "$$TMPO") > + > # as-option > # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) > > @@ -110,8 +127,8 @@ as-instr = $(call try-run,\ > > # __cc-option > # Usage: MY_CFLAGS += $(call __cc-option,$(CC),$(MY_CFLAGS),-march=winchip-c6,-march=i586) > -__cc-option = $(call try-run,\ > - $(1) -Werror $(2) $(3) -c -x c /dev/null -o "$$TMP",$(3),$(4)) > +__cc-option = $(call try-run-opt,\ > + $(1) -Werror $(2) -c -x c /dev/null -o "$$TMP",$(3),$(4)) > > # Do not attempt to build with gcc plugins during cc-option tests. > # (And this uses delayed resolution so the flags will be up to date.) > @@ -159,13 +176,13 @@ cc-if-fullversion = $(shell [ $(cc-fullversion) $(1) $(2) ] && echo $(3) || echo > > # cc-ldoption > # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) > -cc-ldoption = $(call try-run,\ > - $(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) > +cc-ldoption = $(call try-run-opt,\ > + $(CC) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) > > # ld-option > # Usage: LDFLAGS += $(call ld-option, -X) > -ld-option = $(call try-run,\ > - $(CC) -x c /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) > +ld-option = $(call try-run-opt,\ > + $(CC) -x c /dev/null -c -o "$$TMPO" ; $(LD) "$$TMPO" -o "$$TMP",$(1),$(2)) > > # ar-option > # Usage: KBUILD_ARFLAGS := $(call ar-option,D) Thanks for sending the patch, but I am reluctant to add this to the common script after consideration. Sorry. Currently, *-option and try-run are quite simple and work for almost all cases. The stack alignment option is one of rare scenarios, I think. If we have more and more cases that need the second parameter evaluation, we will need to support it in the common script somehow. Otherwise, could you solve the problem in local Makefile? (I was wondering if we can support multiple evaluation in a generic try-run implementation, for example using "for ... do ... done" loop of shell script, but it would introduce much complexity.) For example, one very ad-hoc solution: # For gcc stack alignment is specified with -mpreferred-stack-boundary, # clang has the option -mstack-alignment for that purpose. ifneq ($(call cc-option, -mpreferred-stack-boundary=4),) cc_stack_align4 := -mpreferred-stack-boundary=2 cc_stack_align8 := -mpreferred-stack-boundary=3 else cc_stack_align4 := -mstack-alignment=4 cc_stack_align8 := -mstack-alignment=8 endif -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc 2017-08-16 15:03 ` [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc Masahiro Yamada @ 2017-08-16 22:58 ` Matthias Kaehlcke 0 siblings, 0 replies; 4+ messages in thread From: Matthias Kaehlcke @ 2017-08-16 22:58 UTC (permalink / raw) To: Masahiro Yamada Cc: Thomas Gleixner, Ingo Molnar, H . Peter Anvin, Michal Marek, X86 ML, Linux Kbuild mailing list, Linux Kernel Mailing List, Douglas Anderson, Michael Davidson, Greg Hackmann, Nick Desaulniers, Stephen Hines, Kees Cook, Arnd Bergmann, Bernhard Rosenkränzer El Thu, Aug 17, 2017 at 12:03:05AM +0900 Masahiro Yamada ha dit: > Hi Matthias, > > > 2017-08-15 10:29 GMT+09:00 Matthias Kaehlcke <mka@chromium.org>: > > The macro cc-option receives two parameters (the second may be empty). It > > returns the first parameter if it is a valid compiler option, otherwise > > the second one. It is not evaluated if the second parameter is a valid > > compiler option. This seems to be fine in virtually all cases, however > > there are scenarios where the second parameter needs to be evaluated > > too, and an empty value (or a third option) should be returned if it is > > not valid. > > > > The new macro try-run-opt receives a 'base command' and two options as > > parameters. It runs 'base command' + option 1 and returns option 1 > > upon success. In case of failure 'base command' + option 2 is executed, > > in case of success option 2 is returned, otherwise an empty string. > > > > Rework [__]cc-option, ld-option, and cc-ldoption to use try-run-opt > > instead of try-run to make sure the alternative option is evaluated. > > > > Signed-off-by: Matthias Kaehlcke <mka@chromium.org> > > --- > > Changes in v2: > > - add try-run-opt instead of cc-option-3 > > - use try-run-opt for [__]cc-option, ld-option and ccld-option > > - updated subject (was 'kbuild: Add macros cc-option-3 and __cc-option-3') > > and commit message > > > > scripts/Kbuild.include | 33 +++++++++++++++++++++++++-------- > > 1 file changed, 25 insertions(+), 8 deletions(-) > > > > diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include > > index dd8e2dde0b34..48a6d0e9b073 100644 > > --- a/scripts/Kbuild.include > > +++ b/scripts/Kbuild.include > > @@ -85,8 +85,8 @@ TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/) > > > > # try-run > > # Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise) > > -# Exit code chooses option. "$$TMP" is can be used as temporary file and > > -# is automatically cleaned up. > > +# Runs the command $1, exit code chooses option. "$$TMP" is used as temporary > > +# file and is automatically cleaned up. > > try-run = $(shell set -e; \ > > TMP="$(TMPOUT).$$$$.tmp"; \ > > TMPO="$(TMPOUT).$$$$.o"; \ > > @@ -96,6 +96,23 @@ try-run = $(shell set -e; \ > > fi; \ > > rm -f "$$TMP" "$$TMPO") > > > > +# try-run-opt > > +# Usage: option = $(call try-run-opt, $(CC)...-o "$$TMP",option-ok,otherwise) > > +# Runs the command '$1 $2' and outputs $2 if the execution was successful. > > +# Otherwise runs '$1 $3' (if $3 is not empty) and outputs $3 upon success. No > > +# output if both commands fail. "$$TMP" is used as temporary file and is > > +# automatically cleaned up. > > +try-run-opt = $(shell set -e; \ > > + TMP="$(TMPOUT).$$$$.tmp"; \ > > + TMPO="$(TMPOUT).$$$$.o"; \ > > + if ($(1) $(2)) >/dev/null 2>&1; \ > > + then echo "$(2)"; \ > > + elif [ -n "$(3)" ] && ($(1) $(3)) >/dev/null 2>&1; \ > > + then echo "$(3)"; \ > > + else echo ""; \ > > + fi; \ > > + rm -f "$$TMP" "$$TMPO") > > + > > # as-option > > # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) > > > > @@ -110,8 +127,8 @@ as-instr = $(call try-run,\ > > > > # __cc-option > > # Usage: MY_CFLAGS += $(call __cc-option,$(CC),$(MY_CFLAGS),-march=winchip-c6,-march=i586) > > -__cc-option = $(call try-run,\ > > - $(1) -Werror $(2) $(3) -c -x c /dev/null -o "$$TMP",$(3),$(4)) > > +__cc-option = $(call try-run-opt,\ > > + $(1) -Werror $(2) -c -x c /dev/null -o "$$TMP",$(3),$(4)) > > > > # Do not attempt to build with gcc plugins during cc-option tests. > > # (And this uses delayed resolution so the flags will be up to date.) > > @@ -159,13 +176,13 @@ cc-if-fullversion = $(shell [ $(cc-fullversion) $(1) $(2) ] && echo $(3) || echo > > > > # cc-ldoption > > # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) > > -cc-ldoption = $(call try-run,\ > > - $(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) > > +cc-ldoption = $(call try-run-opt,\ > > + $(CC) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) > > > > # ld-option > > # Usage: LDFLAGS += $(call ld-option, -X) > > -ld-option = $(call try-run,\ > > - $(CC) -x c /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) > > +ld-option = $(call try-run-opt,\ > > + $(CC) -x c /dev/null -c -o "$$TMPO" ; $(LD) "$$TMPO" -o "$$TMP",$(1),$(2)) > > > > # ar-option > > # Usage: KBUILD_ARFLAGS := $(call ar-option,D) > > > Thanks for sending the patch, > but I am reluctant to add this to the common script > after consideration. Sorry. > > Currently, *-option and try-run are quite simple > and work for almost all cases. > > The stack alignment option is one of rare scenarios, I think. Yes, it's clearly not a common case. > If we have more and more cases that need the second parameter evaluation, > we will need to support it in the common script somehow. > > Otherwise, could you solve the problem in local Makefile? It can definitely be solved in the Makefile, another question is whether the maintainers of that Makefile accept the solution. I'll give it a try. > (I was wondering if we can support multiple evaluation in a generic > try-run implementation, > for example using "for ... do ... done" loop of shell script, > but it would introduce much complexity.) > > > > For example, one very ad-hoc solution: > > # For gcc stack alignment is specified with -mpreferred-stack-boundary, > # clang has the option -mstack-alignment for that purpose. > ifneq ($(call cc-option, -mpreferred-stack-boundary=4),) > cc_stack_align4 := -mpreferred-stack-boundary=2 > cc_stack_align8 := -mpreferred-stack-boundary=3 > else > cc_stack_align4 := -mstack-alignment=4 > cc_stack_align8 := -mstack-alignment=8 > endif Thanks for the suggestion, something like this should work, with an additional cc-option check in the else branch, for the case of older gcc versions without support for the -mpreferred-stack-boundary option. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-08-16 22:58 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-08-15 1:29 [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc Matthias Kaehlcke 2017-08-15 1:29 ` [PATCH v2 2/2] x86/build: Fix stack alignment for CLang Matthias Kaehlcke 2017-08-16 15:03 ` [PATCH v2 1/2] kbuild: Also evaluate alternative option passed to cc-option, etc Masahiro Yamada 2017-08-16 22:58 ` Matthias Kaehlcke
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox