This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v2 3/3] nptl: Define __PTHREAD_MUTEX_{NUSERS_AFTER_KIND,USE_UNION}
On 06/11/2017 12:18, H.J. Lu wrote:
> On Fri, Nov 3, 2017 at 8:25 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Thu, Nov 2, 2017 at 5:14 AM, Adhemerval Zanella
>> <adhemerval.zanella@linaro.org> wrote:
>>> Ping.
>>>
>>> On 26/10/2017 15:14, Adhemerval Zanella wrote:
>>>> Changes from previous version:
>>>>
>>>> - Fixed __nusers placement for __PTHREAD_MUTEX_NUSERS_AFTER_KIND.
>>>> - Fixed typos.
>>>>
>>>> ---
>>>>
>>>> This patch adds two new internal defines to set the internal
>>>> pthread_mutex_t layout required by the supported ABIS:
>>>>
>>>> 1. __PTHREAD_MUTEX_NUSERS_AFTER_KIND which control whether to define
>>>> __nusers fields before or after __kind. The preferred value for
>>>> is 0 for new ports and it sets __nusers before __kind.
>>>>
>>>> 2. __PTHREAD_MUTEX_USE_UNION which control whether internal __spins and
>>>> __list members will be place inside an union for linuxthreads
>>>> compatibility. The preferred value is 0 for ports and it sets
>>>> to not use an union to define both fields.
>>>>
>>>> It fixes the wrong offsets value for __kind value on x86_64-linux-gnu-x32.
>>>> Checked with a make check run-built-tests=no on all afected ABIs.
>>>>
>>>> Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
>>>>
>>>> [BZ #22298]
>>>> * nptl/allocatestack.c (allocate_stack): Check if
>>>> __PTHREAD_MUTEX_HAVE_PREV is non-zero, instead if
>>>> __PTHREAD_MUTEX_HAVE_PREV is defined.
>>>> * nptl/descr.h (pthread): Likewise.
>>>> * nptl/nptl-init.c (__pthread_initialize_minimal_internal):
>>>> Likewise.
>>>> * nptl/pthread_create.c (START_THREAD_DEFN): Likewise.
>>>> * sysdeps/nptl/fork.c (__libc_fork): Likewise.
>>>> * sysdeps/nptl/pthread.h (PTHREAD_MUTEX_INITIALIZER): Likewise.
>>>> * sysdeps/nptl/bits/thread-shared-types.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> (__pthread_internal_list): Check __PTHREAD_MUTEX_USE_UNION instead
>>>> of __WORDSIZE for internal layout.
>>>> (__pthread_mutex_s): Check __PTHREAD_MUTEX_NUSERS_AFTER_KIND instead
>>>> of __WORDSIZE for internal __nusers layout and __PTHREAD_MUTEX_USE_UNION
>>>> instead of __WORDSIZE whether to use an union for __spins and __list
>>>> fields.
>>>> (__PTHREAD_MUTEX_HAVE_PREV): Define also for __PTHREAD_MUTEX_USE_UNION
>>>> case.
>>>> * sysdeps/aarch64/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/alpha/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/arm/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/hppa/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/m68k/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/mips/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/nios2/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/s390/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/sh/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/sparc/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/tile/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>>>> * sysdeps/x86/nptl/bits/pthreadtypes-arch.h
>>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>>> defines.
>
>> LGTM.
>>
>> Thanks.
>>
>> --
>> H.J.
>
> Are you going to check in your patches to fix BZ #22298?
>
I think the onyl missing point for the patchset was Florian said
he need to double-check the coverage is adequate [1].
[1] https://sourceware.org/ml/libc-alpha/2017-11/msg00046.html