1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-01 10:06:57 +03:00

* sysdeps/powerpc/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...

* sysdeps/powerpc/jmpbuf-unwind.h: ... here.
	* sysdeps/alpha/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/alpha/jmpbuf-unwind.h: ... here.
	* sysdeps/sparc/sparc32/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/sparc/sparc32/jmpbuf-unwind.h: ... here.
	* sysdeps/i386/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/i386/jmpbuf-unwind.h: ... here.
	* sysdeps/x86_64/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/x86_64/jmpbuf-unwind.h: ... here.
	* sysdeps/sh/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/sh/jmpbuf-unwind.h: ... here.
	* sysdeps/hppa/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/hppa/jmpbuf-unwind.h: ... here, new file.
	* sysdeps/mips/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/mips/jmpbuf-unwind.h: ... here.
	* sysdeps/m68k/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/m68k/jmpbuf-unwind.h: ... here, new file.
	* sysdeps/s390/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
	* sysdeps/s390/jmpbuf-unwind.h: ... here.
	* sysdeps/unix/sysv/linux/ia64/bits/setjmp.h (_JMPBUF_UNWINDS):
	Move macro ...
	* sysdeps/ia64/jmpbuf-unwind.h: ... here.
	* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h (_JMPBUF_UNWINDS):
	Move macro ...
	* sysdeps/sparc/sparc64/jmpbuf-unwind.h: ... here.

	* sysdeps/ia64/jmpbuf-unwind.h: New file, moved from nptl/.
This commit is contained in:
Roland McGrath
2006-01-10 08:54:22 +00:00
parent de59a29179
commit 0ca13e1412
26 changed files with 147 additions and 86 deletions

View File

@ -1,7 +1,35 @@
2006-01-10 Roland McGrath <roland@redhat.com> 2006-01-10 Roland McGrath <roland@redhat.com>
* sysdeps/powerpc/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/powerpc/jmpbuf-unwind.h: ... here.
* sysdeps/alpha/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/alpha/jmpbuf-unwind.h: ... here.
* sysdeps/sparc/sparc32/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/sparc/sparc32/jmpbuf-unwind.h: ... here.
* sysdeps/i386/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/i386/jmpbuf-unwind.h: ... here.
* sysdeps/x86_64/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/x86_64/jmpbuf-unwind.h: ... here.
* sysdeps/sh/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/sh/jmpbuf-unwind.h: ... here.
* sysdeps/hppa/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/hppa/jmpbuf-unwind.h: ... here, new file.
* sysdeps/mips/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/mips/jmpbuf-unwind.h: ... here.
* sysdeps/m68k/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/m68k/jmpbuf-unwind.h: ... here, new file.
* sysdeps/s390/bits/setjmp.h (_JMPBUF_UNWINDS): Move macro ...
* sysdeps/s390/jmpbuf-unwind.h: ... here.
* sysdeps/unix/sysv/linux/ia64/bits/setjmp.h (_JMPBUF_UNWINDS):
Move macro ...
* sysdeps/ia64/jmpbuf-unwind.h: ... here.
* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h (_JMPBUF_UNWINDS):
Move macro ...
* sysdeps/sparc/sparc64/jmpbuf-unwind.h: ... here.
* sysdeps/alpha/jmpbuf-unwind.h: New file, moved from nptl/. * sysdeps/alpha/jmpbuf-unwind.h: New file, moved from nptl/.
* sysdeps/i386/jmpbuf-unwind.h: New file, moved from nptl/. * sysdeps/i386/jmpbuf-unwind.h: New file, moved from nptl/.
* sysdeps/ia64/jmpbuf-unwind.h: New file, moved from nptl/.
* sysdeps/mips/jmpbuf-unwind.h: New file, moved from nptl/. * sysdeps/mips/jmpbuf-unwind.h: New file, moved from nptl/.
* sysdeps/powerpc/jmpbuf-unwind.h: New file, moved from nptl/. * sysdeps/powerpc/jmpbuf-unwind.h: New file, moved from nptl/.
* sysdeps/s390/jmpbuf-unwind.h: New file, moved from nptl/. * sysdeps/s390/jmpbuf-unwind.h: New file, moved from nptl/.

View File

@ -9,6 +9,7 @@
* sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise. * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
* sysdeps/sparc/sparc64/jmpbuf-unwind.h: Likewise. * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Likewise.
* sysdeps/x86_64/jmpbuf-unwind.h: Likewise. * sysdeps/x86_64/jmpbuf-unwind.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
2006-01-09 Roland McGrath <roland@redhat.com> 2006-01-09 Roland McGrath <roland@redhat.com>

View File

@ -1,5 +1,5 @@
/* Define the machine-dependent type `jmp_buf'. Alpha version. /* Define the machine-dependent type `jmp_buf'. Alpha version.
Copyright (C) 1992, 1997, 2003, 2005 Free Software Foundation, Inc. Copyright (C) 1992,1997,2003,2005,2006 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
@ -77,11 +77,6 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
typedef long int __jmp_buf[17]; typedef long int __jmp_buf[17];
/* Test if longjmp to JMPBUF would unwind the frame containing a local
variable at ADDRESS. */
#define _JMPBUF_UNWINDS(_jmpbuf, _address, _demangle) \
((void *)(_address) < (void *) _demangle ((_jmpbuf)[JB_SP]))
#endif #endif
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -22,6 +22,11 @@
#include <unwind.h> #include <unwind.h>
#include <sysdep.h> #include <sysdep.h>
/* Test if longjmp to JMPBUF would unwind the frame containing a local
variable at ADDRESS. */
#define _JMPBUF_UNWINDS(_jmpbuf, _address, _demangle) \
((void *)(_address) < (void *) _demangle ((_jmpbuf)[JB_SP]))
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2000, 2005 Free Software Foundation, Inc. /* Copyright (C) 2000, 2005, 2006 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
@ -37,10 +37,4 @@
typedef double __jmp_buf[21]; typedef double __jmp_buf[21];
#endif #endif
/* Test if longjmp to JMPBUF would unwind the frame containing a local
variable at ADDRESS. */
#define _JMPBUF_UNWINDS(_jmpbuf, _address, _demangle) \
((void *) (_address) > \
(void *) _demangle ((((unsigned long *) _jmpbuf)[JB_SP])))
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -0,0 +1,26 @@
/* Examine __jmp_buf for unwinding frames. 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. */
#include <setjmp.h>
/* Test if longjmp to JMPBUF would unwind the frame containing a local
variable at ADDRESS. */
#define _JMPBUF_UNWINDS(_jmpbuf, _address, _demangle) \
((void *) (_address) > \
(void *) _demangle ((((unsigned long *) _jmpbuf)[JB_SP])))

View File

@ -1,4 +1,5 @@
/* Copyright (C) 1997, 1998, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. /* Copyright (C) 1997,1998,2000,2001,2003,2005,2006
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
@ -38,9 +39,4 @@
typedef int __jmp_buf[6]; typedef int __jmp_buf[6];
#endif #endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[JB_SP]))
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -22,6 +22,11 @@
#include <unwind.h> #include <unwind.h>
#include <sysdep.h> #include <sysdep.h>
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[JB_SP]))
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. /* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
@ -21,6 +21,11 @@
#include <stdint.h> #include <stdint.h>
#include <unwind.h> #include <unwind.h>
/* Test if longjmp to JMPBUF would unwind the frame containing a local
variable at ADDRESS. */
#define _JMPBUF_UNWINDS(_jmpbuf, _address, _demangle) \
((void *) (_address) < (void *) (((long int *) _jmpbuf)[0]))
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
({ uintptr_t _cfa = (uintptr_t) _Unwind_GetCFA (_context) - (_adj); \ ({ uintptr_t _cfa = (uintptr_t) _Unwind_GetCFA (_context) - (_adj); \
(_cfa < (uintptr_t)(((long *)(_jmpbuf))[0]) - (_adj) \ (_cfa < (uintptr_t)(((long *)(_jmpbuf))[0]) - (_adj) \

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc. /* Copyright (C) 1997,1998,2005,2006 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
@ -42,9 +42,4 @@ typedef struct
} __jmp_buf[1]; } __jmp_buf[1];
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)->__sp))
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -0,0 +1,25 @@
/* Examine __jmp_buf for unwinding frames. m68k 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. */
#include <setjmp.h>
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)->__sp))

View File

@ -1,5 +1,5 @@
/* Define the machine-dependent type `jmp_buf'. MIPS version. /* Define the machine-dependent type `jmp_buf'. MIPS version.
Copyright (C) 1992, 1993, 1995, 1997, 2000, 2002, 2003, 2004, 2005 Copyright (C) 1992,1993,1995,1997,2000,2002,2003,2004,2005,2006
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -77,10 +77,4 @@ typedef struct
# define JB_PC 0 # define JB_PC 0
#endif #endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[0].__sp))
#endif /* _MIPS_BITS_SETJMP_H */ #endif /* _MIPS_BITS_SETJMP_H */

View File

@ -21,6 +21,11 @@
#include <unwind.h> #include <unwind.h>
#include <sysdep.h> #include <sysdep.h>
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[0].__sp))
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)

View File

@ -1,4 +1,5 @@
/* Copyright (C) 1997, 1998, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. /* Copyright (C) 1997,1998,2000,2003,2004,2005,2006
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
@ -72,9 +73,4 @@ typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16)));
# endif # endif
#endif #endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[JB_GPR1]))
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -22,6 +22,11 @@
#include <unwind.h> #include <unwind.h>
#include <sysdep.h> #include <sysdep.h>
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[JB_GPR1]))
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2000, 2001, 2002, 2005 Free Software Foundation, Inc. /* Copyright (C) 2000,2001,2002,2005,2006 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
@ -55,9 +55,4 @@ typedef struct __s390_jmp_buf {
#endif #endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)->__gregs[__JB_GPR15]))
#endif /* __S390_SETJMP_H__ */ #endif /* __S390_SETJMP_H__ */

View File

@ -23,6 +23,13 @@
#include <bits/wordsize.h> #include <bits/wordsize.h>
#include <sysdep.h> #include <sysdep.h>
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)->__gregs[__JB_GPR15]))
/* On s390{,x}, CFA is always 96 (resp. 160) bytes above actual /* On s390{,x}, CFA is always 96 (resp. 160) bytes above actual
%r15. */ %r15. */
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1999, 2000, 2003, 2005 Free Software Foundation, Inc. /* Copyright (C) 1999,2000,2003,2005,2006 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
@ -48,9 +48,4 @@ typedef struct
# define JB_SIZE (4 * 15) # define JB_SIZE (4 * 15)
#endif #endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[0].__regs[7]))
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -22,6 +22,11 @@
#include <unwind.h> #include <unwind.h>
#include <sysdep.h> #include <sysdep.h>
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[0].__regs[7]))
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc. /* Copyright (C) 1997, 1998, 2005, 2006 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
@ -31,8 +31,3 @@
#ifndef _ASM #ifndef _ASM
typedef int __jmp_buf[3]; typedef int __jmp_buf[3];
#endif #endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((int) (address) < demangle ((jmpbuf)[JB_SP]))

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. /* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
@ -22,6 +22,11 @@
#include <unwind.h> #include <unwind.h>
#include <sysdep.h> #include <sysdep.h>
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((int) (address) < demangle ((jmpbuf)[JB_SP]))
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)

View File

@ -21,6 +21,11 @@
#include <stdint.h> #include <stdint.h>
#include <unwind.h> #include <unwind.h>
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp + 2047)
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)

View File

@ -1,5 +1,5 @@
/* Define the machine-dependent type `jmp_buf'. Linux/IA-64 version. /* Define the machine-dependent type `jmp_buf'. Linux/IA-64 version.
Copyright (C) 1999, 2000, 2003, 2005 Free Software Foundation, Inc. Copyright (C) 1999,2000,2003,2005,2006 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>. Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
@ -32,9 +32,4 @@
/* the __jmp_buf element type should be __float80 per ABI... */ /* the __jmp_buf element type should be __float80 per ABI... */
typedef long __jmp_buf[_JBLEN] __attribute__ ((aligned (16))); /* guarantees 128-bit alignment! */ typedef long __jmp_buf[_JBLEN] __attribute__ ((aligned (16))); /* guarantees 128-bit alignment! */
/* Test if longjmp to JMPBUF would unwind the frame containing a local
variable at ADDRESS. */
#define _JMPBUF_UNWINDS(_jmpbuf, _address, _demangle) \
((void *) (_address) < (void *) (((long int *) _jmpbuf)[0]))
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -58,11 +58,6 @@ typedef struct __sparc64_jmp_buf
} __jmp_buf[1]; } __jmp_buf[1];
#endif #endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp + 2047)
#else #else
#if defined __USE_MISC || defined _ASM #if defined __USE_MISC || defined _ASM
@ -75,11 +70,6 @@ typedef struct __sparc64_jmp_buf
typedef int __jmp_buf[3]; typedef int __jmp_buf[3];
#endif #endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((int) (address) < demangle ((jmpbuf)[JB_SP]))
#endif #endif
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. /* Copyright (C) 2001,2002,2003,2005,2006 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
@ -64,15 +64,4 @@ typedef long int __jmp_buf[8];
typedef int __jmp_buf[6]; typedef int __jmp_buf[6];
# endif # endif
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
# if __WORDSIZE == 64
# define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[JB_RSP]))
# else
# define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[JB_SP]))
# endif
#endif
#endif /* bits/setjmp.h */ #endif /* bits/setjmp.h */

View File

@ -22,6 +22,11 @@
#include <unwind.h> #include <unwind.h>
#include <sysdep.h> #include <sysdep.h>
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((void *) (address) < (void *) demangle ((jmpbuf)[JB_RSP]))
#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
_JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)