public inbox for gnu-gabi@sourceware.org
 help / color / mirror / Atom feed
From: "H.J. Lu" <hjl.tools@gmail.com>
To: Cary Coutant <ccoutant@gmail.com>
Cc: Florian Weimer <fweimer@redhat.com>,
	Binutils <binutils@sourceware.org>,
		GNU C Library <libc-alpha@sourceware.org>,
	gnu-gabi@sourceware.org, 	x86-64-abi@googlegroups.com
Subject: Re: RFC: Linux gABI: Add a GNU_PROPERTY_BY_LINKER property
Date: Mon, 01 Jan 2018 00:00:00 -0000	[thread overview]
Message-ID: <CAMe9rOp9aqysmkTx2e9QzAqDpM=a+xnVXr_SQ0c8A4auhinVsw@mail.gmail.com> (raw)
In-Reply-To: <CAJimCsHRsi48qpGVu2V8KTf+_u247Ojf5EnSs7wUwn4_ogx4AA@mail.gmail.com>

On Mon, Nov 26, 2018 at 2:34 PM Cary Coutant <ccoutant@gmail.com> wrote:
>
> > > > GNU_PROPERTY_X86_UINT32_VALID was defined to address this issue such that
> > > > linker sets the bit in values of x86 properties for non-relocatable
> > > > outputs.  But it isn't sufficient:
> > > >
> > > > 1. It doesn't cover generic properties.
> > >
> > > Okay.
>
> Does this imply that the property notes in all pre-existing binaries
> can't be trusted?

Loader needs to make extra effort to check if property notes are valid:

https://sourceware.org/bugzilla/show_bug.cgi?id=23509

> > > > 2. When -mx86-used-note=yes is passed to x86 assembler, the
> > > > GNU_PROPERTY_X86_UINT32_VALID bit is set in GNU_PROPERTY_X86_ISA_1_USED
> > > > property in object file and linkers without GNU property support generate
> > > > invalid NT_GNU_PROPERTY_TYPE_0 notes with the GNU_PROPERTY_X86_UINT32_VALID
> > > > bit set.
> > >
> > > Surely this is a GAS bug?  Why not fix that bug?
> >
> > Linker removes GNU_PROPERTY_X86_ISA_1_USED when its value is empty.
> > Maybe linker shouldn't do that.
>
> Please explain how that answers Florian's question? You lost me.
>
> What exactly are you saying the linker should not do? In your Aug. 10
> proposal, ISA_1_USED is in the UINT32_OR_AND range, which specifically
> says the bit should only be set in the output if *all* input files
> contain the property (although it's unclear whether you meant "this
> property is present in all relocatable input files" to mean a non-zero
> property in all input files).

No.  A property can have zero bits.  I updated my proposal to:

1. Add a GNU_PROPERTY_BY_LINKER property which should only be set by
linker for non-relocatable outputs to indicate the property note is
valid and generated by new linkers.  Loaders can check this property
to verify that the property note is valid.
2. Remove GNU_PROPERTY_X86_UINT32_VALID.

> > > > 1. Add a GNU_PROPERTY_BY_LINKER property which should only be set by
> > > > linker for non-relocatable outputs to indicate the property note is
> > > > valid and generated by new linkers.  Loaders can check this property
> > > > to verify that the property note is valid.
> > > > 2. Remove GNU_PROPERTY_X86_UINT32_VALID.
> > > > 3. Define GNU_PROPERTY_X86_ISA_1_BASE for GNU_PROPERTY_X86_ISA_1_USED,
> > > > which has the same bit as GNU_PROPERTY_X86_UINT32_VALID and use it
> > > > for -mx86-used-note=yes with x86 assembler.
> > >
> > > The alternative approach would be to switch to a new PT_ segment for
> > > this because those aren't included in relocatable objects.  (Maybe it's
> > > time for another approach.)
> >
> > PT_NOTE is used so that binaries with GNU properties are backward
> > compatible with loaders which don't support GNU properties. They will
> > run without any new features from GNU properties.
>
> With both your Aug. 10 proposal and this one, you're throwing
> compatibility out the window by saying the loader shouldn't trust
> those old notes without VALID bits. Can't we use this opportunity to

This has been handled.

> just do it right? At this point, I don't really care if you keep on
> using SHT_NOTE for the properties in relocatable files, but please,
> let's use a proper PT_GNU_PROPERTY segment for executables. (Sorry, I
> promised to yield to the consensus, but the design keeps getting more
> complicated.)
>

PT_GNU_PROPERTY isn't compatible with existing loaders.  This needs
to be both forward and backward compatible.

--
H.J.

  reply	other threads:[~2018-11-27 13:41 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-01  0:00 H.J. Lu
2018-01-01  0:00 ` Florian Weimer
2018-01-01  0:00   ` H.J. Lu
2018-01-01  0:00     ` Cary Coutant
2018-01-01  0:00       ` H.J. Lu [this message]
2018-01-01  0:00         ` Florian Weimer
2018-01-01  0:00           ` H.J. Lu
2018-01-01  0:00             ` Cary Coutant
2018-01-01  0:00               ` H.J. Lu
2018-01-01  0:00                 ` H.J. Lu
2018-01-01  0:00                   ` RFC: Add PT_GNU_PROPERTY to cover .note.gnu.property section H.J. Lu
2018-01-01  0:00                     ` H.J. Lu
2018-01-01  0:00                       ` H.J. Lu
2018-01-01  0:00                       ` Florian Weimer
2018-01-01  0:00                         ` H.J. Lu
2018-01-01  0:00                           ` Cary Coutant
2018-01-01  0:00                             ` Mark Wielaard
2018-01-01  0:00                               ` Szabolcs Nagy
2018-01-01  0:00                               ` H.J. Lu
2018-01-01  0:00                                 ` Cary Coutant
2018-01-01  0:00                                   ` H.J. Lu

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='CAMe9rOp9aqysmkTx2e9QzAqDpM=a+xnVXr_SQ0c8A4auhinVsw@mail.gmail.com' \
    --to=hjl.tools@gmail.com \
    --cc=binutils@sourceware.org \
    --cc=ccoutant@gmail.com \
    --cc=fweimer@redhat.com \
    --cc=gnu-gabi@sourceware.org \
    --cc=libc-alpha@sourceware.org \
    --cc=x86-64-abi@googlegroups.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).