[PATCH v5 07/12] aarch64: enable BTI at runtime
Szabolcs Nagy
szabolcs.nagy@arm.com
Thu Jun 18 15:38:04 GMT 2020
The 06/12/2020 08:18, H.J. Lu wrote:
> On Fri, Jun 12, 2020 at 8:08 AM Szabolcs Nagy <szabolcs.nagy@arm.com> wrote:
> > The 06/12/2020 06:43, H.J. Lu wrote:
> > > Can you make _dl_process_pt_gnu_property more generic so that it
> > > can be shared with x86? If there is PT_GNU_PROPERTY, we don't
> > > need to check for multiple property notes. Thanks.
> >
> > it can use a hook for NT_GNU_PROPERTY_TYPE_0 notes
> > that is called for each property, e.g.
> >
> > int
> > _dl_process_gnu_property_note0(uint32_t type, uint32_t datasz, const void *data);
i also had to pass the link_map.
> > however this only helps on x86 if PT_GNU_PROPERTY
> > processing is before PT_NOTE processing otherwise
> > you cannot skip handling the notes.
>
> On x86-64, there are
>
> Program Headers:
> Type Offset VirtAddr PhysAddr
> FileSiz MemSiz Flags Align
...
> NOTE 0x0000000000000338 0x0000000000000338 0x0000000000000338
> 0x0000000000000020 0x0000000000000020 R 0x8
> NOTE 0x0000000000000358 0x0000000000000358 0x0000000000000358
> 0x0000000000000044 0x0000000000000044 R 0x4
> GNU_PROPERTY 0x0000000000000338 0x0000000000000338 0x0000000000000338
> 0x0000000000000020 0x0000000000000020 R 0x8
...
> Only the PT_NOTE segment with the correct alignment may contain property.
> In the first pass, we record such PT_NOTE segment, but don't process it.
> After all segments have been processed, we process the saved PT_NOTE segment
> if there is no GNU_PROPERTY segment.
i refactored the code but didn't change the x86 side.
note: in rtld there is only one pass (load segments
are already mapped) while dlopen does the property
handling in the second pass over program headers.
attaching v5 of the patch:
- moved _dl_process_pt_gnu_property to generic code
(into dl-load.c), this assumes PT_GNU_PROPERTY
is a gnu platform abi and the integer types used
for accessing it work on all targets.
- made _dl_process_pt_gnu_property return type void
and remove all failure handling (invalid notes
are ignored).
- only handle one NT_GNU_PROPERTY_TYPE_0.
- added _dl_process_gnu_property target hook.
- removed reviewed-by because of significant changes.
tested on aarch64.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v5-0007-aarch64-enable-BTI-at-runtime.patch
Type: text/x-diff
Size: 16799 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/libc-alpha/attachments/20200618/9b2dabd8/attachment-0001.bin>
More information about the Libc-alpha
mailing list