public inbox for gnu-gabi@sourceware.org
 help / color / mirror / Atom feed
From: Carlos O'Donell <carlos@redhat.com>
To: Florian Weimer <fweimer@redhat.com>,
	Jozef Lawrynowicz <jozef.l@mittosystems.com>
Cc: gnu-gabi@sourceware.org
Subject: Re: [RFC] SHF_GNU_RETAIN ELF Section Flag
Date: Tue, 15 Sep 2020 08:50:00 -0400	[thread overview]
Message-ID: <f0776cec-c518-8951-afa1-1bfa7fc6bf75@redhat.com> (raw)
In-Reply-To: <87v9gfi5cf.fsf@oldenburg2.str.redhat.com>

On 9/15/20 8:37 AM, Florian Weimer via Gnu-gabi wrote:
> * Jozef Lawrynowicz:
> 
>> On Tue, Sep 15, 2020 at 02:09:22PM +0200, Florian Weimer wrote:
>>> * Jozef Lawrynowicz:
>>>
>>>> I'd like to propose a new ELF section flag, SHF_GNU_RETAIN, for addition
>>>> to the GNU gABI.
>>>>
>>>> This flag instructs the linker to "retain" the section in the output
>>>> file, even if garbage collection would remove it because it appears
>>>> unused.
>>>
>>> How does this flag interaction with libraries (.a files)?
>>
>> If a section in a library has SHF_GNU_RETAIN set, and that library gets
>> searched by the linker for some undefined symbol, then the
>> SHF_GNU_RETAIN section will also be pulled into the program, and
>> retained in the linked output file.
> 
> Sorry, that's not quite what I meant.  What happens if the .o file with
> SHF_GNU_RETAIN in an .a library is not otherwise referenced and thus
> never loaded by the link editor?  How would the link editor realize that
> it is even there?

Why would it be loaded?

Why does the link editor need to detect the presence of such a file?

There is certainly a semantic layering here that needs to be teased apart
and explained in more detail.

The archive operates on whole object files.

Therefore the rules say that the whole object file is included when a
dependency would require it to be included.

While SHF_GNU_RETAIN operates on sections. So when the linker is doing
garbage collection of the included section it would keep the section.

Thus the definition of SHF_GNU_RETAIN might be:

SHF_GNU_RETAIN

  When an object file containing such a marked section is included in
  the link, the section should not be garbage collected by the linker,
  even if it appears unused.

This would do away with the archive ambiguity.

Unless we want to argue what we mean by "included in the link?"

-- 
Cheers,
Carlos.


  reply	other threads:[~2020-09-15 12:50 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-15 12:06 Jozef Lawrynowicz
2020-09-15 12:09 ` Florian Weimer
2020-09-15 12:31   ` Jozef Lawrynowicz
2020-09-15 12:37     ` Florian Weimer
2020-09-15 12:50       ` Carlos O'Donell [this message]
2020-09-15 12:55         ` Florian Weimer
2020-09-15 13:29           ` Jozef Lawrynowicz
2020-09-15 14:11             ` Carlos O'Donell
2020-09-15 16:52               ` Jozef Lawrynowicz
2020-09-16 12:58                 ` Carlos O'Donell
2020-09-16 13:11                 ` Florian Weimer
2020-09-16 13:46                   ` Michael Matz
2020-09-18 12:07                     ` Florian Weimer
2020-09-18 12:22                       ` Jozef Lawrynowicz
2020-09-18 18:09                         ` Florian Weimer
2020-09-16 14:13                   ` Jozef Lawrynowicz
2020-09-18 10:00                     ` Jozef Lawrynowicz
2020-09-18 18:11                       ` Florian Weimer
2020-09-21 12:42                         ` Michael Matz
2020-09-21 18:53                           ` Jozef Lawrynowicz

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=f0776cec-c518-8951-afa1-1bfa7fc6bf75@redhat.com \
    --to=carlos@redhat.com \
    --cc=fweimer@redhat.com \
    --cc=gnu-gabi@sourceware.org \
    --cc=jozef.l@mittosystems.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).