diff options
-rw-r--r-- | nptl/ChangeLog | 6 | ||||
-rw-r--r-- | nptl/forward.c | 21 |
2 files changed, 21 insertions, 6 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 34f4ce17bd..0b7c5e7e78 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,9 @@ +2012-01-11 Marek Polacek <polacek@redhat.com> + + * forward.c (FORWARD_NORETURN): Define macro. + (__pthread_unwind): Use FORWARD_NORETURN macro to avoid warning. + (__pthread_exit): Likewise. + 2012-01-10 Ulrich Drepper <drepper@gmail.com> * sysdeps/pthread/pthread.h: Add const attribute to pthread_equal. diff --git a/nptl/forward.c b/nptl/forward.c index b62efd86f8..18e190138d 100644 --- a/nptl/forward.c +++ b/nptl/forward.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004, 2007, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. @@ -42,6 +42,17 @@ name decl \ return PTHFCT_CALL (ptr_##name, params); \ } +/* Same as FORWARD2, only without return. */ +#define FORWARD_NORETURN(name, rettype, decl, params, defaction) \ +rettype \ +name decl \ +{ \ + if (!__libc_pthread_functions_init) \ + defaction; \ + \ + PTHFCT_CALL (ptr_##name, params); \ +} + #define FORWARD(name, decl, params, defretval) \ FORWARD2 (name, int, decl, params, return defretval) @@ -160,8 +171,8 @@ FORWARD (pthread_equal, (pthread_t thread1, pthread_t thread2), (thread1, thread2), 1) -/* Use an alias to avoid warning, as pthread_exit is declared noreturn. */ -FORWARD2 (__pthread_exit, void, (void *retval), (retval), exit (EXIT_SUCCESS)) +FORWARD_NORETURN (__pthread_exit, void, (void *retval), (retval), + exit (EXIT_SUCCESS)) strong_alias (__pthread_exit, pthread_exit); @@ -192,8 +203,7 @@ FORWARD (pthread_setcancelstate, (int state, int *oldstate), (state, oldstate), FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0) -#define return /* value is void */ -FORWARD2(__pthread_unwind, +FORWARD_NORETURN(__pthread_unwind, void attribute_hidden __attribute ((noreturn)) __cleanup_fct_attribute attribute_compat_text_section, (__pthread_unwind_buf_t *buf), (buf), { @@ -201,4 +211,3 @@ FORWARD2(__pthread_unwind, INTERNAL_SYSCALL_DECL (err); INTERNAL_SYSCALL (kill, err, 1, SIGKILL); }) -#undef return |