tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ELF sections vs. segments



On Thu, Jan 19, 2017 at 19:02:15 +0300, Valery Ushakov wrote:

> The question I have can probably be classified as a platonic
> essentialism problem, but it has some practical conseqeunces too.
> 
> I've noticed that netbsd native elf signature check looks for a netbsd
> note _section_.
> 
>   sys/kern/exec_elf.c
>   - netbsd_elf_signature
> 
> 
> OTOH, linunx compat looks for a linux note _segment_.
> 
>   sys/compat/linux/common/linux_exec_elf32.c
>   - ELFNAME2(linux,signature)
> 
> 
> Normally, it doesn't matter, as there's a note segment for each note
> section.  However I'm playing with a forth system that cross-compiles
> and writes out its own ELF image and that standalone image only has
> segments, but no sections.
> 
> I'm inclined to think that a standalone ELF binary should be able to
> get away with this kind of arrangement.  Sections are for linkers,
> segments are for loaders.  The binary is intended to be loaded, so it
> provides info about its segments and that should be enough.
> 
> Comments?  Shall we fix the check to look for note segments?

I have put the patches for current, -7 and -6 up at

  http://www.stderr.spb.ru/~uwe/netbsd/elf-notes/

The old code to process the note is moved out to a new function
netbsd_elf_note.  To make these patches easier to review the
switch(np->n_type) code was intentionally not reindented.  I'll KNF
them before commit.

I did some minimal testing, verifying that e.g. pax notes (which is
the second note in the note segment) are correctly processed, but
haven't tried to throw any kind of bad notes at this code.

BTW, paxctl(8) has the same problem, it operates on note sections
instead of segments.

-uwe


Home | Main Index | Thread Index | Old Index