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: [PATCH] manual: Document getcontext uc_stack value on Linux [BZ #759]


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
>>


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