linux-mips
[Top] [All Lists]

Re: [PATCH, RFC] MIPS: Implement the getcontext API

To: "Maciej W. Rozycki" <macro@codesourcery.com>
Subject: Re: [PATCH, RFC] MIPS: Implement the getcontext API
From: David Daney <ddaney@caviumnetworks.com>
Date: Thu, 05 Mar 2009 08:58:18 -0800
Cc: Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org, libc-ports@sourceware.org, "Maciej W. Rozycki" <macro@linux-mips.org>, Richard Sandiford <rdsandiford@googlemail.com>
In-reply-to: <alpine.DEB.1.10.0903051530080.6558@tp.orcam.me.uk>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <alpine.DEB.1.10.0902282326580.4064@tp.orcam.me.uk> <49AD6139.60209@caviumnetworks.com> <alpine.DEB.1.10.0903051530080.6558@tp.orcam.me.uk>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Thunderbird 2.0.0.19 (X11/20090105)
Adding Richard S. as he may be interested...

Maciej W. Rozycki wrote:
On Tue, 3 Mar 2009, David Daney wrote:

Note the libgcc currently makes the assumption that the layout of the stack
for signal handlers is fixed.  The DWARF2 unwinder needs this information to
be able to unwind through signal frames (see gcc/config/mips/linux-unwind.h),
so it is already a de facto part of the ABI.

 I do hope it was agreed upon at some point.

As with many things, there was no formal agreement.

I certainly cannot recall a discussion at the linux-mips list, but I did not always follow it closely enough either, so I may have missed the discussion.

http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=473957B6.3030202%40avtrex.com
http://www.linux-mips.org/cgi-bin/mesg.cgi?a=linux-mips&i=4739CCD6.2080306%40avtrex.com

The interface is meant to be internal to Linux, so the usual rule of volatility apply. The structure is not defined in a header even.


Certainly it started out that way, but if the kernel doesn't supply DWARF2 unwind tables for its signal trampolines (which it currently does not), then I think using the structures is the only way for user-space applications to unwind through signal trampolines.

I was pointing this out not as any type of objection to your plan, but as further support for formalizing the interfaces.

 Furthermore I am requesting that the kernel recognises the special meaning
of the value of one stored in the slot designated for the $zero register and
never places such a value itself there.
Seems reasonable to me as currently a zero is unconditionally stored there.

It is, but is should be architected, not assumed. Also contexts built with the *context() functions are meant to be usable by them only -- software will still be able to assume the value in the slot when constructed by the kernel.


Agreed.

Thanks for working on this,
David Daney

<Prev in Thread] Current Thread [Next in Thread>