[PATCH v2] nptl: Fix __USER_LABEL_PREFIX__ concatenation

Carmelo AMOROSO carmelo.amoroso at st.com
Wed Jan 19 09:13:41 UTC 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 1/13/2011 4:27 PM, Will Newton wrote:
> The current C macro magic does not correctly concatenate the
> __USER_LABEL_PREFIX__ string on architectures where it has a
> non-empty value. We need to use __stringify to get the desired
> behaviour.
> 
> Signed-off-by: Will Newton <will.newton at imgtec.com>
> ---
> libpthread/nptl/pthreadP.h | 14 ++++++++------
> 1 files changed, 8 insertions(+), 6 deletions(-)
> 
> v2:
> - Use __stringify instead of hand rolled macro.
> 
> diff --git a/libpthread/nptl/pthreadP.h b/libpthread/nptl/pthreadP.h
> index c45bd11..fbac7d0 100644
> --- a/libpthread/nptl/pthreadP.h
> +++ b/libpthread/nptl/pthreadP.h
> @@ -274,6 +274,8 @@ __do_cancel (void)
> #define CANCEL_RESET(oldtype) \
> __pthread_disable_asynccancel (oldtype)
> 
> +#define __LABEL_PREFIX__ __stringify(__USER_LABEL_PREFIX__)
> +
> #if !defined NOT_IN_libc
> /* Same as CANCEL_ASYNC, but for use in libc.so. */
> # define LIBC_CANCEL_ASYNC() \
> @@ -282,22 +284,22 @@ __do_cancel (void)
> # define LIBC_CANCEL_RESET(oldtype) \
> __libc_disable_asynccancel (oldtype)
> # define LIBC_CANCEL_HANDLED() \
> - __asm__ (".globl " __USER_LABEL_PREFIX__ "__libc_enable_asynccancel"); \
> - __asm__ (".globl " __USER_LABEL_PREFIX__ "__libc_disable_asynccancel")
> + __asm__ (".globl " __LABEL_PREFIX__ "__libc_enable_asynccancel"); \
> + __asm__ (".globl " __LABEL_PREFIX__ "__libc_disable_asynccancel")
> #elif defined NOT_IN_libc && defined IS_IN_libpthread
> # define LIBC_CANCEL_ASYNC() CANCEL_ASYNC ()
> # define LIBC_CANCEL_RESET(val) CANCEL_RESET (val)
> # define LIBC_CANCEL_HANDLED() \
> - __asm__ (".globl " __USER_LABEL_PREFIX__ "__pthread_enable_asynccancel"); \
> - __asm__ (".globl " __USER_LABEL_PREFIX__ "__pthread_disable_asynccancel")
> + __asm__ (".globl " __LABEL_PREFIX__ "__pthread_enable_asynccancel"); \
> + __asm__ (".globl " __LABEL_PREFIX__ "__pthread_disable_asynccancel")
> #elif defined NOT_IN_libc && defined IS_IN_librt
> # define LIBC_CANCEL_ASYNC() \
> __librt_enable_asynccancel ()
> # define LIBC_CANCEL_RESET(val) \
> __librt_disable_asynccancel (val)
> # define LIBC_CANCEL_HANDLED() \
> - __asm__ (".globl " __USER_LABEL_PREFIX__ "__librt_enable_asynccancel"); \
> - __asm__ (".globl " __USER_LABEL_PREFIX__ "__librt_disable_asynccancel")
> + __asm__ (".globl " __LABEL_PREFIX__ "__librt_enable_asynccancel"); \
> + __asm__ (".globl " __LABEL_PREFIX__ "__librt_disable_asynccancel")
> #else
> # define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */
> # define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */
> --
> 1.7.2.2
> 

looks fine. I'll push.

Carmelo


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk02q0UACgkQoRq/3BrK1s/NcgCfevtzeOkvtupBiejfb1FxE6Lm
OJoAn0qlvhf71ci9x0jRYMziB1ZLZ7pW
=v/WE
-----END PGP SIGNATURE-----


More information about the uClibc mailing list