chromium has not built on armhf since 150.0.7871.181-1 on July.
The nine builds attempted since have all failed, each after 17
to 19 hours of buildd time, always at the final link of chrome:
ld.lld-22: error: failed to open ./chrome: Cannot allocate memory
https://buildd.debian.org/status/logs.php?pkg=chromium&arch=armhf
Cause
-----
The final link does not fit in a 32-bit address space.
Measured by bisecting RLIMIT_AS on a replayed link of v8_context_snapshot_generator, a target that
carries about half of chrome's input:
needs 3.25 GB
available to an AArch32 process on an arm64 kernel about 4 GiB
Peak RSS for the same link is 2.30 GB. Watching RSS is misleading here:
address space runs about 40% higher, and it is the address space that
the allocation fails on.
What I have tried and did not work:
ld.bfd 2.47 --no-keep-memory --reduce-memory-overheads 6.04 GB RSS
ld.bfd 2.47 plain 6.69 GB RSS
ld.gold 2.44 11.32 GB RSS, then an internal error
mold maps every input and the output
optimize_for_size=true object files grow 19%
--icf=all shrinks only the output, the small term
-fno-function-sections saves 97 bytes per input section, costs more
staged partial linking higher than the direct link
mold's author reached the same conclusion for a program this size in
https://github.com/rui314/mold/issues/1701 : cross building on a
64-bit host is the only option.
We tried this approach previously:
Cross hosting the linker, an arm64 lld or mold against armhf objects.
it does work:
https://salsa.debian.org/chromium-team/chromium/-/merge_requests/44
https://salsa.debian.org/chromium-team/chromium/-/merge_requests/45
Both need a build dependency from a foreign architecture,
which wanna-build infrastructure from the buildd team does not suppor.
That is https://bugs.debian.org/770925 , open since 2014. A patch for it with tests is at https://salsa.debian.org/mendezr/wanna-build/-/merge_requests/1 and it was declined at the beginning of Octuber 2026.
Hence, a proposal to fix it:
---
Building chrome as a component build on armhf.
The code then lives in about 540 shared libraries that link one
at a time, chrome's own link inputs drop from over 2 GB to 569 MB,
and the largest remaining link is 434 MB.
https://salsa.debian.org/chromium-team/chromium/-/merge_requests/49
The packages install and the browser runs, although so far I have tested it only under qemu-user.
If anyone has armhf hardware, a native check would be welcome.
The merge request needs two patches that are also upstream:
https://chromium-review.googlesource.com/c/chromium/src/+/8545999
https://chromium-review.googlesource.com/c/chromium/src/+/8549218
The reasoning and the measurements are in debian/README.armhf in that branch, so this does not have to be worked out again.
Again, the MR for this approach is in:
https://salsa.debian.org/chromium-team/chromium/-/merge_requests/49