linux-mips
[Top] [All Lists]

Re: [patch] userspace mcontext_t doesn't match what kernel returns

To: Ryan Murray <rmurray@debian.org>
Subject: Re: [patch] userspace mcontext_t doesn't match what kernel returns
From: Ralf Baechle <ralf@linux-mips.org>
Date: Sun, 15 Sep 2002 21:06:01 +0200
Cc: linux-mips@linux-mips.org, libc-alpha@sources.redhat.com
In-reply-to: <20020911032832.GA1500@cyberhqz.com>; from rmurray@debian.org on Tue, Sep 10, 2002 at 08:28:32PM -0700
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20020911032832.GA1500@cyberhqz.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.2.5.1i
On Tue, Sep 10, 2002 at 08:28:32PM -0700, Ryan Murray wrote:

> The definition of mcontext_t in sysdeps/unix/sysv/linux/mips/sys/ucontext.h
> does not match what the kernel copies to userspace (struct sigcontext).
> alpha, ia64, and hppa have fixed this by typedefing one to the other in
> sys/ucontext.h  The following patch accomplishes the same thing for mips.

I choose to fix the kernel instead which will keep as closer to the MIPS
ABI and also prevent having to recompile zillions of user apps.  Below my
working version of <asm/ucontext.h>.

  Ralf

/*
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Low level exception handling
 *
 * Copyright (C) 1998, 1999 by Ralf Baechle
 */
#ifndef _ASM_UCONTEXT_H
#define _ASM_UCONTEXT_H

typedef struct {
        gregset_t gregs;
        fpregset_t fpregs;
} mcontext_t;

struct ucontext {
        unsigned long   uc_flags;
        struct ucontext *uc_link;
        stack_t         uc_stack;
        mcontext_t      uc_mcontext;
        sigset_t        uc_sigmask;     /* mask last for extensibility */
};

#endif /* _ASM_UCONTEXT_H */

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