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


Groups > linux.kernel > #1206384 > unrolled thread

[BUGFIX PATCH perf/core v2] perf-probe: Fix to show lines of sys_ functions correctly

Started byMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
First post2015-08-12 23:50 +0200
Last post2015-08-13 00:00 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [BUGFIX PATCH perf/core v2] perf-probe: Fix to show lines of sys_  functions correctly Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> - 2015-08-12 23:50 +0200
    RE: [BUGFIX PATCH perf/core v2] perf-probe: Fix to show lines of  sys_ functions correctly 平松雅巳 / HIRAMATU,MASAMI   <masami.hiramatsu.pt@hitachi.com> - 2015-08-13 00:00 +0200

#1206384 — [BUGFIX PATCH perf/core v2] perf-probe: Fix to show lines of sys_ functions correctly

FromMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Date2015-08-12 23:50 +0200
Subject[BUGFIX PATCH perf/core v2] perf-probe: Fix to show lines of sys_ functions correctly
Message-ID<pWM4i-8ms-17@gated-at.bofh.it>
"perf probe --lines sys_poll" shows only the first line of
sys_poll, because the SYSCALL_DEFINE macro
----
SYSCALL_DEFINE*(foo,...)
{
  body;
}
----
is expanded as below (on debuginfo)

----
static inline int SYSC_foo(...)
{
  body;
}
int SyS_foo(...) <- is an alias of sys_foo.
{
  return SYSC_foo(...);
}
----

So, "perf probe --lines sys_foo" decodes SyS_foo function and
it also skips inlined functions(SYSC_foo) inside the target
function because those functions are usually defined somewhere
else.

To fix this issue, this fix checks whether the inlined function
is defined at the same point of the target function, and if so,
it doesn't skip the inline function.

Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
---
 Changes in v2
  - Fix to add a brace to if statement.
---
 tools/perf/util/dwarf-aux.c |   21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/tools/perf/util/dwarf-aux.c b/tools/perf/util/dwarf-aux.c
index 57f3ef4..a509aa84 100644
--- a/tools/perf/util/dwarf-aux.c
+++ b/tools/perf/util/dwarf-aux.c
@@ -734,15 +734,18 @@ int die_walk_lines(Dwarf_Die *rt_die, line_walk_callback_t callback, void *data)
 	Dwarf_Lines *lines;
 	Dwarf_Line *line;
 	Dwarf_Addr addr;
-	const char *fname;
+	const char *fname, *decf = NULL;
 	int lineno, ret = 0;
+	int decl = 0, inl;
 	Dwarf_Die die_mem, *cu_die;
 	size_t nlines, i;
 
 	/* Get the CU die */
-	if (dwarf_tag(rt_die) != DW_TAG_compile_unit)
+	if (dwarf_tag(rt_die) != DW_TAG_compile_unit) {
 		cu_die = dwarf_diecu(rt_die, &die_mem, NULL, NULL);
-	else
+		dwarf_decl_line(rt_die, &decl);
+		decf = dwarf_decl_file(rt_die);
+	} else
 		cu_die = rt_die;
 	if (!cu_die) {
 		pr_debug2("Failed to get CU from given DIE.\n");
@@ -767,15 +770,21 @@ int die_walk_lines(Dwarf_Die *rt_die, line_walk_callback_t callback, void *data)
 			continue;
 		}
 		/* Filter lines based on address */
-		if (rt_die != cu_die)
+		if (rt_die != cu_die) {
 			/*
 			 * Address filtering
 			 * The line is included in given function, and
 			 * no inline block includes it.
 			 */
-			if (!dwarf_haspc(rt_die, addr) ||
-			    die_find_inlinefunc(rt_die, addr, &die_mem))
+			if (!dwarf_haspc(rt_die, addr))
 				continue;
+			if (die_find_inlinefunc(rt_die, addr, &die_mem)) {
+				dwarf_decl_line(&die_mem, &inl);
+				if (inl != decl ||
+				    decf != dwarf_decl_file(&die_mem))
+					continue;
+			}
+		}
 		/* Get source line */
 		fname = dwarf_linesrc(line, NULL, NULL);
 

--
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]


#1206387 — RE: [BUGFIX PATCH perf/core v2] perf-probe: Fix to show lines of sys_ functions correctly

From平松雅巳 / HIRAMATU,MASAMI <masami.hiramatsu.pt@hitachi.com>
Date2015-08-13 00:00 +0200
SubjectRE: [BUGFIX PATCH perf/core v2] perf-probe: Fix to show lines of sys_ functions correctly
Message-ID<pWMdY-60-3@gated-at.bofh.it>
In reply to#1206384
U29ycnksIHBsZWFzZSBpZ25vcmUgdGhpcy4gdGhlIG9yaWdpbmFsIG9uZSBhbHJlYWR5IG1lcmdl
ZC4NCkknbGwgc2VuZCBkaWZmIHBhdGNoLg0KDQpUaGFua3MhDQoNCj4gRnJvbTogTWFzYW1pIEhp
cmFtYXRzdSBbbWFpbHRvOm1hc2FtaS5oaXJhbWF0c3UucHRAaGl0YWNoaS5jb21dDQo+IA0KPiAi
cGVyZiBwcm9iZSAtLWxpbmVzIHN5c19wb2xsIiBzaG93cyBvbmx5IHRoZSBmaXJzdCBsaW5lIG9m
DQo+IHN5c19wb2xsLCBiZWNhdXNlIHRoZSBTWVNDQUxMX0RFRklORSBtYWNybw0KPiAtLS0tDQo+
IFNZU0NBTExfREVGSU5FKihmb28sLi4uKQ0KPiB7DQo+ICAgYm9keTsNCj4gfQ0KPiAtLS0tDQo+
IGlzIGV4cGFuZGVkIGFzIGJlbG93IChvbiBkZWJ1Z2luZm8pDQo+IA0KPiAtLS0tDQo+IHN0YXRp
YyBpbmxpbmUgaW50IFNZU0NfZm9vKC4uLikNCj4gew0KPiAgIGJvZHk7DQo+IH0NCj4gaW50IFN5
U19mb28oLi4uKSA8LSBpcyBhbiBhbGlhcyBvZiBzeXNfZm9vLg0KPiB7DQo+ICAgcmV0dXJuIFNZ
U0NfZm9vKC4uLik7DQo+IH0NCj4gLS0tLQ0KPiANCj4gU28sICJwZXJmIHByb2JlIC0tbGluZXMg
c3lzX2ZvbyIgZGVjb2RlcyBTeVNfZm9vIGZ1bmN0aW9uIGFuZA0KPiBpdCBhbHNvIHNraXBzIGlu
bGluZWQgZnVuY3Rpb25zKFNZU0NfZm9vKSBpbnNpZGUgdGhlIHRhcmdldA0KPiBmdW5jdGlvbiBi
ZWNhdXNlIHRob3NlIGZ1bmN0aW9ucyBhcmUgdXN1YWxseSBkZWZpbmVkIHNvbWV3aGVyZQ0KPiBl
bHNlLg0KPiANCj4gVG8gZml4IHRoaXMgaXNzdWUsIHRoaXMgZml4IGNoZWNrcyB3aGV0aGVyIHRo
ZSBpbmxpbmVkIGZ1bmN0aW9uDQo+IGlzIGRlZmluZWQgYXQgdGhlIHNhbWUgcG9pbnQgb2YgdGhl
IHRhcmdldCBmdW5jdGlvbiwgYW5kIGlmIHNvLA0KPiBpdCBkb2Vzbid0IHNraXAgdGhlIGlubGlu
ZSBmdW5jdGlvbi4NCj4gDQo+IFJlcG9ydGVkLWJ5OiBBcm5hbGRvIENhcnZhbGhvIGRlIE1lbG8g
PGFjbWVAa2VybmVsLm9yZz4NCj4gU2lnbmVkLW9mZi1ieTogTWFzYW1pIEhpcmFtYXRzdSA8bWFz
YW1pLmhpcmFtYXRzdS5wdEBoaXRhY2hpLmNvbT4NCj4gLS0tDQo+ICBDaGFuZ2VzIGluIHYyDQo+
ICAgLSBGaXggdG8gYWRkIGEgYnJhY2UgdG8gaWYgc3RhdGVtZW50Lg0KPiAtLS0NCj4gIHRvb2xz
L3BlcmYvdXRpbC9kd2FyZi1hdXguYyB8ICAgMjEgKysrKysrKysrKysrKysrLS0tLS0tDQo+ICAx
IGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkNCj4gDQo+IGRp
ZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvZHdhcmYtYXV4LmMgYi90b29scy9wZXJmL3V0aWwv
ZHdhcmYtYXV4LmMNCj4gaW5kZXggNTdmM2VmNC4uYTUwOWFhODQgMTAwNjQ0DQo+IC0tLSBhL3Rv
b2xzL3BlcmYvdXRpbC9kd2FyZi1hdXguYw0KPiArKysgYi90b29scy9wZXJmL3V0aWwvZHdhcmYt
YXV4LmMNCj4gQEAgLTczNCwxNSArNzM0LDE4IEBAIGludCBkaWVfd2Fsa19saW5lcyhEd2FyZl9E
aWUgKnJ0X2RpZSwgbGluZV93YWxrX2NhbGxiYWNrX3QgY2FsbGJhY2ssIHZvaWQgKmRhdGEpDQo+
ICAJRHdhcmZfTGluZXMgKmxpbmVzOw0KPiAgCUR3YXJmX0xpbmUgKmxpbmU7DQo+ICAJRHdhcmZf
QWRkciBhZGRyOw0KPiAtCWNvbnN0IGNoYXIgKmZuYW1lOw0KPiArCWNvbnN0IGNoYXIgKmZuYW1l
LCAqZGVjZiA9IE5VTEw7DQo+ICAJaW50IGxpbmVubywgcmV0ID0gMDsNCj4gKwlpbnQgZGVjbCA9
IDAsIGlubDsNCj4gIAlEd2FyZl9EaWUgZGllX21lbSwgKmN1X2RpZTsNCj4gIAlzaXplX3Qgbmxp
bmVzLCBpOw0KPiANCj4gIAkvKiBHZXQgdGhlIENVIGRpZSAqLw0KPiAtCWlmIChkd2FyZl90YWco
cnRfZGllKSAhPSBEV19UQUdfY29tcGlsZV91bml0KQ0KPiArCWlmIChkd2FyZl90YWcocnRfZGll
KSAhPSBEV19UQUdfY29tcGlsZV91bml0KSB7DQo+ICAJCWN1X2RpZSA9IGR3YXJmX2RpZWN1KHJ0
X2RpZSwgJmRpZV9tZW0sIE5VTEwsIE5VTEwpOw0KPiAtCWVsc2UNCj4gKwkJZHdhcmZfZGVjbF9s
aW5lKHJ0X2RpZSwgJmRlY2wpOw0KPiArCQlkZWNmID0gZHdhcmZfZGVjbF9maWxlKHJ0X2RpZSk7
DQo+ICsJfSBlbHNlDQo+ICAJCWN1X2RpZSA9IHJ0X2RpZTsNCj4gIAlpZiAoIWN1X2RpZSkgew0K
PiAgCQlwcl9kZWJ1ZzIoIkZhaWxlZCB0byBnZXQgQ1UgZnJvbSBnaXZlbiBESUUuXG4iKTsNCj4g
QEAgLTc2NywxNSArNzcwLDIxIEBAIGludCBkaWVfd2Fsa19saW5lcyhEd2FyZl9EaWUgKnJ0X2Rp
ZSwgbGluZV93YWxrX2NhbGxiYWNrX3QgY2FsbGJhY2ssIHZvaWQgKmRhdGEpDQo+ICAJCQljb250
aW51ZTsNCj4gIAkJfQ0KPiAgCQkvKiBGaWx0ZXIgbGluZXMgYmFzZWQgb24gYWRkcmVzcyAqLw0K
PiAtCQlpZiAocnRfZGllICE9IGN1X2RpZSkNCj4gKwkJaWYgKHJ0X2RpZSAhPSBjdV9kaWUpIHsN
Cj4gIAkJCS8qDQo+ICAJCQkgKiBBZGRyZXNzIGZpbHRlcmluZw0KPiAgCQkJICogVGhlIGxpbmUg
aXMgaW5jbHVkZWQgaW4gZ2l2ZW4gZnVuY3Rpb24sIGFuZA0KPiAgCQkJICogbm8gaW5saW5lIGJs
b2NrIGluY2x1ZGVzIGl0Lg0KPiAgCQkJICovDQo+IC0JCQlpZiAoIWR3YXJmX2hhc3BjKHJ0X2Rp
ZSwgYWRkcikgfHwNCj4gLQkJCSAgICBkaWVfZmluZF9pbmxpbmVmdW5jKHJ0X2RpZSwgYWRkciwg
JmRpZV9tZW0pKQ0KPiArCQkJaWYgKCFkd2FyZl9oYXNwYyhydF9kaWUsIGFkZHIpKQ0KPiAgCQkJ
CWNvbnRpbnVlOw0KPiArCQkJaWYgKGRpZV9maW5kX2lubGluZWZ1bmMocnRfZGllLCBhZGRyLCAm
ZGllX21lbSkpIHsNCj4gKwkJCQlkd2FyZl9kZWNsX2xpbmUoJmRpZV9tZW0sICZpbmwpOw0KPiAr
CQkJCWlmIChpbmwgIT0gZGVjbCB8fA0KPiArCQkJCSAgICBkZWNmICE9IGR3YXJmX2RlY2xfZmls
ZSgmZGllX21lbSkpDQo+ICsJCQkJCWNvbnRpbnVlOw0KPiArCQkJfQ0KPiArCQl9DQo+ICAJCS8q
IEdldCBzb3VyY2UgbGluZSAqLw0KPiAgCQlmbmFtZSA9IGR3YXJmX2xpbmVzcmMobGluZSwgTlVM
TCwgTlVMTCk7DQo+IA0KDQo=
--
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