diff --git a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h index 437ef1f9ba..1ce0bd0736 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h @@ -35,11 +35,15 @@ typedef unsigned long int pthread_t; -typedef union __pthread_attr +union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; -} pthread_attr_t; +}; +#ifndef __have_pthread_attr_t +typedef union __pthread_attr pthread_attr_t; +# define __have_pthread_attr_t 1 +#endif typedef struct __pthread_internal_slist diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h index 69bd97bd99..1761bf03b0 100644 --- a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h @@ -49,11 +49,15 @@ typedef unsigned long int pthread_t; -typedef union __pthread_attr +union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; -} pthread_attr_t; +}; +#ifndef __have_pthread_attr_t +typedef union __pthread_attr pthread_attr_t; +# define __have_pthread_attr_t 1 +#endif #if __WORDSIZE == 64 diff --git a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h index d87a635dc4..c64b14f7cd 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h @@ -48,11 +48,15 @@ typedef unsigned long int pthread_t; -typedef union __pthread_attr +union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; -} pthread_attr_t; +}; +#ifndef __have_pthread_attr_t +typedef union __pthread_attr pthread_attr_t; +# define __have_pthread_attr_t 1 +#endif #if __WORDSIZE == 64 diff --git a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h index 34b07921fd..a1ef92b5ad 100644 --- a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h @@ -37,11 +37,15 @@ typedef unsigned long int pthread_t; -typedef union __pthread_attr +union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; -} pthread_attr_t; +}; +#ifndef __have_pthread_attr_t +typedef union __pthread_attr pthread_attr_t; +# define __have_pthread_attr_t 1 +#endif typedef struct __pthread_internal_slist diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h index 2cfaadbacb..60f5d4d409 100644 --- a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h @@ -49,11 +49,15 @@ typedef unsigned long int pthread_t; -typedef union __pthread_attr +union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; -} pthread_attr_t; +}; +#ifndef __have_pthread_attr_t +typedef union __pthread_attr pthread_attr_t; +# define __have_pthread_attr_t 1 +#endif #if __WORDSIZE == 64 diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h index 7cbb200a8f..0b0f9393f7 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h @@ -48,11 +48,15 @@ typedef unsigned long int pthread_t; -typedef union __pthread_attr +union __pthread_attr { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; -} pthread_attr_t; +}; +#ifndef __have_pthread_attr_t +typedef union __pthread_attr pthread_attr_t; +# define __have_pthread_attr_t 1 +#endif #if __WORDSIZE == 64 diff --git a/sysdeps/unix/sysv/linux/bits/siginfo.h b/sysdeps/unix/sysv/linux/bits/siginfo.h index 0635e2f106..08713fcd64 100644 --- a/sysdeps/unix/sysv/linux/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/bits/siginfo.h @@ -270,7 +270,10 @@ enum # endif /* Forward declaration. */ +# ifndef __have_pthread_attr_t typedef union __pthread_attr pthread_attr_t; +# define __have_pthread_attr_t 1 +# endif typedef struct sigevent { diff --git a/sysdeps/unix/sysv/linux/s390/bits/siginfo.h b/sysdeps/unix/sysv/linux/s390/bits/siginfo.h index a4a07ecfdb..4b717947ad 100644 --- a/sysdeps/unix/sysv/linux/s390/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/s390/bits/siginfo.h @@ -271,6 +271,12 @@ enum # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3) # endif +/* Forward declaration. */ +# ifndef __have_pthread_attr_t +typedef union __pthread_attr pthread_attr_t; +# define __have_pthread_attr_t 1 +# endif + typedef struct sigevent { sigval_t sigev_value; @@ -288,7 +294,7 @@ typedef struct sigevent struct { void (*_function) (sigval_t); /* Function to start. */ - void *_attribute; /* Really pthread_attr_t. */ + pthread_attr_t *_attribute; /* Thread attributes. */ } _sigev_thread; } _sigev_un; } sigevent_t; diff --git a/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h b/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h index 3634b55c08..5e12da4bf1 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h @@ -278,6 +278,12 @@ enum # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3) # endif +/* Forward declaration. */ +# ifndef __have_pthread_attr_t +typedef union __pthread_attr pthread_attr_t; +# define __have_pthread_attr_t 1 +# endif + typedef struct sigevent { sigval_t sigev_value; @@ -295,7 +301,7 @@ typedef struct sigevent struct { void (*_function) (sigval_t); /* Function to start. */ - void *_attribute; /* Really pthread_attr_t. */ + pthread_attr_t *_attribute; /* Thread attributes. */ } _sigev_thread; } _sigev_un; } sigevent_t;