lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 163/700] Makefile: fix GDB warning with CONFIG_RELR
    Date
    From: Nick Desaulniers <ndesaulniers@google.com>

    [ Upstream commit 27f2a4db76e8d8a8b601fc1c6a7a17f88bd907ab ]

    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>
    Link: https://lore.kernel.org/r/20210522012626.2811297-1-ndesaulniers@google.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    Makefile | 2 +-
    scripts/tools-support-relr.sh | 3 ++-
    2 files changed, 3 insertions(+), 2 deletions(-)

    diff --git a/Makefile b/Makefile
    index bf6accb2328c..6682790891df 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -1006,7 +1006,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.30.2


    \
     
     \ /
      Last update: 2021-07-12 09:30    [W:6.307 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site