* [Buildroot] [PATCH] arch: Set common-page-size explicitly
@ 2022-08-15 17:17 Alexey Brodkin via buildroot
2022-08-23 21:53 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 2+ messages in thread
From: Alexey Brodkin via buildroot @ 2022-08-15 17:17 UTC (permalink / raw)
To: buildroot; +Cc: Alexey Brodkin, l.stelmach, thomas.petazzoni
On some CPU architecures it's possible to use MMU pages of different
sizes. Those are for example are ARC & ARM. And while for use-space
applications page size is supposed to be transparent, there's still
some use of that extra information. In particular it's possible to
align data structures or code/data sections on page boundary, etc.
For these tricks to become possible tools which pack data (think of
the linker, like GNU "ld") need to be informed of the page size to
be considered.
Obviously, there're some sane defaults which are being used most of
the time, so we even think about that peculiarity, but when non-default
value needs to be used, GNU "ld" accepts 2 properties related to page
size:
-z common-page-size=XXX
-z max-page-size=YYY
And while in thery those might be different (but always "common" <= "max"),
and that might make sense if we build for some unknown platfrom,
in case of Buildroot when we build entire target's filesystem and so
know exactly the configuration we're targeting to, we may safely assume
"common-page-size"="max-page-size".
See a lengthly discussions in this thread [1].
Fixes:
http://autobuild.buildroot.net/results/c8b2f331c98453670cd982558144c4fd84674a3d/ (uclibc)
http://autobuild.buildroot.net/results/3a22f7aac38145b26c549254b819f87329e7a77e/ (glibc)
And while at it, recover use of "XX-page-size" for ARC, as with [2]
moving page size selection in the generic code we've got unexpected
override for ARC (note "=", but not "+="):
--------------------->8--------------------
ARCH_TOOLCHAIN_WRAPPER_OPTS = -matomic
--------------------->8--------------------
[1] https://lists.buildroot.org/pipermail/buildroot/2022-July/646176.html
[2] https://git.buildroot.net/buildroot/commit/?id=dcb74db89e74e512e36b32cea6f574a1a1ca84c4
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
---
arch/arch.mk | 8 ++++----
arch/arch.mk.arc | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/arch.mk b/arch/arch.mk
index 96f11eba42..2e737b92ac 100644
--- a/arch/arch.mk
+++ b/arch/arch.mk
@@ -20,13 +20,13 @@ GCC_TARGET_MODE := $(call qstrip,$(BR2_GCC_TARGET_MODE))
# Explicitly set LD's "max-page-size" instead of relying on some defaults
ifeq ($(BR2_ARC_PAGE_SIZE_4K)$(BR2_ARM64_PAGE_SIZE_4K),y)
-ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=4096
+ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096
else ifeq ($(BR2_ARC_PAGE_SIZE_8K),y)
-ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=8192
+ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=8192 -Wl,-z,common-page-size=8192
else ifeq ($(BR2_ARC_PAGE_SIZE_16K),y)
-ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=16384
+ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384
else ifeq ($(BR2_ARM64_PAGE_SIZE_64K),y)
-ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=65536
+ARCH_TOOLCHAIN_WRAPPER_OPTS += -Wl,-z,max-page-size=65536 -Wl,-z,common-page-size=65536
endif
# Include any architecture specific makefiles.
diff --git a/arch/arch.mk.arc b/arch/arch.mk.arc
index a6b56a869f..42037626a6 100644
--- a/arch/arch.mk.arc
+++ b/arch/arch.mk.arc
@@ -2,7 +2,7 @@ ifeq ($(BR2_arc),y)
# -matomic is always required when the ARC core has the atomic extensions
ifeq ($(BR2_ARC_ATOMIC_EXT),y)
-ARCH_TOOLCHAIN_WRAPPER_OPTS = -matomic
+ARCH_TOOLCHAIN_WRAPPER_OPTS += -matomic
endif
endif
--
2.16.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Buildroot] [PATCH] arch: Set common-page-size explicitly
2022-08-15 17:17 [Buildroot] [PATCH] arch: Set common-page-size explicitly Alexey Brodkin via buildroot
@ 2022-08-23 21:53 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Petazzoni via buildroot @ 2022-08-23 21:53 UTC (permalink / raw)
To: Alexey Brodkin via buildroot; +Cc: buildroot, Alexey Brodkin, l.stelmach
On Mon, 15 Aug 2022 10:17:44 -0700
Alexey Brodkin via buildroot <buildroot@buildroot.org> wrote:
> On some CPU architecures it's possible to use MMU pages of different
> sizes. Those are for example are ARC & ARM. And while for use-space
> applications page size is supposed to be transparent, there's still
> some use of that extra information. In particular it's possible to
> align data structures or code/data sections on page boundary, etc.
>
> For these tricks to become possible tools which pack data (think of
> the linker, like GNU "ld") need to be informed of the page size to
> be considered.
>
> Obviously, there're some sane defaults which are being used most of
> the time, so we even think about that peculiarity, but when non-default
> value needs to be used, GNU "ld" accepts 2 properties related to page
> size:
>
> -z common-page-size=XXX
> -z max-page-size=YYY
>
> And while in thery those might be different (but always "common" <= "max"),
> and that might make sense if we build for some unknown platfrom,
> in case of Buildroot when we build entire target's filesystem and so
> know exactly the configuration we're targeting to, we may safely assume
> "common-page-size"="max-page-size".
>
> See a lengthly discussions in this thread [1].
>
> Fixes:
>
> http://autobuild.buildroot.net/results/c8b2f331c98453670cd982558144c4fd84674a3d/ (uclibc)
> http://autobuild.buildroot.net/results/3a22f7aac38145b26c549254b819f87329e7a77e/ (glibc)
>
> And while at it, recover use of "XX-page-size" for ARC, as with [2]
> moving page size selection in the generic code we've got unexpected
> override for ARC (note "=", but not "+="):
> --------------------->8--------------------
> ARCH_TOOLCHAIN_WRAPPER_OPTS = -matomic
> --------------------->8--------------------
Applied to master, thanks.
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-08-23 21:53 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-15 17:17 [Buildroot] [PATCH] arch: Set common-page-size explicitly Alexey Brodkin via buildroot
2022-08-23 21:53 ` Thomas Petazzoni via buildroot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox