Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1596237

[PATCH v3 1/7] perf annotate: Use build-id dir when reading link name

Path csiph.com!aioe.org!bofh.it!news.nic.it!robomod
From Taeung Song <treeze.taeung@gmail.com>
Newsgroups linux.kernel
Subject [PATCH v3 1/7] perf annotate: Use build-id dir when reading link name
Date Thu, 09 Mar 2017 18:40:02 +0100
Message-ID <tjacG-8oc-11@gated-at.bofh.it> (permalink)
References <tjacG-8oc-7@gated-at.bofh.it>
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=wCFUt/LZS/yXM76qPgCbdkFON2Knt1k6lMTt5x00vR8=; b=Jlda1SRggbiR63d44GMimTyNHFodyYWvWIzIDSQEtU68grPUb3Kx33ak4gnYMKrfry Pihk+SfblUWmpiitJvrKs9VZvKqWM/VolQoSoujyPXEX+fPjALZgAinZKzaN2+F7nhN2 g31n4pKVKZrnQJlvlCvPvViF6zT4yqRZwQepypQm3rwdUkVnnUXRcGY+6nAyhWgDEgQC sJc492EENoEHamRL45fO3joyfwgfJ5c7tq18HxADcoYcDaZXs29+CE2tVEgAI5m3L5g7 DF24JDveUZJ5tsubA/K9C/GK3WoEg5TBtcFqm5CYT6R/rJ3wMSfLgm5+vIK00PPRm1IU ISsw==
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=wCFUt/LZS/yXM76qPgCbdkFON2Knt1k6lMTt5x00vR8=; b=mpte9we7euV+ubxDcQwHa1JuWciNC/X9pcmB4epP3o4Sih3vdnu4/OWnkPHsn2Fm8P nB+1H886/Ku0hSodj3VsIHdoQ8SAybZP9y//UVmthf13LEfcl5OyT7hBiT89Zyy5es1l vC2S3rtKgj3oRH6E6WNVM7WlHSQCpbabMShEUvyq50cvwIIl7I2CEj3a4DpHpMrmbSn9 8mUQXwyHWBBgQcsM3S4u7FXJrFdiLstNVYXgpIq87Fn+LxRNhcG4AOQB+ovHXVZXPrkp t5nBvfCPMNzxNEt+RQ8Umzj9QhNEdUNhQ3GdER5in2GXJ02skfQ46JJqonHjXFzYPQ6A A5qg==
X-Gm-Message-State AMke39maQVpci3xDejj3kLm/ovgJnEHD5BnDOPGP7kVBsCOL9LWpuKv9TxceiK6w1CpX3A==
X-Received by 10.99.199.69 with SMTP id v5mr15047509pgg.90.1489080950714; Thu, 09 Mar 2017 09:35:50 -0800 (PST)
X-Mailer git-send-email 2.7.4
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 62
Organization linux.* mail to news gateway
X-Original-Cc linux-kernel@vger.kernel.org, Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Ingo Molnar <mingo@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Wang Nan <wangnan0@huawei.com>, Masami Hiramatsu <mhiramat@kernel.org>, Taeung Song <treeze.taeung@gmail.com>, Jiri Olsa <jolsa@redhat.com>
X-Original-Date Fri, 10 Mar 2017 02:35:35 +0900
X-Original-Message-ID <1489080941-3965-2-git-send-email-treeze.taeung@gmail.com>
X-Original-References <1489080941-3965-1-git-send-email-treeze.taeung@gmail.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1596237

Show key headers only | View raw


In dso__disassemble_filename() when reading link name
from a build-id file, it is failed each time
because a build-id file gotten from dso__build_id_filename()
is not symbolic link.

So use build-id directory path instead of a build-id file name.

For example, if build-id file name gotten from
dso__build_id_filename() is as below,

  /root/.debug/.build-id/4f/75c7d197c951659d1c1b8b5fd49bcdf8f3f8b1/elf

instead of the above build-id file name,
use the build-id dir path that is a symbolic link as below.

  /root/.debug/.build-id/4f/75c7d197c951659d1c1b8b5fd49bcdf8f3f8b1

Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
---
 tools/perf/util/annotate.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 273f21f..fc91c6b 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1307,6 +1307,7 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
 {
 	char linkname[PATH_MAX];
 	char *build_id_filename;
+	char *build_id_path = NULL;
 
 	if (dso->symtab_type == DSO_BINARY_TYPE__KALLSYMS &&
 	    !dso__is_kcore(dso))
@@ -1322,8 +1323,14 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
 		goto fallback;
 	}
 
+	build_id_path = strdup(filename);
+	if (!build_id_path)
+		return -1;
+
+	dirname(build_id_path);
+
 	if (dso__is_kcore(dso) ||
-	    readlink(filename, linkname, sizeof(linkname)) < 0 ||
+	    readlink(build_id_path, linkname, sizeof(linkname)) < 0 ||
 	    strstr(linkname, DSO__NAME_KALLSYMS) ||
 	    access(filename, R_OK)) {
 fallback:
@@ -1335,6 +1342,7 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
 		__symbol__join_symfs(filename, filename_size, dso->long_name);
 	}
 
+	free(build_id_path);
 	return 0;
 }
 
-- 
2.7.4

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[PATCH v3 1/7] perf annotate: Use build-id dir when reading link name Taeung Song <treeze.taeung@gmail.com> - 2017-03-09 18:40 +0100

csiph-web