buildroot/arch
Alexey Brodkin 5e52c28397 arch: set ld's common-page-size explicitly
On some CPU architecures it's possible to use MMU pages of different
sizes, for example on ARC or ARM. And while for user-space
applications the 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 lengthy discussion 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>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-08-23 23:51:48 +02:00
..
arch.mk arch: set ld's common-page-size explicitly 2022-08-23 23:51:48 +02:00
arch.mk.arc arch: set ld's common-page-size explicitly 2022-08-23 23:51:48 +02:00
arch.mk.riscv arch/Config.in.riscv: enable Zicsr and Zifencei standalone extensions with gcc >= 12 2022-07-23 17:31:27 +02:00
arch.mk.xtensa arc/xtensa: store the Xtensa overlay in the per-package DL_DIR 2018-04-02 15:59:30 +02:00
Config.in arch/csky: drop architecture 2022-07-27 16:58:59 +02:00
Config.in.arc core: introduce NORMALIZED_ARCH as non-kernel replacement for KERNEL_ARCH 2022-02-08 21:20:23 +01:00
Config.in.arm arch: rework MMU option handling and move to "Target architecture" menu 2022-07-27 11:38:07 +02:00
Config.in.m68k arch: rework MMU option handling and move to "Target architecture" menu 2022-07-27 11:38:07 +02:00
Config.in.microblaze core: introduce NORMALIZED_ARCH as non-kernel replacement for KERNEL_ARCH 2022-02-08 21:20:23 +01:00
Config.in.mips core: introduce NORMALIZED_ARCH as non-kernel replacement for KERNEL_ARCH 2022-02-08 21:20:23 +01:00
Config.in.nios2 core: introduce NORMALIZED_ARCH as non-kernel replacement for KERNEL_ARCH 2022-02-08 21:20:23 +01:00
Config.in.or1k core: introduce NORMALIZED_ARCH as non-kernel replacement for KERNEL_ARCH 2022-02-08 21:20:23 +01:00
Config.in.powerpc arch/Config.in.powerpc: disable some variants on ppc64le 2022-06-06 15:15:00 +02:00
Config.in.riscv arch: rework MMU option handling and move to "Target architecture" menu 2022-07-27 11:38:07 +02:00
Config.in.s390x core: introduce NORMALIZED_ARCH as non-kernel replacement for KERNEL_ARCH 2022-02-08 21:20:23 +01:00
Config.in.sh arch/Config.in.sh: move BR2_ARCH_HAS_MMU_MANDATORY one level up 2022-04-24 10:45:17 +02:00
Config.in.sparc core: introduce NORMALIZED_ARCH as non-kernel replacement for KERNEL_ARCH 2022-02-08 21:20:23 +01:00
Config.in.x86 arch/Config.in.x86: fix bonnell typo 2022-05-15 20:10:35 +02:00
Config.in.xtensa arch: rework MMU option handling and move to "Target architecture" menu 2022-07-27 11:38:07 +02:00