1
1
openwrt/include
Hauke Mehrtens 04f10eb796 build: set max-page-size linker flag to match target page size
ELF binaries embed the maximum page size used during linking in the
PT_LOAD segment alignment. If this value is larger than the actual
system page size, the kernel will still load the binary but wastes
memory due to over-alignment. If it is smaller, the binary may fail
to load or cause incorrect behavior with features like RELRO.

Most architectures use 4KB pages, but loongarch64 uses 16KB pages
(CONFIG_PAGE_SIZE_16KB). Explicitly pass -z max-page-size to the
linker so that binaries are built with the correct page alignment for
the target, avoiding issues with RELRO segment padding and ensuring
correct memory mapping on the target system.

Before binutils 2.39 RELRO sections were padded to common page size
which is 4K on MIPS, with binutils 3.29 the padding was changed to
max page size which is 64K on MIPS. With this change we will pad them to
4K again.

This reduces the size of user space binaries in OpenWrt.
The size of the uncompressed root file system of a mips malta be build
decreased by about 20%.

old file size:
```
$ du -s build_dir/target-mips_24kc_musl/root-malta/
15844	build_dir/target-mips_24kc_musl/root-malta/
```

New file size:
```
$ du -s build_dir/target-mips_24kc_musl/root-malta/
12564	build_dir/target-mips_24kc_musl/root-malta/
```

The size of the image did not decrease much because of the strong
compression used by OpenWrt.

Link: https://github.com/openwrt/openwrt/pull/22800
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-04-08 00:34:59 +02:00
..
site build: remove ac_cv_header_netinet_sctp_h=no from pre-cached variables 2024-09-22 16:04:09 +02:00
autotools.mk include: autotools: do not symlink files in autoreconf 2024-08-29 20:04:02 +02:00
bpf.mk build: bpf: fix LLVM tool paths with host toolchain 2025-04-09 09:52:21 +02:00
cmake.mk build: pass CPPFLAGS to cmake build 2026-02-17 01:29:57 +01:00
debug.mk build: use SPDX license tags 2021-02-05 14:54:47 +01:00
default-packages.mk imagebuilder: move handling of DEFAULT_PACKAGES into shareable place 2024-11-17 19:29:06 +01:00
depends.mk build: make find_md5 reproducible with AUTOREMOVE 2022-09-30 22:26:51 +02:00
device_table.txt
download.mk treewide: drop CVS support 2026-02-13 15:40:13 +01:00
feeds.mk build: fix ipkg-remove: add support for removing apk files 2025-07-15 20:48:45 +02:00
hardened-ld-pie.specs
hardening.mk toolchain: gcc: add fanalyzer config option 2025-11-23 09:33:15 +01:00
host-build.mk build: add support for host building in a subdirectory 2024-07-27 20:32:20 +02:00
image-commands.mk filogic: add support for Netgear EAX17 2025-11-24 00:57:19 +01:00
image.mk image: support generating per device targz rootfs 2026-02-09 16:43:29 +01:00
kernel-build.mk kernel-build.mk: Fix multi-core build warning. 2024-10-06 13:49:39 +02:00
kernel-defaults.mk kernel: move .quilt_used to quilt.mk 2025-11-27 20:26:37 +01:00
kernel-version.mk kernel: move kernel version files to linux/generic directory 2025-04-22 19:22:44 +02:00
kernel.mk kernel.mk: add 6.18 workaround for empty Module.symvers.tmp 2026-03-28 11:51:10 +01:00
logo.png include: update logo with better kerning 2021-01-18 09:31:39 -10:00
logo.svg include: update logo with better kerning 2021-01-18 09:31:39 -10:00
meson.mk meson: allow using staging python 2024-12-02 19:30:22 +00:00
netfilter.mk netfilter: remove nf-conntrack6 2026-01-21 22:42:20 +01:00
nls.mk nls.mk: fixup cmake packages 2022-11-27 00:52:06 +01:00
openssl-module.mk openssl: add MODULES_DIR MACRO for provider 2025-11-11 23:58:54 +01:00
optee-os.mk optee-os.mk: override default PATH to not use hostpkg python 2025-03-15 13:43:14 +01:00
package-bin.mk build: allow package to be built for all variants 2021-11-15 00:38:46 +01:00
package-defaults.mk build: handle --root feeds script feature 2025-10-20 13:50:15 +02:00
package-dumpinfo.mk build: remove duplicate MAINTAINER from package-dumpinfo.mk 2024-05-07 22:24:10 +02:00
package-pack.mk config: add build config option to sign each .apk package 2026-03-02 11:08:10 +01:00
package-seccomp.mk build: use SPDX license tags 2021-02-05 14:54:47 +01:00
package.mk build: set max-page-size linker flag to match target page size 2026-04-08 00:34:59 +02:00
prereq-build.mk prereq-build: add Python 3.13 support 2025-11-12 12:11:15 +01:00
prereq.mk prereq: use staging_dir's compiler 2025-10-20 00:55:06 +02:00
quilt.mk kernel: move .quilt_used to quilt.mk 2025-11-27 20:26:37 +01:00
rootfs.mk treewide: drop CVS support 2026-02-13 15:40:13 +01:00
scan.awk
scan.mk scan.mk: do not silence output of dump phase 2023-11-13 14:01:24 +01:00
shell.sh
subdir.mk kernel-build.mk: add support for compiling only DTS 2024-02-08 19:57:28 +01:00
target.mk targets: add REGULATOR_SUPPORT auto-feature 2026-03-01 10:59:19 +01:00
toolchain-build.mk toolchain: fix dangling symlink to self in FixupLibdir 2022-07-01 19:17:36 +02:00
toplevel.mk build: depend on tools/zstd for download 2025-12-10 19:04:44 +01:00
trusted-firmware-a.mk include/trusted-firmware-a.mk: support LTS releases 2025-04-06 14:21:07 +03:00
u-boot.mk treewide: update u-boot URL 2026-01-02 18:07:02 +01:00
uclibc++.mk uclibc++: remove 2021-10-24 18:20:50 +02:00
unpack.mk include: use libdeflate's gzip to decompress 2023-01-17 21:40:18 +01:00
verbose.mk verbose.mk: fallback to standard file descriptors 2024-01-05 16:25:14 +01:00
version.mk build: lock versions for special APK packages 2025-02-04 13:48:59 +00:00