RFC: Add SHT_GNU_PHDRS

Carlos O'Donell carlos@redhat.com
Thu Sep 27 03:25:00 GMT 2018


On 9/26/18 5:53 PM, H.J. Lu wrote:
> When -z separate-code is used to create executable, ld won't place any
> data in the code-only PT_LOAD segment.  If there are no data sections
> placed before the code-only PT_LOAD segment, the program headers
> won't be mapped into any PT_LOAD segment.  When the executable tries
> to access it (based on the program header address passed in AT_PHDR),
> it will lead to segfault.
> 
> I am proposing
> 
> #define SHT_GNU_PHDRS  0x6ffffff4  /* Dummy section for program header */
> 
> This is a special read-only SHF_ALLOC zero-size data section.  It is the
> first output section, which will force a data PT_LOAD segment with program
> header before the code-only PT_LOAD segment,
 
This seems like a huge hack to me. Either ld ensures that the page-aligned
start of the PT_LOAD mapping includes the program headers, or we have to
define SHT_GNU_PHDRS as having exactly that semantic and we need to clearly
explain what a static linker needs to do to accomplish this task. What you
have here needs more documentation.

-- 
Cheers,
Carlos.



More information about the Binutils mailing list