This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH][BZ #16046] Static dlopen correction fallout fixes
- From: Roland McGrath <roland at hack dot frob dot com>
- To: "Maciej W. Rozycki" <macro at codesourcery dot com>
- Cc: Allan McRae <allan at archlinux dot org>, Ondřej Bílka <neleai at seznam dot cz>, <libc-alpha at sourceware dot org>
- Date: Fri, 31 Jan 2014 11:29:48 -0800 (PST)
- Subject: Re: [PATCH][BZ #16046] Static dlopen correction fallout fixes
- Authentication-results: sourceware.org; auth=none
- References: <20131017174710 dot GA4993 at domone dot podge> <20131025210328 dot 39E69746B6 at topped-with-meat dot com> <alpine dot DEB dot 1 dot 10 dot 1310252347350 dot 12843 at tp dot orcam dot me dot uk> <20140116203847 dot GB20838 at domone dot podge> <alpine dot DEB dot 1 dot 10 dot 1401172303320 dot 4268 at tp dot orcam dot me dot uk> <20140117233957 dot 64E307441B at topped-with-meat dot com> <alpine dot DEB dot 1 dot 10 dot 1401271320170 dot 4268 at tp dot orcam dot me dot uk> <alpine dot DEB dot 1 dot 10 dot 1401291054290 dot 4268 at tp dot orcam dot me dot uk> <20140129184954 dot 1BFFA74441 at topped-with-meat dot com> <alpine dot DEB dot 1 dot 10 dot 1401300707090 dot 4268 at tp dot orcam dot me dot uk> <20140130203835 dot EB0A874414 at topped-with-meat dot com> <alpine dot DEB dot 1 dot 10 dot 1401311837460 dot 4268 at tp dot orcam dot me dot uk>
> Thinking more about the test case I have concluded that maybe a
> path-of-least-resistance check like below would do. It verifies that
> there's exactly one link map whose file name is null, as is the case with
> the main executable only. This approach may not be particularly robust,
> but it does cover what BZ #16046 is about.
It's a start. Ideal would be to look at all the places you had to change
and figure out what user-visible effects those changes had.
> +static int count;
Why have a static instead of passing the address of a local in the void *?
> +static int
> +callback (struct dl_phdr_info *info, size_t size, void *data)
> +{
> + if (!*info->dlpi_name)
No implicit Boolean coercion please: (info->dlpi_name[0] == '\0') is the
canonical way to write this expression.
> +int
> +main(void)
Space before paren.
It's also good to have a comment simply explaining what it's verifying,
even though it is fairly obvious in this case.
Thanks,
Roland