public inbox for gnu-gabi@sourceware.org
 help / color / mirror / Atom feed
From: Cary Coutant <ccoutant@gmail.com>
To: "H.J. Lu" <hjl.tools@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 <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: <CAJimCsHRsi48qpGVu2V8KTf+_u247Ojf5EnSs7wUwn4_ogx4AA@mail.gmail.com> (raw)
In-Reply-To: <CAMe9rOrk8DoAJ8Qusy3ZrzSx-ZwERiaPvbwARKnzW7QzELWRGQ@mail.gmail.com>

> > > 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?

> > > 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).

> > > 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
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.)

-cary

  reply	other threads:[~2018-11-26 22:34 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 [this message]
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
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                       ` 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                               ` H.J. Lu
2018-01-01  0:00                                 ` Cary Coutant
2018-01-01  0:00                                   ` H.J. Lu
2018-01-01  0:00                               ` Szabolcs Nagy
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=CAJimCsHRsi48qpGVu2V8KTf+_u247Ojf5EnSs7wUwn4_ogx4AA@mail.gmail.com \
    --to=ccoutant@gmail.com \
    --cc=binutils@sourceware.org \
    --cc=fweimer@redhat.com \
    --cc=gnu-gabi@sourceware.org \
    --cc=hjl.tools@gmail.com \
    --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).