This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] manual: Document getcontext uc_stack value on Linux [BZ #759]
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Tue, 11 Jul 2017 14:56:27 -0300
- Subject: Re: [PATCH] manual: Document getcontext uc_stack value on Linux [BZ #759]
- Authentication-results: sourceware.org; auth=none
- References: <1494961861-30734-1-git-send-email-adhemerval.zanella@linaro.org> <6d9cf350-c221-3fac-0088-384b42c45adb@linaro.org>
Ping (x2). I think something we won't bother to emulate solaris behaviour,
so in a short we should document it and close it.
On 23/06/2017 15:52, Adhemerval Zanella wrote:
> Ping.
>
> On 16/05/2017 16:11, Adhemerval Zanella wrote:
>> As decribed in BZ#759, Linux getcontext implementation on Linux does
>> differs from other SysV system about the returned uc_stack. This is
>> true not only for i386, but for all the architecture I could actually
>> check (aarch64, arm, alpha, hppa, m68k, mips, mips64, mips64n32,
>> powerpc, powerpc64, powerpc64le, s390x, sh, sparc, sparc64, and x86).
>>
>> And I think we should not change current behavior for some reasons:
>>
>> 1. POSIX 2008 removed this SySV interface for a good reason and changing
>> this behavior adds nothing for current portable code. POSIX 2001
>> specification does states that stack should be saved [1] and current
>> GLIBC code does in a arch-specific manner (inside the mcontext_t)
>> which allows the setcontext to work correctly.
>>
>> 2. Changing this behavior would potentially require compat symbols and
>> I see no gain in adding compat symbols for deprecated interfaces.
>>
>> 3. Also, for comment #2 in BZ#759, it is up to kernel do setup the contents
>> for ucontext_t and currently it does not provide the stack information
>> as well. Trying to change it is also another fix that does not worth
>> the possible gains.
>>
>> Instead my proposal is to make it clear the current interface behavior in
>> glibc documentation and close this bug as invalid.
>>
>> [BZ #759]
>> * manual/setjmp.texi (getcontex): Document uc_stack value on Linux.
>>
>> [1] http://pubs.opengroup.org/onlinepubs/009695399/functions/getcontext.html
>> ---
>> ChangeLog | 5 +++++
>> manual/setjmp.texi | 5 +++++
>> 2 files changed, 10 insertions(+)
>>
>> diff --git a/manual/setjmp.texi b/manual/setjmp.texi
>> index 94d16be..07cc7bf 100644
>> --- a/manual/setjmp.texi
>> +++ b/manual/setjmp.texi
>> @@ -302,6 +302,11 @@ the content of the registers, the signal mask, and the current stack.
>> Executing the contents would start at the point where the
>> @code{getcontext} call just returned.
>>
>> +On Linux the stack information return on @code{uc_stack} is empty by
>> +default. It also the case for signal handling information through
>> +@code{sigaction} with @code{SA_SIGINFO}. It could be obtained using
>> +architecture specific field from @code{uc_mcontext} member.
>> +
>> The function returns @code{0} if successful. Otherwise it returns
>> @code{-1} and sets @var{errno} accordingly.
>> @end deftypefun
>>