This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [RFC][PATCH][BZ 15846] Add error reporting (via errno) to getauxval().
- From: Rich Felker <dalias at aerifal dot cx>
- To: Brooks Moses <bmoses at google dot com>
- Cc: OndÅej BÃlka <neleai at seznam dot cz>, libc-alpha <libc-alpha at sourceware dot org>, Paul Pluzhnikov <ppluzhnikov at google dot com>
- Date: Tue, 10 Dec 2013 22:25:10 -0500
- Subject: Re: [RFC][PATCH][BZ 15846] Add error reporting (via errno) to getauxval().
- Authentication-results: sourceware.org; auth=none
- References: <1386664513-28730-1-git-send-email-bmoses at google dot com> <20131210091119 dot GA5696 at domone dot podge> <CAOxa4KqWqdCpdkHLf+M=ADOQ3-SuDR2HyqZvJHFg6H-dvQ7qnQ at mail dot gmail dot com>
On Tue, Dec 10, 2013 at 01:36:25AM -0800, Brooks Moses wrote:
> On Tue, Dec 10, 2013 at 1:11 AM, OndÅej BÃlka <neleai@seznam.cz> wrote:
> > On Tue, Dec 10, 2013 at 12:35:13AM -0800, Brooks Moses wrote:
> >> As discussed in the recent thread on my $EXEC_ORIGIN patch and in BZ way
> >> of reporting an error condition. It currently returns zero on error,
> >> but this may also be a valid result for some auxv entries. As there is
> >> no clear invalid result for all current and future auxv entries, this
> >> patch sets errno (following a suggestion in the BZ entry).
> >>
> >> This is still an RFC because I haven't yet tested it; at present it's a
> >> strawman to confirm that the proposed solution has consensus approval.
> >
> > In implementation you need to also clear errno otherwise it could
> > originate from previous getaddrinfo or such.
>
> I don't think that's the right approach. As Rich suggested in the
> initial bug, this would be documented to set errno in case of error,
> or leave it unmodified on a successful exit.
Indeed, it's standard practice (C and POSIX) that library functions
never set errno to 0. A GNU-specific function is not bound by that
requirement, but I think it's harmful to have inconsistency here, and
would lead to error-prone calling code (programmers would wonder why
errno is set to 0 before some calls like this and not before others).
Even if the standard practice is "sub-optimal", consistency is
preferable to a tiny optimization.
Rich