Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1213621 > unrolled thread
| Started by | Wang Nan <wangnan0@huawei.com> |
|---|---|
| First post | 2015-08-26 09:50 +0200 |
| Last post | 2015-08-26 11:20 +0200 |
| Articles | 11 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH v2 0/4] perf probe, tracing/uprobes: Support probing at absolute address Wang Nan <wangnan0@huawei.com> - 2015-08-26 09:50 +0200
[PATCH v2 1/4] perf probe: Prevent segfault when reading probe point with absolute address Wang Nan <wangnan0@huawei.com> - 2015-08-26 09:50 +0200
[PATCH v2 2/4] perf probe: Fix list result when address is zero Wang Nan <wangnan0@huawei.com> - 2015-08-26 09:50 +0200
RE: [PATCH v2 2/4] perf probe: Fix list result when address is zero 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> - 2015-08-26 11:30 +0200
Re: [PATCH v2 2/4] perf probe: Fix list result when address is zero "Wangnan (F)" <wangnan0@huawei.com> - 2015-08-26 11:50 +0200
RE: [PATCH v2 2/4] perf probe: Fix list result when address is zero 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> - 2015-08-26 12:50 +0200
[PATCH v2 4/4] tracing/uprobes: Do not print '0x (null)' when offset is 0 Wang Nan <wangnan0@huawei.com> - 2015-08-26 09:50 +0200
RE: [PATCH v2 4/4] tracing/uprobes: Do not print '0x (null)' when offset is 0 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> - 2015-08-26 12:10 +0200
[PATCH v2 3/4] perf probe: Support probing at absolute address Wang Nan <wangnan0@huawei.com> - 2015-08-26 09:50 +0200
RE: [PATCH v2 3/4] perf probe: Support probing at absolute address 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> - 2015-08-26 11:50 +0200
RE: [PATCH v2 0/4] perf probe, tracing/uprobes: Support probing at absolute address 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> - 2015-08-26 11:20 +0200
| From | Wang Nan <wangnan0@huawei.com> |
|---|---|
| Date | 2015-08-26 09:50 +0200 |
| Subject | [PATCH v2 0/4] perf probe, tracing/uprobes: Support probing at absolute address |
| Message-ID | <q1DD3-7K7-5@gated-at.bofh.it> |
The goal of these 4 patches is to allow perf probing at absolute address
for uprobes and kprobes. During the development several small problem in
'perf probe -l' is found and fixed.
Patch 1 has already acked by Masami Hiramatsu.
Patch 2 fixes a problem about zero address in perf side.
Patch 3 is the main patch of these 4. It allows following command:
# perf probe /lib/x86_64-linux-gnu/libc-2.19.so 0xeb860
Different from v1, no extra '+' is required.
Patch 4 is a kernel side patch which fixes a small problem in uprobe_event
that, if address is 0, uprobe_events reports '0x (null)'. It is independent
from the other patches.
Wang Nan (4):
perf probe: Prevent segfault when reading probe point with absolute
address
perf probe: Fix list result when address is zero
perf probe: Support probing at absolute address
tracing/uprobes: Do not print '0x (null)' when offset is 0
kernel/trace/trace_uprobe.c | 17 +++-
tools/perf/util/probe-event.c | 210 +++++++++++++++++++++++++++++++++++++----
tools/perf/util/probe-event.h | 4 +
tools/perf/util/probe-finder.c | 21 +----
4 files changed, 216 insertions(+), 36 deletions(-)
--
1.8.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Wang Nan <wangnan0@huawei.com> |
|---|---|
| Date | 2015-08-26 09:50 +0200 |
| Subject | [PATCH v2 1/4] perf probe: Prevent segfault when reading probe point with absolute address |
| Message-ID | <q1DD3-7K7-3@gated-at.bofh.it> |
| In reply to | #1213621 |
'perf probe -l' panic if there is a manually inserted probing point
with absolute address. For example:
# echo 'p:probe/abs_ffffffff811e6615 0xffffffff811e6615' > /sys/kernel/debug/tracing/kprobe_events
# perf probe -l
Segmentation fault (core dumped)
This patch fixes this problem by considering the situation that
"tp->symbol == NULL" in find_perf_probe_point_from_dwarf() and
find_perf_probe_point_from_map().
After this patch:
# perf probe -l
probe:abs_ffffffff811e6615 (on SyS_write+5@fs/read_write.c)
And when debug info is missing:
# rm -rf ~/.debug
# mv /lib/modules/4.2.0-rc1+/build/vmlinux /lib/modules/4.2.0-rc1+/build/vmlinux.bak
# perf probe -l
probe:abs_ffffffff811e6615 (on sys_write+5)
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1440509256-193590-1-git-send-email-wangnan0@huawei.com
---
tools/perf/util/probe-event.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index f173372..ef325a2 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -517,7 +517,7 @@ static int find_perf_probe_point_from_dwarf(struct probe_trace_point *tp,
if (ret < 0)
goto error;
addr += stext;
- } else {
+ } else if (tp->symbol) {
addr = kernel_get_symbol_address_by_name(tp->symbol, false);
if (addr == 0)
goto error;
@@ -1817,17 +1817,17 @@ static int find_perf_probe_point_from_map(struct probe_trace_point *tp,
{
struct symbol *sym = NULL;
struct map *map;
- u64 addr;
+ u64 addr = tp->address;
int ret = -ENOENT;
if (!is_kprobe) {
map = dso__new_map(tp->module);
if (!map)
goto out;
- addr = tp->address;
sym = map__find_symbol(map, addr, NULL);
} else {
- addr = kernel_get_symbol_address_by_name(tp->symbol, true);
+ if (tp->symbol)
+ addr = kernel_get_symbol_address_by_name(tp->symbol, true);
if (addr) {
addr += tp->offset;
sym = __find_kernel_function(addr, &map);
--
1.8.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Wang Nan <wangnan0@huawei.com> |
|---|---|
| Date | 2015-08-26 09:50 +0200 |
| Subject | [PATCH v2 2/4] perf probe: Fix list result when address is zero |
| Message-ID | <q1DD4-7K7-9@gated-at.bofh.it> |
| In reply to | #1213621 |
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.
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.
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
---
tools/perf/util/probe-event.c | 30 ++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index ef325a2..3ce223d 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -1521,9 +1521,31 @@ int parse_probe_trace_command(const char *cmd, struct probe_trace_event *tev)
} else
p = argv[1];
fmt1_str = strtok_r(p, "+", &fmt);
- if (fmt1_str[0] == '0') /* only the address started with 0x */
- tp->address = strtoul(fmt1_str, NULL, 0);
- else {
+ /* only the address started with 0x */
+ if (fmt1_str[0] == '0') {
+ /*
+ * Fix a special case:
+ * if address == 0, kernel reports something like:
+ * p:probe_libc/abs_0 /lib/libc-2.18.so:0x (null) arg1=%ax
+ * Newer kernel may fix that, but we want to
+ * support old kernel also.
+ */
+ if (strcmp(fmt1_str, "0x") == 0) {
+ if (!argv[2] || strcmp(argv[2], "(null)")) {
+ ret = -EINVAL;
+ goto out;
+ }
+ tp->address = 0;
+
+ free(argv[2]);
+ for (i = 2; argv[i + 1] != NULL; i++)
+ argv[i] = argv[i + 1];
+
+ argv[i] = NULL;
+ argc -= 1;
+ } else
+ tp->address = strtoul(fmt1_str, NULL, 0);
+ } else {
/* Only the symbol-based probe has offset */
tp->symbol = strdup(fmt1_str);
if (tp->symbol == NULL) {
@@ -1868,7 +1890,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 if (!tp->module && !is_kprobe) {
+ } else {
ret = e_snprintf(buf, 128, "0x%" PRIx64, (u64)tp->address);
if (ret < 0)
return ret;
--
1.8.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> |
|---|---|
| Date | 2015-08-26 11:30 +0200 |
| Subject | RE: [PATCH v2 2/4] perf probe: Fix list result when address is zero |
| Message-ID | <q1FbQ-1C1-15@gated-at.bofh.it> |
| In reply to | #1213624 |
PiBGcm9tOiBXYW5nIE5hbiBbbWFpbHRvOndhbmduYW4wQGh1YXdlaS5jb21dDQo+IA0KPiBXaGVu IG1hbnVhbGx5IGFkZGVkIHVwcm9iZSBwb2ludCB3aXRoIHplcm8gYWRkcmVzcywgJ3BlcmYgcHJv YmUgLWwnDQo+IHJlcG9ydHMgZXJyb3IuIEZvciBleGFtcGxlOg0KPiANCj4gICMgZWNobyBwOnBy b2JlX2xpYmMvYWJzXzAgL3BhdGgvdG8vbGliLmJpbjoweDAgYXJnMT0lYXggPiBcDQo+ICAgICAg ICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJvYmVfZXZlbnRzDQo+IA0KPiAgIyBw ZXJmIHByb2JlIC1sDQo+ICBFcnJvcjogRmFpbGVkIHRvIHNob3cgZXZlbnQgbGlzdC4NCj4gDQo+ IFByb2JpbmcgYXQgMHgwIGlzIHBvc3NpYmxlIGFuZCB1c2VmdWwgd2hlbiBsaWIuYmluIGlzIG5v dCBhIG5vcm1hbA0KPiBzaGFyZWQgb2JqZWN0IGJ1dCBpcyBtYW51YWxseSBtYXBwZWQuIEhvd2V2 ZXIsIGluIHRoaXMgY2FzZSBrZXJuZWwNCj4gcmVwb3J0Og0KPiANCj4gICMgY2F0IC9zeXMva2Vy bmVsL2RlYnVnL3RyYWNpbmcvdXByb2JlX2V2ZW50cw0KPiAgcDpwcm9iZV9saWJjL2Fic18wIC90 bXAvb3h5Z2VuX3Jvb3QvbGliNjQvbGliYy0yLjE4LnNvOjB4ICAgICAgICAgIChudWxsKSBhcmcx PSVheA0KPiANCj4gVGhpcyBwYXRjaCBzdXBwb3J0cyB0aGUgYWJvdmUga2VybmVsIG91dHB1dC4N Cg0KRm9ybWVyIHBhcnQgaXMgT0sgdG8gbWUuDQoNCj4gDQo+IEluIGFkZGl0aW9uLCB0aGlzIHBh dGNoIGFsc28gZml4ZXMgY29udmVydF90b19wZXJmX3Byb2JlX3BvaW50KCkgdGhhdCwNCj4gaWYg ZmFpbGVkIHRvIGZpbmQgcHJvYmUgcG9pbnQgZnJvbSBib3RoIG9mIGR3YXJmIGFuZCBtYXAsIGlu IGFsbCBjYXNlcw0KPiBwcC0+ZnVuY3Rpb24gc2hvdWxkIGJlIGZpbGxlZCB3aXRoIGEgc3RyZHVw KCkgcmVzdWx0LCBvciB0aGUgZm9sbG93aW5nDQo+IEVOT01FTSBlcnJvciBjb2RlIGlzIGluY29y cmVjdC4gUmVtb3ZlICF0cC0+bW9kdWxlICYmICFpc19rcHJvYmUNCj4gY29uZGl0aW9uIHNvIGFs d2F5cyB1c2UgYWRkcmVzcyB0byBidWlsZCBmdW5jdGlvbiBuYW1lIGlmIHN5bWJvbCBpcyBub3QN Cj4gZm91bmQuDQoNCk5vLCBJIHRoaW5rIHRoaXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIDMvNCwg c2luY2UgdW50aWwgdGhhdCBwZXJmIHByb2JlDQpkb2Vzbid0IHN1cHBvcnQgYWJzb2x1dGUgYWRk cmVzcyBvbiBrZXJuZWwuDQoNClRoYW5rIHlvdSwNCg0KPiANCj4gU2lnbmVkLW9mZi1ieTogV2Fu ZyBOYW4gPHdhbmduYW4wQGh1YXdlaS5jb20+DQo+IENjOiBBcm5hbGRvIENhcnZhbGhvIGRlIE1l bG8gPGFjbWVAa2VybmVsLm9yZz4NCj4gQ2M6IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29t Pg0KPiBDYzogTWFzYW1pIEhpcmFtYXRzdSA8bWFzYW1pLmhpcmFtYXRzdS5wdEBoaXRhY2hpLmNv bT4NCj4gQ2M6IE5hbWh5dW5nIEtpbSA8bmFtaHl1bmdAa2VybmVsLm9yZz4NCj4gQ2M6IFN0ZXZl biBSb3N0ZWR0IDxyb3N0ZWR0QGdvb2RtaXMub3JnPg0KPiAtLS0NCj4gIHRvb2xzL3BlcmYvdXRp bC9wcm9iZS1ldmVudC5jIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tDQo+ICAx IGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4gDQo+IGRp ZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvcHJvYmUtZXZlbnQuYyBiL3Rvb2xzL3BlcmYvdXRp bC9wcm9iZS1ldmVudC5jDQo+IGluZGV4IGVmMzI1YTIuLjNjZTIyM2QgMTAwNjQ0DQo+IC0tLSBh L3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1ldmVudC5jDQo+ICsrKyBiL3Rvb2xzL3BlcmYvdXRpbC9w cm9iZS1ldmVudC5jDQo+IEBAIC0xNTIxLDkgKzE1MjEsMzEgQEAgaW50IHBhcnNlX3Byb2JlX3Ry YWNlX2NvbW1hbmQoY29uc3QgY2hhciAqY21kLCBzdHJ1Y3QgcHJvYmVfdHJhY2VfZXZlbnQgKnRl dikNCj4gIAl9IGVsc2UNCj4gIAkJcCA9IGFyZ3ZbMV07DQo+ICAJZm10MV9zdHIgPSBzdHJ0b2tf cihwLCAiKyIsICZmbXQpOw0KPiAtCWlmIChmbXQxX3N0clswXSA9PSAnMCcpCS8qIG9ubHkgdGhl IGFkZHJlc3Mgc3RhcnRlZCB3aXRoIDB4ICovDQo+IC0JCXRwLT5hZGRyZXNzID0gc3RydG91bChm bXQxX3N0ciwgTlVMTCwgMCk7DQo+IC0JZWxzZSB7DQo+ICsJLyogb25seSB0aGUgYWRkcmVzcyBz dGFydGVkIHdpdGggMHggKi8NCj4gKwlpZiAoZm10MV9zdHJbMF0gPT0gJzAnKQl7DQo+ICsJCS8q DQo+ICsJCSAqIEZpeCBhIHNwZWNpYWwgY2FzZToNCj4gKwkJICogaWYgYWRkcmVzcyA9PSAwLCBr ZXJuZWwgcmVwb3J0cyBzb21ldGhpbmcgbGlrZToNCj4gKwkJICogcDpwcm9iZV9saWJjL2Fic18w IC9saWIvbGliYy0yLjE4LnNvOjB4ICAgICAgICAgIChudWxsKSBhcmcxPSVheA0KPiArCQkgKiBO ZXdlciBrZXJuZWwgbWF5IGZpeCB0aGF0LCBidXQgd2Ugd2FudCB0bw0KPiArCQkgKiBzdXBwb3J0 IG9sZCBrZXJuZWwgYWxzby4NCj4gKwkJICovDQo+ICsJCWlmIChzdHJjbXAoZm10MV9zdHIsICIw eCIpID09IDApIHsNCj4gKwkJCWlmICghYXJndlsyXSB8fCBzdHJjbXAoYXJndlsyXSwgIihudWxs KSIpKSB7DQo+ICsJCQkJcmV0ID0gLUVJTlZBTDsNCj4gKwkJCQlnb3RvIG91dDsNCj4gKwkJCX0N Cj4gKwkJCXRwLT5hZGRyZXNzID0gMDsNCj4gKw0KPiArCQkJZnJlZShhcmd2WzJdKTsNCj4gKwkJ CWZvciAoaSA9IDI7IGFyZ3ZbaSArIDFdICE9IE5VTEw7IGkrKykNCj4gKwkJCQlhcmd2W2ldID0g YXJndltpICsgMV07DQo+ICsNCj4gKwkJCWFyZ3ZbaV0gPSBOVUxMOw0KPiArCQkJYXJnYyAtPSAx Ow0KPiArCQl9IGVsc2UNCj4gKwkJCXRwLT5hZGRyZXNzID0gc3RydG91bChmbXQxX3N0ciwgTlVM TCwgMCk7DQo+ICsJfSBlbHNlIHsNCj4gIAkJLyogT25seSB0aGUgc3ltYm9sLWJhc2VkIHByb2Jl IGhhcyBvZmZzZXQgKi8NCj4gIAkJdHAtPnN5bWJvbCA9IHN0cmR1cChmbXQxX3N0cik7DQo+ICAJ CWlmICh0cC0+c3ltYm9sID09IE5VTEwpIHsNCj4gQEAgLTE4NjgsNyArMTg5MCw3IEBAIHN0YXRp YyBpbnQgY29udmVydF90b19wZXJmX3Byb2JlX3BvaW50KHN0cnVjdCBwcm9iZV90cmFjZV9wb2lu dCAqdHAsDQo+ICAJaWYgKHRwLT5zeW1ib2wpIHsNCj4gIAkJcHAtPmZ1bmN0aW9uID0gc3RyZHVw KHRwLT5zeW1ib2wpOw0KPiAgCQlwcC0+b2Zmc2V0ID0gdHAtPm9mZnNldDsNCj4gLQl9IGVsc2Ug aWYgKCF0cC0+bW9kdWxlICYmICFpc19rcHJvYmUpIHsNCj4gKwl9IGVsc2Ugew0KPiAgCQlyZXQg PSBlX3NucHJpbnRmKGJ1ZiwgMTI4LCAiMHglIiBQUkl4NjQsICh1NjQpdHAtPmFkZHJlc3MpOw0K PiAgCQlpZiAocmV0IDwgMCkNCj4gIAkJCXJldHVybiByZXQ7DQo+IC0tDQo+IDEuOC4zLjQNCg0K -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Wangnan (F)" <wangnan0@huawei.com> |
|---|---|
| Date | 2015-08-26 11:50 +0200 |
| Subject | Re: [PATCH v2 2/4] perf probe: Fix list result when address is zero |
| Message-ID | <q1Fvb-1Yz-19@gated-at.bofh.it> |
| In reply to | #1213697 |
On 2015/8/26 17:29, 平松雅巳 / HIRAMATU,MASAMI wrote:
>> From: Wang Nan [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)
Thank you.
> Thank you,
>
>> Signed-off-by: Wang Nan <wangnan0@huawei.com>
>> Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
>> Cc: Ingo Molnar <mingo@redhat.com>
>> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
>> Cc: Namhyung Kim <namhyung@kernel.org>
>> Cc: Steven Rostedt <rostedt@goodmis.org>
>> ---
>> tools/perf/util/probe-event.c | 30 ++++++++++++++++++++++++++----
>> 1 file changed, 26 insertions(+), 4 deletions(-)
>>
>> diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
>> index ef325a2..3ce223d 100644
>> --- a/tools/perf/util/probe-event.c
>> +++ b/tools/perf/util/probe-event.c
>> @@ -1521,9 +1521,31 @@ int parse_probe_trace_command(const char *cmd, struct probe_trace_event *tev)
>> } else
>> p = argv[1];
>> fmt1_str = strtok_r(p, "+", &fmt);
>> - if (fmt1_str[0] == '0') /* only the address started with 0x */
>> - tp->address = strtoul(fmt1_str, NULL, 0);
>> - else {
>> + /* only the address started with 0x */
>> + if (fmt1_str[0] == '0') {
>> + /*
>> + * Fix a special case:
>> + * if address == 0, kernel reports something like:
>> + * p:probe_libc/abs_0 /lib/libc-2.18.so:0x (null) arg1=%ax
>> + * Newer kernel may fix that, but we want to
>> + * support old kernel also.
>> + */
>> + if (strcmp(fmt1_str, "0x") == 0) {
>> + if (!argv[2] || strcmp(argv[2], "(null)")) {
>> + ret = -EINVAL;
>> + goto out;
>> + }
>> + tp->address = 0;
>> +
>> + free(argv[2]);
>> + for (i = 2; argv[i + 1] != NULL; i++)
>> + argv[i] = argv[i + 1];
>> +
>> + argv[i] = NULL;
>> + argc -= 1;
>> + } else
>> + tp->address = strtoul(fmt1_str, NULL, 0);
>> + } else {
>> /* Only the symbol-based probe has offset */
>> tp->symbol = strdup(fmt1_str);
>> if (tp->symbol == NULL) {
>> @@ -1868,7 +1890,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 if (!tp->module && !is_kprobe) {
>> + } else {
>> ret = e_snprintf(buf, 128, "0x%" PRIx64, (u64)tp->address);
>> if (ret < 0)
>> return ret;
>> --
>> 1.8.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> |
|---|---|
| Date | 2015-08-26 12:50 +0200 |
| Subject | RE: [PATCH v2 2/4] perf probe: Fix list result when address is zero |
| Message-ID | <q1Grg-3jH-21@gated-at.bofh.it> |
| In reply to | #1213709 |
PiBGcm9tOiBXYW5nbmFuIChGKSBbbWFpbHRvOndhbmduYW4wQGh1YXdlaS5jb21dDQo+ID4+DQo+ ID4+IFdoZW4gbWFudWFsbHkgYWRkZWQgdXByb2JlIHBvaW50IHdpdGggemVybyBhZGRyZXNzLCAn cGVyZiBwcm9iZSAtbCcNCj4gPj4gcmVwb3J0cyBlcnJvci4gRm9yIGV4YW1wbGU6DQo+ID4+DQo+ ID4+ICAgIyBlY2hvIHA6cHJvYmVfbGliYy9hYnNfMCAvcGF0aC90by9saWIuYmluOjB4MCBhcmcx PSVheCA+IFwNCj4gPj4gICAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJv YmVfZXZlbnRzDQo+ID4+DQo+ID4+ICAgIyBwZXJmIHByb2JlIC1sDQo+ID4+ICAgRXJyb3I6IEZh aWxlZCB0byBzaG93IGV2ZW50IGxpc3QuDQo+ID4+DQo+ID4+IFByb2JpbmcgYXQgMHgwIGlzIHBv c3NpYmxlIGFuZCB1c2VmdWwgd2hlbiBsaWIuYmluIGlzIG5vdCBhIG5vcm1hbA0KPiA+PiBzaGFy ZWQgb2JqZWN0IGJ1dCBpcyBtYW51YWxseSBtYXBwZWQuIEhvd2V2ZXIsIGluIHRoaXMgY2FzZSBr ZXJuZWwNCj4gPj4gcmVwb3J0Og0KPiA+Pg0KPiA+PiAgICMgY2F0IC9zeXMva2VybmVsL2RlYnVn L3RyYWNpbmcvdXByb2JlX2V2ZW50cw0KPiA+PiAgIHA6cHJvYmVfbGliYy9hYnNfMCAvdG1wL294 eWdlbl9yb290L2xpYjY0L2xpYmMtMi4xOC5zbzoweCAgICAgICAgICAobnVsbCkgYXJnMT0lYXgN Cj4gPj4NCj4gPj4gVGhpcyBwYXRjaCBzdXBwb3J0cyB0aGUgYWJvdmUga2VybmVsIG91dHB1dC4N Cj4gPiBGb3JtZXIgcGFydCBpcyBPSyB0byBtZS4NCj4gPg0KPiA+PiBJbiBhZGRpdGlvbiwgdGhp cyBwYXRjaCBhbHNvIGZpeGVzIGNvbnZlcnRfdG9fcGVyZl9wcm9iZV9wb2ludCgpIHRoYXQsDQo+ ID4+IGlmIGZhaWxlZCB0byBmaW5kIHByb2JlIHBvaW50IGZyb20gYm90aCBvZiBkd2FyZiBhbmQg bWFwLCBpbiBhbGwgY2FzZXMNCj4gPj4gcHAtPmZ1bmN0aW9uIHNob3VsZCBiZSBmaWxsZWQgd2l0 aCBhIHN0cmR1cCgpIHJlc3VsdCwgb3IgdGhlIGZvbGxvd2luZw0KPiA+PiBFTk9NRU0gZXJyb3Ig Y29kZSBpcyBpbmNvcnJlY3QuIFJlbW92ZSAhdHAtPm1vZHVsZSAmJiAhaXNfa3Byb2JlDQo+ID4+ IGNvbmRpdGlvbiBzbyBhbHdheXMgdXNlIGFkZHJlc3MgdG8gYnVpbGQgZnVuY3Rpb24gbmFtZSBp ZiBzeW1ib2wgaXMgbm90DQo+ID4+IGZvdW5kLg0KPiA+IE5vLCBJIHRoaW5rIHRoaXMgc2hvdWxk IGJlIGluY2x1ZGVkIGluIDMvNCwgc2luY2UgdW50aWwgdGhhdCBwZXJmIHByb2JlDQo+ID4gZG9l c24ndCBzdXBwb3J0IGFic29sdXRlIGFkZHJlc3Mgb24ga2VybmVsLg0KPiANCj4gVGhpcyBpcyBm b3IgbWFudWFsbHkgaW50cm9kdWNlZCBwcm9iaW5nIHBvaW50cy4NCj4gDQo+IGNvbnZlcnRfdG9f cGVyZl9wcm9iZV9wb2ludCBpcyBjYWxsZWQgYnk6DQo+IA0KPiBwZXJmIHByb2JlIC1sIC0+IHNo b3dfcGVyZl9wcm9iZV9ldmVudHMgLT4gX19zaG93X3BlcmZfcHJvYmVfZXZlbnRzIC0tPiBjb252 ZXJ0X3RvX3BlcmZfcHJvYmVfZXZlbnQNCj4gDQo+IElmIHRoZXJlIGlzIGEgbWFudWFsbHkgaW5z ZXJ0ZWQgcHJvYmluZyBwb2ludCB0aGVyZSwgJ3BlcmYgcHJvYmUgLWwnIHJlcG9ydHMgYW4gZXJy b3IuDQo+IA0KPiBIZXJlIGlzIHRoZSByZXN1bHQgaWYgSSByZW1vdmUgdGhlIHNlY29uZCBwYXJ0 Og0KPiANCj4gJCBnaXQgbG9nIC0tb25lbGluZSAgIyBJJ20gaW4gMi80DQo+IGFhZTJjMmMgcGVy ZiBwcm9iZTogRml4IGxpc3QgcmVzdWx0IHdoZW4gYWRkcmVzcyBpcyB6ZXJvDQo+IDkzMWRmZjUg cGVyZiBwcm9iZTogUHJldmVudCBzZWdmYXVsdCB3aGVuIHJlYWRpbmcgcHJvYmUgcG9pbnQgd2l0 aA0KPiBhYnNvbHV0ZSBhZGRyZXNzDQo+IC4uLg0KPiANCj4gJCBnaXQgZGlmZiAgICAjIHJlbW92 ZSB0aGUgc2Vjb25kIHBhcnQNCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1l dmVudC5jIGIvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWV2ZW50LmMNCj4gaW5kZXggOTI2YmNlYy4u ZGUyYzI3ZSAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWV2ZW50LmMNCj4g KysrIGIvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWV2ZW50LmMNCj4gQEAgLTE4ODgsNyArMTg4OCw3 IEBAIHN0YXRpYyBpbnQgY29udmVydF90b19wZXJmX3Byb2JlX3BvaW50KHN0cnVjdA0KPiBwcm9i ZV90cmFjZV9wb2ludCAqdHAsDQo+ICAgICAgICAgIGlmICh0cC0+c3ltYm9sKSB7DQo+ICAgICAg ICAgICAgICAgICAgcHAtPmZ1bmN0aW9uID0gc3RyZHVwKHRwLT5zeW1ib2wpOw0KPiAgICAgICAg ICAgICAgICAgIHBwLT5vZmZzZXQgPSB0cC0+b2Zmc2V0Ow0KPiAtICAgICAgIH0gZWxzZSB7DQo+ ICsgICAgICAgfSBlbHNlIGlmICghdHAtPm1vZHVsZSAmJiAhaXNfa3Byb2JlKSB7DQo+ICAgICAg ICAgICAgICAgICAgcmV0ID0gZV9zbnByaW50ZihidWYsIDEyOCwgIjB4JSIgUFJJeDY0LCAodTY0 KXRwLT5hZGRyZXNzKTsNCj4gICAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+IA0KPiANCj4gLi4uDQo+ICMgZWNobyAn cDpwcm9iZV9saWJjL2Fic181IC9saWI2NC9saWJjLnNvLjY6MHg1JyA+DQo+IC9zeXMva2VybmVs L2RlYnVnL3RyYWNpbmcvdXByb2JlX2V2ZW50cw0KPiAjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy90 cmFjaW5nL3Vwcm9iZV9ldmVudHMNCj4gICBwOnByb2JlX2xpYmMvYWJzXzUgL2xpYjY0L2xpYmMu c28uNjoweDAwMDAwMDAwMDAwMDAwMDUNCj4gIyBwZXJmIHByb2JlIC1sDQo+ICAgIEVycm9yOiBG YWlsZWQgdG8gc2hvdyBldmVudCBsaXN0DQo+IA0KPiBUaGVuIGFkZCBpdCBiYWNrOg0KPiANCj4g JCBnaXQgcmVzZXQgLS1oYXJkIEhFQUQNCj4gLi4uDQo+ICMgcGVyZiBwcm9iZSAtbA0KPiAgIHBy b2JlX2xpYmM6YWJzXzUgICAgIChvbiAweDUgaW4gL2xpYjY0L2xpYmMuc28uNikNCg0KSG1tLCBP SywgdGhlbiB0aGlzIHNob3VsZCBiZSBpbiB0aGUgMS80IG9yIHNwbGl0dGVkIGFzIGFuIGluZGVw ZW5kZW50IHBhdGNoLA0KYmVjYXVzZSB0aGlzIHBhcnQgaXQgaXMgbm90ICJ3aGVuIGFkZHJlc3Mg aXMgemVybyIsIGp1c3Qgc3VwcG9ydCBzaG93aW5nDQphYnNvbHV0ZSBhZGRyZXNzIHByb2JlcyBv biB1c2VyIGFwcGxpY2F0aW9ucy4NCg0KVGhhbmsgeW91LA0KDQo= -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Wang Nan <wangnan0@huawei.com> |
|---|---|
| Date | 2015-08-26 09:50 +0200 |
| Subject | [PATCH v2 4/4] tracing/uprobes: Do not print '0x (null)' when offset is 0 |
| Message-ID | <q1DD5-7K7-29@gated-at.bofh.it> |
| In reply to | #1213621 |
When manually added uprobe point with zero address, 'uprobe_events' output
'(null)' instead of 0x00000000:
# echo p:probe_libc/abs_0 /path/to/lib.bin:0x0 arg1=%ax > \
/sys/kernel/debug/tracing/uprobe_events
# cat /sys/kernel/debug/tracing/uprobe_events
p:probe_libc/abs_0 /path/to/lib.bin:0x (null) arg1=%ax
This patch fixes this behavior:
# cat /sys/kernel/debug/tracing/uprobe_events
p:probe_libc/abs_0 /path/to/lib.bin:0x0000000000000000
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
---
kernel/trace/trace_uprobe.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c
index f97479f..d2f6d0b 100644
--- a/kernel/trace/trace_uprobe.c
+++ b/kernel/trace/trace_uprobe.c
@@ -601,7 +601,22 @@ static int probes_seq_show(struct seq_file *m, void *v)
seq_printf(m, "%c:%s/%s", c, tu->tp.call.class->system,
trace_event_name(&tu->tp.call));
- seq_printf(m, " %s:0x%p", tu->filename, (void *)tu->offset);
+ seq_printf(m, " %s:", tu->filename);
+
+ /* Don't print "0x (null)" when offset is 0 */
+ if (tu->offset) {
+ seq_printf(m, "0x%p", (void *)tu->offset);
+ } else {
+ switch (sizeof(void *)) {
+ case 4:
+ seq_printf(m, "0x00000000");
+ break;
+ case 8:
+ default:
+ seq_printf(m, "0x0000000000000000");
+ break;
+ }
+ }
for (i = 0; i < tu->tp.nr_args; i++)
seq_printf(m, " %s=%s", tu->tp.args[i].name, tu->tp.args[i].comm);
--
1.8.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> |
|---|---|
| Date | 2015-08-26 12:10 +0200 |
| Subject | RE: [PATCH v2 4/4] tracing/uprobes: Do not print '0x (null)' when offset is 0 |
| Message-ID | <q1FOy-2Am-11@gated-at.bofh.it> |
| In reply to | #1213630 |
PiBGcm9tOiBXYW5nIE5hbiBbbWFpbHRvOndhbmduYW4wQGh1YXdlaS5jb21dDQo+IA0KPiBXaGVu IG1hbnVhbGx5IGFkZGVkIHVwcm9iZSBwb2ludCB3aXRoIHplcm8gYWRkcmVzcywgJ3Vwcm9iZV9l dmVudHMnIG91dHB1dA0KPiAnKG51bGwpJyBpbnN0ZWFkIG9mIDB4MDAwMDAwMDA6DQo+IA0KPiAg IyBlY2hvIHA6cHJvYmVfbGliYy9hYnNfMCAvcGF0aC90by9saWIuYmluOjB4MCBhcmcxPSVheCA+ IFwNCj4gICAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJvYmVfZXZlbnRz DQo+IA0KPiAgIyBjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJvYmVfZXZlbnRzDQo+ ICAgIHA6cHJvYmVfbGliYy9hYnNfMCAvcGF0aC90by9saWIuYmluOjB4ICAgICAgICAgIChudWxs KSBhcmcxPSVheA0KPiANCj4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGJlaGF2aW9yOg0KPiANCj4g ICMgY2F0IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdXByb2JlX2V2ZW50cw0KPiAgcDpwcm9i ZV9saWJjL2Fic18wIC9wYXRoL3RvL2xpYi5iaW46MHgwMDAwMDAwMDAwMDAwMDAwDQoNCg0KTG9v a3MgR29vZCB0byBtZSA6KQ0KDQpBY2tlZC1ieTogTWFzYW1pIEhpcmFtYXRzdSA8bWFzYW1pLmhp cmFtYXRzdS5wdEBoaXRhY2hpLmNvbT4NCg0KVGhhbmtzIQ0KDQo+IA0KPiBTaWduZWQtb2ZmLWJ5 OiBXYW5nIE5hbiA8d2FuZ25hbjBAaHVhd2VpLmNvbT4NCj4gQ2M6IEFybmFsZG8gQ2FydmFsaG8g ZGUgTWVsbyA8YWNtZUBrZXJuZWwub3JnPg0KPiBDYzogSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhh dC5jb20+DQo+IENjOiBNYXNhbWkgSGlyYW1hdHN1IDxtYXNhbWkuaGlyYW1hdHN1LnB0QGhpdGFj aGkuY29tPg0KPiBDYzogTmFtaHl1bmcgS2ltIDxuYW1oeXVuZ0BrZXJuZWwub3JnPg0KPiBDYzog U3RldmVuIFJvc3RlZHQgPHJvc3RlZHRAZ29vZG1pcy5vcmc+DQo+IC0tLQ0KPiAga2VybmVsL3Ry YWNlL3RyYWNlX3Vwcm9iZS5jIHwgMTcgKysrKysrKysrKysrKysrKy0NCj4gIDEgZmlsZSBjaGFu Z2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv a2VybmVsL3RyYWNlL3RyYWNlX3Vwcm9iZS5jIGIva2VybmVsL3RyYWNlL3RyYWNlX3Vwcm9iZS5j DQo+IGluZGV4IGY5NzQ3OWYuLmQyZjZkMGIgMTAwNjQ0DQo+IC0tLSBhL2tlcm5lbC90cmFjZS90 cmFjZV91cHJvYmUuYw0KPiArKysgYi9rZXJuZWwvdHJhY2UvdHJhY2VfdXByb2JlLmMNCj4gQEAg LTYwMSw3ICs2MDEsMjIgQEAgc3RhdGljIGludCBwcm9iZXNfc2VxX3Nob3coc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp2KQ0KPiANCj4gIAlzZXFfcHJpbnRmKG0sICIlYzolcy8lcyIsIGMsIHR1 LT50cC5jYWxsLmNsYXNzLT5zeXN0ZW0sDQo+ICAJCQl0cmFjZV9ldmVudF9uYW1lKCZ0dS0+dHAu Y2FsbCkpOw0KPiAtCXNlcV9wcmludGYobSwgIiAlczoweCVwIiwgdHUtPmZpbGVuYW1lLCAodm9p ZCAqKXR1LT5vZmZzZXQpOw0KPiArCXNlcV9wcmludGYobSwgIiAlczoiLCB0dS0+ZmlsZW5hbWUp Ow0KPiArDQo+ICsJLyogRG9uJ3QgcHJpbnQgIjB4ICAobnVsbCkiIHdoZW4gb2Zmc2V0IGlzIDAg Ki8NCj4gKwlpZiAodHUtPm9mZnNldCkgew0KPiArCQlzZXFfcHJpbnRmKG0sICIweCVwIiwgKHZv aWQgKil0dS0+b2Zmc2V0KTsNCj4gKwl9IGVsc2Ugew0KPiArCQlzd2l0Y2ggKHNpemVvZih2b2lk ICopKSB7DQo+ICsJCWNhc2UgNDoNCj4gKwkJCXNlcV9wcmludGYobSwgIjB4MDAwMDAwMDAiKTsN Cj4gKwkJCWJyZWFrOw0KPiArCQljYXNlIDg6DQo+ICsJCWRlZmF1bHQ6DQo+ICsJCQlzZXFfcHJp bnRmKG0sICIweDAwMDAwMDAwMDAwMDAwMDAiKTsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsJ fQ0KPiANCj4gIAlmb3IgKGkgPSAwOyBpIDwgdHUtPnRwLm5yX2FyZ3M7IGkrKykNCj4gIAkJc2Vx X3ByaW50ZihtLCAiICVzPSVzIiwgdHUtPnRwLmFyZ3NbaV0ubmFtZSwgdHUtPnRwLmFyZ3NbaV0u Y29tbSk7DQo+IC0tDQo+IDEuOC4zLjQNCg0K -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Wang Nan <wangnan0@huawei.com> |
|---|---|
| Date | 2015-08-26 09:50 +0200 |
| Subject | [PATCH v2 3/4] perf probe: Support probing at absolute address |
| Message-ID | <q1DD4-7K7-25@gated-at.bofh.it> |
| In reply to | #1213621 |
It should be useful to allow 'perf probe' probe at absolute offset of
a target. For example, when (u)probing at a instruction of a shared
object in a embedded system where debuginfo is not avaliable but we
know the offset of that instruction by manually digging.
This patch enables following perf probe command syntax:
# perf probe 0xffffffff811e6615
And
# perf probe /lib/x86_64-linux-gnu/libc-2.19.so 0xeb860
In the above example, we don't need a anchor symbol, so it is possible
to compute absolute addresses using other methods and then use
'perf probe' to create the probing points.
This patch also fix a bug that, when offset is provided but function is
skipped, parse_perf_probe_point() will give function a "" string, so
the checking code at the end of this function is not used. For example:
# perf probe +0x1234
Failed to find symbol in kernel
Error: Failed to add events.
After this patch:
# perf probe +0x1234
Semantic error :Offset requires an entry function.
Error: Command Parse Error.
v1 -> v2:
Drop the leading '+' in cmdline;
Allow uprobing at offset 0x0;
Improve 'perf probe -l' result when uprobe at area without debuginfo.
Test result:
# perf probe 0xffffffff8119d175 %ax
# perf probe sys_write %ax
# perf probe /lib64/libc-2.18.so 0x0 %ax
# perf probe /lib64/libc-2.18.so 0x5 %ax
# perf probe /lib64/libc-2.18.so 0xd8e40 %ax
# perf probe /lib64/libc-2.18.so __write %ax
# perf probe /lib64/libc-2.18.so 0xd8e49 %ax
# cat /sys/kernel/debug/tracing/uprobe_events
p:probe_libc/abs_0 /lib64/libc-2.18.so:0x (null) arg1=%ax
p:probe_libc/abs_5 /lib64/libc-2.18.so:0x0000000000000005 arg1=%ax
p:probe_libc/abs_d8e40 /lib64/libc-2.18.so:0x00000000000d8e40 arg1=%ax
p:probe_libc/__write /lib64/libc-2.18.so:0x00000000000d8e40 arg1=%ax
p:probe_libc/abs_d8e49 /lib64/libc-2.18.so:0x00000000000d8e49 arg1=%ax
# cat /sys/kernel/debug/tracing/kprobe_events
p:probe/abs_ffffffff8119d175 0xffffffff8119d175 arg1=%ax
p:probe/sys_write _text+1692016 arg1=%ax
# perf probe -l
Failed to find debug information for address 5
probe:abs_ffffffff8119d175 (on sys_write+5 with arg1)
probe:sys_write (on sys_write with arg1)
probe_libc:__write (on @unix/syscall-template.S:81 in /lib64/libc-2.18.so with arg1)
probe_libc:abs_0 (on 0x0 in /lib64/libc-2.18.so with arg1)
probe_libc:abs_5 (on 0x5 in /lib64/libc-2.18.so with arg1)
probe_libc:abs_d8e40 (on @unix/syscall-template.S:81 in /lib64/libc-2.18.so with arg1)
probe_libc:abs_d8e49 (on __GI___libc_write+9 in /lib64/libc-2.18.so with arg1)
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
---
tools/perf/util/probe-event.c | 172 ++++++++++++++++++++++++++++++++++++++---
tools/perf/util/probe-event.h | 4 +
tools/perf/util/probe-finder.c | 21 +----
3 files changed, 170 insertions(+), 27 deletions(-)
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 3ce223d..b94a8d7 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -1196,15 +1196,37 @@ static int parse_perf_probe_point(char *arg, struct perf_probe_event *pev)
*ptr++ = '\0';
}
- tmp = strdup(arg);
- if (tmp == NULL)
- return -ENOMEM;
+ if (arg[0] == '\0')
+ tmp = NULL;
+ else {
+ tmp = strdup(arg);
+ if (tmp == NULL)
+ return -ENOMEM;
+ }
if (file_spec)
pp->file = tmp;
- else
+ else {
pp->function = tmp;
+ /*
+ * Keep pp->function even if this is absolute address,
+ * so it can mark whether abs_address is valid.
+ * Which make 'perf probe lib.bin 0x0' possible.
+ *
+ * Note that checking length of tmp is not needed
+ * because when we access tmp[1] we know tmp[0] is '0',
+ * so tmp[1] should always valid (but could be '\0').
+ */
+ if (tmp && !strncmp(tmp, "0x", 2)) {
+ pp->abs_address = strtoul(pp->function, &tmp, 0);
+ if (*tmp != '\0') {
+ semantic_error("Invalid absolute address.\n");
+ return -EINVAL;
+ }
+ }
+ }
+
/* Parse other options */
while (ptr) {
arg = ptr;
@@ -1802,14 +1824,29 @@ char *synthesize_probe_trace_command(struct probe_trace_event *tev)
if (len <= 0)
goto error;
- /* Uprobes must have tp->address and tp->module */
- if (tev->uprobes && (!tp->address || !tp->module))
+ /* Uprobes must have tp->module */
+ if (tev->uprobes && !tp->module)
goto error;
+ /*
+ * If tp->address == 0, then this point must be a
+ * absolute address uprobe.
+ * try_to_find_absolute_address() should have made
+ * tp->symbol to "0x0".
+ */
+ if (tev->uprobes && !tp->address) {
+ if (!tp->symbol || strcmp(tp->symbol, "0x0"))
+ goto error;
+ }
/* Use the tp->address for uprobes */
if (tev->uprobes)
ret = e_snprintf(buf + len, MAX_CMDLEN - len, "%s:0x%lx",
tp->module, tp->address);
+ else if (!strncmp(tp->symbol, "0x", 2))
+ /* Absolute address. See try_to_find_absolute_address() */
+ ret = e_snprintf(buf + len, MAX_CMDLEN - len, "%s%s0x%lx",
+ tp->module ?: "", tp->module ? ":" : "",
+ tp->address);
else
ret = e_snprintf(buf + len, MAX_CMDLEN - len, "%s%s%s+%lu",
tp->module ?: "", tp->module ? ":" : "",
@@ -1872,8 +1909,8 @@ out:
}
static int convert_to_perf_probe_point(struct probe_trace_point *tp,
- struct perf_probe_point *pp,
- bool is_kprobe)
+ struct perf_probe_point *pp,
+ bool is_kprobe)
{
char buf[128];
int ret;
@@ -2334,7 +2371,9 @@ static int probe_trace_event__set_name(struct probe_trace_event *tev,
if (pev->event)
event = pev->event;
else
- if (pev->point.function && !strisglob(pev->point.function))
+ if (pev->point.function &&
+ (strncmp(pev->point.function, "0x", 2) != 0) &&
+ !strisglob(pev->point.function))
event = pev->point.function;
else
event = tev->point.realname;
@@ -2604,6 +2643,98 @@ err_out:
goto out;
}
+static int try_to_find_absolute_address(struct perf_probe_event *pev,
+ struct probe_trace_event **tevs)
+{
+ struct perf_probe_point *pp = &pev->point;
+ struct probe_trace_event *tev;
+ struct probe_trace_point *tp;
+ int i, err;
+
+ if (!(pev->point.function && !strncmp(pev->point.function, "0x", 2)))
+ return -EINVAL;
+ if (perf_probe_event_need_dwarf(pev))
+ return -EINVAL;
+
+ /*
+ * This is 'perf probe /lib/libc.so 0xabcd'. Try to probe at
+ * absolute address.
+ *
+ * Only one tev can be generated by this.
+ */
+ *tevs = zalloc(sizeof(*tev));
+ if (!*tevs)
+ return -ENOMEM;
+
+ tev = *tevs;
+ tp = &tev->point;
+
+ /*
+ * Don't use tp->offset, use address directly, because
+ * in synthesize_probe_trace_command() address cannot be
+ * zero.
+ */
+ tp->address = pev->point.abs_address;
+ tp->retprobe = pp->retprobe;
+ tev->uprobes = pev->uprobes;
+
+ err = -ENOMEM;
+ /*
+ * Give it a '0x' leading symbol name.
+ * In __add_probe_trace_events, a NULL symbol is interpreted as
+ * invalud.
+ */
+ if (asprintf(&tp->symbol, "0x%lx", tp->address) < 0)
+ goto errout;
+
+ /* For kprobe, check range */
+ if ((!tev->uprobes) &&
+ (kprobe_warn_out_range(tev->point.symbol,
+ tev->point.address))) {
+ err = -EACCES;
+ goto errout;
+ }
+
+ if (asprintf(&tp->realname, "abs_%lx", tp->address) < 0)
+ goto errout;
+
+ if (pev->target) {
+ tp->module = strdup(pev->target);
+ if (!tp->module)
+ goto errout;
+ }
+
+ if (tev->group) {
+ tev->group = strdup(pev->group);
+ if (!tev->group)
+ goto errout;
+ }
+
+ if (pev->event) {
+ tev->event = strdup(pev->event);
+ if (!tev->event)
+ goto errout;
+ }
+
+ tev->nargs = pev->nargs;
+ tev->args = zalloc(sizeof(struct probe_trace_arg) * tev->nargs);
+ if (!tev->args) {
+ err = -ENOMEM;
+ goto errout;
+ }
+ for (i = 0; i < tev->nargs; i++)
+ copy_to_probe_trace_arg(&tev->args[i], &pev->args[i]);
+
+ return 1;
+
+errout:
+ if (*tevs) {
+ clear_probe_trace_events(*tevs, 1);
+ *tevs = NULL;
+ }
+ return err;
+}
+
bool __weak arch__prefers_symtab(void) { return false; }
static int convert_to_probe_trace_events(struct perf_probe_event *pev,
@@ -2620,6 +2751,10 @@ static int convert_to_probe_trace_events(struct perf_probe_event *pev,
}
}
+ ret = try_to_find_absolute_address(pev, tevs);
+ if (ret > 0)
+ return ret;
+
if (arch__prefers_symtab() && !perf_probe_event_need_dwarf(pev)) {
ret = find_probe_trace_events_from_map(pev, tevs);
if (ret > 0)
@@ -2787,3 +2922,22 @@ end:
return ret;
}
+int copy_to_probe_trace_arg(struct probe_trace_arg *tvar,
+ struct perf_probe_arg *pvar)
+{
+ tvar->value = strdup(pvar->var);
+ if (tvar->value == NULL)
+ return -ENOMEM;
+ if (pvar->type) {
+ tvar->type = strdup(pvar->type);
+ if (tvar->type == NULL)
+ return -ENOMEM;
+ }
+ if (pvar->name) {
+ tvar->name = strdup(pvar->name);
+ if (tvar->name == NULL)
+ return -ENOMEM;
+ } else
+ tvar->name = NULL;
+ return 0;
+}
diff --git a/tools/perf/util/probe-event.h b/tools/perf/util/probe-event.h
index 9c7b99e..de0dd13 100644
--- a/tools/perf/util/probe-event.h
+++ b/tools/perf/util/probe-event.h
@@ -61,6 +61,7 @@ struct perf_probe_point {
bool retprobe; /* Return probe flag */
char *lazy_line; /* Lazy matching pattern */
unsigned long offset; /* Offset from function entry */
+ unsigned long abs_address; /* Absolute address of the point */
};
/* Perf probe probing argument field chain */
@@ -162,4 +163,7 @@ int e_snprintf(char *str, size_t size, const char *format, ...)
/* Maximum index number of event-name postfix */
#define MAX_EVENT_INDEX 1024
+int copy_to_probe_trace_arg(struct probe_trace_arg *tvar,
+ struct perf_probe_arg *pvar);
+
#endif /*_PROBE_EVENT_H */
diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index 4b1e074..5ab9cd6 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -553,24 +553,9 @@ static int find_variable(Dwarf_Die *sc_die, struct probe_finder *pf)
char buf[32], *ptr;
int ret = 0;
- if (!is_c_varname(pf->pvar->var)) {
- /* Copy raw parameters */
- pf->tvar->value = strdup(pf->pvar->var);
- if (pf->tvar->value == NULL)
- return -ENOMEM;
- if (pf->pvar->type) {
- pf->tvar->type = strdup(pf->pvar->type);
- if (pf->tvar->type == NULL)
- return -ENOMEM;
- }
- if (pf->pvar->name) {
- pf->tvar->name = strdup(pf->pvar->name);
- if (pf->tvar->name == NULL)
- return -ENOMEM;
- } else
- pf->tvar->name = NULL;
- return 0;
- }
+ /* Copy raw parameters */
+ if (!is_c_varname(pf->pvar->var))
+ return copy_to_probe_trace_arg(pf->tvar, pf->pvar);
if (pf->pvar->name)
pf->tvar->name = strdup(pf->pvar->name);
--
1.8.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> |
|---|---|
| Date | 2015-08-26 11:50 +0200 |
| Subject | RE: [PATCH v2 3/4] perf probe: Support probing at absolute address |
| Message-ID | <q1Fvb-1Yz-13@gated-at.bofh.it> |
| In reply to | #1213631 |
PiBGcm9tOiBXYW5nIE5hbiBbbWFpbHRvOndhbmduYW4wQGh1YXdlaS5jb21dDQo+IA0KPiBJdCBz aG91bGQgYmUgdXNlZnVsIHRvIGFsbG93ICdwZXJmIHByb2JlJyBwcm9iZSBhdCBhYnNvbHV0ZSBv ZmZzZXQgb2YNCj4gYSB0YXJnZXQuIEZvciBleGFtcGxlLCB3aGVuICh1KXByb2JpbmcgYXQgYSBp bnN0cnVjdGlvbiBvZiBhIHNoYXJlZA0KPiBvYmplY3QgaW4gYSBlbWJlZGRlZCBzeXN0ZW0gd2hl cmUgZGVidWdpbmZvIGlzIG5vdCBhdmFsaWFibGUgYnV0IHdlDQo+IGtub3cgdGhlIG9mZnNldCBv ZiB0aGF0IGluc3RydWN0aW9uIGJ5IG1hbnVhbGx5IGRpZ2dpbmcuDQo+IA0KPiBUaGlzIHBhdGNo IGVuYWJsZXMgZm9sbG93aW5nIHBlcmYgcHJvYmUgY29tbWFuZCBzeW50YXg6DQo+IA0KPiAgIyBw ZXJmIHByb2JlIDB4ZmZmZmZmZmY4MTFlNjYxNQ0KPiANCj4gQW5kDQo+IA0KPiAgIyBwZXJmIHBy b2JlIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJjLTIuMTkuc28gMHhlYjg2MA0KPiANCj4gSW4g dGhlIGFib3ZlIGV4YW1wbGUsIHdlIGRvbid0IG5lZWQgYSBhbmNob3Igc3ltYm9sLCBzbyBpdCBp cyBwb3NzaWJsZQ0KPiB0byBjb21wdXRlIGFic29sdXRlIGFkZHJlc3NlcyB1c2luZyBvdGhlciBt ZXRob2RzIGFuZCB0aGVuIHVzZQ0KPiAncGVyZiBwcm9iZScgdG8gY3JlYXRlIHRoZSBwcm9iaW5n IHBvaW50cy4NCg0KT0ssIHRoaXMgbG9va3MgZ29vZCA6KQ0KDQo+IA0KPiBUaGlzIHBhdGNoIGFs c28gZml4IGEgYnVnIHRoYXQsIHdoZW4gb2Zmc2V0IGlzIHByb3ZpZGVkIGJ1dCBmdW5jdGlvbiBp cw0KPiBza2lwcGVkLCBwYXJzZV9wZXJmX3Byb2JlX3BvaW50KCkgd2lsbCBnaXZlIGZ1bmN0aW9u IGEgIiIgc3RyaW5nLCBzbw0KPiB0aGUgY2hlY2tpbmcgY29kZSBhdCB0aGUgZW5kIG9mIHRoaXMg ZnVuY3Rpb24gaXMgbm90IHVzZWQuIEZvciBleGFtcGxlOg0KPiANCj4gICMgcGVyZiBwcm9iZSAr MHgxMjM0DQo+ICBGYWlsZWQgdG8gZmluZCBzeW1ib2wgIGluIGtlcm5lbA0KPiAgICBFcnJvcjog RmFpbGVkIHRvIGFkZCBldmVudHMuDQo+IA0KPiBBZnRlciB0aGlzIHBhdGNoOg0KPiANCj4gICMg cGVyZiBwcm9iZSArMHgxMjM0DQo+ICBTZW1hbnRpYyBlcnJvciA6T2Zmc2V0IHJlcXVpcmVzIGFu IGVudHJ5IGZ1bmN0aW9uLg0KPiAgICBFcnJvcjogQ29tbWFuZCBQYXJzZSBFcnJvci4NCg0KSG1t LCBjb3VsZCB5b3UgcGxlYXNlIHNwbGl0IHRoZSBidWdmaXggZnJvbSBmZWF0dXJlIGFkZGl0aW9u IHBhdGNoPw0KDQpUaGFuayB5b3UsDQoNCj4gDQo+IHYxIC0+IHYyOg0KPiAgIERyb3AgdGhlIGxl YWRpbmcgJysnIGluIGNtZGxpbmU7DQo+ICAgQWxsb3cgdXByb2JpbmcgYXQgb2Zmc2V0IDB4MDsN Cj4gICBJbXByb3ZlICdwZXJmIHByb2JlIC1sJyByZXN1bHQgd2hlbiB1cHJvYmUgYXQgYXJlYSB3 aXRob3V0IGRlYnVnaW5mby4NCj4gDQo+IFRlc3QgcmVzdWx0Og0KPiANCj4gICMgcGVyZiBwcm9i ZSAweGZmZmZmZmZmODExOWQxNzUgJWF4DQo+ICAjIHBlcmYgcHJvYmUgc3lzX3dyaXRlICVheA0K PiAgIyBwZXJmIHByb2JlIC9saWI2NC9saWJjLTIuMTguc28gMHgwICVheA0KPiAgIyBwZXJmIHBy b2JlIC9saWI2NC9saWJjLTIuMTguc28gMHg1ICVheA0KPiAgIyBwZXJmIHByb2JlIC9saWI2NC9s aWJjLTIuMTguc28gMHhkOGU0MCAlYXgNCj4gICMgcGVyZiBwcm9iZSAvbGliNjQvbGliYy0yLjE4 LnNvIF9fd3JpdGUgJWF4DQo+ICAjIHBlcmYgcHJvYmUgL2xpYjY0L2xpYmMtMi4xOC5zbyAweGQ4 ZTQ5ICVheA0KPiAgIyBjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJvYmVfZXZlbnRz DQo+IA0KPiAgcDpwcm9iZV9saWJjL2Fic18wIC9saWI2NC9saWJjLTIuMTguc286MHggICAgICAg ICAgKG51bGwpIGFyZzE9JWF4DQo+ICBwOnByb2JlX2xpYmMvYWJzXzUgL2xpYjY0L2xpYmMtMi4x OC5zbzoweDAwMDAwMDAwMDAwMDAwMDUgYXJnMT0lYXgNCj4gIHA6cHJvYmVfbGliYy9hYnNfZDhl NDAgL2xpYjY0L2xpYmMtMi4xOC5zbzoweDAwMDAwMDAwMDAwZDhlNDAgYXJnMT0lYXgNCj4gIHA6 cHJvYmVfbGliYy9fX3dyaXRlIC9saWI2NC9saWJjLTIuMTguc286MHgwMDAwMDAwMDAwMGQ4ZTQw IGFyZzE9JWF4DQo+ICBwOnByb2JlX2xpYmMvYWJzX2Q4ZTQ5IC9saWI2NC9saWJjLTIuMTguc286 MHgwMDAwMDAwMDAwMGQ4ZTQ5IGFyZzE9JWF4DQo+IA0KPiAgIyBjYXQgL3N5cy9rZXJuZWwvZGVi dWcvdHJhY2luZy9rcHJvYmVfZXZlbnRzDQo+IA0KPiAgcDpwcm9iZS9hYnNfZmZmZmZmZmY4MTE5 ZDE3NSAweGZmZmZmZmZmODExOWQxNzUgYXJnMT0lYXgNCj4gIHA6cHJvYmUvc3lzX3dyaXRlIF90 ZXh0KzE2OTIwMTYgYXJnMT0lYXgNCj4gDQo+ICAjIHBlcmYgcHJvYmUgLWwNCj4gDQo+ICBGYWls ZWQgdG8gZmluZCBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgYWRkcmVzcyA1DQo+ICAgIHByb2JlOmFi c19mZmZmZmZmZjgxMTlkMTc1IChvbiBzeXNfd3JpdGUrNSB3aXRoIGFyZzEpDQo+ICAgIHByb2Jl OnN5c193cml0ZSAgICAgIChvbiBzeXNfd3JpdGUgd2l0aCBhcmcxKQ0KPiAgICBwcm9iZV9saWJj Ol9fd3JpdGUgICAob24gQHVuaXgvc3lzY2FsbC10ZW1wbGF0ZS5TOjgxIGluIC9saWI2NC9saWJj LTIuMTguc28gd2l0aCBhcmcxKQ0KPiAgICBwcm9iZV9saWJjOmFic18wICAgICAob24gMHgwIGlu IC9saWI2NC9saWJjLTIuMTguc28gd2l0aCBhcmcxKQ0KPiAgICBwcm9iZV9saWJjOmFic181ICAg ICAob24gMHg1IGluIC9saWI2NC9saWJjLTIuMTguc28gd2l0aCBhcmcxKQ0KPiAgICBwcm9iZV9s aWJjOmFic19kOGU0MCAob24gQHVuaXgvc3lzY2FsbC10ZW1wbGF0ZS5TOjgxIGluIC9saWI2NC9s aWJjLTIuMTguc28gd2l0aCBhcmcxKQ0KPiAgICBwcm9iZV9saWJjOmFic19kOGU0OSAob24gX19H SV9fX2xpYmNfd3JpdGUrOSBpbiAvbGliNjQvbGliYy0yLjE4LnNvIHdpdGggYXJnMSkNCj4gDQo+ IFNpZ25lZC1vZmYtYnk6IFdhbmcgTmFuIDx3YW5nbmFuMEBodWF3ZWkuY29tPg0KPiBDYzogQXJu YWxkbyBDYXJ2YWxobyBkZSBNZWxvIDxhY21lQGtlcm5lbC5vcmc+DQo+IENjOiBJbmdvIE1vbG5h ciA8bWluZ29AcmVkaGF0LmNvbT4NCj4gQ2M6IE1hc2FtaSBIaXJhbWF0c3UgPG1hc2FtaS5oaXJh bWF0c3UucHRAaGl0YWNoaS5jb20+DQo+IENjOiBOYW1oeXVuZyBLaW0gPG5hbWh5dW5nQGtlcm5l bC5vcmc+DQo+IENjOiBTdGV2ZW4gUm9zdGVkdCA8cm9zdGVkdEBnb29kbWlzLm9yZz4NCj4gLS0t DQo+ICB0b29scy9wZXJmL3V0aWwvcHJvYmUtZXZlbnQuYyAgfCAxNzIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0NCj4gIHRvb2xzL3BlcmYvdXRpbC9wcm9iZS1ldmVu dC5oICB8ICAgNCArDQo+ICB0b29scy9wZXJmL3V0aWwvcHJvYmUtZmluZGVyLmMgfCAgMjEgKy0t LS0NCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTcwIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygt KQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1ldmVudC5jIGIvdG9v bHMvcGVyZi91dGlsL3Byb2JlLWV2ZW50LmMNCj4gaW5kZXggM2NlMjIzZC4uYjk0YThkNyAxMDA2 NDQNCj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWV2ZW50LmMNCj4gKysrIGIvdG9vbHMv cGVyZi91dGlsL3Byb2JlLWV2ZW50LmMNCj4gQEAgLTExOTYsMTUgKzExOTYsMzcgQEAgc3RhdGlj IGludCBwYXJzZV9wZXJmX3Byb2JlX3BvaW50KGNoYXIgKmFyZywgc3RydWN0IHBlcmZfcHJvYmVf ZXZlbnQgKnBldikNCj4gIAkJKnB0cisrID0gJ1wwJzsNCj4gIAl9DQo+IA0KPiAtCXRtcCA9IHN0 cmR1cChhcmcpOw0KPiAtCWlmICh0bXAgPT0gTlVMTCkNCj4gLQkJcmV0dXJuIC1FTk9NRU07DQo+ ICsJaWYgKGFyZ1swXSA9PSAnXDAnKQ0KPiArCQl0bXAgPSBOVUxMOw0KPiArCWVsc2Ugew0KPiAr CQl0bXAgPSBzdHJkdXAoYXJnKTsNCj4gKwkJaWYgKHRtcCA9PSBOVUxMKQ0KPiArCQkJcmV0dXJu IC1FTk9NRU07DQo+ICsJfQ0KPiANCj4gIAlpZiAoZmlsZV9zcGVjKQ0KPiAgCQlwcC0+ZmlsZSA9 IHRtcDsNCj4gLQllbHNlDQo+ICsJZWxzZSB7DQo+ICAJCXBwLT5mdW5jdGlvbiA9IHRtcDsNCj4g DQo+ICsJCS8qDQo+ICsJCSAqIEtlZXAgcHAtPmZ1bmN0aW9uIGV2ZW4gaWYgdGhpcyBpcyBhYnNv bHV0ZSBhZGRyZXNzLA0KPiArCQkgKiBzbyBpdCBjYW4gbWFyayB3aGV0aGVyIGFic19hZGRyZXNz IGlzIHZhbGlkLg0KPiArCQkgKiBXaGljaCBtYWtlICdwZXJmIHByb2JlIGxpYi5iaW4gMHgwJyBw b3NzaWJsZS4NCj4gKwkJICoNCj4gKwkJICogTm90ZSB0aGF0IGNoZWNraW5nIGxlbmd0aCBvZiB0 bXAgaXMgbm90IG5lZWRlZA0KPiArCQkgKiBiZWNhdXNlIHdoZW4gd2UgYWNjZXNzIHRtcFsxXSB3 ZSBrbm93IHRtcFswXSBpcyAnMCcsDQo+ICsJCSAqIHNvIHRtcFsxXSBzaG91bGQgYWx3YXlzIHZh bGlkIChidXQgY291bGQgYmUgJ1wwJykuDQo+ICsJCSAqLw0KPiArCQlpZiAodG1wICYmICFzdHJu Y21wKHRtcCwgIjB4IiwgMikpIHsNCj4gKwkJCXBwLT5hYnNfYWRkcmVzcyA9IHN0cnRvdWwocHAt PmZ1bmN0aW9uLCAmdG1wLCAwKTsNCj4gKwkJCWlmICgqdG1wICE9ICdcMCcpIHsNCj4gKwkJCQlz ZW1hbnRpY19lcnJvcigiSW52YWxpZCBhYnNvbHV0ZSBhZGRyZXNzLlxuIik7DQo+ICsJCQkJcmV0 dXJuIC1FSU5WQUw7DQo+ICsJCQl9DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gIAkvKiBQYXJzZSBv dGhlciBvcHRpb25zICovDQo+ICAJd2hpbGUgKHB0cikgew0KPiAgCQlhcmcgPSBwdHI7DQo+IEBA IC0xODAyLDE0ICsxODI0LDI5IEBAIGNoYXIgKnN5bnRoZXNpemVfcHJvYmVfdHJhY2VfY29tbWFu ZChzdHJ1Y3QgcHJvYmVfdHJhY2VfZXZlbnQgKnRldikNCj4gIAlpZiAobGVuIDw9IDApDQo+ICAJ CWdvdG8gZXJyb3I7DQo+IA0KPiAtCS8qIFVwcm9iZXMgbXVzdCBoYXZlIHRwLT5hZGRyZXNzIGFu ZCB0cC0+bW9kdWxlICovDQo+IC0JaWYgKHRldi0+dXByb2JlcyAmJiAoIXRwLT5hZGRyZXNzIHx8 ICF0cC0+bW9kdWxlKSkNCj4gKwkvKiBVcHJvYmVzIG11c3QgaGF2ZSB0cC0+bW9kdWxlICovDQo+ ICsJaWYgKHRldi0+dXByb2JlcyAmJiAhdHAtPm1vZHVsZSkNCj4gIAkJZ290byBlcnJvcjsNCj4g KwkvKg0KPiArCSAqIElmIHRwLT5hZGRyZXNzID09IDAsIHRoZW4gdGhpcyBwb2ludCBtdXN0IGJl IGENCj4gKwkgKiBhYnNvbHV0ZSBhZGRyZXNzIHVwcm9iZS4NCj4gKwkgKiB0cnlfdG9fZmluZF9h YnNvbHV0ZV9hZGRyZXNzKCkgc2hvdWxkIGhhdmUgbWFkZQ0KPiArCSAqIHRwLT5zeW1ib2wgdG8g IjB4MCIuDQo+ICsJICovDQo+ICsJaWYgKHRldi0+dXByb2JlcyAmJiAhdHAtPmFkZHJlc3MpIHsN Cj4gKwkJaWYgKCF0cC0+c3ltYm9sIHx8IHN0cmNtcCh0cC0+c3ltYm9sLCAiMHgwIikpDQo+ICsJ CQlnb3RvIGVycm9yOw0KPiArCX0NCj4gDQo+ICAJLyogVXNlIHRoZSB0cC0+YWRkcmVzcyBmb3Ig dXByb2JlcyAqLw0KPiAgCWlmICh0ZXYtPnVwcm9iZXMpDQo+ICAJCXJldCA9IGVfc25wcmludGYo YnVmICsgbGVuLCBNQVhfQ01ETEVOIC0gbGVuLCAiJXM6MHglbHgiLA0KPiAgCQkJCSB0cC0+bW9k dWxlLCB0cC0+YWRkcmVzcyk7DQo+ICsJZWxzZSBpZiAoIXN0cm5jbXAodHAtPnN5bWJvbCwgIjB4 IiwgMikpDQo+ICsJCS8qIEFic29sdXRlIGFkZHJlc3MuIFNlZSB0cnlfdG9fZmluZF9hYnNvbHV0 ZV9hZGRyZXNzKCkgKi8NCj4gKwkJcmV0ID0gZV9zbnByaW50ZihidWYgKyBsZW4sIE1BWF9DTURM RU4gLSBsZW4sICIlcyVzMHglbHgiLA0KPiArCQkJCSB0cC0+bW9kdWxlID86ICIiLCB0cC0+bW9k dWxlID8gIjoiIDogIiIsDQo+ICsJCQkJIHRwLT5hZGRyZXNzKTsNCj4gIAllbHNlDQo+ICAJCXJl dCA9IGVfc25wcmludGYoYnVmICsgbGVuLCBNQVhfQ01ETEVOIC0gbGVuLCAiJXMlcyVzKyVsdSIs DQo+ICAJCQkJIHRwLT5tb2R1bGUgPzogIiIsIHRwLT5tb2R1bGUgPyAiOiIgOiAiIiwNCj4gQEAg LTE4NzIsOCArMTkwOSw4IEBAIG91dDoNCj4gIH0NCj4gDQo+ICBzdGF0aWMgaW50IGNvbnZlcnRf dG9fcGVyZl9wcm9iZV9wb2ludChzdHJ1Y3QgcHJvYmVfdHJhY2VfcG9pbnQgKnRwLA0KPiAtCQkJ CQlzdHJ1Y3QgcGVyZl9wcm9iZV9wb2ludCAqcHAsDQo+IC0JCQkJCWJvb2wgaXNfa3Byb2JlKQ0K PiArCQkJCSAgICAgICBzdHJ1Y3QgcGVyZl9wcm9iZV9wb2ludCAqcHAsDQo+ICsJCQkJICAgICAg IGJvb2wgaXNfa3Byb2JlKQ0KPiAgew0KPiAgCWNoYXIgYnVmWzEyOF07DQo+ICAJaW50IHJldDsN Cj4gQEAgLTIzMzQsNyArMjM3MSw5IEBAIHN0YXRpYyBpbnQgcHJvYmVfdHJhY2VfZXZlbnRfX3Nl dF9uYW1lKHN0cnVjdCBwcm9iZV90cmFjZV9ldmVudCAqdGV2LA0KPiAgCWlmIChwZXYtPmV2ZW50 KQ0KPiAgCQlldmVudCA9IHBldi0+ZXZlbnQ7DQo+ICAJZWxzZQ0KPiAtCQlpZiAocGV2LT5wb2lu dC5mdW5jdGlvbiAmJiAhc3RyaXNnbG9iKHBldi0+cG9pbnQuZnVuY3Rpb24pKQ0KPiArCQlpZiAo cGV2LT5wb2ludC5mdW5jdGlvbiAmJg0KPiArCQkJKHN0cm5jbXAocGV2LT5wb2ludC5mdW5jdGlv biwgIjB4IiwgMikgIT0gMCkgJiYNCj4gKwkJCSFzdHJpc2dsb2IocGV2LT5wb2ludC5mdW5jdGlv bikpDQo+ICAJCQlldmVudCA9IHBldi0+cG9pbnQuZnVuY3Rpb247DQo+ICAJCWVsc2UNCj4gIAkJ CWV2ZW50ID0gdGV2LT5wb2ludC5yZWFsbmFtZTsNCj4gQEAgLTI2MDQsNiArMjY0Myw5OCBAQCBl cnJfb3V0Og0KPiAgCWdvdG8gb3V0Ow0KPiAgfQ0KPiANCj4gK3N0YXRpYyBpbnQgdHJ5X3RvX2Zp bmRfYWJzb2x1dGVfYWRkcmVzcyhzdHJ1Y3QgcGVyZl9wcm9iZV9ldmVudCAqcGV2LA0KPiArCQkJ CQlzdHJ1Y3QgcHJvYmVfdHJhY2VfZXZlbnQgKip0ZXZzKQ0KPiArew0KPiArCXN0cnVjdCBwZXJm X3Byb2JlX3BvaW50ICpwcCA9ICZwZXYtPnBvaW50Ow0KPiArCXN0cnVjdCBwcm9iZV90cmFjZV9l dmVudCAqdGV2Ow0KPiArCXN0cnVjdCBwcm9iZV90cmFjZV9wb2ludCAqdHA7DQo+ICsJaW50IGks IGVycjsNCj4gKw0KPiArCWlmICghKHBldi0+cG9pbnQuZnVuY3Rpb24gJiYgIXN0cm5jbXAocGV2 LT5wb2ludC5mdW5jdGlvbiwgIjB4IiwgMikpKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwlp ZiAocGVyZl9wcm9iZV9ldmVudF9uZWVkX2R3YXJmKHBldikpDQo+ICsJCXJldHVybiAtRUlOVkFM Ow0KPiArDQo+ICsJLyoNCj4gKwkgKiBUaGlzIGlzICdwZXJmIHByb2JlIC9saWIvbGliYy5zbyAw eGFiY2QnLiBUcnkgdG8gcHJvYmUgYXQNCj4gKwkgKiBhYnNvbHV0ZSBhZGRyZXNzLg0KPiArCSAq DQo+ICsJICogT25seSBvbmUgdGV2IGNhbiBiZSBnZW5lcmF0ZWQgYnkgdGhpcy4NCj4gKwkgKi8N Cj4gKwkqdGV2cyA9IHphbGxvYyhzaXplb2YoKnRldikpOw0KPiArCWlmICghKnRldnMpDQo+ICsJ CXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJdGV2ID0gKnRldnM7DQo+ICsJdHAgPSAmdGV2LT5w b2ludDsNCj4gKw0KPiArCS8qDQo+ICsJICogRG9uJ3QgdXNlIHRwLT5vZmZzZXQsIHVzZSBhZGRy ZXNzIGRpcmVjdGx5LCBiZWNhdXNlDQo+ICsJICogaW4gc3ludGhlc2l6ZV9wcm9iZV90cmFjZV9j b21tYW5kKCkgYWRkcmVzcyBjYW5ub3QgYmUNCj4gKwkgKiB6ZXJvLg0KPiArCSAqLw0KPiArCXRw LT5hZGRyZXNzID0gcGV2LT5wb2ludC5hYnNfYWRkcmVzczsNCj4gKwl0cC0+cmV0cHJvYmUgPSBw cC0+cmV0cHJvYmU7DQo+ICsJdGV2LT51cHJvYmVzID0gcGV2LT51cHJvYmVzOw0KPiArDQo+ICsJ ZXJyID0gLUVOT01FTTsNCj4gKwkvKg0KPiArCSAqIEdpdmUgaXQgYSAnMHgnIGxlYWRpbmcgc3lt Ym9sIG5hbWUuDQo+ICsJICogSW4gX19hZGRfcHJvYmVfdHJhY2VfZXZlbnRzLCBhIE5VTEwgc3lt Ym9sIGlzIGludGVycHJldGVkIGFzDQo+ICsJICogaW52YWx1ZC4NCj4gKwkgKi8NCj4gKwlpZiAo YXNwcmludGYoJnRwLT5zeW1ib2wsICIweCVseCIsIHRwLT5hZGRyZXNzKSA8IDApDQo+ICsJCWdv dG8gZXJyb3V0Ow0KPiArDQo+ICsJLyogRm9yIGtwcm9iZSwgY2hlY2sgcmFuZ2UgKi8NCj4gKwlp ZiAoKCF0ZXYtPnVwcm9iZXMpICYmDQo+ICsJICAgIChrcHJvYmVfd2Fybl9vdXRfcmFuZ2UodGV2 LT5wb2ludC5zeW1ib2wsDQo+ICsJCQkJICAgdGV2LT5wb2ludC5hZGRyZXNzKSkpIHsNCj4gKwkJ ZXJyID0gLUVBQ0NFUzsNCj4gKwkJZ290byBlcnJvdXQ7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGFz cHJpbnRmKCZ0cC0+cmVhbG5hbWUsICJhYnNfJWx4IiwgdHAtPmFkZHJlc3MpIDwgMCkNCj4gKwkJ Z290byBlcnJvdXQ7DQo+ICsNCj4gKwlpZiAocGV2LT50YXJnZXQpIHsNCj4gKwkJdHAtPm1vZHVs ZSA9IHN0cmR1cChwZXYtPnRhcmdldCk7DQo+ICsJCWlmICghdHAtPm1vZHVsZSkNCj4gKwkJCWdv dG8gZXJyb3V0Ow0KPiArCX0NCj4gKw0KPiArCWlmICh0ZXYtPmdyb3VwKSB7DQo+ICsJCXRldi0+ Z3JvdXAgPSBzdHJkdXAocGV2LT5ncm91cCk7DQo+ICsJCWlmICghdGV2LT5ncm91cCkNCj4gKwkJ CWdvdG8gZXJyb3V0Ow0KPiArCX0NCj4gKw0KPiArCWlmIChwZXYtPmV2ZW50KSB7DQo+ICsJCXRl di0+ZXZlbnQgPSBzdHJkdXAocGV2LT5ldmVudCk7DQo+ICsJCWlmICghdGV2LT5ldmVudCkNCj4g KwkJCWdvdG8gZXJyb3V0Ow0KPiArCX0NCj4gKw0KPiArCXRldi0+bmFyZ3MgPSBwZXYtPm5hcmdz Ow0KPiArCXRldi0+YXJncyA9IHphbGxvYyhzaXplb2Yoc3RydWN0IHByb2JlX3RyYWNlX2FyZykg KiB0ZXYtPm5hcmdzKTsNCj4gKwlpZiAoIXRldi0+YXJncykgew0KPiArCQllcnIgPSAtRU5PTUVN Ow0KPiArCQlnb3RvIGVycm91dDsNCj4gKwl9DQo+ICsJZm9yIChpID0gMDsgaSA8IHRldi0+bmFy Z3M7IGkrKykNCj4gKwkJY29weV90b19wcm9iZV90cmFjZV9hcmcoJnRldi0+YXJnc1tpXSwgJnBl di0+YXJnc1tpXSk7DQo+ICsNCj4gKwlyZXR1cm4gMTsNCj4gKw0KPiArZXJyb3V0Og0KPiArCWlm ICgqdGV2cykgew0KPiArCQljbGVhcl9wcm9iZV90cmFjZV9ldmVudHMoKnRldnMsIDEpOw0KPiAr CQkqdGV2cyA9IE5VTEw7DQo+ICsJfQ0KPiArCXJldHVybiBlcnI7DQo+ICt9DQo+ICsNCj4gIGJv b2wgX193ZWFrIGFyY2hfX3ByZWZlcnNfc3ltdGFiKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9DQo+ IA0KPiAgc3RhdGljIGludCBjb252ZXJ0X3RvX3Byb2JlX3RyYWNlX2V2ZW50cyhzdHJ1Y3QgcGVy Zl9wcm9iZV9ldmVudCAqcGV2LA0KPiBAQCAtMjYyMCw2ICsyNzUxLDEwIEBAIHN0YXRpYyBpbnQg Y29udmVydF90b19wcm9iZV90cmFjZV9ldmVudHMoc3RydWN0IHBlcmZfcHJvYmVfZXZlbnQgKnBl diwNCj4gIAkJfQ0KPiAgCX0NCj4gDQo+ICsJcmV0ID0gdHJ5X3RvX2ZpbmRfYWJzb2x1dGVfYWRk cmVzcyhwZXYsIHRldnMpOw0KPiArCWlmIChyZXQgPiAwKQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiAr DQo+ICAJaWYgKGFyY2hfX3ByZWZlcnNfc3ltdGFiKCkgJiYgIXBlcmZfcHJvYmVfZXZlbnRfbmVl ZF9kd2FyZihwZXYpKSB7DQo+ICAJCXJldCA9IGZpbmRfcHJvYmVfdHJhY2VfZXZlbnRzX2Zyb21f bWFwKHBldiwgdGV2cyk7DQo+ICAJCWlmIChyZXQgPiAwKQ0KPiBAQCAtMjc4NywzICsyOTIyLDIy IEBAIGVuZDoNCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0KPiANCj4gK2ludCBjb3B5X3RvX3Byb2Jl X3RyYWNlX2FyZyhzdHJ1Y3QgcHJvYmVfdHJhY2VfYXJnICp0dmFyLA0KPiArCQkJICAgIHN0cnVj dCBwZXJmX3Byb2JlX2FyZyAqcHZhcikNCj4gK3sNCj4gKwl0dmFyLT52YWx1ZSA9IHN0cmR1cChw dmFyLT52YXIpOw0KPiArCWlmICh0dmFyLT52YWx1ZSA9PSBOVUxMKQ0KPiArCQlyZXR1cm4gLUVO T01FTTsNCj4gKwlpZiAocHZhci0+dHlwZSkgew0KPiArCQl0dmFyLT50eXBlID0gc3RyZHVwKHB2 YXItPnR5cGUpOw0KPiArCQlpZiAodHZhci0+dHlwZSA9PSBOVUxMKQ0KPiArCQkJcmV0dXJuIC1F Tk9NRU07DQo+ICsJfQ0KPiArCWlmIChwdmFyLT5uYW1lKSB7DQo+ICsJCXR2YXItPm5hbWUgPSBz dHJkdXAocHZhci0+bmFtZSk7DQo+ICsJCWlmICh0dmFyLT5uYW1lID09IE5VTEwpDQo+ICsJCQly ZXR1cm4gLUVOT01FTTsNCj4gKwl9IGVsc2UNCj4gKwkJdHZhci0+bmFtZSA9IE5VTEw7DQo+ICsJ cmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvcHJvYmUtZXZl bnQuaCBiL3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1ldmVudC5oDQo+IGluZGV4IDljN2I5OWUuLmRl MGRkMTMgMTAwNjQ0DQo+IC0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1ldmVudC5oDQo+ICsr KyBiL3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1ldmVudC5oDQo+IEBAIC02MSw2ICs2MSw3IEBAIHN0 cnVjdCBwZXJmX3Byb2JlX3BvaW50IHsNCj4gIAlib29sCQlyZXRwcm9iZTsJLyogUmV0dXJuIHBy b2JlIGZsYWcgKi8NCj4gIAljaGFyCQkqbGF6eV9saW5lOwkvKiBMYXp5IG1hdGNoaW5nIHBhdHRl cm4gKi8NCj4gIAl1bnNpZ25lZCBsb25nCW9mZnNldDsJCS8qIE9mZnNldCBmcm9tIGZ1bmN0aW9u IGVudHJ5ICovDQo+ICsJdW5zaWduZWQgbG9uZwlhYnNfYWRkcmVzczsJLyogQWJzb2x1dGUgYWRk cmVzcyBvZiB0aGUgcG9pbnQgKi8NCj4gIH07DQo+IA0KPiAgLyogUGVyZiBwcm9iZSBwcm9iaW5n IGFyZ3VtZW50IGZpZWxkIGNoYWluICovDQo+IEBAIC0xNjIsNCArMTYzLDcgQEAgaW50IGVfc25w cmludGYoY2hhciAqc3RyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pDQo+ ICAvKiBNYXhpbXVtIGluZGV4IG51bWJlciBvZiBldmVudC1uYW1lIHBvc3RmaXggKi8NCj4gICNk ZWZpbmUgTUFYX0VWRU5UX0lOREVYCTEwMjQNCj4gDQo+ICtpbnQgY29weV90b19wcm9iZV90cmFj ZV9hcmcoc3RydWN0IHByb2JlX3RyYWNlX2FyZyAqdHZhciwNCj4gKwkJCSAgICBzdHJ1Y3QgcGVy Zl9wcm9iZV9hcmcgKnB2YXIpOw0KPiArDQo+ICAjZW5kaWYgLypfUFJPQkVfRVZFTlRfSCAqLw0K PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWZpbmRlci5jIGIvdG9vbHMvcGVy Zi91dGlsL3Byb2JlLWZpbmRlci5jDQo+IGluZGV4IDRiMWUwNzQuLjVhYjljZDYgMTAwNjQ0DQo+ IC0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1maW5kZXIuYw0KPiArKysgYi90b29scy9wZXJm L3V0aWwvcHJvYmUtZmluZGVyLmMNCj4gQEAgLTU1MywyNCArNTUzLDkgQEAgc3RhdGljIGludCBm aW5kX3ZhcmlhYmxlKER3YXJmX0RpZSAqc2NfZGllLCBzdHJ1Y3QgcHJvYmVfZmluZGVyICpwZikN Cj4gIAljaGFyIGJ1ZlszMl0sICpwdHI7DQo+ICAJaW50IHJldCA9IDA7DQo+IA0KPiAtCWlmICgh aXNfY192YXJuYW1lKHBmLT5wdmFyLT52YXIpKSB7DQo+IC0JCS8qIENvcHkgcmF3IHBhcmFtZXRl cnMgKi8NCj4gLQkJcGYtPnR2YXItPnZhbHVlID0gc3RyZHVwKHBmLT5wdmFyLT52YXIpOw0KPiAt CQlpZiAocGYtPnR2YXItPnZhbHVlID09IE5VTEwpDQo+IC0JCQlyZXR1cm4gLUVOT01FTTsNCj4g LQkJaWYgKHBmLT5wdmFyLT50eXBlKSB7DQo+IC0JCQlwZi0+dHZhci0+dHlwZSA9IHN0cmR1cChw Zi0+cHZhci0+dHlwZSk7DQo+IC0JCQlpZiAocGYtPnR2YXItPnR5cGUgPT0gTlVMTCkNCj4gLQkJ CQlyZXR1cm4gLUVOT01FTTsNCj4gLQkJfQ0KPiAtCQlpZiAocGYtPnB2YXItPm5hbWUpIHsNCj4g LQkJCXBmLT50dmFyLT5uYW1lID0gc3RyZHVwKHBmLT5wdmFyLT5uYW1lKTsNCj4gLQkJCWlmIChw Zi0+dHZhci0+bmFtZSA9PSBOVUxMKQ0KPiAtCQkJCXJldHVybiAtRU5PTUVNOw0KPiAtCQl9IGVs c2UNCj4gLQkJCXBmLT50dmFyLT5uYW1lID0gTlVMTDsNCj4gLQkJcmV0dXJuIDA7DQo+IC0JfQ0K PiArCS8qIENvcHkgcmF3IHBhcmFtZXRlcnMgKi8NCj4gKwlpZiAoIWlzX2NfdmFybmFtZShwZi0+ cHZhci0+dmFyKSkNCj4gKwkJcmV0dXJuIGNvcHlfdG9fcHJvYmVfdHJhY2VfYXJnKHBmLT50dmFy LCBwZi0+cHZhcik7DQo+IA0KPiAgCWlmIChwZi0+cHZhci0+bmFtZSkNCj4gIAkJcGYtPnR2YXIt Pm5hbWUgPSBzdHJkdXAocGYtPnB2YXItPm5hbWUpOw0KPiAtLQ0KPiAxLjguMy40DQoNCg== -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | 平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com> |
|---|---|
| Date | 2015-08-26 11:20 +0200 |
| Subject | RE: [PATCH v2 0/4] perf probe, tracing/uprobes: Support probing at absolute address |
| Message-ID | <q1F2a-1qN-23@gated-at.bofh.it> |
| In reply to | #1213621 |
PiBGcm9tOiBXYW5nIE5hbiBbbWFpbHRvOndhbmduYW4wQGh1YXdlaS5jb21dDQo+IA0KPiBUaGUg Z29hbCBvZiB0aGVzZSA0IHBhdGNoZXMgaXMgdG8gYWxsb3cgcGVyZiBwcm9iaW5nIGF0IGFic29s dXRlIGFkZHJlc3MNCj4gZm9yIHVwcm9iZXMgYW5kIGtwcm9iZXMuIER1cmluZyB0aGUgZGV2ZWxv cG1lbnQgc2V2ZXJhbCBzbWFsbCBwcm9ibGVtIGluDQo+ICdwZXJmIHByb2JlIC1sJyBpcyBmb3Vu ZCBhbmQgZml4ZWQuDQo+IA0KPiBQYXRjaCAxIGhhcyBhbHJlYWR5IGFja2VkIGJ5IE1hc2FtaSBI aXJhbWF0c3UuDQo+IA0KPiBQYXRjaCAyIGZpeGVzIGEgcHJvYmxlbSBhYm91dCB6ZXJvIGFkZHJl c3MgaW4gcGVyZiBzaWRlLg0KPiANCj4gUGF0Y2ggMyBpcyB0aGUgbWFpbiBwYXRjaCBvZiB0aGVz ZSA0LiBJdCBhbGxvd3MgZm9sbG93aW5nIGNvbW1hbmQ6DQo+IA0KPiAgIyBwZXJmIHByb2JlIC9s aWIveDg2XzY0LWxpbnV4LWdudS9saWJjLTIuMTkuc28gMHhlYjg2MA0KPiANCj4gIERpZmZlcmVu dCBmcm9tIHYxLCBubyBleHRyYSAnKycgaXMgcmVxdWlyZWQuDQoNClllYWgsIHRoaXMgc2VlbXMg YmV0dGVyIGZvciBtZS4gU2luY2UgJysnIGhhcyBkb3VibGUgbWVhbmluZ3MgInBvc2l0aXZlIHZh bHVlIiBhbmQNCiJhZGQgc29tZXRoaW5nIiwgSSB0aGluayBpdCdzIG5vdCBnb29kIGZvciB0aGlz IGNvbnRleHQuDQoNCj4gDQo+IFBhdGNoIDQgaXMgYSBrZXJuZWwgc2lkZSBwYXRjaCB3aGljaCBm aXhlcyBhIHNtYWxsIHByb2JsZW0gaW4gdXByb2JlX2V2ZW50DQo+IHRoYXQsIGlmIGFkZHJlc3Mg aXMgMCwgdXByb2JlX2V2ZW50cyByZXBvcnRzICcweCAgKG51bGwpJy4gSXQgaXMgaW5kZXBlbmRl bnQNCj4gZnJvbSB0aGUgb3RoZXIgcGF0Y2hlcy4NCg0KT29wcywgcmlnaHQuDQoNClRoYW5rcyEN Cg0KPiANCj4gV2FuZyBOYW4gKDQpOg0KPiAgIHBlcmYgcHJvYmU6IFByZXZlbnQgc2VnZmF1bHQg d2hlbiByZWFkaW5nIHByb2JlIHBvaW50IHdpdGggYWJzb2x1dGUNCj4gICAgIGFkZHJlc3MNCj4g ICBwZXJmIHByb2JlOiBGaXggbGlzdCByZXN1bHQgd2hlbiBhZGRyZXNzIGlzIHplcm8NCj4gICBw ZXJmIHByb2JlOiBTdXBwb3J0IHByb2JpbmcgYXQgYWJzb2x1dGUgYWRkcmVzcw0KPiAgIHRyYWNp bmcvdXByb2JlczogRG8gbm90IHByaW50ICcweCAgKG51bGwpJyB3aGVuIG9mZnNldCBpcyAwDQo+ IA0KPiAga2VybmVsL3RyYWNlL3RyYWNlX3Vwcm9iZS5jICAgIHwgIDE3ICsrKy0NCj4gIHRvb2xz L3BlcmYvdXRpbC9wcm9iZS1ldmVudC5jICB8IDIxMCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLQ0KPiAgdG9vbHMvcGVyZi91dGlsL3Byb2JlLWV2ZW50LmggIHwgICA0 ICsNCj4gIHRvb2xzL3BlcmYvdXRpbC9wcm9iZS1maW5kZXIuYyB8ICAyMSArLS0tLQ0KPiAgNCBm aWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pDQo+IA0KPiAt LQ0KPiAxLjguMy40DQoNCg== -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web