[00/28] glibc-hwcaps support

Message ID cover.1601569371.git.fweimer@redhat.com
Headers show
Series
  • glibc-hwcaps support
Related show

Message

Florian Weimer via Libc-alpha Oct. 1, 2020, 4:31 p.m.
This is a rebase of the previous patch series.  I adjusted it for the
--argv0 ld.so change, added POWER10 support, and switched to the real
subdirectory names in the x86-64 psABI.

I think the patches up to “elf: Enhance ld.so --help to print HWCAP
subdirectories” are useful on their own because they add diagnostics for
existing functionality.  The ld.so.cache extension mechanism and the
string table are also fairly independent parts.

What's still missing?

* documentation (including NEWS file updates)
* negative caching of missing glibc-hwcaps subdirectories (in bulk)
* tests

I would like to work on these aspects in parallel to the patch reviews.
(Lack of negative caching makes it obvious what's going on with strace,
so it's perhaps even helpful that it's currently missing.)

Support in GCC has landed earlier this week:

  <https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=324bec558e95584e>

I filed a separate LLVM bug, but do not plan to work on it for now:

  <https://bugs.llvm.org/show_bug.cgi?id=47686>

Thanks,
Florian

Florian Weimer (28):
  elf: Do not search HWCAP subdirectories in statically linked binaries
  elf: Implement __rtld_malloc_is_full
  elf: Implement _dl_write
  elf: Extract command-line/environment variables state from rtld.c
  elf: Move ld.so error/help output to _dl_usage
  elf: Record whether paths come from LD_LIBRARY_PATH or --library-path
  elf: Implement ld.so --help
  elf: Implement ld.so --version
  scripts/update-copyrights: Update csu/version.c, elf/dl-usage.c
  elf: Use the term "program interpreter" in the ld.so help message
  elf: Print the full name of the dynamic loader in the ld.so help
    message
  elf: Make __rtld_env_path_list and __rtld_search_dirs global variables
  elf: Add library search path information to ld.so --help
  elf: Enhance ld.so --help to print HWCAP subdirectories
  elf: Do not pass GLRO(dl_platform), GLRO(dl_platformlen) to
    _dl_important_hwcaps
  elf: Add glibc-hwcaps support for LD_LIBRARY_PATH
  x86_64: Add glibc-hwcaps support
  powerpc64le: Add glibc-hwcaps support
  s390x: Add Add glibc-hwcaps support
  aarch64: Add glibc-hwcaps support
  elf: Add endianness markup to ld.so.cache
  elf: Add extension mechanism to ld.so.cache
  elf: Unify old and new format cache handling code in ld.so
  elf: Implement a string table for ldconfig, with tail merging
  elf: Implement tail merging of strings in ldconfig
  elf: In ldconfig, extract the new_sub_entry function from search_dir
  elf: Process glibc-hwcaps subdirectories in ldconfig
  elf: Add glibc-hwcaps subdirectory support to ld.so cache processing

 NEWS                                          |   4 +
 elf/Makefile                                  |  22 +-
 elf/cache.c                                   | 400 +++++++++++++--
 elf/dl-cache.c                                | 483 ++++++++++++------
 elf/dl-hwcaps-subdirs.c                       |  29 ++
 elf/dl-hwcaps.c                               | 225 +++++++-
 elf/dl-hwcaps.h                               | 102 ++++
 elf/dl-hwcaps_split.c                         |  77 +++
 elf/dl-load.c                                 |  75 +--
 elf/dl-main.h                                 | 120 +++++
 elf/dl-minimal.c                              |   8 +
 elf/dl-support.c                              |   5 +-
 elf/dl-usage.c                                | 268 ++++++++++
 elf/dl-write.c                                |  56 ++
 elf/ldconfig.c                                | 187 +++++--
 elf/rtld.c                                    | 251 ++++-----
 elf/stringtable.c                             | 201 ++++++++
 elf/stringtable.h                             |  61 +++
 elf/stringtable_free.c                        |  32 ++
 elf/tst-dl-hwcaps_split.c                     | 139 +++++
 elf/tst-stringtable.c                         | 140 +++++
 include/link.h                                |   4 +
 include/rtld-malloc.h                         |   4 +
 scripts/update-copyrights                     |   6 +
 sysdeps/aarch64/dl-hwcaps-subdirs.c           |  31 ++
 sysdeps/generic/dl-cache.h                    | 232 ++++++++-
 sysdeps/generic/ldconfig.h                    |  18 +-
 sysdeps/generic/ldsodefs.h                    |  34 +-
 .../powerpc/powerpc64/le/dl-hwcaps-subdirs.c  |  34 ++
 sysdeps/s390/s390-64/dl-hwcaps-subdirs.c      |  54 ++
 sysdeps/unix/sysv/linux/dl-write.c            |  30 ++
 sysdeps/x86_64/dl-hwcaps-subdirs.c            |  69 +++
 32 files changed, 2977 insertions(+), 424 deletions(-)
 create mode 100644 elf/dl-hwcaps-subdirs.c
 create mode 100644 elf/dl-hwcaps_split.c
 create mode 100644 elf/dl-main.h
 create mode 100644 elf/dl-usage.c
 create mode 100644 elf/dl-write.c
 create mode 100644 elf/stringtable.c
 create mode 100644 elf/stringtable.h
 create mode 100644 elf/stringtable_free.c
 create mode 100644 elf/tst-dl-hwcaps_split.c
 create mode 100644 elf/tst-stringtable.c
 create mode 100644 sysdeps/aarch64/dl-hwcaps-subdirs.c
 create mode 100644 sysdeps/powerpc/powerpc64/le/dl-hwcaps-subdirs.c
 create mode 100644 sysdeps/s390/s390-64/dl-hwcaps-subdirs.c
 create mode 100644 sysdeps/unix/sysv/linux/dl-write.c
 create mode 100644 sysdeps/x86_64/dl-hwcaps-subdirs.c

-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill

Comments

Florian Weimer via Libc-alpha Oct. 1, 2020, 4:50 p.m. | #1
On Thu, Oct 1, 2020 at 9:32 AM Florian Weimer via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>

> This is a rebase of the previous patch series.  I adjusted it for the

> --argv0 ld.so change, added POWER10 support, and switched to the real

> subdirectory names in the x86-64 psABI.

>

> I think the patches up to “elf: Enhance ld.so --help to print HWCAP

> subdirectories” are useful on their own because they add diagnostics for

> existing functionality.  The ld.so.cache extension mechanism and the

> string table are also fairly independent parts.

>

> What's still missing?

>

> * documentation (including NEWS file updates)

> * negative caching of missing glibc-hwcaps subdirectories (in bulk)

> * tests

>

> I would like to work on these aspects in parallel to the patch reviews.

> (Lack of negative caching makes it obvious what's going on with strace,

> so it's perhaps even helpful that it's currently missing.)

>

> Support in GCC has landed earlier this week:

>

>   <https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=324bec558e95584e>

>

> I filed a separate LLVM bug, but do not plan to work on it for now:

>

>   <https://bugs.llvm.org/show_bug.cgi?id=47686>

>

> Thanks,

> Florian


Do you have a public git branch to share?

-- 
H.J.
Florian Weimer via Libc-alpha Oct. 1, 2020, 4:54 p.m. | #2
* H. J. Lu:

> Do you have a public git branch to share?


Sure, I've pushed the series to fw/glibc-hwcaps on sourceware.

Thanks,
Florian
-- 
Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn,
Commercial register: Amtsgericht Muenchen, HRB 153243,
Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill