This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
RE: [PATCH v4 1/3] elf: Allow dlopen of filter object to work [BZ #16272]
- From: David Kilroy <David dot Kilroy at arm dot com>
- To: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>, "libc-alpha at sourceware dot org" <libc-alpha at sourceware dot org>
- Cc: nd <nd at arm dot com>
- Date: Tue, 11 Feb 2020 15:59:19 +0000
- Subject: RE: [PATCH v4 1/3] elf: Allow dlopen of filter object to work [BZ #16272]
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZiqapUpz50Iye0oH31pNGAc7GUkc0vZxOiHwG9pfM4M=; b=XW2u8HLJ/qSotUT4JGj+Q0XnxF+A9mlcCLYlVEs7STug360mf6qNs02KmA+Som2ldbxloVTWZLm58M+VboTmTk/loDFjLrrKQGvONVRKST+HchmscsxmoRUAlf+/MxgQXRC+XsvWymFU/Ovdtg+P0AU3z2ST5kMJUt2rIl0BAwDCwhbXubLWuoyaDKDrwrpgcjd3iOqDRq6aqzyWLdCnYmeFqsK2oa3ivZyp8gCgE7BFlMgsVtJgbFiJMKYJwhUzfE5F0pvZMirM6exCyw8a/c46baEcVyExBPLrZmHMzHwj5h7yuQJU8Bv7QQVAReVKO7mYTMNjeogJKWE+AshoMQ==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZVMvW27k5xdjsBjPrCWUNRb17woidAzJyoSgviPhhPhr3usJRGgRYPhvEN4Q913JV6xIcIsgpgCtqEI56X4IaEYEJ158xC3Vj/8GFEX/JuxHGF201KZTLC/VA2hf71A18qBNWcbdOpWv2yHPj1zKSouXJeeX26oKZ3Gcq7dAAHgnlgK1RhTJ6dNHvZUwCKQ5Q3Rn/SDJ3J10cwTm41U2hJzApUSLtlwNzDAa+6V2WC4en8TkB0A2ikzVQo1xt7jBaTUm+m5tmrcQLblr1mhtpSvP/wb8wBJpwyXphnFiuUJMI5vLWLShKwJtxo8PtMf4KWQlqdAxo46vhacW6R/rzg==
- Original-authentication-results: spf=none (sender IP is ) smtp.mailfrom=David dot Kilroy at arm dot com;
- References: <1580296643-36839-1-git-send-email-david.kilroy@arm.com> <1580296643-36839-2-git-send-email-david dot kilroy at arm dot com> <d84eb46e-7a30-0d6b-8385-6ce3678f81c8@linaro.org>
Adhemerval Zanella said:
>
> On 29/01/2020 08:17, David Kilroy wrote:
> > There are two fixes that are needed to be able to dlopen filter
> > objects. First _dl_map_object_deps cannot assume that map will be at
> > the beginning of l_searchlist.r_list[], as filtees are inserted
> before
> > map. Secondly dl_open_worker needs to ensure that filtees get
> > relocated.
> >
> > In _dl_map_object_deps:
> >
> > * avoiding removing relocation dependencies of map by setting
> > l_reserved to 0 and otherwise processing the rest of the search
> > list.
> >
> > * ensure that map remains at the beginning of l_initfini - the list
> > of things that need initialisation (and destruction). Do this by
> > splitting the copy up. This may not be required, but matches the
> > initialization order without dlopen.
> >
> > Modify dl_open_worker to relocate the objects in new->l_inifini.
> > new->l_initfini is constructed in _dl_map_object_deps, and lists the
> > objects that need initialization and destruction. Originally the list
> > of objects in new->l_next are relocated. All of these objects should
> > also be included in new->l_initfini (both lists are populated with
> > dependencies in _dl_map_object_deps). We can't use new->l_prev to
> pick
> > up filtees, as during a recursive dlopen from an interposed malloc
> > call, l->prev can contain objects that are not ready for relocation.
> >
> > Add tests to verify that symbols resolve to the filtee implementation
> > when auxiliary and filter objects are used, both as a normal link and
> > when dlopen'd.
> >
> > Tested by running the testsuite on x86_64.
>
> LGTM, thanks.
>
> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
<snip>
> > diff --git a/elf/tst-auxobj-dlopen.c b/elf/tst-auxobj-dlopen.c
> > new file mode 100644
> > index 0000000..7f91bdd
> > --- /dev/null
> > +++ b/elf/tst-auxobj-dlopen.c
> > @@ -0,0 +1,47 @@
> > +/* Test for BZ16272, dlopen'ing an auxiliary filter object.
>
> Just a nip and tuck: usually bugzilla reports are references as
> BZ#NNNNN.
Thanks for reviewing! Should I resubmit with this fixed? I'd also need
someone to actually apply the changes (assuming no other objections).
FYI I'll be out of office until next week.
Regards,
Dave.