From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932419AbcAKLZl (ORCPT ); Mon, 11 Jan 2016 06:25:41 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:35981 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759683AbcAKLZj (ORCPT ); Mon, 11 Jan 2016 06:25:39 -0500 Date: Mon, 11 Jan 2016 12:25:34 +0100 From: Ingo Molnar To: He Kuang Cc: peterz@infradead.org, mingo@redhat.com, acme@kernel.org, jolsa@redhat.com, rabin.vincent@axis.com, namhyung@kernel.org, wangnan0@huawei.com, mark.rutland@arm.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH] perf symbols: Fix wrong symbol offset according to p_addr Message-ID: <20160111112534.GA4921@gmail.com> References: <20160105111351.GA10705@arm.com> <1452068774-19491-1-git-send-email-hekuang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1452068774-19491-1-git-send-email-hekuang@huawei.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * He Kuang wrote: > Perf missed the 'VirtAddr' value in elf program_headers when adjusting > symbol address for dynamic libraries. This patch considers the p_addr > value and gets the right symbol offset. s/gets/calculates > > Before this patch, some symbols can not be right parsed on android phone: s/Before this patch, some symbols are not parsed correctly on android phones: > > init 369 [002] 339.970607: raw_syscalls:sys_enter: NR 22 (b, 7fd9e360a0, 10, ffffffff, 0, 8) > ... > 230ac [unknown] (/system/lib64/libsurfaceflinger.so) > 11a0 main (/system/bin/surfaceflinger) > 1c3fc __libc_init (/system/lib64/libc.so) > fd0 _start (/system/bin/surfaceflinger) > 29ec __dl__start (/system/bin/linker64) > > After this patch: > > init 369 [002] 339.970607: raw_syscalls:sys_enter: NR 22 (b, 7fd9e360a0, 10, ffffffff, 0, 8) > ... > 3a0ac _ZN7android14SurfaceFlinger3runEv (/system/lib64/libsurfaceflinger.so) > 11a0 main (/system/bin/surfaceflinger) > 1c3fc __libc_init (/system/lib64/libc.so) > fd0 _start (/system/bin/surfaceflinger) > 29ec __dl__start (/system/bin/linker64) > --- a/tools/perf/util/dso.h > +++ b/tools/perf/util/dso.h > @@ -166,6 +166,7 @@ struct dso { > const char *long_name; > u16 long_name_len; > u16 short_name_len; > + u64 vaddr; > void *dwfl; /* DWARF debug info */ btw., looks like there's some extra spaces in front of those other field definitions. Also, might make sense to describe what 'vaddr' stands for precisely, the naming is pretty ambiguous. Thanks, Ingo