unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Siddhesh Poyarekar <siddhesh@gotplt.org>
To: libc-alpha@sourceware.org
Subject: [ping][PATCH v3] mtrace: Fix output with PIE and ASLR [BZ #22716]
Date: Tue, 17 Aug 2021 08:27:42 +0530	[thread overview]
Message-ID: <80db4ad2-b129-c125-f8a7-bf9faa9b1b8d@gotplt.org> (raw)
In-Reply-To: <20210812090746.612090-1-siddhesh@sourceware.org>

Ping!  I'll push this if there are no further objections.

Thanks,
Siddhesh

On 8/12/21 2:37 PM, Siddhesh Poyarekar via Libc-alpha wrote:
> Record only the relative address of the caller in mtrace file.  Use
> LD_TRACE_PRELINKING to get the executable as well as binary vs
> executable load offsets so that we may compute a base to add to the
> relative address in the mtrace file.  This allows us to get a valid
> address to pass to addr2line in all cases.
> 
> Co-authored-by:  John Ogness <john.ogness@linutronix.de>
> ---
> Changes from v2:
> - Don't use ""
> 
> Changes from v1:
> - Set LD_TRACE_PRELINK to an empty string so that it doesn't match any
>    files and add a comment explaining it.
> - Formatting change in mtrace-impl.c
> 
>   malloc/mtrace-impl.c |  6 +++---
>   malloc/mtrace.pl     | 15 +++++++--------
>   2 files changed, 10 insertions(+), 11 deletions(-)
> 
> diff --git a/malloc/mtrace-impl.c b/malloc/mtrace-impl.c
> index 9dffddfe2d..e7ace7f6fd 100644
> --- a/malloc/mtrace-impl.c
> +++ b/malloc/mtrace-impl.c
> @@ -67,9 +67,9 @@ tr_where (const void *caller, Dl_info *info)
>   		       offset);
>               }
>   
> -	  fprintf (mallstream, "@ %s%s%s[%p] ", info->dli_fname ? : "",
> -		   info->dli_fname ? ":" : "",
> -                   buf, caller);
> +	  fprintf (mallstream, "@ %s%s%s[0x%" PRIxPTR "] ",
> +		   info->dli_fname ? : "", info->dli_fname ? ":" : "", buf,
> +		   caller - info->dli_fbase);
>           }
>         else
>           fprintf (mallstream, "@ [%p] ", caller);
> diff --git a/malloc/mtrace.pl b/malloc/mtrace.pl
> index 6f49c8338d..b1073a1931 100644
> --- a/malloc/mtrace.pl
> +++ b/malloc/mtrace.pl
> @@ -75,11 +75,15 @@ if ($#ARGV == 0) {
>       } else {
>   	$prog = "./$binary";
>       }
> -    if (open (LOCS, "env LD_TRACE_LOADED_OBJECTS=1 $prog |")) {
> +    # Set the environment variable LD_TRACE_PRELINKING to an empty string so
> +    # that we trigger tracing but do not match with the executable or any of
> +    # its dependencies.
> +    if (open (LOCS, "env LD_TRACE_PRELINKING= $prog |")) {
>   	while (<LOCS>) {
>   	    chop;
> -	    if (/^.*=> (.*) .(0x[0123456789abcdef]*).$/) {
> +	    if (/^.*=> (.*) \((0x[0123456789abcdef]*), (0x[0123456789abcdef]*).*/) {
>   		$locs{$1} = $2;
> +		$rel{$1} = hex($2) - hex($3);
>   	    }
>   	}
>   	close (LOCS);
> @@ -110,12 +114,7 @@ sub location {
>   	my $addr = $2;
>   	my $searchaddr;
>   	return $cache{$addr} if (exists $cache{$addr});
> -	if ($locs{$prog} ne "") {
> -	    $searchaddr = sprintf "%#x", $addr - $locs{$prog};
> -	} else {
> -	    $searchaddr = $addr;
> -	    $prog = $binary;
> -	}
> +	$searchaddr = sprintf "%#x", hex($addr) + $rel{$prog};
>   	if ($binary ne "" && open (ADDR, "addr2line -e $prog $searchaddr|")) {
>   	    my $line = <ADDR>;
>   	    chomp $line;
> 


  parent reply	other threads:[~2021-08-17  2:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-12  9:07 [PATCH v3] mtrace: Fix output with PIE and ASLR [BZ #22716] Siddhesh Poyarekar via Libc-alpha
2021-08-12 10:39 ` John Ogness via Libc-alpha
2021-08-17  2:57 ` Siddhesh Poyarekar [this message]
2021-08-23  2:45   ` [ping][PATCH " Siddhesh Poyarekar

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

  List information: https://www.gnu.org/software/libc/involved.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=80db4ad2-b129-c125-f8a7-bf9faa9b1b8d@gotplt.org \
    --to=siddhesh@gotplt.org \
    --cc=libc-alpha@sourceware.org \
    /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).