[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <mhng-7ae63e3d-9a40-42ed-94c3-72fc9217ac20@palmer-ri-x1c9>
Date: Thu, 29 Dec 2022 08:22:27 -0800 (PST)
From: Palmer Dabbelt <palmer@...belt.com>
To: masahiroy@...nel.org
CC: linux-arch@...r.kernel.org, linux-kbuild@...r.kernel.org,
linux-kernel@...r.kernel.org, ardb@...nel.org,
regressions@...mhuis.info, catalin.marinas@....com,
Will Deacon <will@...nel.org>,
linux-arm-kernel@...ts.infradead.org,
linux-riscv@...ts.infradead.org, dennis@...il.us,
aou@...s.berkeley.edu, Arnd Bergmann <arnd@...db.de>,
jszhang@...nel.org, nicolas@...sle.eu,
Paul Walmsley <paul.walmsley@...ive.com>, masahiroy@...nel.org
Subject: Re: [PATCH v2] arch: fix broken BuildID for arm64 and riscv
On Mon, 26 Dec 2022 10:45:37 PST (-0800), masahiroy@...nel.org wrote:
> Dennis Gilmore reports that the BuildID is missing in the arm64 vmlinux
> since commit 994b7ac1697b ("arm64: remove special treatment for the
> link order of head.o").
>
> The issue is that the type of .notes section, which contains the BuildID,
> changed from NOTES to PROGBITS.
>
> Ard Biesheuvel figured out that whichever object gets linked first gets
> to decide the type of a section. The PROGBITS type is the result of the
> compiler emitting .note.GNU-stack as PROGBITS rather than NOTE.
>
> While Ard provided a fix for arm64, I want to fix this globally because
> the same issue is happening on riscv since commit 2348e6bf4421 ("riscv:
> remove special treatment for the link order of head.o"). This problem
> will happen in general for other architectures if they start to drop
> unneeded entries from scripts/head-object-list.txt.
>
> Discard .note.GNU-stack in include/asm-generic/vmlinux.lds.h.
>
> Link: https://lore.kernel.org/lkml/CAABkxwuQoz1CTbyb57n0ZX65eSYiTonFCU8-LCQc=74D=xE=rA@mail.gmail.com/
> Fixes: 994b7ac1697b ("arm64: remove special treatment for the link order of head.o")
> Fixes: 2348e6bf4421 ("riscv: remove special treatment for the link order of head.o")
> Reported-by: Dennis Gilmore <dennis@...il.us>
> Suggested-by: Ard Biesheuvel <ardb@...nel.org>
> Signed-off-by: Masahiro Yamada <masahiroy@...nel.org>
> ---
>
> Changes in v2:
> - discard .note.GNU-stack before .notes because many architectures
> call DISCARDS at the end of their linker scripts
>
> include/asm-generic/vmlinux.lds.h | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> index a94219e9916f..659bf3b31c91 100644
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -891,7 +891,12 @@
> #define PRINTK_INDEX
> #endif
>
> +/*
> + * Discard .note.GNU-stack, which is emitted as PROGBITS by the compiler.
> + * Otherwise, the type of .notes section would become PROGBITS instead of NOTES.
> + */
> #define NOTES \
> + /DISCARD/ : { *(.note.GNU-stack) } \
> .notes : AT(ADDR(.notes) - LOAD_OFFSET) { \
> BOUNDED_SECTION_BY(.note.*, _notes) \
> } NOTES_HEADERS \
Acked-by: Palmer Dabbelt <palmer@...osinc.com>
Thanks!
Powered by blists - more mailing lists