From: Peter Korsgaard <peter@korsgaard.com>
To: Alexey Brodkin via buildroot <buildroot@buildroot.org>
Cc: "Yann E . MORIN" <yann.morin.1998@free.fr>,
Alexey Brodkin <Alexey.Brodkin@synopsys.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Vladimir Isaev <VVIsaev@gmail.com>,
Pavel Kozlov <Pavel.Kozlov@synopsys.com>
Subject: Re: [Buildroot] [PATCH v2] arch: Set max/common-page-size for libgcc & libstdc++
Date: Fri, 12 Jan 2024 19:41:25 +0100 [thread overview]
Message-ID: <8734v2xulm.fsf@48ers.dk> (raw)
In-Reply-To: <20240105191710.1330461-1-abrodkin@synopsys.com> (Alexey Brodkin via buildroot's message of "Fri, 5 Jan 2024 11:17:10 -0800")
>>>>> "Alexey" == Alexey Brodkin via buildroot <buildroot@buildroot.org> writes:
> With [1], [2] & [3] we made sure Buildroot packages get built with
> proper MMU page size assumed. This was done nicely through insertion of
> required flags into the toolchain wrapper so that there's no need to
> pass these flags to each and every package separately - toolchain
> wrapper used for real building has all set internally and so proper
> flags are impleicitly used.
> But there's yet another corner case which is not handled that way -
> these are binaries or rather libraries which are being used as a part of
> GCC compilation: libgcc_s.so.1 and libstdc++.so.
> And so to make sure both the libraries get built properly we need to set
> TARGET_CFLAGS (cures libgcc_s.so) & TARGET_LDFLAGS (cures libstdc++.so).
> In case of ARM by defaut 64 KiB page size seems to be used, as w/o that
> patch I see the following for BR2_ARM64_PAGE_SIZE_4K=y:
---------------------------> 8----------------------------
> $ ./output/host/bin/aarch64-linux-readelf -l ./output/target/lib/libgcc_s.so.1
> Elf file type is DYN (Shared object file)
> Entry point 0x0
> There are 6 program headers, starting at offset 64
> Program Headers:
> Type Offset VirtAddr PhysAddr
> FileSiz MemSiz Flags Align
> LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
> 0x0000000000013d1c 0x0000000000013d1c R E 0x10000
> LOAD 0x000000000001fd98 0x000000000002fd98 0x000000000002fd98
> 0x0000000000000438 0x00000000000005c8 RW 0x10000
> DYNAMIC 0x000000000001fdb8 0x000000000002fdb8 0x000000000002fdb8
> 0x0000000000000200 0x0000000000000200 RW 0x8
> $ ./output/host/bin/aarch64-linux-readelf -l ./output/target/usr/lib/libstdc++.so.6.0.32
> Elf file type is DYN (Shared object file)
> Entry point 0x0
> There are 7 program headers, starting at offset 64
> Program Headers:
> Type Offset VirtAddr PhysAddr
> FileSiz MemSiz Flags Align
> LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
> 0x00000000001d3462 0x00000000001d3462 R E 0x10000
> LOAD 0x00000000001d5760 0x00000000001e5760 0x00000000001e5760
> 0x000000000000e528 0x0000000000012de8 RW 0x10000
> DYNAMIC 0x00000000001deef0 0x00000000001eeef0 0x00000000001eeef0
> 0x0000000000000240 0x0000000000000240 RW 0x8
---------------------------> 8----------------------------
> Note alignment of 0x10000 in sections marked for loading.
> And with the patch applied we get expected alignment of 0x1000 (4 KiB):
---------------------------> 8----------------------------
> $ ./output/host/bin/aarch64-linux-readelf -l ./output/target/lib/libgcc_s.so.1
> Elf file type is DYN (Shared object file)
> Entry point 0x0
> There are 6 program headers, starting at offset 64
> Program Headers:
> Type Offset VirtAddr PhysAddr
> FileSiz MemSiz Flags Align
> LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
> 0x0000000000013d1c 0x0000000000013d1c R E 0x1000
> LOAD 0x0000000000013d98 0x0000000000014d98 0x0000000000014d98
> 0x0000000000000438 0x00000000000005c8 RW 0x1000
> DYNAMIC 0x0000000000013db8 0x0000000000014db8 0x0000000000014db8
> 0x0000000000000200 0x0000000000000200 RW 0x8
> $ ./output/host/bin/aarch64-linux-readelf -l ./output/target/usr/lib/libstdc++.so.6.0.32
> Elf file type is DYN (Shared object file)
> Entry point 0x0
> There are 7 program headers, starting at offset 64
> Program Headers:
> Type Offset VirtAddr PhysAddr
> FileSiz MemSiz Flags Align
> LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000
> 0x00000000001d3462 0x00000000001d3462 R E 0x1000
> LOAD 0x00000000001d3760 0x00000000001d4760 0x00000000001d4760
> 0x000000000000e528 0x0000000000012de8 RW 0x1000
> DYNAMIC 0x00000000001dcef0 0x00000000001ddef0 0x00000000001ddef0
> 0x0000000000000240 0x0000000000000240 RW 0x8
---------------------------> 8----------------------------
> What's nice, we're getting rid of a special handling of "-matomic"
> as it's already a part of ARCH_TOOLCHAIN_WRAPPER_OPTS.
> [1] https://git.buildroot.net/buildroot/commit/?id=3cc2c6d19ab2e1bb4634f26f9318da9b07df5fff
> [2] https://git.buildroot.net/buildroot/commit/?id=dcb74db89e74e512e36b32cea6f574a1a1ca84c4
> [3] https://git.buildroot.net/buildroot/commit/?id=5e52c28397b79f8c4c99552217cbe95202166626
> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> Signed-off-by: Vladimir Isaev <VVIsaev@gmail.com>
> Signed-off-by: Pavel Kozlov <kozlov@synopsys.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> Cc: Yann E. MORIN <yann.morin.1998@free.fr>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> ---
> Changes in v2:
> * Instead of setting TARGET_{C|LD}FLAGS use
> ARCH_TOOLCHAIN_WRAPPER_OPTS for configuring GCC.
Committed to 2023.02.x and 2023.11.x, thanks.
--
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
prev parent reply other threads:[~2024-01-12 18:41 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-05 19:17 [Buildroot] [PATCH v2] arch: Set max/common-page-size for libgcc & libstdc++ Alexey Brodkin via buildroot
2024-01-05 22:50 ` Thomas Petazzoni via buildroot
2024-01-12 18:41 ` Peter Korsgaard [this message]
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=8734v2xulm.fsf@48ers.dk \
--to=peter@korsgaard.com \
--cc=Alexey.Brodkin@synopsys.com \
--cc=Pavel.Kozlov@synopsys.com \
--cc=VVIsaev@gmail.com \
--cc=buildroot@buildroot.org \
--cc=thomas.petazzoni@bootlin.com \
--cc=yann.morin.1998@free.fr \
/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.