From: Siddhesh Poyarekar <siddhesh@gotplt.org>
To: libc-alpha@sourceware.org
Subject: Re: [ping][PATCH v3] mtrace: Fix output with PIE and ASLR [BZ #22716]
Date: Mon, 23 Aug 2021 08:15:15 +0530 [thread overview]
Message-ID: <beeb152b-e83e-ba90-3d78-bf00f8cf86ee@gotplt.org> (raw)
In-Reply-To: <80db4ad2-b129-c125-f8a7-bf9faa9b1b8d@gotplt.org>
I've pushed this now since the changes in v2 and v3 were trivial.
Thanks,
Siddhesh
On 8/17/21 8:27 AM, Siddhesh Poyarekar wrote:
> 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;
>>
>
prev parent reply other threads:[~2021-08-23 2:45 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 ` [ping][PATCH " Siddhesh Poyarekar
2021-08-23 2:45 ` Siddhesh Poyarekar [this message]
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=beeb152b-e83e-ba90-3d78-bf00f8cf86ee@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).