binutils ld and new PT_GNU_PROPERTY segment

Mark Wielaard mark@klomp.org
Tue Feb 18 12:38:00 GMT 2020


Hi,

binutils 2.32 ld emits a new PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
segment that overlaps with the PT_NOTE segment covering the
.note.gnu.property section data.

I cannot tell if this is an accident/experiment that happened to end up
in a release or if it is proposed as an official new segment type.

As far as I can tell binutils ld is the only linker which adds this
extra segment and there is no runtime loader which uses it. It doesn't
provide any new information that cannot be found in the existing
PT_NOTE segment.

On 64 bit architectures it simply covers the extra existing PT_NOTE
with 8 byte alignment (normal PT_NOTE segments are 4 byte aligned). On
32bit architectures it covers a sub-range of the existing PT_NOTE
segment.

It isn't clear to me how other tools should handle this. It seems to
prevent normal merging of note sections. Since some notes are probably
special if they need to be covered by this new segment type. And it
isn't clear how the linker knows which of the SHT_NOTE sections is what
needs to be covered by the new segment type. Or is the idea that this
will eventually come with a new section type too and GNU properties
will no longer use NOTE sections?

Thanks,

Mark



More information about the Binutils mailing list