unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org>
To: Vivek Das Mohapatra <vivek@collabora.com>, libc-alpha@sourceware.org
Subject: Re: [RFC][PATCH v12 0/8] Implementation of RTLD_SHARED for dlmopen
Date: Mon, 9 Aug 2021 17:34:57 -0300	[thread overview]
Message-ID: <eae770d9-ce49-6738-fc9c-f6a0f4fde76d@linaro.org> (raw)
In-Reply-To: <20210708163255.812-1-vivek@collabora.com>



On 08/07/2021 13:32, Vivek Das Mohapatra via Libc-alpha wrote:
> This is a revision of a previous patchset that I posted here
> regarding https://sourceware.org/bugzilla/show_bug.cgi?id=22745 
> 
> Introduction:
> 
> =======================================================================
>   As discussed in the URL above dlmopen requires a mechanism for
>   [optionally] sharing some objects between more than one namespace.
> 
>   The following patchset provides an implementation for this: If an
>   object is loaded with the new RTLD_SHARED flag we instead ensure
>   that a "master" copy exists (and is flagged as no-delete) in the
>   main namespace and a thin wrapper or clone is placed in the target
>   namespace.
> 
>   This patch series should address all the comments received on the
>   earlier (v1-v10) series.
> 
> =======================================================================
> 
> Changes from v11:
> 
>  - If a DSO is required in a non-base namespace because it is mentioned
>    in a DT_NEEDED entry and it is itself flagged DF_GNU_1_UNIQUE then
>    a proxy is generated for it.
> 
>  - Relocations via non-base namespace proxies work reliably (some code
>    paths did not do the address calculation relative to the DSO base
>    correctly when a proxy was involved).
> 
>  - Tests extended cover the above two scenarios.
> 
> Changes from v10:
> 
>  - A segfault in a dlmopen error pathway (which does not seem to have existed
>    when v10 was applied to the then-HEAD commit) has been fixed.
> 
>  - The fallback mechanism for adding DT_GNU_FLAGS_1 sections to the required
>    binaries has had some infrastructure moved to the elf/ directory
> 
>  - The runstatedir setting introduced by recent autoconf has been omitted from
>    the patchset as it is not relevant to this feature.
> 
>  - libpthread no longer tagged DT_GNU_FLAGS_1/DF_GNU_1_UNIQUE.
>    (with both -z unique supporting linkers and if the .os hack is
>    used to add the new flag - this was inconsistent before).
> 
> Not changed:
> 
>  - There is still some diagnostic info in the config.log when the linker
>    layout is acceptable but -z unique is not yet supported. I believe this
>    _is_ useful diagnostic information as a developer might otherwise wonder
>    why the vanilla linker was being rejected when its layout output seemed
>    fine.
> 
> I have not yet implemented, but plan to address once this series is
> accepted/acceptable:
> 
>  - dl_iterate_ns_phdr (cf dl_iterate_phdr but taking a namespace argument)
> 
>  - Check RTLD_GLOBAL interacts properly and unsurprisingly with RTLD_SHARED.

Hi Vivek, 

This patchset looks much better than before, I have added my comments on the
set. There are some spots that need rework, like some patches that should be
merged, some style fixes, and testcase; but in general I think we can move 
forward.

I have fixed all my remarks on a personal branch [1] and checked on both
x86_64-linux-gnu and i686-linux-gnu with binutils with and without DT_GNU_FLAGS_1 
support. If you are ok with my changes, please report the patches without the RFC 
so I can ack them and I will push them upstream.

Thanks for working on this.

[1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/azanella/rtld-shared

      parent reply	other threads:[~2021-08-09 20:37 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-08 16:32 [RFC][PATCH v12 0/8] Implementation of RTLD_SHARED for dlmopen Vivek Das Mohapatra via Libc-alpha
2021-07-08 16:32 ` [RFC][PATCH v12 1/8] Define a new dynamic section tag - DT_GNU_FLAGS_1 (bug 22745) Vivek Das Mohapatra via Libc-alpha
2021-08-09 12:27   ` Adhemerval Zanella via Libc-alpha
2021-07-08 16:32 ` [RFC][PATCH v12 2/8] Abstract loaded-DSO search code into a helper function Vivek Das Mohapatra via Libc-alpha
2021-08-09 13:04   ` Adhemerval Zanella via Libc-alpha
2021-07-08 16:32 ` [RFC][PATCH v12 3/8] Use the new DSO finder " Vivek Das Mohapatra via Libc-alpha
2021-08-09 12:59   ` Adhemerval Zanella via Libc-alpha
2021-07-08 16:32 ` [RFC][PATCH v12 4/8] Add DT_GNU_FLAGS_1/DF_GNU_1_UNIQUE to glibc DSOs (bug 22745) Vivek Das Mohapatra via Libc-alpha
2021-08-09 16:48   ` Adhemerval Zanella via Libc-alpha
2021-08-10 13:21     ` Adhemerval Zanella via Libc-alpha
2021-08-10 13:32       ` H.J. Lu via Libc-alpha
2021-07-08 16:32 ` [RFC][PATCH v12 5/8] Implement dlmopen RTLD_SHARED flag " Vivek Das Mohapatra via Libc-alpha
2021-08-09 19:07   ` Adhemerval Zanella via Libc-alpha
2021-08-09 20:24     ` Adhemerval Zanella via Libc-alpha
2021-08-09 20:30   ` Adhemerval Zanella via Libc-alpha
2021-07-08 16:32 ` [RFC][PATCH v12 6/8] Add dlmopen / RTLD_SHARED tests Vivek Das Mohapatra via Libc-alpha
2021-08-09 20:09   ` Adhemerval Zanella via Libc-alpha
2021-07-08 16:32 ` [RFC][PATCH v12 7/8] Restore separate libc loading for the TLS/namespace storage test Vivek Das Mohapatra via Libc-alpha
2021-08-09 19:08   ` Adhemerval Zanella via Libc-alpha
2021-07-08 16:32 ` [RFC][PATCH v12 8/8] Drop DT_GNU_FLAGS_1/DF_GNU_1_UNIQUE from the libpthread DSO Vivek Das Mohapatra via Libc-alpha
2021-08-09 20:10   ` Adhemerval Zanella via Libc-alpha
2021-08-09 21:24   ` Florian Weimer via Libc-alpha
2021-07-13 13:08 ` [External] : [RFC][PATCH v12 0/8] Implementation of RTLD_SHARED for dlmopen Alfonso Alfonso Peterssen via Libc-alpha
2021-08-09 20:34 ` Adhemerval Zanella via Libc-alpha [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

  List information: https://www.gnu.org/software/libc/involved.html

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

  git send-email \
    --in-reply-to=eae770d9-ce49-6738-fc9c-f6a0f4fde76d@linaro.org \
    --to=libc-alpha@sourceware.org \
    --cc=adhemerval.zanella@linaro.org \
    --cc=vivek@collabora.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).