diff options
-rw-r--r-- | ChangeLog | 20 | ||||
-rw-r--r-- | include/bits/setjmp.h | 5 | ||||
-rw-r--r-- | setjmp/jmpbuf-offsets.h | 4 | ||||
-rw-r--r-- | sysdeps/alpha/bits/setjmp.h | 20 | ||||
-rw-r--r-- | sysdeps/alpha/jmpbuf-offsets.h | 36 | ||||
-rw-r--r-- | sysdeps/hppa/bits/setjmp.h | 4 | ||||
-rw-r--r-- | sysdeps/hppa/jmpbuf-offsets.h | 20 | ||||
-rw-r--r-- | sysdeps/i386/bits/setjmp.h | 10 | ||||
-rw-r--r-- | sysdeps/i386/jmpbuf-offsets.h | 26 | ||||
-rw-r--r-- | sysdeps/mips/bits/setjmp.h | 5 | ||||
-rw-r--r-- | sysdeps/powerpc/bits/setjmp.h | 24 | ||||
-rw-r--r-- | sysdeps/powerpc/jmpbuf-offsets.h | 39 | ||||
-rw-r--r-- | sysdeps/s390/bits/setjmp.h | 34 | ||||
-rw-r--r-- | sysdeps/sh/bits/setjmp.h | 4 | ||||
-rw-r--r-- | sysdeps/sh/jmpbuf-offsets.h | 20 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/bits/setjmp.h | 6 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/jmpbuf-offsets.h | 22 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/bits/setjmp.h | 6 | ||||
-rw-r--r-- | sysdeps/x86_64/bits/setjmp.h | 30 | ||||
-rw-r--r-- | sysdeps/x86_64/jmpbuf-offsets.h | 30 |
20 files changed, 234 insertions, 131 deletions
@@ -1,5 +1,25 @@ 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/jmpbuf-unwind.h: ... here. * sysdeps/alpha/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ... diff --git a/include/bits/setjmp.h b/include/bits/setjmp.h new file mode 100644 index 0000000000..226de7fee8 --- /dev/null +++ b/include/bits/setjmp.h @@ -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> diff --git a/setjmp/jmpbuf-offsets.h b/setjmp/jmpbuf-offsets.h new file mode 100644 index 0000000000..0cd79b0ae9 --- /dev/null +++ b/setjmp/jmpbuf-offsets.h @@ -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. */ diff --git a/sysdeps/alpha/bits/setjmp.h b/sysdeps/alpha/bits/setjmp.h index 7db0dbf565..eb0b478fb8 100644 --- a/sysdeps/alpha/bits/setjmp.h +++ b/sysdeps/alpha/bits/setjmp.h @@ -55,26 +55,6 @@ * 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__ typedef long int __jmp_buf[17]; #endif diff --git a/sysdeps/alpha/jmpbuf-offsets.h b/sysdeps/alpha/jmpbuf-offsets.h new file mode 100644 index 0000000000..c2503d442a --- /dev/null +++ b/sysdeps/alpha/jmpbuf-offsets.h @@ -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 diff --git a/sysdeps/hppa/bits/setjmp.h b/sysdeps/hppa/bits/setjmp.h index 4c8ed07b98..d5ae7e7b5b 100644 --- a/sysdeps/hppa/bits/setjmp.h +++ b/sysdeps/hppa/bits/setjmp.h @@ -29,10 +29,6 @@ easier, and to ensure proper alignment. Naturally, user code should not depend on either representation. */ -#if defined __USE_MISC || defined _ASM -#define JB_SP (76/4) -#endif - #ifndef _ASM typedef double __jmp_buf[21]; #endif diff --git a/sysdeps/hppa/jmpbuf-offsets.h b/sysdeps/hppa/jmpbuf-offsets.h new file mode 100644 index 0000000000..d95ed8a419 --- /dev/null +++ b/sysdeps/hppa/jmpbuf-offsets.h @@ -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) diff --git a/sysdeps/i386/bits/setjmp.h b/sysdeps/i386/bits/setjmp.h index 7029673090..0133c40e70 100644 --- a/sysdeps/i386/bits/setjmp.h +++ b/sysdeps/i386/bits/setjmp.h @@ -25,16 +25,6 @@ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." #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 typedef int __jmp_buf[6]; #endif diff --git a/sysdeps/i386/jmpbuf-offsets.h b/sysdeps/i386/jmpbuf-offsets.h new file mode 100644 index 0000000000..c53d539edd --- /dev/null +++ b/sysdeps/i386/jmpbuf-offsets.h @@ -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 diff --git a/sysdeps/mips/bits/setjmp.h b/sysdeps/mips/bits/setjmp.h index 7b94623378..4f159c4988 100644 --- a/sysdeps/mips/bits/setjmp.h +++ b/sysdeps/mips/bits/setjmp.h @@ -72,9 +72,4 @@ typedef struct #endif } __jmp_buf[1]; -#ifdef __USE_MISC -/* Offset to the program counter in `jmp_buf'. */ -# define JB_PC 0 -#endif - #endif /* _MIPS_BITS_SETJMP_H */ diff --git a/sysdeps/powerpc/bits/setjmp.h b/sysdeps/powerpc/bits/setjmp.h index 4221300540..9c3e22abac 100644 --- a/sysdeps/powerpc/bits/setjmp.h +++ b/sysdeps/powerpc/bits/setjmp.h @@ -32,30 +32,6 @@ #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 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 diff --git a/sysdeps/powerpc/jmpbuf-offsets.h b/sysdeps/powerpc/jmpbuf-offsets.h new file mode 100644 index 0000000000..5f74a85af6 --- /dev/null +++ b/sysdeps/powerpc/jmpbuf-offsets.h @@ -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 diff --git a/sysdeps/s390/bits/setjmp.h b/sysdeps/s390/bits/setjmp.h index dcac2d2377..5588c03301 100644 --- a/sysdeps/s390/bits/setjmp.h +++ b/sysdeps/s390/bits/setjmp.h @@ -27,30 +27,20 @@ #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 -typedef struct __s390_jmp_buf { - /* We save registers 6-15. */ - long int __gregs[10]; - -#if __WORDSIZE == 64 - /* We save fpu registers 1, 3, 5 and 7. */ - long __fpregs[8]; -#else - /* We save fpu registers 4 and 6. */ - long __fpregs[4]; -#endif +typedef struct __s390_jmp_buf +{ + /* We save registers 6-15. */ + long int __gregs[10]; + +# if __WORDSIZE == 64 + /* We save fpu registers 1, 3, 5 and 7. */ + long __fpregs[8]; +# else + /* We save fpu registers 4 and 6. */ + long __fpregs[4]; +# endif } __jmp_buf[1]; #endif diff --git a/sysdeps/sh/bits/setjmp.h b/sysdeps/sh/bits/setjmp.h index cdc27dceb0..7e3fbd3394 100644 --- a/sysdeps/sh/bits/setjmp.h +++ b/sysdeps/sh/bits/setjmp.h @@ -44,8 +44,4 @@ typedef struct } __jmp_buf[1]; #endif -#if defined __USE_MISC || defined _ASM -# define JB_SIZE (4 * 15) -#endif - #endif /* bits/setjmp.h */ diff --git a/sysdeps/sh/jmpbuf-offsets.h b/sysdeps/sh/jmpbuf-offsets.h new file mode 100644 index 0000000000..312051e7eb --- /dev/null +++ b/sysdeps/sh/jmpbuf-offsets.h @@ -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) diff --git a/sysdeps/sparc/sparc32/bits/setjmp.h b/sysdeps/sparc/sparc32/bits/setjmp.h index 62edd62635..86ccc20d20 100644 --- a/sysdeps/sparc/sparc32/bits/setjmp.h +++ b/sysdeps/sparc/sparc32/bits/setjmp.h @@ -22,12 +22,6 @@ # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead." #endif -#if defined __USE_MISC || defined _ASM -# define JB_SP 0 -# define JB_FP 1 -# define JB_PC 2 -#endif - #ifndef _ASM typedef int __jmp_buf[3]; #endif diff --git a/sysdeps/sparc/sparc32/jmpbuf-offsets.h b/sysdeps/sparc/sparc32/jmpbuf-offsets.h new file mode 100644 index 0000000000..1c6f7a9d17 --- /dev/null +++ b/sysdeps/sparc/sparc32/jmpbuf-offsets.h @@ -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 diff --git a/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h b/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h index 360310f5f1..b44cc0fcd5 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h @@ -60,12 +60,6 @@ typedef struct __sparc64_jmp_buf #else -#if defined __USE_MISC || defined _ASM -# define JB_SP 0 -# define JB_FP 1 -# define JB_PC 2 -#endif - #ifndef _ASM typedef int __jmp_buf[3]; #endif diff --git a/sysdeps/x86_64/bits/setjmp.h b/sysdeps/x86_64/bits/setjmp.h index 656fbf7001..f4d3dbbc05 100644 --- a/sysdeps/x86_64/bits/setjmp.h +++ b/sysdeps/x86_64/bits/setjmp.h @@ -26,36 +26,6 @@ #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 # if __WORDSIZE == 64 diff --git a/sysdeps/x86_64/jmpbuf-offsets.h b/sysdeps/x86_64/jmpbuf-offsets.h new file mode 100644 index 0000000000..46c7768013 --- /dev/null +++ b/sysdeps/x86_64/jmpbuf-offsets.h @@ -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) |