Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756746AbbHZKsn (ORCPT ); Wed, 26 Aug 2015 06:48:43 -0400 Received: from mail7.hitachi.co.jp ([133.145.228.42]:37787 "EHLO mail7.hitachi.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755582AbbHZKsm (ORCPT ); Wed, 26 Aug 2015 06:48:42 -0400 From: =?utf-8?B?5bmz5p2+6ZuF5bezIC8gSElSQU1BVFXvvIxNQVNBTUk=?= To: "'Wangnan (F)'" , "acme@kernel.org" , "rostedt@goodmis.org" CC: "mingo@redhat.com" , "namhyung@kernel.org" , "linux-kernel@vger.kernel.org" , "pi3orama@163.com" , sysp-manager Subject: RE: [PATCH v2 2/4] perf probe: Fix list result when address is zero Thread-Topic: [PATCH v2 2/4] perf probe: Fix list result when address is zero Thread-Index: AQHQ39KI+IK/hzaKY0OvkSuY48uJGZ4d+sJw//92KICAAKLLsA== Date: Wed, 26 Aug 2015 10:48:38 +0000 Message-ID: <50399556C9727B4D88A595C8584AAB37524EC942@GSjpTKYDCembx32.service.hitachi.net> References: <1440574825-221187-1-git-send-email-wangnan0@huawei.com> <1440574825-221187-3-git-send-email-wangnan0@huawei.com> <50399556C9727B4D88A595C8584AAB37524EC6F0@GSjpTKYDCembx32.service.hitachi.net> <55DD8A59.6040708@huawei.com> In-Reply-To: <55DD8A59.6040708@huawei.com> Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.198.219.51] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id t7QAml9u024260 Content-Length: 3249 Lines: 85 > From: Wangnan (F) [mailto:wangnan0@huawei.com] > >> > >> When manually added uprobe point with zero address, 'perf probe -l' > >> reports error. For example: > >> > >> # echo p:probe_libc/abs_0 /path/to/lib.bin:0x0 arg1=%ax > \ > >> /sys/kernel/debug/tracing/uprobe_events > >> > >> # perf probe -l > >> Error: Failed to show event list. > >> > >> Probing at 0x0 is possible and useful when lib.bin is not a normal > >> shared object but is manually mapped. However, in this case kernel > >> report: > >> > >> # cat /sys/kernel/debug/tracing/uprobe_events > >> p:probe_libc/abs_0 /tmp/oxygen_root/lib64/libc-2.18.so:0x (null) arg1=%ax > >> > >> This patch supports the above kernel output. > > Former part is OK to me. > > > >> In addition, this patch also fixes convert_to_perf_probe_point() that, > >> if failed to find probe point from both of dwarf and map, in all cases > >> pp->function should be filled with a strdup() result, or the following > >> ENOMEM error code is incorrect. Remove !tp->module && !is_kprobe > >> condition so always use address to build function name if symbol is not > >> found. > > No, I think this should be included in 3/4, since until that perf probe > > doesn't support absolute address on kernel. > > This is for manually introduced probing points. > > convert_to_perf_probe_point is called by: > > perf probe -l -> show_perf_probe_events -> __show_perf_probe_events --> convert_to_perf_probe_event > > If there is a manually inserted probing point there, 'perf probe -l' reports an error. > > Here is the result if I remove the second part: > > $ git log --oneline # I'm in 2/4 > aae2c2c perf probe: Fix list result when address is zero > 931dff5 perf probe: Prevent segfault when reading probe point with > absolute address > ... > > $ git diff # remove the second part > diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c > index 926bcec..de2c27e 100644 > --- a/tools/perf/util/probe-event.c > +++ b/tools/perf/util/probe-event.c > @@ -1888,7 +1888,7 @@ static int convert_to_perf_probe_point(struct > probe_trace_point *tp, > if (tp->symbol) { > pp->function = strdup(tp->symbol); > pp->offset = tp->offset; > - } else { > + } else if (!tp->module && !is_kprobe) { > ret = e_snprintf(buf, 128, "0x%" PRIx64, (u64)tp->address); > if (ret < 0) > return ret; > > > ... > # echo 'p:probe_libc/abs_5 /lib64/libc.so.6:0x5' > > /sys/kernel/debug/tracing/uprobe_events > # cat /sys/kernel/debug/tracing/uprobe_events > p:probe_libc/abs_5 /lib64/libc.so.6:0x0000000000000005 > # perf probe -l > Error: Failed to show event list > > Then add it back: > > $ git reset --hard HEAD > ... > # perf probe -l > probe_libc:abs_5 (on 0x5 in /lib64/libc.so.6) Hmm, OK, then this should be in the 1/4 or splitted as an independent patch, because this part it is not "when address is zero", just support showing absolute address probes on user applications. Thank you, ????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?