1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

* include/bits/setjmp.h: New file.

* setjmp/jmpbuf-offsets.h: New file.
	* sysdeps/alpha/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/alpha/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/hppa/bits/setjmp.h (JB_SP): Macro moved ...
	* sysdeps/hppa/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/i386/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/i386/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/mips/bits/setjmp.h (JB_PC): Macro removed.
	* sysdeps/powerpc/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/powerpc/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/s390/bits/setjmp.h: Remove __JB_* macros.
	* sysdeps/sh/bits/setjmp.h (JB_SIZE): Macro moved ...
	* sysdeps/sh/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/sparc/sparc32/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/sparc/sparc32/jmpbuf-offsets.h: ... here, new file.
	* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Remove JB_* macros.
	* sysdeps/x86_64/bits/setjmp.h: Move JB_* macros ...
	* sysdeps/x86_64/jmpbuf-offsets.h: ... here, new file.
This commit is contained in:
Roland McGrath
2006-01-10 10:18:56 +00:00
parent 0ca13e1412
commit d5d55e016b
20 changed files with 233 additions and 130 deletions

View File

@ -1,5 +1,25 @@
2006-01-10 Roland McGrath <roland@redhat.com> 2006-01-10 Roland McGrath <roland@redhat.com>
* include/bits/setjmp.h: New file.
* setjmp/jmpbuf-offsets.h: New file.
* sysdeps/alpha/bits/setjmp.h: Move JB_* macros ...
* sysdeps/alpha/jmpbuf-offsets.h: ... here, new file.
* sysdeps/hppa/bits/setjmp.h (JB_SP): Macro moved ...
* sysdeps/hppa/jmpbuf-offsets.h: ... here, new file.
* sysdeps/i386/bits/setjmp.h: Move JB_* macros ...
* sysdeps/i386/jmpbuf-offsets.h: ... here, new file.
* sysdeps/mips/bits/setjmp.h (JB_PC): Macro removed.
* sysdeps/powerpc/bits/setjmp.h: Move JB_* macros ...
* sysdeps/powerpc/jmpbuf-offsets.h: ... here, new file.
* sysdeps/s390/bits/setjmp.h: Remove __JB_* macros.
* sysdeps/sh/bits/setjmp.h (JB_SIZE): Macro moved ...
* sysdeps/sh/jmpbuf-offsets.h: ... here, new file.
* sysdeps/sparc/sparc32/bits/setjmp.h: Move JB_* macros ...
* sysdeps/sparc/sparc32/jmpbuf-offsets.h: ... here, new file.
* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Remove JB_* macros.
* sysdeps/x86_64/bits/setjmp.h: Move JB_* macros ...
* sysdeps/x86_64/jmpbuf-offsets.h: ... here, new file.
* sysdeps/powerpc/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ... * sysdeps/powerpc/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/powerpc/jmpbuf-unwind.h: ... here. * sysdeps/powerpc/jmpbuf-unwind.h: ... here.
* sysdeps/alpha/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ... * sysdeps/alpha/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...

5
include/bits/setjmp.h Normal file
View File

@ -0,0 +1,5 @@
/* For internal uses, get the public <bits/setjmp.h> definitions
plus the JB_* macros from the private header <jmpbuf-offsets.h>. */
#include_next <bits/setjmp.h>
#include <jmpbuf-offsets.h>

4
setjmp/jmpbuf-offsets.h Normal file
View File

@ -0,0 +1,4 @@
/* Private macros for accessing __jmp_buf contents. Stub version.
This file can define macros such as JB_* used by code inside libc
to access __jmp_buf contents. */

View File

@ -55,26 +55,6 @@
* registers. * registers.
*/ */
#if defined __USE_MISC || defined __ASSEMBLY__
# define JB_S0 0
# define JB_S1 1
# define JB_S2 2
# define JB_S3 3
# define JB_S4 4
# define JB_S5 5
# define JB_PC 6
# define JB_FP 7
# define JB_SP 8
# define JB_F2 9
# define JB_F3 10
# define JB_F4 11
# define JB_F5 12
# define JB_F6 13
# define JB_F7 14
# define JB_F8 15
# define JB_F9 16
#endif
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
typedef long int __jmp_buf[17]; typedef long int __jmp_buf[17];
#endif #endif

View File

@ -0,0 +1,36 @@
/* Private macros for accessing __jmp_buf contents. Alpha version.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#define JB_S0 0
#define JB_S1 1
#define JB_S2 2
#define JB_S3 3
#define JB_S4 4
#define JB_S5 5
#define JB_PC 6
#define JB_FP 7
#define JB_SP 8
#define JB_F2 9
#define JB_F3 10
#define JB_F4 11
#define JB_F5 12
#define JB_F6 13
#define JB_F7 14
#define JB_F8 15
#define JB_F9 16

View File

@ -29,10 +29,6 @@
easier, and to ensure proper alignment. Naturally, user code should easier, and to ensure proper alignment. Naturally, user code should
not depend on either representation. */ not depend on either representation. */
#if defined __USE_MISC || defined _ASM
#define JB_SP (76/4)
#endif
#ifndef _ASM #ifndef _ASM
typedef double __jmp_buf[21]; typedef double __jmp_buf[21];
#endif #endif

View File

@ -0,0 +1,20 @@
/* Private macros for accessing __jmp_buf contents. HPPA version.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#define JB_SP (76/4)

View File

@ -25,16 +25,6 @@
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif #endif
#if defined __USE_MISC || defined _ASM
# define JB_BX 0
# define JB_SI 1
# define JB_DI 2
# define JB_BP 3
# define JB_SP 4
# define JB_PC 5
# define JB_SIZE 24
#endif
#ifndef _ASM #ifndef _ASM
typedef int __jmp_buf[6]; typedef int __jmp_buf[6];
#endif #endif

View File

@ -0,0 +1,26 @@
/* Private macros for accessing __jmp_buf contents. i386 version.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#define JB_BX 0
#define JB_SI 1
#define JB_DI 2
#define JB_BP 3
#define JB_SP 4
#define JB_PC 5
#define JB_SIZE 24

View File

@ -72,9 +72,4 @@ typedef struct
#endif #endif
} __jmp_buf[1]; } __jmp_buf[1];
#ifdef __USE_MISC
/* Offset to the program counter in `jmp_buf'. */
# define JB_PC 0
#endif
#endif /* _MIPS_BITS_SETJMP_H */ #endif /* _MIPS_BITS_SETJMP_H */

View File

@ -32,30 +32,6 @@
#include <bits/wordsize.h> #include <bits/wordsize.h>
#if defined __USE_MISC || defined _ASM
# define JB_GPR1 0 /* Also known as the stack pointer */
# define JB_GPR2 1
# define JB_LR 2 /* The address we will return to */
# if __WORDSIZE == 64
# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18*2 words total. */
# define JB_CR 21 /* Condition code registers with the VRSAVE at */
/* offset 172 (low half of the double word. */
# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
# define JB_SIZE (64 * 8) /* As per PPC64-VMX ABI. */
# define JB_VRSAVE 21 /* VRSAVE shares a double word with the CR at offset */
/* 168 (high half of the double word). */
# define JB_VRS 40 /* VRs 20 through 31 are saved, 12*4 words total. */
# else
# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total. */
# define JB_CR 21 /* Condition code registers. */
# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
# define JB_SIZE ((64 + (12 * 4)) * 4)
# define JB_VRSAVE 62
# define JB_VRS 64
# endif
#endif
/* The current powerpc 32-bit Altivec ABI specifies for SVR4 ABI and EABI /* The current powerpc 32-bit Altivec ABI specifies for SVR4 ABI and EABI
the vrsave must be at byte 248 & v20 at byte 256. So we must pad this the vrsave must be at byte 248 & v20 at byte 256. So we must pad this
correctly on 32 bit. It also insists that vecregs are only gauranteed correctly on 32 bit. It also insists that vecregs are only gauranteed

View File

@ -0,0 +1,39 @@
/* Private macros for accessing __jmp_buf contents. PowerPC version.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#define JB_GPR1 0 /* Also known as the stack pointer */
#define JB_GPR2 1
#define JB_LR 2 /* The address we will return to */
#if __WORDSIZE == 64
# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18*2 words total. */
# define JB_CR 21 /* Condition code registers with the VRSAVE at */
/* offset 172 (low half of the double word. */
# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
# define JB_SIZE (64 * 8) /* As per PPC64-VMX ABI. */
# define JB_VRSAVE 21 /* VRSAVE shares a double word with the CR at offset */
/* 168 (high half of the double word). */
# define JB_VRS 40 /* VRs 20 through 31 are saved, 12*4 words total. */
#else
# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total. */
# define JB_CR 21 /* Condition code registers. */
# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
# define JB_SIZE ((64 + (12 * 4)) * 4)
# define JB_VRSAVE 62
# define JB_VRS 64
#endif

View File

@ -27,30 +27,20 @@
#include <bits/wordsize.h> #include <bits/wordsize.h>
#define __JB_GPR6 0
#define __JB_GPR7 1
#define __JB_GPR8 2
#define __JB_GPR9 3
#define __JB_GPR10 4
#define __JB_GPR11 5
#define __JB_GPR12 6
#define __JB_GPR13 7
#define __JB_GPR14 8
#define __JB_GPR15 9
#ifndef _ASM #ifndef _ASM
typedef struct __s390_jmp_buf { typedef struct __s390_jmp_buf
/* We save registers 6-15. */ {
long int __gregs[10]; /* We save registers 6-15. */
long int __gregs[10];
#if __WORDSIZE == 64 # if __WORDSIZE == 64
/* We save fpu registers 1, 3, 5 and 7. */ /* We save fpu registers 1, 3, 5 and 7. */
long __fpregs[8]; long __fpregs[8];
#else # else
/* We save fpu registers 4 and 6. */ /* We save fpu registers 4 and 6. */
long __fpregs[4]; long __fpregs[4];
#endif # endif
} __jmp_buf[1]; } __jmp_buf[1];
#endif #endif

View File

@ -44,8 +44,4 @@ typedef struct
} __jmp_buf[1]; } __jmp_buf[1];
#endif #endif
#if defined __USE_MISC || defined _ASM
# define JB_SIZE (4 * 15)
#endif
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -0,0 +1,20 @@
/* Private macros for accessing __jmp_buf contents. SH version.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#define JB_SIZE (4 * 15)

View File

@ -22,12 +22,6 @@
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif #endif
#if defined __USE_MISC || defined _ASM
# define JB_SP 0
# define JB_FP 1
# define JB_PC 2
#endif
#ifndef _ASM #ifndef _ASM
typedef int __jmp_buf[3]; typedef int __jmp_buf[3];
#endif #endif

View File

@ -0,0 +1,22 @@
/* Private macros for accessing __jmp_buf contents. SPARC version.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#define JB_SP 0
#define JB_FP 1
#define JB_PC 2

View File

@ -60,12 +60,6 @@ typedef struct __sparc64_jmp_buf
#else #else
#if defined __USE_MISC || defined _ASM
# define JB_SP 0
# define JB_FP 1
# define JB_PC 2
#endif
#ifndef _ASM #ifndef _ASM
typedef int __jmp_buf[3]; typedef int __jmp_buf[3];
#endif #endif

View File

@ -26,36 +26,6 @@
#include <bits/wordsize.h> #include <bits/wordsize.h>
#if __WORDSIZE == 64
/* We only need to save callee-saved registers plus stackpointer and
program counter. */
# if defined __USE_MISC || defined _ASM
# define JB_RBX 0
# define JB_RBP 1
# define JB_R12 2
# define JB_R13 3
# define JB_R14 4
# define JB_R15 5
# define JB_RSP 6
# define JB_PC 7
# define JB_SIZE (8*8)
# endif
#else
# if defined __USE_MISC || defined _ASM
# define JB_BX 0
# define JB_SI 1
# define JB_DI 2
# define JB_BP 3
# define JB_SP 4
# define JB_PC 5
# define JB_SIZE 24
# endif
#endif
#ifndef _ASM #ifndef _ASM
# if __WORDSIZE == 64 # if __WORDSIZE == 64

View File

@ -0,0 +1,30 @@
/* Private macros for accessing __jmp_buf contents. x86-64 version.
Copyright (C) 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
/* We only need to save callee-saved registers plus stackpointer and
program counter. */
#define JB_RBX 0
#define JB_RBP 1
#define JB_R12 2
#define JB_R13 3
#define JB_R14 4
#define JB_R15 5
#define JB_RSP 6
#define JB_PC 7
#define JB_SIZE (8*8)