public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Fangrui Song <maskray@google.com>
To: Florian Weimer <fweimer@redhat.com>
Cc: Adhemerval Zanella <adhemerval.zanella@linaro.org>,
	GNU C Library <libc-alpha@sourceware.org>
Subject: Re: [PATCH] elf: Add elf checks for main executable
Date: Tue, 14 Dec 2021 15:08:45 -0800	[thread overview]
Message-ID: <20211214230845.vea5wqjea3d4hcyg@google.com> (raw)
In-Reply-To: <87h7baq2eq.fsf@oldenburg.str.redhat.com>


On 2021-12-14, Florian Weimer wrote:
>* Fangrui Song:
>
>> As my blog post says, ELFOSABI_NONE will unlikely change EI_ABIVERSION for RELR.
>> Is the proposal "if ld.bfd --pack-dyn-relocs=relr-glibc is specified,
>> and the output is otherwise ELFOSABI_NONE or ELFOSABI_GNU, use
>> ELFOSABI_GNU and bump EI_ABIVERSION to 4"?  This ELFOSABI_GNU is not
>> elegant as RELR is not a GNU extension. OK, I have objection but not so
>> strongly.
>>
>> Since ld.lld --pack-dyn-relocs=relr is there and won't change the
>> behavior, ld.lld's relr-glibc will likely just be an alias without doing
>> the EI_ABIVERSION dance.
>
>If ld.lld will ignore what the ABI says regarding feature lockout, we
>have two options:
>
>* Ditch the idea of the lockout because it won't work reliably anyway.
>
>* In upstream glibc, accept DT_RELR only if the lockout is also present.
>  That is, ld.lld DT_RELR will not work with upstream glibc until it
>  produces the proper markup.
>
>The second approach would qualify as the nuclear option, I guess.
>
>Thanks,
>Florian

If glibc ether gives up DT_RELR completely or forces ld.lld to comply with the EI_ABIVERSION scheme[1],
I think I have no choice but to teach ld.lld the glibc style RELR.
My ultimate goal is to let the Linux glibc world have RELR.
If there is some acceptable compromise on ld.lld side, I can take it just with pain.
It is unfortunate that

* we incur implementation costs to both glibc and linkers
* tag a generic-abi feature as ELFOSABI_GNU
* it is not reliable: currently released 2.33/2.34/etc won't catch kernel mapped objects. (while we could also backport DT_RELR to these releases)
* older glibc will be protected by symbol versioning anyway. the mechanism would just protect very recent glibc versions, maybe just 2.34? does it protect 2.33?
* new architectures need to remember the EI_ABIVERSION value has been taken by glibc.

[1]: if ld.bfd --pack-dyn-relocs=relr-glibc is specified, and the output
is otherwise ELFOSABI_NONE or ELFOSABI_GNU, use ELFOSABI_GNU and bump
EI_ABIVERSION to 4

      reply	other threads:[~2021-12-14 23:08 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-19 15:03 Adhemerval Zanella
2021-11-19 15:33 ` H.J. Lu
2021-11-19 16:05   ` H.J. Lu
2021-11-19 17:06     ` Adhemerval Zanella
2021-12-06 19:03 ` H.J. Lu
2021-12-06 19:09 ` Florian Weimer
2021-12-06 19:22   ` H.J. Lu
2021-12-06 20:31     ` Adhemerval Zanella
2021-12-06 20:37       ` Florian Weimer
2021-12-06 21:07         ` Adhemerval Zanella
2021-12-07 15:45           ` Florian Weimer
2021-12-07 17:35             ` Adhemerval Zanella
2021-12-08  0:01               ` Fāng-ruì Sòng
2021-12-08 10:19                 ` Florian Weimer
2021-12-14  0:17                   ` Fāng-ruì Sòng
2021-12-14  9:03                     ` Florian Weimer
2021-12-14  9:09                       ` Fāng-ruì Sòng
2021-12-14  9:18                         ` Florian Weimer
2021-12-14 19:03                           ` Fangrui Song
2021-12-14 12:28                         ` Adhemerval Zanella
2021-12-14 12:23                       ` Adhemerval Zanella
2021-12-14 19:24                         ` Fangrui Song
2021-12-14 21:07                           ` Adhemerval Zanella
2021-12-14 21:30                             ` Fangrui Song
2021-12-14 21:53                               ` Florian Weimer
2021-12-14 23:08                                 ` Fangrui Song [this message]

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=20211214230845.vea5wqjea3d4hcyg@google.com \
    --to=maskray@google.com \
    --cc=adhemerval.zanella@linaro.org \
    --cc=fweimer@redhat.com \
    --cc=libc-alpha@sourceware.org \
    /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).