[v10,0/4] Multiple rtld-audit fixes

Message ID 20220117213136.1327053-1-adhemerval.zanella@linaro.org
Headers
Series Multiple rtld-audit fixes |

Message

Adhemerval Zanella Jan. 17, 2022, 9:31 p.m. UTC
  This patches fixes some of remaining issues brought by John
Mellor-Crummey [1] while trying to use it along with the HPCToolkit.
This should cover all the issues listed as 'Tier 1' [2] (the aarch64
SVE requires additional work, so it is postpone to 2.36) and also
most of the 'Tier2' issue (BZ#28096 inclusive) which prevents the use
of some glibc function that uses TLS internally on the audit module.

I have checked the patches on x86_64, i686, aarch64, armv7, powerpc64,
powerpc64le, and powerpc.

[1] https://sourceware.org/pipermail/libc-alpha/2021-June/127636.html
[2]
https://docs.google.com/document/d/1dVaDBdzySecxQqD6hLLzDrEF18M1UtjDna9gL5BWWI0/edit#
[3]
https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/azanella/ld-audit-fixes

Changes from v9:
  - Fixed aarch64 comments about the _dl_runtime_profile stack layout.
  - Rebased against master.

Changes from v8:
  - Improved la_activity test coverage.
  - Fixed BZ#28096 regression.

Changes from v7:
  - Added la_activity tests during application exit.
  - Refactor _dl_allocate_tls_init to not initialize static TLS.
  - Changed sotruss to warn instead of error for bind-now.
  - Added NEWS and changed commit message for aarch64.

Changes from v6:
  - Dropped SVE, main application on main_map l_name, and Run
    constructors if executable has a soname of a dependency patches.
  - Bumped LAV_VERSION to 2 on la_symbind bind-now support.
  - Added extension pointer on aarch64 fix.
  - Moved the refactor patch at the start of the set.
  - Changed _dl_audit_objsearch interface.

Changes from v5:
  - Fixed build with --enable-profiling=yes.
  - Moved la_activity (LA_ACT_ADD) *after* _dl_add_to_namespace_list()
    for BZ#28062 fix.
  - Fixed powerpc64 ELFv1 OPD toc setup for bind-now.
  - Fixed testsuite issues for ia64.
  - Removed LA_SYMB_BINDNOW now that LA_SYMB_NOPLTENTER and
    LA_SYMB_NOPLTEXIT is passed for bind-now.

Changes from v4:
  - Added a fix for constructors if executable has a soname of a
    dependency
  - Rebased against master.

Changes from v3
  - Added a aarch64 SVE RFC patch.
  - Fixed an issue with bind-now fix on powerpc64 ELFv1.
  - Rebased against master.

Changes from v2
  - Refactored rtld-audit code to move common come to dl-audit.c.
  - Issue audit la_objopen() for vDSO.
  - Isseu la_activity during application exit.
  - Issue la_symbind() for bind-now (BZ #23734).
  - Fix runtime linker auditing on aarch64 (BZ #26643)

Changes from v1
  - Fixed -fstack-protector-all tst-auditmod17.
  - Simplify the _dl_call_libc_early_init call the 'Fix audit
    regression' patch.
  - Remove symbind check fr BZ#15333.
  - Added the BZ#28096 fix.

--

Adhemerval Zanella (3):
  elf: Add la_activity during application exit
  elf: Fix initial-exec TLS access on audit modules (BZ #28096)
  elf: Issue la_symbind for bind-now (BZ #23734)

Ben Woodard (1):
  elf: Fix runtime linker auditing on aarch64 (BZ #26643)

 NEWS                             |   8 ++
 bits/link_lavcurrent.h           |   2 +-
 elf/Makefile                     | 104 +++++++++++++-
 elf/dl-audit.c                   |  58 +++++---
 elf/dl-fini.c                    |  10 ++
 elf/dl-load.c                    |   3 +
 elf/dl-tls.c                     |  13 +-
 elf/do-rel.h                     |  57 ++++++--
 elf/rtld.c                       |   8 +-
 elf/sotruss-lib.c                |   7 +
 elf/tst-audit21.c                |  42 ++++++
 elf/tst-audit23.c                | 239 +++++++++++++++++++++++++++++++
 elf/tst-audit23mod.c             |  23 +++
 elf/tst-audit24a.c               |  36 +++++
 elf/tst-audit24amod1.c           |  31 ++++
 elf/tst-audit24amod2.c           |  25 ++++
 elf/tst-audit24b.c               |  37 +++++
 elf/tst-audit24bmod1.c           |  31 ++++
 elf/tst-audit24bmod2.c           |  23 +++
 elf/tst-audit24c.c               |   2 +
 elf/tst-audit24d.c               |  36 +++++
 elf/tst-audit24dmod1.c           |  33 +++++
 elf/tst-audit24dmod2.c           |  28 ++++
 elf/tst-audit24dmod3.c           |  31 ++++
 elf/tst-audit24dmod4.c           |  25 ++++
 elf/tst-audit25a.c               | 127 ++++++++++++++++
 elf/tst-audit25b.c               | 128 +++++++++++++++++
 elf/tst-audit25mod1.c            |  30 ++++
 elf/tst-audit25mod2.c            |  30 ++++
 elf/tst-audit25mod3.c            |  22 +++
 elf/tst-audit25mod4.c            |  22 +++
 elf/tst-auditmod21a.c            |  80 +++++++++++
 elf/tst-auditmod21b.c            |  22 +++
 elf/tst-auditmod23.c             |  74 ++++++++++
 elf/tst-auditmod24.h             |  29 ++++
 elf/tst-auditmod24a.c            | 114 +++++++++++++++
 elf/tst-auditmod24b.c            | 104 ++++++++++++++
 elf/tst-auditmod24c.c            |   3 +
 elf/tst-auditmod24d.c            | 120 ++++++++++++++++
 elf/tst-auditmod25.c             |  79 ++++++++++
 nptl/allocatestack.c             |   2 +-
 sysdeps/aarch64/Makefile         |  20 +++
 sysdeps/aarch64/bits/link.h      |  26 ++--
 sysdeps/aarch64/dl-audit-check.h |  28 ++++
 sysdeps/aarch64/dl-link.sym      |   6 +-
 sysdeps/aarch64/dl-trampoline.S  |  82 +++++++----
 sysdeps/aarch64/tst-audit26.c    |  37 +++++
 sysdeps/aarch64/tst-audit26mod.c |  33 +++++
 sysdeps/aarch64/tst-audit26mod.h |  50 +++++++
 sysdeps/aarch64/tst-audit27.c    |  64 +++++++++
 sysdeps/aarch64/tst-audit27mod.c |  95 ++++++++++++
 sysdeps/aarch64/tst-audit27mod.h |  67 +++++++++
 sysdeps/aarch64/tst-auditmod26.c | 103 +++++++++++++
 sysdeps/aarch64/tst-auditmod27.c | 180 +++++++++++++++++++++++
 sysdeps/generic/dl-audit-check.h |  23 +++
 sysdeps/generic/dl-lookupcfg.h   |   3 +
 sysdeps/generic/ldsodefs.h       |   7 +-
 sysdeps/hppa/dl-lookupcfg.h      |   3 +
 sysdeps/ia64/dl-lookupcfg.h      |   3 +
 sysdeps/powerpc/dl-lookupcfg.h   |  39 +++++
 60 files changed, 2678 insertions(+), 89 deletions(-)
 create mode 100644 elf/tst-audit21.c
 create mode 100644 elf/tst-audit23.c
 create mode 100644 elf/tst-audit23mod.c
 create mode 100644 elf/tst-audit24a.c
 create mode 100644 elf/tst-audit24amod1.c
 create mode 100644 elf/tst-audit24amod2.c
 create mode 100644 elf/tst-audit24b.c
 create mode 100644 elf/tst-audit24bmod1.c
 create mode 100644 elf/tst-audit24bmod2.c
 create mode 100644 elf/tst-audit24c.c
 create mode 100644 elf/tst-audit24d.c
 create mode 100644 elf/tst-audit24dmod1.c
 create mode 100644 elf/tst-audit24dmod2.c
 create mode 100644 elf/tst-audit24dmod3.c
 create mode 100644 elf/tst-audit24dmod4.c
 create mode 100644 elf/tst-audit25a.c
 create mode 100644 elf/tst-audit25b.c
 create mode 100644 elf/tst-audit25mod1.c
 create mode 100644 elf/tst-audit25mod2.c
 create mode 100644 elf/tst-audit25mod3.c
 create mode 100644 elf/tst-audit25mod4.c
 create mode 100644 elf/tst-auditmod21a.c
 create mode 100644 elf/tst-auditmod21b.c
 create mode 100644 elf/tst-auditmod23.c
 create mode 100644 elf/tst-auditmod24.h
 create mode 100644 elf/tst-auditmod24a.c
 create mode 100644 elf/tst-auditmod24b.c
 create mode 100644 elf/tst-auditmod24c.c
 create mode 100644 elf/tst-auditmod24d.c
 create mode 100644 elf/tst-auditmod25.c
 create mode 100644 sysdeps/aarch64/dl-audit-check.h
 create mode 100644 sysdeps/aarch64/tst-audit26.c
 create mode 100644 sysdeps/aarch64/tst-audit26mod.c
 create mode 100644 sysdeps/aarch64/tst-audit26mod.h
 create mode 100644 sysdeps/aarch64/tst-audit27.c
 create mode 100644 sysdeps/aarch64/tst-audit27mod.c
 create mode 100644 sysdeps/aarch64/tst-audit27mod.h
 create mode 100644 sysdeps/aarch64/tst-auditmod26.c
 create mode 100644 sysdeps/aarch64/tst-auditmod27.c
 create mode 100644 sysdeps/generic/dl-audit-check.h
 create mode 100644 sysdeps/powerpc/dl-lookupcfg.h