This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]