linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Makefile: fix GDB warning with CONFIG_RELR
@ 2021-03-19  0:07 Nick Desaulniers
  2021-03-23 19:05 ` Nathan Chancellor
  0 siblings, 1 reply; 8+ messages in thread
From: Nick Desaulniers @ 2021-03-19  0:07 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: clang-built-linux, Fangrui Song, Elliot Berman, Sami Tolvanen,
	Nick Desaulniers, Peter Collingbourne, Michal Marek,
	linux-kbuild, linux-kernel

GDB produces the following warning when debugging kernels built with
CONFIG_RELR:

BFD: /android0/linux-next/vmlinux: unknown type [0x13] section `.relr.dyn'

when loading a kernel built with CONFIG_RELR into GDB. It can also
prevent debugging symbols using such relocations.

Peter sugguests:
  [That flag] means that lld will use dynamic tags and section type
  numbers in the OS-specific range rather than the generic range. The
  kernel itself doesn't care about these numbers; it determines the
  location of the RELR section using symbols defined by a linker script.

Link: https://github.com/ClangBuiltLinux/linux/issues/1057
Suggested-by: Peter Collingbourne <pcc@google.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
---
 Makefile                      | 2 +-
 scripts/tools-support-relr.sh | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 5160ff8903c1..47741cb60995 100644
--- a/Makefile
+++ b/Makefile
@@ -1088,7 +1088,7 @@ LDFLAGS_vmlinux	+= $(call ld-option, -X,)
 endif
 
 ifeq ($(CONFIG_RELR),y)
-LDFLAGS_vmlinux	+= --pack-dyn-relocs=relr
+LDFLAGS_vmlinux	+= --pack-dyn-relocs=relr --use-android-relr-tags
 endif
 
 # We never want expected sections to be placed heuristically by the
diff --git a/scripts/tools-support-relr.sh b/scripts/tools-support-relr.sh
index 45e8aa360b45..cb55878bd5b8 100755
--- a/scripts/tools-support-relr.sh
+++ b/scripts/tools-support-relr.sh
@@ -7,7 +7,8 @@ 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
 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 \
+  --use-android-relr-tags -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.
-- 
2.31.0.rc2.261.g7f71774620-goog


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

* Re: [PATCH] Makefile: fix GDB warning with CONFIG_RELR
  2021-03-19  0:07 [PATCH] Makefile: fix GDB warning with CONFIG_RELR Nick Desaulniers
@ 2021-03-23 19:05 ` Nathan Chancellor
       [not found]   ` <CAF2Aj3i3-bev_iS6OrBUTzt==4d0f7UiTeY1YPur6eKFqToFYQ@mail.gmail.com>
  0 siblings, 1 reply; 8+ messages in thread
From: Nathan Chancellor @ 2021-03-23 19:05 UTC (permalink / raw)
  To: Nick Desaulniers
  Cc: Masahiro Yamada, clang-built-linux, Fangrui Song, Elliot Berman,
	Sami Tolvanen, Peter Collingbourne, Michal Marek, linux-kbuild,
	linux-kernel

On Thu, Mar 18, 2021 at 05:07:06PM -0700, Nick Desaulniers wrote:
> GDB produces the following warning when debugging kernels built with
> CONFIG_RELR:
> 
> BFD: /android0/linux-next/vmlinux: unknown type [0x13] section `.relr.dyn'
> 
> when loading a kernel built with CONFIG_RELR into GDB. It can also
> prevent debugging symbols using such relocations.
> 
> Peter sugguests:
>   [That flag] means that lld will use dynamic tags and section type
>   numbers in the OS-specific range rather than the generic range. The
>   kernel itself doesn't care about these numbers; it determines the
>   location of the RELR section using symbols defined by a linker script.
> 
> Link: https://github.com/ClangBuiltLinux/linux/issues/1057
> Suggested-by: Peter Collingbourne <pcc@google.com>
> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>

Reviewed-by: Nathan Chancellor <nathan@kernel.org>

> ---
>  Makefile                      | 2 +-
>  scripts/tools-support-relr.sh | 3 ++-
>  2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 5160ff8903c1..47741cb60995 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1088,7 +1088,7 @@ LDFLAGS_vmlinux	+= $(call ld-option, -X,)
>  endif
>  
>  ifeq ($(CONFIG_RELR),y)
> -LDFLAGS_vmlinux	+= --pack-dyn-relocs=relr
> +LDFLAGS_vmlinux	+= --pack-dyn-relocs=relr --use-android-relr-tags
>  endif
>  
>  # We never want expected sections to be placed heuristically by the
> diff --git a/scripts/tools-support-relr.sh b/scripts/tools-support-relr.sh
> index 45e8aa360b45..cb55878bd5b8 100755
> --- a/scripts/tools-support-relr.sh
> +++ b/scripts/tools-support-relr.sh
> @@ -7,7 +7,8 @@ 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
>  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 \
> +  --use-android-relr-tags -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.
> -- 
> 2.31.0.rc2.261.g7f71774620-goog
> 

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

* Re: [PATCH] Makefile: fix GDB warning with CONFIG_RELR
       [not found]   ` <CAF2Aj3i3-bev_iS6OrBUTzt==4d0f7UiTeY1YPur6eKFqToFYQ@mail.gmail.com>
@ 2021-05-22  1:06     ` Masahiro Yamada
  2021-05-22  1:26       ` [PATCH v2] " Nick Desaulniers
  2021-05-24  8:03       ` [PATCH] " Lee Jones
  0 siblings, 2 replies; 8+ messages in thread
From: Masahiro Yamada @ 2021-05-22  1:06 UTC (permalink / raw)
  To: Lee Jones
  Cc: Nathan Chancellor, Nick Desaulniers, clang-built-linux,
	Fangrui Song, Elliot Berman, Sami Tolvanen, Peter Collingbourne,
	Michal Marek, linux-kbuild, open list

On Fri, May 21, 2021 at 6:36 PM Lee Jones <lee.jones@linaro.org> wrote:
>
> On Tue, 23 Mar 2021 at 19:06, Nathan Chancellor <nathan@kernel.org> wrote:
>>
>> On Thu, Mar 18, 2021 at 05:07:06PM -0700, Nick Desaulniers wrote:
>> > GDB produces the following warning when debugging kernels built with
>> > CONFIG_RELR:
>> >
>> > BFD: /android0/linux-next/vmlinux: unknown type [0x13] section `.relr.dyn'
>> >
>> > when loading a kernel built with CONFIG_RELR into GDB. It can also
>> > prevent debugging symbols using such relocations.
>> >
>> > Peter sugguests:
>> >   [That flag] means that lld will use dynamic tags and section type
>> >   numbers in the OS-specific range rather than the generic range. The
>> >   kernel itself doesn't care about these numbers; it determines the
>> >   location of the RELR section using symbols defined by a linker script.
>> >
>> > Link: https://github.com/ClangBuiltLinux/linux/issues/1057
>> > Suggested-by: Peter Collingbourne <pcc@google.com>
>> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
>>
>> Reviewed-by: Nathan Chancellor <nathan@kernel.org>
>
>
>  Masahiro,
>
> Would you mind sharing your plans for this reviewed patch please?
>


Do you want me to pick up this?

Or, do you think it should be done by the committer of
5cf896fb6be3effd9aea455b22213e27be8bdb1d ?


-- 
Best Regards
Masahiro Yamada

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

* [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR
  2021-05-22  1:06     ` Masahiro Yamada
@ 2021-05-22  1:26       ` Nick Desaulniers
  2021-05-26 17:09         ` Will Deacon
  2021-06-08 13:21         ` Will Deacon
  2021-05-24  8:03       ` [PATCH] " Lee Jones
  1 sibling, 2 replies; 8+ messages in thread
From: Nick Desaulniers @ 2021-05-22  1:26 UTC (permalink / raw)
  To: Will Deacon
  Cc: Catalin Marinas, linux-arm-kernel, Lee Jones, Masahiro Yamada,
	clang-built-linux, Fangrui Song, Elliot Berman, Sami Tolvanen,
	Peter Collingbourne, Michal Marek, linux-kbuild, linux-kernel,
	Nick Desaulniers, Nathan Chancellor

GDB produces the following warning when debugging kernels built with
CONFIG_RELR:

BFD: /android0/linux-next/vmlinux: unknown type [0x13] section `.relr.dyn'

when loading a kernel built with CONFIG_RELR into GDB. It can also
prevent debugging symbols using such relocations.

Peter sugguests:
  [That flag] means that lld will use dynamic tags and section type
  numbers in the OS-specific range rather than the generic range. The
  kernel itself doesn't care about these numbers; it determines the
  location of the RELR section using symbols defined by a linker script.

Link: https://github.com/ClangBuiltLinux/linux/issues/1057
Suggested-by: Peter Collingbourne <pcc@google.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
---
Changes V1 -> V2:
* rebase
* pick up Nathan's reviewed by tag.

 Makefile                      | 2 +-
 scripts/tools-support-relr.sh | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 0ed7e061c8e9..2dbb56f831d4 100644
--- a/Makefile
+++ b/Makefile
@@ -1031,7 +1031,7 @@ LDFLAGS_vmlinux	+= $(call ld-option, -X,)
 endif
 
 ifeq ($(CONFIG_RELR),y)
-LDFLAGS_vmlinux	+= --pack-dyn-relocs=relr
+LDFLAGS_vmlinux	+= --pack-dyn-relocs=relr --use-android-relr-tags
 endif
 
 # We never want expected sections to be placed heuristically by the
diff --git a/scripts/tools-support-relr.sh b/scripts/tools-support-relr.sh
index 45e8aa360b45..cb55878bd5b8 100755
--- a/scripts/tools-support-relr.sh
+++ b/scripts/tools-support-relr.sh
@@ -7,7 +7,8 @@ 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
 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 \
+  --use-android-relr-tags -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.

base-commit: 45af60e7ced07ae3def41368c3d260dbf496fbce
-- 
2.31.1.818.g46aad6cb9e-goog


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

* Re: [PATCH] Makefile: fix GDB warning with CONFIG_RELR
  2021-05-22  1:06     ` Masahiro Yamada
  2021-05-22  1:26       ` [PATCH v2] " Nick Desaulniers
@ 2021-05-24  8:03       ` Lee Jones
  1 sibling, 0 replies; 8+ messages in thread
From: Lee Jones @ 2021-05-24  8:03 UTC (permalink / raw)
  To: Masahiro Yamada
  Cc: Nathan Chancellor, Nick Desaulniers, clang-built-linux,
	Fangrui Song, Elliot Berman, Sami Tolvanen, Peter Collingbourne,
	Michal Marek, linux-kbuild, open list

On Sat, 22 May 2021, Masahiro Yamada wrote:

> On Fri, May 21, 2021 at 6:36 PM Lee Jones <lee.jones@linaro.org> wrote:
> >
> > On Tue, 23 Mar 2021 at 19:06, Nathan Chancellor <nathan@kernel.org> wrote:
> >>
> >> On Thu, Mar 18, 2021 at 05:07:06PM -0700, Nick Desaulniers wrote:
> >> > GDB produces the following warning when debugging kernels built with
> >> > CONFIG_RELR:
> >> >
> >> > BFD: /android0/linux-next/vmlinux: unknown type [0x13] section `.relr.dyn'
> >> >
> >> > when loading a kernel built with CONFIG_RELR into GDB. It can also
> >> > prevent debugging symbols using such relocations.
> >> >
> >> > Peter sugguests:
> >> >   [That flag] means that lld will use dynamic tags and section type
> >> >   numbers in the OS-specific range rather than the generic range. The
> >> >   kernel itself doesn't care about these numbers; it determines the
> >> >   location of the RELR section using symbols defined by a linker script.
> >> >
> >> > Link: https://github.com/ClangBuiltLinux/linux/issues/1057
> >> > Suggested-by: Peter Collingbourne <pcc@google.com>
> >> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
> >>
> >> Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> >
> >
> >  Masahiro,
> >
> > Would you mind sharing your plans for this reviewed patch please?
> 
> 
> Do you want me to pick up this?
> 
> Or, do you think it should be done by the committer of
> 5cf896fb6be3effd9aea455b22213e27be8bdb1d ?

Not sure it matters a whole bunch TBH.  If you have the bandwidth and
are willing to merge it, please feel free to do so.

-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR
  2021-05-22  1:26       ` [PATCH v2] " Nick Desaulniers
@ 2021-05-26 17:09         ` Will Deacon
  2021-06-04 18:55           ` Nick Desaulniers
  2021-06-08 13:21         ` Will Deacon
  1 sibling, 1 reply; 8+ messages in thread
From: Will Deacon @ 2021-05-26 17:09 UTC (permalink / raw)
  To: Nick Desaulniers
  Cc: Catalin Marinas, linux-arm-kernel, Lee Jones, Masahiro Yamada,
	clang-built-linux, Fangrui Song, Elliot Berman, Sami Tolvanen,
	Peter Collingbourne, Michal Marek, linux-kbuild, linux-kernel,
	Nathan Chancellor

On Fri, May 21, 2021 at 06:26:24PM -0700, Nick Desaulniers wrote:
> GDB produces the following warning when debugging kernels built with
> CONFIG_RELR:
> 
> BFD: /android0/linux-next/vmlinux: unknown type [0x13] section `.relr.dyn'
> 
> when loading a kernel built with CONFIG_RELR into GDB. It can also
> prevent debugging symbols using such relocations.
> 
> Peter sugguests:
>   [That flag] means that lld will use dynamic tags and section type
>   numbers in the OS-specific range rather than the generic range. The
>   kernel itself doesn't care about these numbers; it determines the
>   location of the RELR section using symbols defined by a linker script.
> 
> Link: https://github.com/ClangBuiltLinux/linux/issues/1057
> Suggested-by: Peter Collingbourne <pcc@google.com>
> Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
> ---
> Changes V1 -> V2:
> * rebase
> * pick up Nathan's reviewed by tag.
> 
>  Makefile                      | 2 +-
>  scripts/tools-support-relr.sh | 3 ++-
>  2 files changed, 3 insertions(+), 2 deletions(-)

Does lld support RELR relocations for any architectures other than arm64? If
so, is the "--use-android-relr-tags" option supported on all of those as
well?

Will

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

* Re: [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR
  2021-05-26 17:09         ` Will Deacon
@ 2021-06-04 18:55           ` Nick Desaulniers
  0 siblings, 0 replies; 8+ messages in thread
From: Nick Desaulniers @ 2021-06-04 18:55 UTC (permalink / raw)
  To: Will Deacon
  Cc: Catalin Marinas, Linux ARM, Lee Jones, Masahiro Yamada,
	clang-built-linux, Fangrui Song, Elliot Berman, Sami Tolvanen,
	Peter Collingbourne, Michal Marek, Linux Kbuild mailing list,
	LKML, Nathan Chancellor

On Wed, May 26, 2021 at 10:09 AM Will Deacon <will@kernel.org> wrote:
>
> On Fri, May 21, 2021 at 06:26:24PM -0700, Nick Desaulniers wrote:
> > GDB produces the following warning when debugging kernels built with
> > CONFIG_RELR:
> >
> > BFD: /android0/linux-next/vmlinux: unknown type [0x13] section `.relr.dyn'
> >
> > when loading a kernel built with CONFIG_RELR into GDB. It can also
> > prevent debugging symbols using such relocations.
> >
> > Peter sugguests:
> >   [That flag] means that lld will use dynamic tags and section type
> >   numbers in the OS-specific range rather than the generic range. The
> >   kernel itself doesn't care about these numbers; it determines the
> >   location of the RELR section using symbols defined by a linker script.
> >
> > Link: https://github.com/ClangBuiltLinux/linux/issues/1057
> > Suggested-by: Peter Collingbourne <pcc@google.com>
> > Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
> > ---
> > Changes V1 -> V2:
> > * rebase
> > * pick up Nathan's reviewed by tag.
> >
> >  Makefile                      | 2 +-
> >  scripts/tools-support-relr.sh | 3 ++-
> >  2 files changed, 3 insertions(+), 2 deletions(-)
>
> Does lld support RELR relocations for any architectures other than arm64? If

Yes; from what I can tell it's not an architecture specific relocation
type. Combing through LLVM's sources, it seems Fuchsia sets it always
(at least when using lld) and I'm pretty sure they support x86.  At
least I don't get any errors out of LLD when building with
--pack-dyn-relocs=relr on x86.

I can force on RELR for x86 kernel builds with:
```
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 0045e1b44190..513272c77827 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2117,6 +2117,7 @@ config PHYSICAL_START

 config RELOCATABLE
        bool "Build a relocatable kernel"
+       select ARCH_HAS_RELR
        default y
        help
          This builds a kernel image that retains relocation information
```
That builds (it won't boot because we don't have the machinery in the
kernel to self relocate that type, yet).

> so, is the "--use-android-relr-tags" option supported on all of those as
> well?

I believe so; no issues building with this patch and with the above
diff applied on x86. All that flag does is change the elf section type
from SHT_RELR to SHT_ANDROID_RELR.

pcc@ can correct me if I'm wrong.
-- 
Thanks,
~Nick Desaulniers

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

* Re: [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR
  2021-05-22  1:26       ` [PATCH v2] " Nick Desaulniers
  2021-05-26 17:09         ` Will Deacon
@ 2021-06-08 13:21         ` Will Deacon
  1 sibling, 0 replies; 8+ messages in thread
From: Will Deacon @ 2021-06-08 13:21 UTC (permalink / raw)
  To: Nick Desaulniers
  Cc: catalin.marinas, kernel-team, Will Deacon, Lee Jones,
	Peter Collingbourne, Michal Marek, Nathan Chancellor,
	linux-kbuild, clang-built-linux, linux-arm-kernel, Elliot Berman,
	Masahiro Yamada, Sami Tolvanen, Fangrui Song, linux-kernel

On Fri, 21 May 2021 18:26:24 -0700, Nick Desaulniers wrote:
> GDB produces the following warning when debugging kernels built with
> CONFIG_RELR:
> 
> BFD: /android0/linux-next/vmlinux: unknown type [0x13] section `.relr.dyn'
> 
> when loading a kernel built with CONFIG_RELR into GDB. It can also
> prevent debugging symbols using such relocations.
> 
> [...]

Applied to arm64 (for-next/build), thanks!

[1/1] Makefile: fix GDB warning with CONFIG_RELR
      https://git.kernel.org/arm64/c/27f2a4db76e8

Cheers,
-- 
Will

https://fixes.arm64.dev
https://next.arm64.dev
https://will.arm64.dev

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

end of thread, other threads:[~2021-06-08 13:22 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-19  0:07 [PATCH] Makefile: fix GDB warning with CONFIG_RELR Nick Desaulniers
2021-03-23 19:05 ` Nathan Chancellor
     [not found]   ` <CAF2Aj3i3-bev_iS6OrBUTzt==4d0f7UiTeY1YPur6eKFqToFYQ@mail.gmail.com>
2021-05-22  1:06     ` Masahiro Yamada
2021-05-22  1:26       ` [PATCH v2] " Nick Desaulniers
2021-05-26 17:09         ` Will Deacon
2021-06-04 18:55           ` Nick Desaulniers
2021-06-08 13:21         ` Will Deacon
2021-05-24  8:03       ` [PATCH] " Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).