* [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR [not found] <CAK7LNAS_LpZnweujqVwZ1kL0eDYR726k35U_yx1djqNE0bk6Rw@mail.gmail.com> @ 2021-05-22 1:26 ` Nick Desaulniers 2021-05-26 17:09 ` Will Deacon 2021-06-08 13:21 ` Will Deacon 0 siblings, 2 replies; 4+ 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 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR 2021-05-22 1:26 ` [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR 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; 4+ 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 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 4+ 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; 4+ 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 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR 2021-05-22 1:26 ` [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR Nick Desaulniers 2021-05-26 17:09 ` Will Deacon @ 2021-06-08 13:21 ` Will Deacon 1 sibling, 0 replies; 4+ 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 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-06-08 13:24 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CAK7LNAS_LpZnweujqVwZ1kL0eDYR726k35U_yx1djqNE0bk6Rw@mail.gmail.com> 2021-05-22 1:26 ` [PATCH v2] Makefile: fix GDB warning with CONFIG_RELR Nick Desaulniers 2021-05-26 17:09 ` Will Deacon 2021-06-04 18:55 ` Nick Desaulniers 2021-06-08 13:21 ` Will Deacon
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).