Message ID | 1583476525-13505-17-git-send-email-amit.kachhap@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: return address signing | expand |
On Fri, Mar 6, 2020 at 3:36 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 > Acked-by: Masahiro Yamada <masahiroy@kernel.org> > Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> > Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com> > --- > Changes since v5: > * More descriptions for using /dev/zero. FYI: This has been fixed: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3c968de5c7d1719b2f9b538f2f7f5f5922e5f311 So, this will not be a problem for the future release of binutils. Anyway, we need to take care of the released ones, so I am fine with /dev/zero. > scripts/Kconfig.include | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include > index 85334dc..a1c1925 100644 > --- a/scripts/Kconfig.include > +++ b/scripts/Kconfig.include > @@ -31,6 +31,12 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -S -x c /dev/null -o /de > # Return y if the linker supports <flag>, n otherwise > ld-option = $(success,$(LD) -v $(1)) > > +# $(as-option,<flag>) > +# /dev/zero is used as output instead of /dev/null as some assembler cribs when > +# both input and output are same. Also both of them have same write behaviour so > +# can be easily substituted. > +as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -c -x assembler /dev/null -o /dev/zero) > + > # $(as-instr,<instr>) > # Return y if the assembler supports <instr>, n otherwise > as-instr = $(success,printf "%b\n" "$(1)" | $(CC) $(CLANG_FLAGS) -c -x assembler -o /dev/null -) > -- > 2.7.4 >
Hi Masahiro, On 3/6/20 11:37 AM, Masahiro Yamada wrote: > On Fri, Mar 6, 2020 at 3:36 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 >> Acked-by: Masahiro Yamada <masahiroy@kernel.org> >> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> >> Signed-off-by: Amit Daniel Kachhap <amit.kachhap@arm.com> >> --- >> Changes since v5: >> * More descriptions for using /dev/zero. > > > FYI: > > This has been fixed: > > https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3c968de5c7d1719b2f9b538f2f7f5f5922e5f311 > > > So, this will not be a problem for the > future release of binutils. > > Anyway, we need to take care of the released ones, > so I am fine with /dev/zero. > Thank you for letting us know. I did not realize it was a compiler issue otherwise I would have reported it. I thought it was a mechanism to prevent people from trashing their code, but thinking at it more carefully, for devices does not make sense hence it is good that there is a fix already. [...]
diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include index 85334dc..a1c1925 100644 --- a/scripts/Kconfig.include +++ b/scripts/Kconfig.include @@ -31,6 +31,12 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -S -x c /dev/null -o /de # Return y if the linker supports <flag>, n otherwise ld-option = $(success,$(LD) -v $(1)) +# $(as-option,<flag>) +# /dev/zero is used as output instead of /dev/null as some assembler cribs when +# both input and output are same. Also both of them have same write behaviour so +# can be easily substituted. +as-option = $(success, $(CC) $(CLANG_FLAGS) $(1) -c -x assembler /dev/null -o /dev/zero) + # $(as-instr,<instr>) # Return y if the assembler supports <instr>, n otherwise as-instr = $(success,printf "%b\n" "$(1)" | $(CC) $(CLANG_FLAGS) -c -x assembler -o /dev/null -)