public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Nick Clifton <nickc@redhat.com>
To: Sudakshina Das <Sudi.Das@arm.com>,
	"binutils@sourceware.org" <binutils@sourceware.org>
Cc: nd <nd@arm.com>, Richard Earnshaw <Richard.Earnshaw@arm.com>,
	Ramana Radhakrishnan <Ramana.Radhakrishnan@arm.com>
Subject: Re: [PATCH, BFD, LD, AArch64, 0/4] Add support for AArch64 BTI and PAC in the linker
Date: Thu, 07 Mar 2019 12:37:00 -0000	[thread overview]
Message-ID: <581bbc74-441c-8f39-c4d5-38475f12dfb6@redhat.com> (raw)
In-Reply-To: <08762e41-1e80-a504-d840-f8715ea59a50@arm.com>

Hi Sudi,

  [This is me being kind :-) ...]

> We introduce a new set of command line options for the linker in order 
> to support the correct PLTs

Are you also planning on creating patches for GOLD and LLD to support
these features ?  If so, it would probably be best to submit them at
the same time as the BFD linker patches.

Presumably there will also need to be a patch to the loader.  Has this
patch been prepared ?  (Obviously we cannot approve such a patch here,
but it would be good if this patch series included a link to the glibc
patch, and vice versa).


>   - GNU_PROPERTY_AARCH64_FEATURE_1_PAC (We have only reserved this bit
>      for now.)

Why is this bit only reserved at the moment ?   Shouldn't the linker
patches be treating this bit in a similar way to the GNU_PROPERTY_AARCH64_FEATRUE_1_BTI
bit ?


> 3)--bti-nowarn - Same as above but does not emit any warnings.

I am not clear about the purpose/need for this option.  According to this:

> 2) For BTI, the linker must also check for the 
> GNU_PROPERTY_AARCH64_FEATURE_1_BTI in its input. If all inputs have 
> GNU_PROPERTY_AARCH64_FEATURE_1_BTI, the final output will also be marked 
> as such. The PLT should also be protected with a BTI PLT in this case. 
> Thus even if there is no linker option to use BTI PLT, the linker
> should be able to use them depending on the NOTE section. The user can 
> use the linker option --bti, to make sure that their intention of having 
> all input objects (and hence the output) marked with BTI is not 
> disrupted by any stray objects as this option will warn about it.

The linker will automatically set the BTI tag if all of the inputs have
the BTI note, and, by default, will not warn if one or more of the inputs
do not have the note. So what does the --bti-nowarn option do ?

[As an aside, do you think that there might be a need for a --bti-disable
option, which would stop the setting of the BTI tag, even if all of the
input objects have the BTI note ?  I am not sure myself, but I suppose in
theory there might be some reason to want this].


> Details of these can be found in the new AArch64 ELF documentation:
> https://developer.arm.com/docs/ihi0056/latest/elf-for-the-arm-64-bit-architecture-aarch64-abi-2018q4

It would be nice if this document was available as a PDF or something
similar, so that it could be downloaded and used offline.

The document does not appear to specify what the loader should do if
there is more than one GNU_PROPERTY_AARCh64_FEATURE_1_AND note in an
executable.  (Which would be there if the executable had been linked
by a linker that does not know how to merge multiple GNU_PROPERTY notes).


Have you considered how these new PLTs will affect other tools that
inspect them ?  For example ltrace or glibc's la_pltenter() and la_pltexit()
functions ?

OK, that's it for general comments.  I will reserve patch specific comments
for each individual patch.

Cheers
  Nick

  parent reply	other threads:[~2019-03-07 12:37 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-06 10:26 Sudakshina Das
2019-03-06 10:31 ` [PATCH, BFD, LD, AArch64, 1/4] Add support for GNU PROPERTIES in AArch64 for BTI and PAC Sudakshina Das
2019-03-06 10:34   ` [PATCH, BFD, LD, AArch64, 2/4] Add --bti-nowarn to enable BTI without warning and to select BTI enabled PLTs Sudakshina Das
2019-03-06 10:36     ` [PATCH, BFD, LD, AArch64, 3/4] Add --bti to enable BTI and select BTI enabled PLTs but also warn for missing NOTE sections Sudakshina Das
2019-03-06 10:39       ` [PATCH, BFD, LD, AArch64, 4/4] Add --pac-plt to enable PLTs protected with PAC Sudakshina Das
2019-04-11 14:47         ` Szabolcs Nagy
2019-03-07 12:37 ` Nick Clifton [this message]
2019-03-07 14:28   ` [PATCH, BFD, LD, AArch64, 0/4] Add support for AArch64 BTI and PAC in the linker Sudakshina Das
2019-03-07 15:26     ` Peter Smith
2019-03-07 15:35       ` Nick Clifton
2019-03-07 15:49         ` Szabolcs Nagy
2019-03-07 15:33     ` Nick Clifton
2019-03-07 17:53       ` Sudakshina Das
2019-03-08 10:07         ` Nick Clifton
2019-03-08 11:08           ` Szabolcs Nagy
2019-03-08 11:14           ` Ramana Radhakrishnan
2019-03-08 11:46             ` Peter Smith
2019-03-08 12:32               ` Nick Clifton
2019-03-08 12:44                 ` Ramana Radhakrishnan
2019-03-08 13:36                   ` Sudakshina Das
2019-03-11 12:30                     ` Nick Clifton
2019-03-13 11:49                       ` Sudakshina Das

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=581bbc74-441c-8f39-c4d5-38475f12dfb6@redhat.com \
    --to=nickc@redhat.com \
    --cc=Ramana.Radhakrishnan@arm.com \
    --cc=Richard.Earnshaw@arm.com \
    --cc=Sudi.Das@arm.com \
    --cc=binutils@sourceware.org \
    --cc=nd@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).