> On Jan 5, 2023, at 8:53 AM, Christos Zoulas <chris...@zoulas.com> wrote:
> 
> Hello,
> 
> Our dynamic linker ld_elf.so in map_object.c currently can only handle 2 
> PT_LOAD segments (one for text and one for data); the kernel elf loader does 
> not have this limitation, it can load multiple PT_LOAD segment. The following 
> patch (from FreeBSD) removes this limitation from the dynamic linker. The 
> reason I made this patch now is that the latest binutils (2.39) for amd64 
> sets a maxinum pagesize of 2Mb, and when using relocation read only binaries 
> (ld -z relro) this will cause the binaries to have an extra 2Mbytes for 
> alignment. This can be fixed by building binutils to set a separate code 
> segment by default (ld -z separate-code). Binutils then sets the maximum page 
> size to 4Kb. Setting this option creates 4 PT_LOAD segments, two for text 
> (r--, r-x) and two for data (r--, rw-), which also improves security. This is 
> the default for linux on x86 and the patch also makes it the default for 
> NetBSD x86. The patch also adds -z noseparate-code to the kernel builds so 
> that we don't need to fix the boot loaders. I am planning to commit this 
> soon, so please let me know if you hsve any objections.
> 
> Best,
> 
> christos<separate-code.diff>

Is this ld.elf_so change also going to be put into NetBSD 10?  (Seems like it 
could / should be?). That way, the configuration changes for the toolchain 
(which you will presumable want to upstream) can match against NetBSD 10 for 
the new defaults.

-- thorpej

Reply via email to