[RFC][PATCH][BZ 15846] Add error reporting (via errno) to getauxval().

Rich Felker dalias@aerifal.cx
Wed Dec 11 06:52:00 GMT 2013


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



More information about the Libc-alpha mailing list