aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2011-11-11 10:29:08 +0100
committerAndreas Schwab <schwab@redhat.com>2011-11-11 11:11:07 +0100
commitedc5984d4d18296d7aa3d8f4ed8f7336a743170e (patch)
tree7d594b20d25452b3b51a4de37e55ca05c20c31a5
parent77cdc054e02069d72dcf54a9ad7d7df3a24bcb01 (diff)
downloadglibc-edc5984d4d18296d7aa3d8f4ed8f7336a743170e.zip
glibc-edc5984d4d18296d7aa3d8f4ed8f7336a743170e.tar.gz
glibc-edc5984d4d18296d7aa3d8f4ed8f7336a743170e.tar.bz2
Mark setjmp and ucontext functions as non-leaf
-rw-r--r--ChangeLog7
-rw-r--r--misc/sys/cdefs.h4
-rw-r--r--setjmp/bits/setjmp2.h22
-rw-r--r--setjmp/setjmp.h14
-rw-r--r--stdlib/ucontext.h10
5 files changed, 34 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index edd7dd8..988afe9 100644
--- 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.
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index 16cf557..c856e87 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -192,9 +192,13 @@
# 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
diff --git a/setjmp/bits/setjmp2.h b/setjmp/bits/setjmp2.h
index b2f8efa..ad65d25 100644
--- a/setjmp/bits/setjmp2.h
+++ b/setjmp/bits/setjmp2.h
@@ -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
@@ -23,18 +23,18 @@
/* 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
diff --git a/setjmp/setjmp.h b/setjmp/setjmp.h
index 3bc382f..fd57ab6 100644
--- a/setjmp/setjmp.h
+++ b/setjmp/setjmp.h
@@ -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. */
diff --git a/stdlib/ucontext.h b/stdlib/ucontext.h
index ee6f594..498fb56 100644
--- a/stdlib/ucontext.h
+++ b/stdlib/ucontext.h
@@ -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
@@ -29,15 +29,15 @@
__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