All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] scripts/tools-support-relr.sh: un-quote variables
@ 2019-11-12 13:45 Ilie Halip
  2019-11-13  5:40 ` Nathan Chancellor
  2019-11-13 10:30 ` Will Deacon
  0 siblings, 2 replies; 4+ messages in thread
From: Ilie Halip @ 2019-11-12 13:45 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Ilie Halip, Peter Collingbourne, Nick Desaulniers, Will Deacon,
	linux-kernel, clang-built-linux

When the CC variable contains quotes, e.g. when using
ccache (make CC="ccache <compiler>"), this script always
fails, so CONFIG_RELR is never enabled, even when the
toolchain supports this feature. Removing the /dev/null
redirect and invoking the script manually shows the issue:

    $ CC='/usr/bin/ccache clang' ./scripts/tools-support-relr.sh
    ./scripts/tools-support-relr.sh: 7: ./scripts/tools-support-relr.sh: /usr/bin/ccache clang: not found

Fix this by un-quoting the variables.

Before:
    $ make ARCH=arm64 CC='/usr/bin/ccache clang' LD=ld.lld \
        NM=llvm-nm OBJCOPY=llvm-objcopy defconfig
    $ grep RELR .config
    CONFIG_ARCH_HAS_RELR=y

With this change:
    $ make ARCH=arm64 CC='/usr/bin/ccache clang' LD=ld.lld \
        NM=llvm-nm OBJCOPY=llvm-objcopy defconfig
    $ grep RELR .config
    CONFIG_TOOLS_SUPPORT_RELR=y
    CONFIG_ARCH_HAS_RELR=y
    CONFIG_RELR=y

Fixes: 5cf896fb6be3 ("arm64: Add support for relocating the kernel with RELR relocations")
Reported-by: Dmitry Golovin <dima@golovin.in>
Link: https://github.com/ClangBuiltLinux/linux/issues/769
Cc: Peter Collingbourne <pcc@google.com>
Signed-off-by: Ilie Halip <ilie.halip@gmail.com>
---
 scripts/tools-support-relr.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/scripts/tools-support-relr.sh b/scripts/tools-support-relr.sh
index 97a2c844a95e..45e8aa360b45 100755
--- a/scripts/tools-support-relr.sh
+++ b/scripts/tools-support-relr.sh
@@ -4,13 +4,13 @@
 tmp_file=$(mktemp)
 trap "rm -f $tmp_file.o $tmp_file $tmp_file.bin" EXIT
 
-cat << "END" | "$CC" -c -x c - -o $tmp_file.o >/dev/null 2>&1
+cat << "END" | $CC -c -x c - -o $tmp_file.o >/dev/null 2>&1
 void *p = &p;
 END
-"$LD" $tmp_file.o -shared -Bsymbolic --pack-dyn-relocs=relr -o $tmp_file
+$LD $tmp_file.o -shared -Bsymbolic --pack-dyn-relocs=relr -o $tmp_file
 
 # Despite printing an error message, GNU nm still exits with exit code 0 if it
 # sees a relr section. So we need to check that nothing is printed to stderr.
-test -z "$("$NM" $tmp_file 2>&1 >/dev/null)"
+test -z "$($NM $tmp_file 2>&1 >/dev/null)"
 
-"$OBJCOPY" -O binary $tmp_file $tmp_file.bin
+$OBJCOPY -O binary $tmp_file $tmp_file.bin
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] scripts/tools-support-relr.sh: un-quote variables
  2019-11-12 13:45 [PATCH] scripts/tools-support-relr.sh: un-quote variables Ilie Halip
@ 2019-11-13  5:40 ` Nathan Chancellor
  2019-11-13 10:30 ` Will Deacon
  1 sibling, 0 replies; 4+ messages in thread
From: Nathan Chancellor @ 2019-11-13  5:40 UTC (permalink / raw)
  To: Ilie Halip
  Cc: Masahiro Yamada, Peter Collingbourne, Nick Desaulniers,
	Will Deacon, linux-kernel, clang-built-linux

On Tue, Nov 12, 2019 at 03:45:20PM +0200, Ilie Halip wrote:
> When the CC variable contains quotes, e.g. when using
> ccache (make CC="ccache <compiler>"), this script always
> fails, so CONFIG_RELR is never enabled, even when the
> toolchain supports this feature. Removing the /dev/null
> redirect and invoking the script manually shows the issue:
> 
>     $ CC='/usr/bin/ccache clang' ./scripts/tools-support-relr.sh
>     ./scripts/tools-support-relr.sh: 7: ./scripts/tools-support-relr.sh: /usr/bin/ccache clang: not found
> 
> Fix this by un-quoting the variables.
> 
> Before:
>     $ make ARCH=arm64 CC='/usr/bin/ccache clang' LD=ld.lld \
>         NM=llvm-nm OBJCOPY=llvm-objcopy defconfig
>     $ grep RELR .config
>     CONFIG_ARCH_HAS_RELR=y
> 
> With this change:
>     $ make ARCH=arm64 CC='/usr/bin/ccache clang' LD=ld.lld \
>         NM=llvm-nm OBJCOPY=llvm-objcopy defconfig
>     $ grep RELR .config
>     CONFIG_TOOLS_SUPPORT_RELR=y
>     CONFIG_ARCH_HAS_RELR=y
>     CONFIG_RELR=y
> 
> Fixes: 5cf896fb6be3 ("arm64: Add support for relocating the kernel with RELR relocations")
> Reported-by: Dmitry Golovin <dima@golovin.in>
> Link: https://github.com/ClangBuiltLinux/linux/issues/769
> Cc: Peter Collingbourne <pcc@google.com>
> Signed-off-by: Ilie Halip <ilie.halip@gmail.com>

Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] scripts/tools-support-relr.sh: un-quote variables
  2019-11-12 13:45 [PATCH] scripts/tools-support-relr.sh: un-quote variables Ilie Halip
  2019-11-13  5:40 ` Nathan Chancellor
@ 2019-11-13 10:30 ` Will Deacon
  2019-11-13 10:36   ` Masahiro Yamada
  1 sibling, 1 reply; 4+ messages in thread
From: Will Deacon @ 2019-11-13 10:30 UTC (permalink / raw)
  To: Ilie Halip
  Cc: Masahiro Yamada, Peter Collingbourne, Nick Desaulniers,
	linux-kernel, clang-built-linux

On Tue, Nov 12, 2019 at 03:45:20PM +0200, Ilie Halip wrote:
> When the CC variable contains quotes, e.g. when using
> ccache (make CC="ccache <compiler>"), this script always
> fails, so CONFIG_RELR is never enabled, even when the
> toolchain supports this feature. Removing the /dev/null
> redirect and invoking the script manually shows the issue:
> 
>     $ CC='/usr/bin/ccache clang' ./scripts/tools-support-relr.sh
>     ./scripts/tools-support-relr.sh: 7: ./scripts/tools-support-relr.sh: /usr/bin/ccache clang: not found
> 
> Fix this by un-quoting the variables.
> 
> Before:
>     $ make ARCH=arm64 CC='/usr/bin/ccache clang' LD=ld.lld \
>         NM=llvm-nm OBJCOPY=llvm-objcopy defconfig
>     $ grep RELR .config
>     CONFIG_ARCH_HAS_RELR=y
> 
> With this change:
>     $ make ARCH=arm64 CC='/usr/bin/ccache clang' LD=ld.lld \
>         NM=llvm-nm OBJCOPY=llvm-objcopy defconfig
>     $ grep RELR .config
>     CONFIG_TOOLS_SUPPORT_RELR=y
>     CONFIG_ARCH_HAS_RELR=y
>     CONFIG_RELR=y
> 
> Fixes: 5cf896fb6be3 ("arm64: Add support for relocating the kernel with RELR relocations")
> Reported-by: Dmitry Golovin <dima@golovin.in>
> Link: https://github.com/ClangBuiltLinux/linux/issues/769
> Cc: Peter Collingbourne <pcc@google.com>
> Signed-off-by: Ilie Halip <ilie.halip@gmail.com>
> ---
>  scripts/tools-support-relr.sh | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)

Thanks, I'll queue this as a fix.

Will

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] scripts/tools-support-relr.sh: un-quote variables
  2019-11-13 10:30 ` Will Deacon
@ 2019-11-13 10:36   ` Masahiro Yamada
  0 siblings, 0 replies; 4+ messages in thread
From: Masahiro Yamada @ 2019-11-13 10:36 UTC (permalink / raw)
  To: Will Deacon
  Cc: Ilie Halip, Peter Collingbourne, Nick Desaulniers,
	Linux Kernel Mailing List, clang-built-linux

On Wed, Nov 13, 2019 at 7:31 PM Will Deacon <will@kernel.org> wrote:
>
> On Tue, Nov 12, 2019 at 03:45:20PM +0200, Ilie Halip wrote:
> > When the CC variable contains quotes, e.g. when using
> > ccache (make CC="ccache <compiler>"), this script always
> > fails, so CONFIG_RELR is never enabled, even when the
> > toolchain supports this feature. Removing the /dev/null
> > redirect and invoking the script manually shows the issue:
> >
> >     $ CC='/usr/bin/ccache clang' ./scripts/tools-support-relr.sh
> >     ./scripts/tools-support-relr.sh: 7: ./scripts/tools-support-relr.sh: /usr/bin/ccache clang: not found
> >
> > Fix this by un-quoting the variables.
> >
> > Before:
> >     $ make ARCH=arm64 CC='/usr/bin/ccache clang' LD=ld.lld \
> >         NM=llvm-nm OBJCOPY=llvm-objcopy defconfig
> >     $ grep RELR .config
> >     CONFIG_ARCH_HAS_RELR=y
> >
> > With this change:
> >     $ make ARCH=arm64 CC='/usr/bin/ccache clang' LD=ld.lld \
> >         NM=llvm-nm OBJCOPY=llvm-objcopy defconfig
> >     $ grep RELR .config
> >     CONFIG_TOOLS_SUPPORT_RELR=y
> >     CONFIG_ARCH_HAS_RELR=y
> >     CONFIG_RELR=y
> >
> > Fixes: 5cf896fb6be3 ("arm64: Add support for relocating the kernel with RELR relocations")
> > Reported-by: Dmitry Golovin <dima@golovin.in>
> > Link: https://github.com/ClangBuiltLinux/linux/issues/769
> > Cc: Peter Collingbourne <pcc@google.com>
> > Signed-off-by: Ilie Halip <ilie.halip@gmail.com>
> > ---
> >  scripts/tools-support-relr.sh | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
>
> Thanks, I'll queue this as a fix.
>
> Will

Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>


-- 
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-11-13 10:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-12 13:45 [PATCH] scripts/tools-support-relr.sh: un-quote variables Ilie Halip
2019-11-13  5:40 ` Nathan Chancellor
2019-11-13 10:30 ` Will Deacon
2019-11-13 10:36   ` Masahiro Yamada

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.