From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: Marek Vasut <marek.vasut+renesas@mailbox.org>
Cc: u-boot@lists.denx.de, Simon Glass <sjg@chromium.org>,
Tom Rini <trini@konsulko.com>
Subject: Re: [PATCH v2] arm: Add OVERLAY command to BSS section on ARM64
Date: Tue, 6 Feb 2024 16:44:42 +0200 [thread overview]
Message-ID: <ZcJF2uGIMj-jxT3M@hera> (raw)
In-Reply-To: <20231217003347.194657-1-marek.vasut+renesas@mailbox.org>
Hi Marek,
On Sun, Dec 17, 2023 at 01:33:39AM +0100, Marek Vasut wrote:
> Avoid allocating and loading the BSS section.
>
Can we elaborate a bit more on why we need this? AFAICT there's no code
loading those segments in memory and swapping them, so why do we need the
OVERLAY? On top of that the ALLOC flag seems to be missing? The .bss
section doesn't need to be loaded indeed, since we can memset it to 0, but
it does need proper backing memory.
another thing I noticed is the bss_start and end are defined as sections of
their own and a bit of git history led me to 3ebd1cbc49f00050. But the
linker script will emit absolute addresses only if the symbol is defined
outside a section. IOW applying this makes the value expressed as a fixed
offset from the base of the section and the bss_start/end sections go away
--- a/arch/arm/cpu/armv8/u-boot.lds
+++ b/arch/arm/cpu/armv8/u-boot.lds
@@ -151,17 +151,11 @@ SECTIONS
. = ALIGN(8);
- .bss_start : {
- KEEP(*(.__bss_start));
- }
-
.bss : {
+ .bss_start = .;
*(.bss*)
. = ALIGN(8);
- }
-
- .bss_end : {
- KEEP(*(.__bss_end));
+ .bss_end = .;
}
/DISCARD/ : { *(.dynsym) }
leads to this:
11 .bss 000090b0 0000000000102b00 0000000000102b00 00112aa0 2**7
ALLOC
P.S: I am playing around with rewriting the linker script and mapping
u-boot with proper permissions at least for armv8. If this patch is neeeded
*now* can someone explain why? Otherwise I'll clean it up once I test my
patches enough
Thanks
/Ilias
> $ aarch64-linux-gnu-objdump -Sh u-boot
>
> Before:
> 10 .bss_start 00000000 00000000000f21d8 00000000000f21d8 001021d8 2**0
> CONTENTS, ALLOC, LOAD, DATA
> 11 .bss 000068f8 00000000000f2200 00000000000f2200 001021d8 2**6
> ALLOC
> 12 .bss_end 00000000 00000000000f8af8 00000000000f8af8 00108af8 2**0
> CONTENTS, ALLOC, LOAD, DATA
>
> After:
> 10 .bss_start 00000000 00000000000bf990 00000000000bf990 001021e0 2**0
> CONTENTS
> 11 .bss 000068e8 00000000000bf990 00000000000bf990 001021e0 2**4
> CONTENTS
> 12 .bss_end 00000000 00000000000c6278 00000000000c6278 00108ac8 2**0
> CONTENTS
>
> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> ---
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Tom Rini <trini@konsulko.com>
> ---
> V2: Replicate arch/arm/cpu/u-boot.lds BSS part verbatim
> ---
> arch/arm/cpu/armv8/u-boot.lds | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/cpu/armv8/u-boot.lds b/arch/arm/cpu/armv8/u-boot.lds
> index fb6a30c922f..ebdc079552d 100644
> --- a/arch/arm/cpu/armv8/u-boot.lds
> +++ b/arch/arm/cpu/armv8/u-boot.lds
> @@ -151,16 +151,18 @@ SECTIONS
>
> . = ALIGN(8);
>
> - .bss_start : {
> + .bss_start __rel_dyn_start (OVERLAY) : {
> KEEP(*(.__bss_start));
> + __bss_base = .;
> }
>
> - .bss : {
> + .bss __bss_base (OVERLAY) : {
> *(.bss*)
> . = ALIGN(8);
> + __bss_limit = .;
> }
>
> - .bss_end : {
> + .bss_end __bss_limit (OVERLAY) : {
> KEEP(*(.__bss_end));
> }
>
> --
> 2.43.0
>
next prev parent reply other threads:[~2024-02-06 14:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-17 0:33 [PATCH v2] arm: Add OVERLAY command to BSS section on ARM64 Marek Vasut
2023-12-17 18:41 ` Tom Rini
2024-02-06 14:44 ` Ilias Apalodimas [this message]
2024-02-06 16:35 ` Ilias Apalodimas
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=ZcJF2uGIMj-jxT3M@hera \
--to=ilias.apalodimas@linaro.org \
--cc=marek.vasut+renesas@mailbox.org \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox