[PATCH] elf: Copy l_addr/l_ld when adding ld.so to a new namespace

H.J. Lu hjl.tools@gmail.com
Wed Sep 29 19:38:26 GMT 2021


On Wed, Sep 29, 2021 at 11:57 AM Adhemerval Zanella
<adhemerval.zanella@linaro.org> wrote:
>
> On 17/08/2021 23:28, H.J. Lu via Libc-alpha wrote:
> > When add ld.so to a new namespace, we don't actually load ld.so.  We
> > create a new link map and refers the real one for almost everything.
> > Copy l_addr and l_ld from the real ld.so link map to avoid GDB warning:
> >
> > warning: .dynamic section for ".../elf/ld-linux-x86-64.so.2" is not at the expected address (wrong library or version mismatch?)
> >
> > when handling shared library loaded by dlmopen.
>
> LGTM, thanks.
>
> Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
>
> > ---
> >  elf/dl-load.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/elf/dl-load.c b/elf/dl-load.c
> > index cb0618b7fc..aab290bea6 100644
> > --- a/elf/dl-load.c
> > +++ b/elf/dl-load.c
> > @@ -1026,6 +1026,10 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd,
> >        /* Refer to the real descriptor.  */
> >        l->l_real = &GL(dl_rtld_map);
> >
> > +      /* Also copy l_addr and l_ld.  */
>
> This comments seems obvious, maybe add it is required to avoid a
> GDB warning with dlmopen();

Changed to

/* Copy l_addr and l_ld to avoid a GDB warning with dlmopen().  */

> > +      l->l_addr = l->l_real->l_addr;
> > +      l->l_ld = l->l_real->l_ld;
> > +
> >        /* No need to bump the refcount of the real object, ld.so will
> >        never be unloaded.  */
> >        __close_nocancel (fd);
> >

This is the patch I am checking in.

Thanks.

-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-elf-Copy-l_addr-l_ld-when-adding-ld.so-to-a-new-name.patch
Type: text/x-patch
Size: 1324 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/libc-alpha/attachments/20210929/62497bf3/attachment.bin>


More information about the Libc-alpha mailing list