[Ltrace-devel] [PATCH 4/8] Add LS_TOPLT_GOTONLY
Petr Machata
pmachata at redhat.com
Wed Sep 26 23:30:08 UTC 2012
edgar.iglesias at gmail.com writes:
> From: "Edgar E. Iglesias" <edgar at axis.com>
>
> to describe symbols with a GOT entry but without PLT
> entry.
>
> Signed-off-by: Edgar E. Iglesias <edgar at axis.com>
> ---
> library.h | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/library.h b/library.h
> index f207502..d764da9 100644
> --- a/library.h
> +++ b/library.h
> @@ -31,6 +31,7 @@ struct library;
>
> enum toplt {
> LS_TOPLT_NONE = 0, /* PLT not used for this symbol. */
> + LS_TOPLT_GOTONLY, /* Has a GOT entry but no PLT. */
> LS_TOPLT_EXEC, /* PLT for this symbol is executable. */
> };
This is fine for now, but consider the following.
I see you use that value to decide whether to enable the PLT entry right
away, or wait for a bit. I have a patch sketched, for support of -l.
For -l, we need to keep around "latent" PLT entries: those that nobody
requested directly (via -e), but that we keep around (disabled) in case
a library is mapped matching the -l criterion. If that happens, some of
those latent entries may be enabled.
This seems to fit your bill. In arch_library_symbol_init, you would
mark those symbols as latent (and sym->arch.gotonly = 1 or some such, so
that you can tell them from the rest). Later, in arch_dynlink_done, you
loop through libraries like you do now, looking for gotonly symbols, and
enabling them.
Thanks,
PM
More information about the Ltrace-devel
mailing list