On 5/29/26 10:39, Konstantin Belousov wrote:
On Fri, May 29, 2026 at 10:30:48AM -0400, John Baldwin wrote:
On 5/28/26 16:59, Konstantin Belousov wrote:
The branch main has been updated by kib:
URL:
https://cgit.FreeBSD.org/src/commit/?id=804daf166406a1b0e22f93b9417b90ed7d3aa1ae
commit 804daf166406a1b0e22f93b9417b90ed7d3aa1ae
Author: Konstantin Belousov <[email protected]>
AuthorDate: 2026-05-28 09:06:33 +0000
Commit: Konstantin Belousov <[email protected]>
CommitDate: 2026-05-28 20:59:26 +0000
imgact_elf: read program headers if not contained in the first page
PR: 295629
Reviewed by: markj
Tested by: Alex S <[email protected]>
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D57294
Oh well, I wish I had seen this earlier. I already had a version of this
downstream in
CheriBSD as we have a CHERI-specific case of many phdrs. I had a
sysctl/tunable to control
how many pages of phdrs were allowed which defaulted to something like 4 pages
worth but
could be more easily adjusted than the hardcoded constant here. I will see if
I can upstream
the sysctl at least.
A sysctl should be a no-brainer, I can add it. I did not see much value
in it being tunable, the current 128 value should be enough for everything?
In the changes we have downstream both in LLD and CheriBSD, we support
decomposing
executables and libraries into multiple compartments which results in separate
.text, .data, etc. for each compartment. This results in an arbitrary number of
PT_LOADs (as well as additional phdrs CHERI uses such as a PT_CHERI_PCC that is
somewhat akin to PT_GNU_RELRO in that it describes properties of a region of
address space). So we can indeed construct binaries with many phdrs.
--
John Baldwin