2000-03-21  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h: Clean up namespace.
	Lay out struct sigcontext according to what really gets passed on
	the stack.
	* sysdeps/unix/sysv/linux/sparc/sys/procfs.h: Don't include asm/elf.h.
	(elf_gregset_t, elf_greg_t, elf_fpregset_t, ELF_NGREG): Define.
	(prgregset_t, prfpregset_t): Define to elf_* types.
	* sysdeps/unix/sysv/linux/sparc/sys/ptrace.h (PTRACE_WRITEDATA):
	Define to correct value.
	* sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h: Use struct
	sigcontext.
	* sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h: Likewise.
This commit is contained in:
Ulrich Drepper 2000-03-21 21:07:30 +00:00
parent 8542e5f038
commit 5402148732
5 changed files with 63 additions and 11 deletions

View File

@ -1,3 +1,17 @@
2000-03-21 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h: Clean up namespace.
Lay out struct sigcontext according to what really gets passed on
the stack.
* sysdeps/unix/sysv/linux/sparc/sys/procfs.h: Don't include asm/elf.h.
(elf_gregset_t, elf_greg_t, elf_fpregset_t, ELF_NGREG): Define.
(prgregset_t, prfpregset_t): Define to elf_* types.
* sysdeps/unix/sysv/linux/sparc/sys/ptrace.h (PTRACE_WRITEDATA):
Define to correct value.
* sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h: Use struct
sigcontext.
* sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h: Likewise.
2000-03-21 Roland McGrath <roland@baalperazim.frob.com> 2000-03-21 Roland McGrath <roland@baalperazim.frob.com>
* scripts/firstversions.awk: Allow multiple version sets in the * scripts/firstversions.awk: Allow multiple version sets in the

View File

@ -20,7 +20,7 @@
#include <signal.h> #include <signal.h>
void void
profil_counter (int signo, __siginfo_t *si) profil_counter (int signo, struct sigcontext *si)
{ {
profil_count ((void *) si->si_regs.pc); profil_count ((void *) si->si_regs.pc);
} }

View File

@ -17,7 +17,7 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#define SIGCONTEXT __siginfo_t * #define SIGCONTEXT struct sigcontext *
#define SIGCONTEXT_EXTRA_ARGS #define SIGCONTEXT_EXTRA_ARGS
#define GET_PC(__ctx) ((void *) ((__ctx)->si_regs.pc)) #define GET_PC(__ctx) ((void *) ((__ctx)->si_regs.pc))
#define ADVANCE_STACK_FRAME(__next) \ #define ADVANCE_STACK_FRAME(__next) \

View File

@ -29,11 +29,46 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/ucontext.h> #include <sys/ucontext.h>
#include <sys/user.h> #include <sys/user.h>
#include <asm/elf.h>
#include <bits/wordsize.h> #include <bits/wordsize.h>
__BEGIN_DECLS __BEGIN_DECLS
#if __WORDSIZE == 64
#define ELF_NGREG 20
typedef struct
{
unsigned long pr_regs[32];
unsigned long pr_fsr;
unsigned long pr_gsr;
unsigned long pr_fprs;
} elf_fpregset_t;
#else /* sparc32 */
#define ELF_NGREG 38
typedef struct
{
union
{
unsigned long pr_regs[32];
double pr_dregs[16];
} pr_fr;
unsigned long __unused;
unsigned long pr_fsr;
unsigned char pr_qcnt;
unsigned char pr_q_entrysize;
unsigned char pr_en;
unsigned int pr_q[64];
} elf_fpregset_t;
#endif /* sparc32 */
typedef unsigned long elf_greg_t;
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
struct elf_siginfo struct elf_siginfo
{ {
int si_signo; /* Signal number. */ int si_signo; /* Signal number. */
@ -93,11 +128,11 @@ struct elf_prpsinfo
typedef void *psaddr_t; typedef void *psaddr_t;
/* Register sets. Linux has different names. */ /* Register sets. Linux has different names. */
typedef gregset_t prgregset_t; typedef elf_gregset_t prgregset_t;
typedef fpregset_t prfpregset_t; typedef elf_fpregset_t prfpregset_t;
/* We don't have any differences between processes and threads, /* We don't have any differences between processes and threads,
therefore habe only ine PID type. */ therefore have only one PID type. */
typedef __pid_t lwpid_t; typedef __pid_t lwpid_t;

View File

@ -1,5 +1,5 @@
/* `ptrace' debugger support interface. Linux/SPARC version. /* `ptrace' debugger support interface. Linux/SPARC version.
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -120,15 +120,18 @@ enum __ptrace_request
PTRACE_ATTACH = 16, PTRACE_ATTACH = 16,
#define PT_ATTACH PTRACE_ATTACH #define PT_ATTACH PTRACE_ATTACH
/* Write several bytes at a time. */
PTRACE_WRITEDATA = 17,
#define PTRACE_WRITEDATA PTRACE_WRITEDATA
/* Read several bytes at a time. */ /* Read several bytes at a time. */
PTRACE_READTEXT = 18, PTRACE_READTEXT = 18,
#define PTRACE_READTEXT PTRACE_READTEXT #define PTRACE_READTEXT PTRACE_READTEXT
#define PTRACE_READDATA PTRACE_READTEXT #define PTRACE_READDATA PTRACE_READTEXT
/* Write several bytes at a time. */ /* Write several bytes at a time. */
PTRACE_WRITETEXT = 19, PTRACE_WRITETEXT = 19,
#define PTRACE_WRITETEXT PTRACE_WRITETEXT #define PTRACE_WRITETEXT PTRACE_WRITETEXT
#define PTRACE_WRITEDATA PTRACE_WRITETEXT
#if __WORDSIZE == 64 #if __WORDSIZE == 64