lkml.org 
[lkml]   [2020]   [Jul]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 30/36] x86/build: Assert for unwanted sections
    Date
    In preparation for warning on orphan sections, enforce other
    expected-to-be-zero-sized sections (since discarding them might hide
    problems with them suddenly gaining unexpected entries).

    Signed-off-by: Kees Cook <keescook@chromium.org>
    ---
    arch/x86/kernel/vmlinux.lds.S | 24 ++++++++++++++++++++++++
    1 file changed, 24 insertions(+)

    diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
    index 7faffe7414d6..d8792f9c536f 100644
    --- a/arch/x86/kernel/vmlinux.lds.S
    +++ b/arch/x86/kernel/vmlinux.lds.S
    @@ -415,6 +415,15 @@ SECTIONS

    DISCARDS

    + /*
    + * Sections that should stay zero sized, which is safer to
    + * explicitly check instead of blindly discarding.
    + */
    + .got (NOLOAD) : {
    + *(.got) *(.igot.*)
    + }
    + ASSERT(SIZEOF(.got) == 0, "Unexpected GOT entries detected!")
    +
    /*
    * Make sure that the .got.plt is either completely empty or it
    * contains only the lazy dispatch entries.
    @@ -427,6 +436,21 @@ SECTIONS
    SIZEOF(.got.plt) == 0xc,
    #endif
    "Unexpected GOT/PLT entries detected!")
    +
    + .plt (NOLOAD) : {
    + *(.plt) *(.plt.*) *(.iplt)
    + }
    + ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
    +
    + /* ld.lld does not like .rel* sections being made "NOLOAD". */
    + .rel.dyn : {
    + *(.rel.*) *(.rel_*)
    + }
    + ASSERT(SIZEOF(.rel.dyn) == 0, "Unexpected run-time relocations (.rel) detected!")
    + .rela.dyn : {
    + *(.rela.*) *(.rela_*)
    + }
    + ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
    }

    #ifdef CONFIG_X86_32
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-08-01 01:09    [W:4.022 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site