Mark setjmp and ucontext functions as non-leaf
authorAndreas Schwab <schwab@redhat.com>
Fri, 11 Nov 2011 09:29:08 +0000 (10:29 +0100)
committerAndreas Schwab <schwab@redhat.com>
Fri, 11 Nov 2011 10:11:07 +0000 (11:11 +0100)
ChangeLog
misc/sys/cdefs.h
setjmp/bits/setjmp2.h
setjmp/setjmp.h
stdlib/ucontext.h

index edd7dd8..988afe9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-11-11  Andreas Schwab  <schwab@redhat.com>
+
+       * misc/sys/cdefs.h (__REDIRECT_NTHNL): Define.
+       * setjmp/setjmp.h: Mark functions as non-leaf.
+       * setjmp/bits/setjmp2.h: Likewise.
+       * stdlib/ucontext.h: Likewise.
+
 2011-11-10  Andreas Schwab  <schwab@redhat.com>
 
        * malloc/arena.c (_int_new_arena): Don't increment narenas.
index 16cf557..c856e87 100644 (file)
 # ifdef __cplusplus
 #  define __REDIRECT_NTH(name, proto, alias) \
      name proto __THROW __asm__ (__ASMNAME (#alias))
+#  define __REDIRECT_NTHNL(name, proto, alias) \
+     name proto __THROWNL __asm__ (__ASMNAME (#alias))
 # else
 #  define __REDIRECT_NTH(name, proto, alias) \
      name proto __asm__ (__ASMNAME (#alias)) __THROW
+#  define __REDIRECT_NTHNL(name, proto, alias) \
+     name proto __asm__ (__ASMNAME (#alias)) __THROWNL
 # endif
 # define __ASMNAME(cname)  __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
 # define __ASMNAME2(prefix, cname) __STRING (prefix) cname
index b2f8efa..ad65d25 100644 (file)
@@ -1,5 +1,5 @@
 /* Checking macros for setjmp functions.
-   Copyright (C) 2009 Free Software Foundation, Inc.
+   Copyright (C) 2009, 2011 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
 
 /* Variant of the longjmp functions which perform some sanity checking.  */
 #ifdef __REDIRECT_NTH
-extern void __REDIRECT_NTH (longjmp,
-                           (struct __jmp_buf_tag __env[1], int __val),
-                           __longjmp_chk) __attribute__ ((__noreturn__));
-extern void __REDIRECT_NTH (_longjmp,
-                           (struct __jmp_buf_tag __env[1], int __val),
-                           __longjmp_chk) __attribute__ ((__noreturn__));
-extern void __REDIRECT_NTH (siglongjmp,
-                           (struct __jmp_buf_tag __env[1], int __val),
-                           __longjmp_chk) __attribute__ ((__noreturn__));
+extern void __REDIRECT_NTHNL (longjmp,
+                             (struct __jmp_buf_tag __env[1], int __val),
+                             __longjmp_chk) __attribute__ ((__noreturn__));
+extern void __REDIRECT_NTHNL (_longjmp,
+                             (struct __jmp_buf_tag __env[1], int __val),
+                             __longjmp_chk) __attribute__ ((__noreturn__));
+extern void __REDIRECT_NTHNL (siglongjmp,
+                             (struct __jmp_buf_tag __env[1], int __val),
+                             __longjmp_chk) __attribute__ ((__noreturn__));
 #else
 extern void __longjmp_chk (struct __jmp_buf_tag __env[1], int __val),
-     __THROW __attribute__ ((__noreturn__));
+     __THROWNL __attribute__ ((__noreturn__));
 # define longjmp __longjmp_chk
 # define _longjmp __longjmp_chk
 # define siglongjmp __longjmp_chk
index 3bc382f..fd57ab6 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999,2001,2002,2007,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1999,2001,2002,2007,2009,2011 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
@@ -50,19 +50,19 @@ typedef struct __jmp_buf_tag jmp_buf[1];
 
 /* Store the calling environment in ENV, also saving the signal mask.
    Return 0.  */
-extern int setjmp (jmp_buf __env) __THROW;
+extern int setjmp (jmp_buf __env) __THROWNL;
 
 __END_NAMESPACE_STD
 
 /* Store the calling environment in ENV, also saving the
    signal mask if SAVEMASK is nonzero.  Return 0.
    This is the internal name for `sigsetjmp'.  */
-extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROW;
+extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROWNL;
 
 #ifndef        __FAVOR_BSD
 /* Store the calling environment in ENV, not saving the signal mask.
    Return 0.  */
-extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROW;
+extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL;
 
 /* Do not save the signal mask.  This is equivalent to the `_setjmp'
    BSD function.  */
@@ -80,7 +80,7 @@ __BEGIN_NAMESPACE_STD
 /* Jump to the environment saved in ENV, making the
    `setjmp' call there return VAL, or 1 if VAL is 0.  */
 extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
-     __THROW __attribute__ ((__noreturn__));
+     __THROWNL __attribute__ ((__noreturn__));
 
 __END_NAMESPACE_STD
 
@@ -89,7 +89,7 @@ __END_NAMESPACE_STD
    the signal mask.  But it is how ENV was saved that determines whether
    `longjmp' restores the mask; `_longjmp' is just an alias.  */
 extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
-     __THROW __attribute__ ((__noreturn__));
+     __THROWNL __attribute__ ((__noreturn__));
 #endif
 
 
@@ -108,7 +108,7 @@ typedef struct __jmp_buf_tag sigjmp_buf[1];
    Restore the signal mask if that sigsetjmp call saved it.
    This is just an alias `longjmp'.  */
 extern void siglongjmp (sigjmp_buf __env, int __val)
-     __THROW __attribute__ ((__noreturn__));
+     __THROWNL __attribute__ ((__noreturn__));
 #endif /* Use POSIX.  */
 
 
index ee6f594..498fb56 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2011 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
 __BEGIN_DECLS
 
 /* Get user context and store it in variable pointed to by UCP.  */
-extern int getcontext (ucontext_t *__ucp) __THROW;
+extern int getcontext (ucontext_t *__ucp) __THROWNL;
 
 /* Set user context from information of variable pointed to by UCP.  */
-extern int setcontext (__const ucontext_t *__ucp) __THROW;
+extern int setcontext (__const ucontext_t *__ucp) __THROWNL;
 
 /* Save current context in context variable pointed to by OUCP and set
    context from variable pointed to by UCP.  */
 extern int swapcontext (ucontext_t *__restrict __oucp,
-                       __const ucontext_t *__restrict __ucp) __THROW;
+                       __const ucontext_t *__restrict __ucp) __THROWNL;
 
 /* Manipulate user context UCP to continue with calling functions FUNC
    and the ARGC-1 parameters following ARGC when the context is used
@@ -46,7 +46,7 @@ extern int swapcontext (ucontext_t *__restrict __oucp,
    We cannot say anything about the parameters FUNC takes; `void'
    is as good as any other choice.  */
 extern void makecontext (ucontext_t *__ucp, void (*__func) (void),
-                        int __argc, ...) __THROW;
+                        int __argc, ...) __THROWNL;
 
 __END_DECLS