ELF NT_GNU_PROPERTY_TYPE_0 Questions

From: Dave Martin
Date: Thu Aug 22 2019 - 09:45:38 EST


Hi there,

Can you clarify a couple of points about the SysV ABI Linux
Extensions [1] for me?

1) Can there be more than one NT_GNU_PROPERTY_TYPE_0 note in a valid
ELF file? I think the answer should be "no".

2) Is is permissible for an ELF ET_EXEC or ET_DYN file that contains
an NT_GNU_PROPERTY_TYPE_0 property not to have a PT_GNU_PROPERTY phdrs
entry mapping it? Except for historical usage by RedHat (which
apparently can be worked round in userspace) it seems reasonable for
the answer to be "no", at least for Linux.

3) Is it permissible for the PT_GNU_PROPERTY phdr (if present) to
map anything other than precisely one NT_GNU_PROPERTY_TYPE_0
note? I think the answer should be "no".

4) Is an NT_GNU_PROPERTY_TYPE_0 note allowed to contain two or more
properties with the same pr_type? I think the answer should be "no".

5) What's the rationale for sorting the properties by pr_type? I can
see this would make it easier for the linker to merge
NT_GNU_PROPERTY_TYPE_0 notes from different files, but I'm wondering
whether the kernel really needs to enforce the ordering when loading
an ELF. The kernel doesn't need to merge property lists together.

6) Do you have a view on the best way to define the Elf_Prop type in
headers? bfd elf-bfd.h seems to have elf_property, but this doesn't
follow the style of the public ELF headers.

Maybe Linux should keep its definition internal rather than publishing
it in include/uapi/elf.h... I'm not sure.

Thanks
---Dave

[1] Linux Extensions to gABI
https://github.com/hjl-tools/linux-abi/wiki/Linux-Extensions-to-gABI