C Read Only Program Header

Does anyone know any details concerning why FreeBSD ELF files now have 3 PT_LOAD segments in the program header? There is a 4096 byte PF_R (read-only) segment, as well as PF_X|PF_W and PF_W|PF_R ones. Also does anyone know when this PF_R segment was added? [On Linux and probably Solaris there are only these last two segments].
If I get no joy here I'll perhaps try the clang community.
 
I'm not asking about what ELF allows.
On Linux I only see the two PF_X|PF_W and PF_W|PF_R PT_LOAD segments.

I suspect that in the past (perhaps as far back as FreeBSB 9) FreeBSD also only used the same two types of segments. I'm only talking about 'standard' executables, compiled with clang(++) or gcc/g++ and linked with ld.
 
Back
Top