]> git.ipfire.org Git - thirdparty/glibc.git/commit
elf: Issue la_symbind for bind-now (BZ #23734)
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 24 Jan 2022 13:46:17 +0000 (10:46 -0300)
committerCarlos O'Donell <carlos@redhat.com>
Tue, 29 Mar 2022 21:02:31 +0000 (17:02 -0400)
commit1d1466e7c45a557e2426c650d6fab3c1b80162ec
tree3d27d3ebcb691afcd2b05a3e6a37099c4b2176d5
parente798a21fef1571bde6a3db549c68e33a5d781a3e
elf: Issue la_symbind for bind-now (BZ #23734)

The audit symbind callback is not called for binaries built with
-Wl,-z,now or when LD_BIND_NOW=1 is used, nor the PLT tracking callbacks
(plt_enter and plt_exit) since this would change the expected
program semantics (where no PLT is expected) and would have performance
implications (such as for BZ#15533).

LAV_CURRENT is also bumped to indicate the audit ABI change (where
la_symbind flags are set by the loader to indicate no possible PLT
trace).

To handle powerpc64 ELFv1 function descriptor, _dl_audit_symbind
requires to know whether bind-now is used so the symbol value is
updated to function text segment instead of the OPD (for lazy binding
this is done by PPC64_LOAD_FUNCPTR on _dl_runtime_resolve).

Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu,
powerpc64-linux-gnu.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
(cherry picked from commit 32612615c58b394c3eb09f020f31310797ad3854)

Resolved conflicts:
NEWS
35 files changed:
NEWS
bits/link_lavcurrent.h
elf/Makefile
elf/dl-audit.c
elf/do-rel.h
elf/sotruss-lib.c
elf/tst-audit24a.c [new file with mode: 0644]
elf/tst-audit24amod1.c [new file with mode: 0644]
elf/tst-audit24amod2.c [new file with mode: 0644]
elf/tst-audit24b.c [new file with mode: 0644]
elf/tst-audit24bmod1.c [new file with mode: 0644]
elf/tst-audit24bmod2.c [new file with mode: 0644]
elf/tst-audit24c.c [new file with mode: 0644]
elf/tst-audit24d.c [new file with mode: 0644]
elf/tst-audit24dmod1.c [new file with mode: 0644]
elf/tst-audit24dmod2.c [new file with mode: 0644]
elf/tst-audit24dmod3.c [new file with mode: 0644]
elf/tst-audit24dmod4.c [new file with mode: 0644]
elf/tst-audit25a.c [new file with mode: 0644]
elf/tst-audit25b.c [new file with mode: 0644]
elf/tst-audit25mod1.c [new file with mode: 0644]
elf/tst-audit25mod2.c [new file with mode: 0644]
elf/tst-audit25mod3.c [new file with mode: 0644]
elf/tst-audit25mod4.c [new file with mode: 0644]
elf/tst-auditmod24.h [new file with mode: 0644]
elf/tst-auditmod24a.c [new file with mode: 0644]
elf/tst-auditmod24b.c [new file with mode: 0644]
elf/tst-auditmod24c.c [new file with mode: 0644]
elf/tst-auditmod24d.c [new file with mode: 0644]
elf/tst-auditmod25.c [new file with mode: 0644]
sysdeps/generic/dl-lookupcfg.h
sysdeps/generic/ldsodefs.h
sysdeps/hppa/dl-lookupcfg.h
sysdeps/ia64/dl-lookupcfg.h
sysdeps/powerpc/dl-lookupcfg.h [new file with mode: 0644]