Skip to contentSkip to conversation

perf-probe: Fix to get ummapped symbol address on kernel

PATCH New Masami Hiramatsu 2 participants 2 messages Mar 22, 2015 – Mar 24, 2015 perf events

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 perf-probe: Fix to get ummapped symbol address on kernel

Fix to get correctly unmapped symbol address on kernel. This allows us to probe on syscall symbols which are aliases of SyS_ functions with using debuginfo.

Without this fix:
----

  # ./perf probe -a sys_write
  Failed to find debug information for address 3b0100
  Probe point 'sys_write' not found.
    Error: Failed to add events.
  ----
The address 0x3b0100 is a mapped address, and not usable
in debuginfo.

With this fix:
----

  # ./perf probe -a sys_write
  Added new event:
    probe:sys_write      (on sys_write)

You can now use it in all perf tools, such as:

perf record -e probe:sys_write -aR sleep 1
----

---
 tools/perf/util/probe-event.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
tools/perf/util/probe-event.c +4 -1
index 6b95985..8feac07 100644
@@ -310,7 +310,10 @@ static int find_alternative_probe_point(struct debuginfo *dinfo,
 
 	/* Find the address of given function */
 	map__for_each_symbol_by_name(map, pp->function, sym) {
-		address = sym->start;
+		if (uprobes)
+			address = sym->start;
+		else
+			address = map->unmap_ip(map, sym->start);
 		break;
 	}
 	if (!address) {
#1 lore raw

[tip:perf/core] perf probe: Fix to get ummapped symbol address on kernel

perf probe: Fix to get ummapped symbol address on kernel
Commit-ID:  e6d7c91c8c5ea532584056f3e8bf1643310c8ef7
Gitweb:     http://git.kernel.org/tip/e6d7c91c8c5ea532584056f3e8bf1643310c8ef7
Author:     Masami Hiramatsu <[email protected]>
AuthorDate: Sun, 22 Mar 2015 20:40:22 +0900
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Tue, 24 Mar 2015 12:07:04 -0300

perf probe: Fix to get ummapped symbol address on kernel

Fix to get correctly unmapped symbol address on kernel. This allows us to probe on syscall symbols which are aliases of SyS_ functions with using debuginfo.

Without this fix:
----

  # ./perf probe -a sys_write
  Failed to find debug information for address 3b0100
  Probe point 'sys_write' not found.
    Error: Failed to add events.
  ----
The address 0x3b0100 is a mapped address, and not usable
in debuginfo.

With this fix:
----

  # ./perf probe -a sys_write
  Added new event:
    probe:sys_write      (on sys_write)

You can now use it in all perf tools, such as:

perf record -e probe:sys_write -aR sleep 1
----

---
 tools/perf/util/probe-event.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
tools/perf/util/probe-event.c +4 -1
index 6b95985..8feac07 100644
@@ -310,7 +310,10 @@ static int find_alternative_probe_point(struct debuginfo *dinfo,
 
 	/* Find the address of given function */
 	map__for_each_symbol_by_name(map, pp->function, sym) {
-		address = sym->start;
+		if (uprobes)
+			address = sym->start;
+		else
+			address = map->unmap_ip(map, sym->start);
 		break;
 	}
 	if (!address) {