Message ID | 1576486038-9899-15-git-send-email-amit.kachhap@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: return address signing | expand |
On Mon, Dec 16, 2019 at 5:48 PM Amit Daniel Kachhap <amit.kachhap@arm.com> wrote: > > From: Vincenzo Frascino <vincenzo.frascino@arm.com> > > Currently kconfig does not have a feature that allows to detect if the > used assembler supports a specific compilation option. > > Introduce 'as-option' to serve this purpose in the context of Kconfig: > > config X > def_bool $(as-option,...) > > Cc: Masahiro Yamada <yamada.masahiro@socionext.com> > Cc: linux-kbuild@vger.kernel.org > Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> > Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com> > --- If you apply this to arm64 tree, just go ahead. Acked-by: Masahiro Yamada <masahiroy@kernel.org> But, please be aware of a possible merge conflict with: https://patchwork.kernel.org/patch/11285929/
On Mon, Dec 16, 2019 at 02:17:16PM +0530, Amit Daniel Kachhap wrote: > diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include > index d4adfbe..cc465dd 100644 > --- a/scripts/Kconfig.include > +++ b/scripts/Kconfig.include > @@ -31,6 +31,10 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /de > # Return y if the linker supports <flag>, n otherwise > ld-option = $(success,$(LD) -v $(1)) > > +# $(as-option,<flag>) > +# Return y if the assembler supports <flag>, n otherwise > +as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -E -x assembler /dev/null -o /dev/null) I had different experiments with this for MTE and noticed that clang does not honour the -Wa, option (which you use in a subsequent patch). So not sure how useful as-option is.
On Fri, Jan 17, 2020 at 8:33 PM Catalin Marinas <catalin.marinas@arm.com> wrote: > > On Mon, Dec 16, 2019 at 02:17:16PM +0530, Amit Daniel Kachhap wrote: > > diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include > > index d4adfbe..cc465dd 100644 > > --- a/scripts/Kconfig.include > > +++ b/scripts/Kconfig.include > > @@ -31,6 +31,10 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /de > > # Return y if the linker supports <flag>, n otherwise > > ld-option = $(success,$(LD) -v $(1)) > > > > +# $(as-option,<flag>) > > +# Return y if the assembler supports <flag>, n otherwise > > +as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -E -x assembler /dev/null -o /dev/null) > > I had different experiments with this for MTE and noticed that clang > does not honour the -Wa, option (which you use in a subsequent patch). > So not sure how useful as-option is. I think this is because it uses '-E' option. To invoke the assembler, -c is needed. I replaced -E with -c, and tested it. It seems working for both gcc and clang. I noticed a similar case for cc-option: https://patchwork.kernel.org/patch/11339567/
Hi Catalin, On 17/01/2020 11:33, Catalin Marinas wrote: > On Mon, Dec 16, 2019 at 02:17:16PM +0530, Amit Daniel Kachhap wrote: >> diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include >> index d4adfbe..cc465dd 100644 >> --- a/scripts/Kconfig.include >> +++ b/scripts/Kconfig.include >> @@ -31,6 +31,10 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /de >> # Return y if the linker supports <flag>, n otherwise >> ld-option = $(success,$(LD) -v $(1)) >> >> +# $(as-option,<flag>) >> +# Return y if the assembler supports <flag>, n otherwise >> +as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -E -x assembler /dev/null -o /dev/null) > > I had different experiments with this for MTE and noticed that clang > does not honour the -Wa, option (which you use in a subsequent patch). > So not sure how useful as-option is. > Not sure of your experiments for MTE, the kernel is built with clang but uses the GNU assembler. The -Wa, option is passed down to the assembler (GNU) which honors it. Said that, I agree with Masahiro Yamada about the "-c" option to be used in place of "-E" and on that sense I provided a patch to Amit last December which should be integrated in the next series (Amit can confirm, I hope ;) ).
diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include index d4adfbe..cc465dd 100644 --- a/scripts/Kconfig.include +++ b/scripts/Kconfig.include @@ -31,6 +31,10 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /de # Return y if the linker supports <flag>, n otherwise ld-option = $(success,$(LD) -v $(1)) +# $(as-option,<flag>) +# Return y if the assembler supports <flag>, n otherwise +as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -E -x assembler /dev/null -o /dev/null) + # check if $(CC) and $(LD) exist $(error-if,$(failure,command -v $(CC)),compiler '$(CC)' not found) $(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found)