From: Alexander Lobakin <alobakin@pm.me>
To: Nathan Chancellor <natechancellor@gmail.com>
Cc: Alexander Lobakin <alobakin@pm.me>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Kees Cook <keescook@chromium.org>,
Fangrui Song <maskray@google.com>,
Jiaxun Yang <jiaxun.yang@flygoat.com>,
Alex Smith <alex.smith@imgtec.com>,
Ralf Baechle <ralf@linux-mips.org>,
Markos Chandras <markos.chandras@imgtec.com>,
linux-mips@vger.kernel.org, stable@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 mips-next 3/4] MIPS: vmlinux.lds.S: catch bad .got, .plt and .rel.dyn at link time
Date: Wed, 06 Jan 2021 20:28:46 +0000 [thread overview]
Message-ID: <20210106202831.33419-1-alobakin@pm.me> (raw)
In-Reply-To: <20210106200801.31993-3-alobakin@pm.me>
From: Nathan Chancellor <natechancellor@gmail.com>
Date: Wed, 6 Jan 2021 13:23:24 -0700
On Wed, Jan 06, 2021 at 08:08:29PM +0000, Alexander Lobakin wrote:
>> Catch any symbols placed in .got, .got.plt, .plt, .rel.dyn
>> or .rela.dyn and check for these sections to be zero-sized
>> at link time.
>>
>> At least two of them were noticed in real builds:
>>
>> mips-alpine-linux-musl-ld: warning: orphan section `.rel.dyn'
>> from `init/main.o' being placed in section `.rel.dyn'
>>
>> ld.lld: warning: <internal>:(.got) is being placed in '.got'
>>
>> Adopted from x86/kernel/vmlinux.lds.S.
>>
>> Reported-by: Nathan Chancellor <natechancellor@gmail.com> # .got
>> Suggested-by: Fangrui Song <maskray@google.com> # .rel.dyn
>> Signed-off-by: Alexander Lobakin <alobakin@pm.me>
>> ---
>> arch/mips/kernel/vmlinux.lds.S | 35 ++++++++++++++++++++++++++++++++++
>> 1 file changed, 35 insertions(+)
>>
>> diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
>> index 5d6563970ab2..05eda9d9a7d5 100644
>> --- a/arch/mips/kernel/vmlinux.lds.S
>> +++ b/arch/mips/kernel/vmlinux.lds.S
>> @@ -227,4 +227,39 @@ SECTIONS
>> *(.pdr)
>> *(.reginfo)
>> }
>> +
>> + /*
>> + * Sections that should stay zero sized, which is safer to
>> + * explicitly check instead of blindly discarding.
>> + */
>> +
>> + .got : {
>> + *(.got)
>> + *(.igot.*)
>> + }
>> + ASSERT(SIZEOF(.got) == 0, "Unexpected GOT entries detected!")
>
> This assertion does trigger now.
>
> $ make -skj"$(nproc)" ARCH=mips CROSS_COMPILE=mipsel-linux-gnu- LLVM=1 \
> O=out/mipsel distclean malta_kvm_guest_defconfig all
> ...
> ld.lld: error: Unexpected GOT entries detected!
> ld.lld: error: Unexpected GOT entries detected!
> ...
Oops. I'll build my kernel with LLVM stack and dig into it deeper
tomorrow.
>> + .got.plt (INFO) : {
>> + *(.got.plt)
>> + }
>> + ASSERT(SIZEOF(.got.plt) == 0, "Unexpected GOT/PLT entries detected!")
>> +
>> + .plt : {
>> + *(.plt)
>> + *(.plt.*)
>> + *(.iplt)
>> + }
>> + ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
>> +
>> + .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!")
>> }
>> --
>> 2.30.0
Thanks,
Al
next prev parent reply other threads:[~2021-01-06 20:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-06 20:07 [PATCH v2 mips-next 0/4] MIPS: vmlinux.lds.S sections fix & cleanup Alexander Lobakin
2021-01-06 20:08 ` [PATCH v2 mips-next 1/4] MIPS: vmlinux.lds.S: add missing PAGE_ALIGNED_DATA() section Alexander Lobakin
2021-01-06 20:08 ` [PATCH v2 mips-next 2/4] MIPS: vmlinux.lds.S: add ".gnu.attributes" to DISCARDS Alexander Lobakin
2021-01-06 22:07 ` Kees Cook
2021-01-06 22:36 ` Alexander Lobakin
2021-01-06 23:26 ` Kees Cook
2021-01-07 11:59 ` Alexander Lobakin
2021-01-06 22:43 ` Fāng-ruì Sòng
2021-01-06 20:08 ` [PATCH v2 mips-next 3/4] MIPS: vmlinux.lds.S: catch bad .got, .plt and .rel.dyn at link time Alexander Lobakin
2021-01-06 20:21 ` Fāng-ruì Sòng
2021-01-06 20:23 ` Nathan Chancellor
2021-01-06 20:28 ` Alexander Lobakin [this message]
2021-01-06 20:08 ` [PATCH v2 mips-next 4/4] MIPS: select ARCH_WANT_LD_ORPHAN_WARN Alexander Lobakin
2021-01-06 22:07 ` Kees Cook
2021-01-06 22:07 ` [PATCH v2 mips-next 1/4] MIPS: vmlinux.lds.S: add missing PAGE_ALIGNED_DATA() section Kees Cook
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210106202831.33419-1-alobakin@pm.me \
--to=alobakin@pm.me \
--cc=alex.smith@imgtec.com \
--cc=jiaxun.yang@flygoat.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=markos.chandras@imgtec.com \
--cc=maskray@google.com \
--cc=natechancellor@gmail.com \
--cc=ralf@linux-mips.org \
--cc=stable@vger.kernel.org \
--cc=tsbogend@alpha.franken.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.