From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: Florian Weimer <fweimer@redhat.com>
Cc: libc-alpha@sourceware.org, John Mellor-Crummey <johnmc@rice.edu>,
Ben Woodard <woodard@redhat.com>
Subject: Re: [PATCH v5 18/22] elf: Issue la_symbind() for bind-now (BZ #23734)
Date: Mon, 15 Nov 2021 11:20:13 -0300 [thread overview]
Message-ID: <0ab5764e-1d94-64e9-ea9f-87539bbb1245@linaro.org> (raw)
In-Reply-To: <87czn6wq02.fsf@oldenburg.str.redhat.com>
On 11/11/2021 14:39, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> The audit callback is not called for binaries built with -Wl,-z,now or
>> when LD_BIND_NOW=1 is used. The PLT tracking callbacks are still not
>> issue for such case, since this will would change the expected program
>> semantic (where no PTL is expected) and also yield performance
>> implications (such as for BZ#15533).
>>
>> 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 ODP (for lazy binding
>> this is done by PPC64_LOAD_FUNCPTR on _dl_runtime_resolve).
>
> Typo: OPD (I think)
>
Ack.
> This needs updates to sysdeps/hppa/dl-lookupcfg.h and
> sysdeps/ia64/dl-lookupcfg.h as well. Presently these two targets fail
> to build.
I have fixed and also tested on ia64 (which leads to some fixed on
other new audit tests). I am still figuring out why hppa fails.
>
>> diff --git a/elf/dl-audit.c b/elf/dl-audit.c
>> index c3569cb357..4540d93913 100644
>> --- a/elf/dl-audit.c
>> +++ b/elf/dl-audit.c
>> @@ -190,7 +190,7 @@ rtld_hidden_def (_dl_audit_symbind_alt)
>> void
>> _dl_audit_symbind (struct link_map *l, struct reloc_result *reloc_result,
>> const ElfW(Sym) *defsym, DL_FIXUP_VALUE_TYPE *value,
>> - lookup_t result)
>> + lookup_t result, bool bindnow)
>> {
>> reloc_result->bound = result;
>> /* Compute index of the symbol entry in the symbol table of the DSO with the
>> @@ -238,7 +238,8 @@ _dl_audit_symbind (struct link_map *l, struct reloc_result *reloc_result,
>> if (new_value != (uintptr_t) sym.st_value)
>> {
>> flags |= LA_SYMB_ALTVALUE;
>> - sym.st_value = new_value;
>> + sym.st_value = bindnow
>> + ? DL_FIXUP_BINDNOW_ADDR_VALUE (new_value) : new_value;
>> }
>> }
>
> I think if PLT enter/exit hooks are not available, we should set
> LA_SYMB_NOPLTENTER | LA_SYMB_NOPLTEXIT in flags before calling the
> symbind callback.
It does make sense indeed.
>
> I find DL_FIXUP_BINDNOW_ADDR_VALUE very confusing. Why is it safe to
> extract just the code address from the function descriptor?
That's my understanding because at this point st.st_value points to code
address, not OPD address.
>
> In the future, I want to call symbind for all symbol bindings.
> Basically, I want to remove
>
>> + if (ELFW(R_TYPE) (r->r_info) == ELF_MACHINE_JMP_SLOT
>
> eventually, and add symbind callbacks for dlsym lookups. Hopefully we
> can make these changes compatible.
I think we will need still handle powerpc64 ELFv1 OPD, but I think it should
be feasible.
next prev parent reply other threads:[~2021-11-15 14:20 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-09 18:33 [PATCH v5 00/22] Multiple rtld-audit fixes Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 01/22] elf: Avoid unnecessary slowdown from profiling with audit (BZ#15533) Adhemerval Zanella
2021-11-10 12:11 ` Florian Weimer
2021-11-10 19:53 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 02/22] elf: Add audit tests for modules with TLSDESC Adhemerval Zanella
2021-11-10 13:55 ` Florian Weimer
2021-11-11 19:18 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 03/22] elf: Do not fail for failed dlopem on audit modules (BZ #28061) Adhemerval Zanella
2021-11-09 18:51 ` H.J. Lu
2021-11-11 17:24 ` Adhemerval Zanella
2021-11-10 14:00 ` Florian Weimer
2021-11-11 17:29 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 04/22] elf: Suppress audit calls when a (new) namespace is empty (BZ #28062) Adhemerval Zanella
2021-11-10 14:15 ` Florian Weimer
2021-11-11 11:51 ` Adhemerval Zanella
2021-11-11 12:02 ` Florian Weimer
2021-11-11 12:25 ` Adhemerval Zanella
2021-11-11 12:33 ` Florian Weimer
2021-11-11 13:02 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 05/22] elf: Fix initial-exec TLS access on audit modules (BZ #28096) Adhemerval Zanella
2021-11-10 13:23 ` Florian Weimer
2021-11-11 18:54 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 06/22] elf: Add _dl_audit_objopen Adhemerval Zanella
2021-11-10 16:51 ` Florian Weimer
2021-11-09 18:33 ` [PATCH v5 07/22] elf: Add _dl_audit_activity_map and _dl_audit_activity_nsid Adhemerval Zanella
2021-11-10 16:59 ` Florian Weimer
2021-11-09 18:33 ` [PATCH v5 08/22] elf: Add _dl_audit_objsearch Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 09/22] elf: Add _dl_audit_objclose Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 10/22] elf: Add _dl_audit_symbind_alt and _dl_audit_symbind Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 11/22] elf: Add _dl_audit_preinit Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 12/22] elf: Add _dl_audit_pltenter Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 13/22] elf: Add _dl_audit_pltexit Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 14/22] elf: Issue audit la_objopen() for vDSO Adhemerval Zanella
2021-11-11 17:50 ` Florian Weimer
2021-11-11 20:16 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 15/22] elf: Run constructors if executable has a soname of a dependency Adhemerval Zanella
2021-11-11 12:30 ` Florian Weimer
2021-11-12 19:02 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 16/22] elf: Add main application on main_map l_name Adhemerval Zanella
2021-11-11 12:39 ` Florian Weimer
2021-11-12 19:30 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 17/22] elf: Add la_activity during application exit Adhemerval Zanella
2021-11-11 12:50 ` Florian Weimer
2021-11-12 19:32 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 18/22] elf: Issue la_symbind() for bind-now (BZ #23734) Adhemerval Zanella
2021-11-11 17:39 ` Florian Weimer
2021-11-15 14:20 ` Adhemerval Zanella [this message]
2021-11-15 14:23 ` Florian Weimer
2021-11-15 15:54 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 19/22] elf: Add LA_SYMB_BINDNOW Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 20/22] elf: Move LAV_CURRENT to link_lavcurrent.h Adhemerval Zanella
2021-11-11 17:42 ` Florian Weimer
2021-11-15 14:21 ` Adhemerval Zanella
2021-11-09 18:33 ` [PATCH v5 21/22] elf: Fix runtime linker auditing on aarch64 (BZ #26643) Adhemerval Zanella
2021-11-09 18:33 ` [RFC v5 22/22] elf: Add SVE support for aarch64 rtld-audit Adhemerval Zanella
2021-11-10 13:52 ` Florian Weimer
2021-11-15 17:04 ` Adhemerval Zanella
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0ab5764e-1d94-64e9-ea9f-87539bbb1245@linaro.org \
--to=adhemerval.zanella@linaro.org \
--cc=fweimer@redhat.com \
--cc=johnmc@rice.edu \
--cc=libc-alpha@sourceware.org \
--cc=woodard@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).