This is the mail archive of the 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]


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