This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/6] Add INLINE_SYSCALL_ERROR_RETURN
- From: Andreas Schwab <schwab at suse dot de>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: Florian Weimer <fweimer at redhat dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Tue, 13 Oct 2015 15:43:32 +0200
- Subject: Re: [PATCH 1/6] Add INLINE_SYSCALL_ERROR_RETURN
- Authentication-results: sourceware.org; auth=none
- References: <20151012231925 dot GB17339 at intel dot com> <561CFB56 dot 1050504 at redhat dot com> <CAMe9rOqQW4QJiTJkOp5zUfENeDNnxHiBG3OvjGJ867u4eG52cQ at mail dot gmail dot com>
"H.J. Lu" <hjl.tools@gmail.com> writes:
> On Tue, Oct 13, 2015 at 5:38 AM, Florian Weimer <fweimer@redhat.com> wrote:
>> On 10/13/2015 01:19 AM, H.J. Lu wrote:
>>> +/* Set error number and return -1. A target may choose to return the
>>> + internal function, __syscall_error, which sets errno and returns -1. */
>>> +#define INLINE_SYSCALL_ERROR_RETURN(err) \
>>> + ({ \
>>> + __set_errno (err); \
>>> + -1; \
>>> + })
>>
>> I think the name is unfortunate because it the macro does not contain a
>> return statement.
>>
>> Perhaps INLINE_SYSCALL_SET_ERRNO would be a better name?
>>
>> Florian
>
> i386 defines it as
>
> /* Set error number and return -1. Return the internal function,
> __syscall_error, which sets errno from the negative error number
> and returns -1, to avoid PIC. */
> #undef INLINE_SYSCALL_ERROR_RETURN
> #define INLINE_SYSCALL_ERROR_RETURN(resultvar) \
> __syscall_error (-(resultvar))
>
> This macro should only be used with "return".
> INLINE_SYSCALL_SET_ERRNO may be misleading.
> How about INLINE_SYSCALL_SET_ERRNO_AND_RETURN?
INLINE_SYSCALL_ERROR_RETURN_VALUE
It doesn't really matter whether the value is directly passed to return,
as long as the control flow leads to the end of the function without
making a detour.
Andreas.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."