[PATCH v3 2/2] elf: Add GNU_PROPERTY_1_NEEDED check

Florian Weimer fweimer@redhat.com
Fri Jun 25 14:10:48 GMT 2021


* H. J. Lu:

> If GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS is set on any input
> relocatable files:
>
> 1. Don't generate copy relocations.
> 2. Turn off extern_protected_data since it implies
> GNU_PROPERTY_NO_COPY_ON_PROTECTED.
> 3. Treate reference to protected symbols with indirect external access
> as local.
> 4. Set GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS on output.
> 5. When generating executable, clear this bit when there are non-GOT or
> non-PLT relocations in input relocatable files without the bit set.
> 6. Add -z [no]indirect-extern-access to control indirect external access.

Should the property be used just for error checking?  We would flip the
default unconditionally.  Such a behavioral change simply based on some
input file is quite surprising.

For (4), I think we need to set a different flag (or perhaps even
flags), and be really careful about what we do.  I think an output file
that is an executable will never require indirect-extern-access, but it
can be incompatible with indirect-extern-access objects at run time.
Shared objects as output files may themselves depend on
indirect-extern-access objects at run time.  Ideally, markup would be
applied to the relocations that are affected by the changes in the ABI.

Thanks,
Florian



More information about the Binutils mailing list