[00/13] Linux: Move most stack management out of libpthread

Message ID cover.1620323953.git.fweimer@redhat.com
Headers
Series Linux: Move most stack management out of libpthread |

Message

Florian Weimer May 6, 2021, 6:08 p.m. UTC
  This incorporates the previous “nptl: Remove delayed rtld lock
initialization” series.

Tested on i686-linux-gnu and x86_64-linux-gnu.  Built with
build-many-glibcs.py.

Thanks,
Florian

Florian Weimer (13):
  scripts/versions.awk: Add strings and hashes to <first-versions.h>
  elf, nptl: Resolve recursive lock implementation early
  nptl: Export __libc_multiple_threads from libc as an internal symbol
  Linux: Explicitly disable cancellation checking in the dynamic loader
  Linux: Simplify and fix the definition of SINGLE_THREAD_P
  nptl: Eliminate __pthread_multiple_threads
  elf: Introduce __tls_pre_init_tp
  nptl: Move more stack management variables into _rtld_global
  nptl: Simplify the change_stack_perm calling convention
  nptl: Move changing of stack permissions into ld.so
  nptl: Simplify resetting the in-flight stack in __reclaim_stacks
  nptl: Move __default_pthread_attr, __default_pthread_attr_lock into
    libc
  Linux: Move __reclaim_stacks into the fork implementation in libc

 csu/libc-tls.c                          |   2 +
 elf/Makefile                            |   3 +-
 elf/dl-load.c                           |   4 +
 elf/dl-mutex.c                          |  19 ++
 elf/dl-support.c                        |  13 +-
 elf/dl-tls_init_tp.c                    |  29 +++
 elf/rtld.c                              |  34 +---
 nptl/Makefile                           |   2 +-
 nptl/Versions                           |   4 +-
 nptl/allocatestack.c                    | 227 ++----------------------
 nptl/libc_multiple_threads.c            |   3 +-
 nptl/libc_pthread_init.c                |  11 --
 nptl/nptl-init.c                        |  24 ---
 nptl/pthreadP.h                         |  33 ++--
 nptl/pthread_cancel.c                   |   2 +-
 nptl/vars.c                             |  15 +-
 scripts/versions.awk                    |  36 ++++
 sysdeps/generic/ldsodefs.h              |  51 +++++-
 sysdeps/nptl/dl-mutex.c                 |  53 ++++++
 sysdeps/nptl/dl-tls_init_tp.c           |  26 ++-
 sysdeps/nptl/fork.c                     | 110 ++++++++++++
 sysdeps/nptl/libc-lockP.h               |  17 +-
 sysdeps/unix/sysdep.h                   |  11 +-
 sysdeps/unix/sysv/linux/Versions        |   6 +
 sysdeps/unix/sysv/linux/dl-execstack.c  |  76 +++++++-
 sysdeps/unix/sysv/linux/single-thread.h |  42 ++---
 26 files changed, 481 insertions(+), 372 deletions(-)
 create mode 100644 elf/dl-mutex.c
 create mode 100644 sysdeps/nptl/dl-mutex.c
  

Comments

Carlos O'Donell May 9, 2021, 9:42 p.m. UTC | #1
On 5/6/21 2:08 PM, Florian Weimer via Libc-alpha wrote:
> This incorporates the previous “nptl: Remove delayed rtld lock
> initialization” series.
> 
> Tested on i686-linux-gnu and x86_64-linux-gnu.  Built with
> build-many-glibcs.py.

This is certainly more complicated than your other series of patches
and involves some reorganizing that is needed for the libpthread merge.

Overall this looks good to me. Thanks for continuing the cleanup.

I tested on x86_64 and i686 with the recent changes compiler warning
changes reverted to allow the build to succeed.

Tested on x86_64 and i686 without regression.

Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>

> Florian Weimer (13):
>   scripts/versions.awk: Add strings and hashes to <first-versions.h>
>   elf, nptl: Resolve recursive lock implementation early
>   nptl: Export __libc_multiple_threads from libc as an internal symbol
>   Linux: Explicitly disable cancellation checking in the dynamic loader
>   Linux: Simplify and fix the definition of SINGLE_THREAD_P
>   nptl: Eliminate __pthread_multiple_threads
>   elf: Introduce __tls_pre_init_tp
>   nptl: Move more stack management variables into _rtld_global
>   nptl: Simplify the change_stack_perm calling convention
>   nptl: Move changing of stack permissions into ld.so
>   nptl: Simplify resetting the in-flight stack in __reclaim_stacks
>   nptl: Move __default_pthread_attr, __default_pthread_attr_lock into
>     libc
>   Linux: Move __reclaim_stacks into the fork implementation in libc
> 
>  csu/libc-tls.c                          |   2 +
>  elf/Makefile                            |   3 +-
>  elf/dl-load.c                           |   4 +
>  elf/dl-mutex.c                          |  19 ++
>  elf/dl-support.c                        |  13 +-
>  elf/dl-tls_init_tp.c                    |  29 +++
>  elf/rtld.c                              |  34 +---
>  nptl/Makefile                           |   2 +-
>  nptl/Versions                           |   4 +-
>  nptl/allocatestack.c                    | 227 ++----------------------
>  nptl/libc_multiple_threads.c            |   3 +-
>  nptl/libc_pthread_init.c                |  11 --
>  nptl/nptl-init.c                        |  24 ---
>  nptl/pthreadP.h                         |  33 ++--
>  nptl/pthread_cancel.c                   |   2 +-
>  nptl/vars.c                             |  15 +-
>  scripts/versions.awk                    |  36 ++++
>  sysdeps/generic/ldsodefs.h              |  51 +++++-
>  sysdeps/nptl/dl-mutex.c                 |  53 ++++++
>  sysdeps/nptl/dl-tls_init_tp.c           |  26 ++-
>  sysdeps/nptl/fork.c                     | 110 ++++++++++++
>  sysdeps/nptl/libc-lockP.h               |  17 +-
>  sysdeps/unix/sysdep.h                   |  11 +-
>  sysdeps/unix/sysv/linux/Versions        |   6 +
>  sysdeps/unix/sysv/linux/dl-execstack.c  |  76 +++++++-
>  sysdeps/unix/sysv/linux/single-thread.h |  42 ++---
>  26 files changed, 481 insertions(+), 372 deletions(-)
>  create mode 100644 elf/dl-mutex.c
>  create mode 100644 sysdeps/nptl/dl-mutex.c
>