linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] perf/probe: Search both .eh_frame and .debug_frame sections for probe location
@ 2016-01-13  9:56 Hemant Kumar
  2016-01-14  1:32 ` 平松雅巳 / HIRAMATU,MASAMI
  0 siblings, 1 reply; 2+ messages in thread
From: Hemant Kumar @ 2016-01-13  9:56 UTC (permalink / raw)
  To: linux-kernel; +Cc: linuxppc-dev, srikar, acme, mjw, masami.hiramatsu.pt, hemant

perf probe through debuginfo__find_probes() in util/probe-finder.c
checks for the functions' frame descriptions in either .eh_frame section
of an ELF or the .debug_frame. The check is based on whether either one
of these sections is present. Depending on distro, toolchain defaults,
architetcutre, build flags, etc., CFI might be found in either .eh_frame
and/or .debug_frame. Sometimes, it may happen that, .eh_frame, even if
present, may not be complete and may miss some descriptions. Therefore,
to be sure, to find the CFI covering an address we will always have to
investigate both if available.

For e.g., in powerpc, this may happen :
 $ gcc -g bin.c -o bin

 $ objdump --dwarf ./bin
 <1><145>: Abbrev Number: 7 (DW_TAG_subprogram)
    <146>   DW_AT_external    : 1
    <146>   DW_AT_name        : (indirect string, offset: 0x9e): main
    <14a>   DW_AT_decl_file   : 1
    <14b>   DW_AT_decl_line   : 39
    <14c>   DW_AT_prototyped  : 1
    <14c>   DW_AT_type        : <0x57>
    <150>   DW_AT_low_pc      : 0x100007b8

If the .eh_frame and .debug_frame are checked for the same binary, we
will find that, .eh_frame (although present) doesn't contain a
description for "main" function.
But, .debug_frame has a description :

000000d8 00000024 00000000 FDE cie=00000000 pc=100007b8..10000838
  DW_CFA_advance_loc: 16 to 100007c8
  DW_CFA_def_cfa_offset: 144
  DW_CFA_offset_extended_sf: r65 at cfa+16
...

Due to this (since, perf checks whether .eh_frame is present and goes on
searching for that address inside that frame), perf is unable to process
the probes :
 # perf probe -x ./bin main
Failed to get call frame on 0x100007b8
  Error: Failed to add events.

To avoid this issue, we need to check both the sections (.eh_frame and
.debug_frame), which is done in this patch.

Note that, we can always force everything into both .eh_frame and
.debug_frame by :
 $ gcc bin.c -fasynchronous-unwind-tables  -fno-dwarf2-cfi-asm -g -o bin

Signed-off-by: Hemant Kumar <hemant@linux.vnet.ibm.com>
---
Changes since v2:
- Fixed an issue related to filling up both the CFIs (Suggested by Masami).

Changes since v1:
- pf->cfi is now cached as pf->cfi_eh and pf->cfi_dbg depending on the source of CFI
  (Suggested by Mark Wielard).

 tools/perf/util/probe-finder.c | 62 +++++++++++++++++++++++++-----------------
 tools/perf/util/probe-finder.h |  5 +++-
 2 files changed, 41 insertions(+), 26 deletions(-)

diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index 05012bb..e4d0498 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -685,9 +685,10 @@ static int call_probe_finder(Dwarf_Die *sc_die, struct probe_finder *pf)
 		pf->fb_ops = NULL;
 #if _ELFUTILS_PREREQ(0, 142)
 	} else if (nops == 1 && pf->fb_ops[0].atom == DW_OP_call_frame_cfa &&
-		   pf->cfi != NULL) {
+		   (pf->cfi_eh != NULL || pf->cfi_dbg != NULL)) {
 		Dwarf_Frame *frame;
-		if (dwarf_cfi_addrframe(pf->cfi, pf->addr, &frame) != 0 ||
+		if ((dwarf_cfi_addrframe(pf->cfi_eh, pf->addr, &frame) != 0 &&
+		     (dwarf_cfi_addrframe(pf->cfi_dbg, pf->addr, &frame) != 0)) ||
 		    dwarf_frame_cfa(frame, &pf->fb_ops, &nops) != 0) {
 			pr_warning("Failed to get call frame on 0x%jx\n",
 				   (uintmax_t)pf->addr);
@@ -1013,8 +1014,7 @@ static int pubname_search_cb(Dwarf *dbg, Dwarf_Global *gl, void *data)
 	return DWARF_CB_OK;
 }
 
-/* Find probe points from debuginfo */
-static int debuginfo__find_probes(struct debuginfo *dbg,
+static int debuginfo__find_probe_location(struct debuginfo *dbg,
 				  struct probe_finder *pf)
 {
 	struct perf_probe_point *pp = &pf->pev->point;
@@ -1023,27 +1023,6 @@ static int debuginfo__find_probes(struct debuginfo *dbg,
 	Dwarf_Die *diep;
 	int ret = 0;
 
-#if _ELFUTILS_PREREQ(0, 142)
-	Elf *elf;
-	GElf_Ehdr ehdr;
-	GElf_Shdr shdr;
-
-	/* Get the call frame information from this dwarf */
-	elf = dwarf_getelf(dbg->dbg);
-	if (elf == NULL)
-		return -EINVAL;
-
-	if (gelf_getehdr(elf, &ehdr) == NULL)
-		return -EINVAL;
-
-	if (elf_section_by_name(elf, &ehdr, &shdr, ".eh_frame", NULL) &&
-	    shdr.sh_type == SHT_PROGBITS) {
-		pf->cfi = dwarf_getcfi_elf(elf);
-	} else {
-		pf->cfi = dwarf_getcfi(dbg->dbg);
-	}
-#endif
-
 	off = 0;
 	pf->lcache = intlist__new(NULL);
 	if (!pf->lcache)
@@ -1106,6 +1085,39 @@ found:
 	return ret;
 }
 
+/* Find probe points from debuginfo */
+static int debuginfo__find_probes(struct debuginfo *dbg,
+				  struct probe_finder *pf)
+{
+	int ret = 0;
+
+#if _ELFUTILS_PREREQ(0, 142)
+	Elf *elf;
+	GElf_Ehdr ehdr;
+	GElf_Shdr shdr;
+
+	if (pf->cfi_eh || pf->cfi_dbg)
+		return debuginfo__find_probe_location(dbg, pf);
+
+	/* Get the call frame information from this dwarf */
+	elf = dwarf_getelf(dbg->dbg);
+	if (elf == NULL)
+		return -EINVAL;
+
+	if (gelf_getehdr(elf, &ehdr) == NULL)
+		return -EINVAL;
+
+	if (elf_section_by_name(elf, &ehdr, &shdr, ".eh_frame", NULL) &&
+	    shdr.sh_type == SHT_PROGBITS)
+		pf->cfi_eh = dwarf_getcfi_elf(elf);
+
+	pf->cfi_dbg = dwarf_getcfi(dbg->dbg);
+#endif
+
+	ret = debuginfo__find_probe_location(dbg, pf);
+	return ret;
+}
+
 struct local_vars_finder {
 	struct probe_finder *pf;
 	struct perf_probe_arg *args;
diff --git a/tools/perf/util/probe-finder.h b/tools/perf/util/probe-finder.h
index bed8271..0aec770 100644
--- a/tools/perf/util/probe-finder.h
+++ b/tools/perf/util/probe-finder.h
@@ -76,7 +76,10 @@ struct probe_finder {
 
 	/* For variable searching */
 #if _ELFUTILS_PREREQ(0, 142)
-	Dwarf_CFI		*cfi;		/* Call Frame Information */
+	/* Call Frame Information from .eh_frame */
+	Dwarf_CFI		*cfi_eh;
+	/* Call Frame Information from .debug_frame */
+	Dwarf_CFI		*cfi_dbg;
 #endif
 	Dwarf_Op		*fb_ops;	/* Frame base attribute */
 	struct perf_probe_arg	*pvar;		/* Current target variable */
-- 
1.9.3

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* RE: [PATCH v3] perf/probe: Search both .eh_frame and .debug_frame sections for probe location
  2016-01-13  9:56 [PATCH v3] perf/probe: Search both .eh_frame and .debug_frame sections for probe location Hemant Kumar
@ 2016-01-14  1:32 ` 平松雅巳 / HIRAMATU,MASAMI
  0 siblings, 0 replies; 2+ messages in thread
From: 平松雅巳 / HIRAMATU,MASAMI @ 2016-01-14  1:32 UTC (permalink / raw)
  To: 'Hemant Kumar', linux-kernel@vger.kernel.org
  Cc: linuxppc-dev@lists.ozlabs.org, srikar@linux.vnet.ibm.com,
	acme@kernel.org, mjw@redhat.com

RnJvbTogSGVtYW50IEt1bWFyIFttYWlsdG86aGVtYW50QGxpbnV4LnZuZXQuaWJtLmNvbV0NCj4N
Cj5wZXJmIHByb2JlIHRocm91Z2ggZGVidWdpbmZvX19maW5kX3Byb2JlcygpIGluIHV0aWwvcHJv
YmUtZmluZGVyLmMNCj5jaGVja3MgZm9yIHRoZSBmdW5jdGlvbnMnIGZyYW1lIGRlc2NyaXB0aW9u
cyBpbiBlaXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24NCj5vZiBhbiBFTEYgb3IgdGhlIC5kZWJ1Z19m
cmFtZS4gVGhlIGNoZWNrIGlzIGJhc2VkIG9uIHdoZXRoZXIgZWl0aGVyIG9uZQ0KPm9mIHRoZXNl
IHNlY3Rpb25zIGlzIHByZXNlbnQuIERlcGVuZGluZyBvbiBkaXN0cm8sIHRvb2xjaGFpbiBkZWZh
dWx0cywNCj5hcmNoaXRldGN1dHJlLCBidWlsZCBmbGFncywgZXRjLiwgQ0ZJIG1pZ2h0IGJlIGZv
dW5kIGluIGVpdGhlciAuZWhfZnJhbWUNCj5hbmQvb3IgLmRlYnVnX2ZyYW1lLiBTb21ldGltZXMs
IGl0IG1heSBoYXBwZW4gdGhhdCwgLmVoX2ZyYW1lLCBldmVuIGlmDQo+cHJlc2VudCwgbWF5IG5v
dCBiZSBjb21wbGV0ZSBhbmQgbWF5IG1pc3Mgc29tZSBkZXNjcmlwdGlvbnMuIFRoZXJlZm9yZSwN
Cj50byBiZSBzdXJlLCB0byBmaW5kIHRoZSBDRkkgY292ZXJpbmcgYW4gYWRkcmVzcyB3ZSB3aWxs
IGFsd2F5cyBoYXZlIHRvDQo+aW52ZXN0aWdhdGUgYm90aCBpZiBhdmFpbGFibGUuDQo+DQo+Rm9y
IGUuZy4sIGluIHBvd2VycGMsIHRoaXMgbWF5IGhhcHBlbiA6DQo+ICQgZ2NjIC1nIGJpbi5jIC1v
IGJpbg0KPg0KPiAkIG9iamR1bXAgLS1kd2FyZiAuL2Jpbg0KPiA8MT48MTQ1PjogQWJicmV2IE51
bWJlcjogNyAoRFdfVEFHX3N1YnByb2dyYW0pDQo+ICAgIDwxNDY+ICAgRFdfQVRfZXh0ZXJuYWwg
ICAgOiAxDQo+ICAgIDwxNDY+ICAgRFdfQVRfbmFtZSAgICAgICAgOiAoaW5kaXJlY3Qgc3RyaW5n
LCBvZmZzZXQ6IDB4OWUpOiBtYWluDQo+ICAgIDwxNGE+ICAgRFdfQVRfZGVjbF9maWxlICAgOiAx
DQo+ICAgIDwxNGI+ICAgRFdfQVRfZGVjbF9saW5lICAgOiAzOQ0KPiAgICA8MTRjPiAgIERXX0FU
X3Byb3RvdHlwZWQgIDogMQ0KPiAgICA8MTRjPiAgIERXX0FUX3R5cGUgICAgICAgIDogPDB4NTc+
DQo+ICAgIDwxNTA+ICAgRFdfQVRfbG93X3BjICAgICAgOiAweDEwMDAwN2I4DQo+DQo+SWYgdGhl
IC5laF9mcmFtZSBhbmQgLmRlYnVnX2ZyYW1lIGFyZSBjaGVja2VkIGZvciB0aGUgc2FtZSBiaW5h
cnksIHdlDQo+d2lsbCBmaW5kIHRoYXQsIC5laF9mcmFtZSAoYWx0aG91Z2ggcHJlc2VudCkgZG9l
c24ndCBjb250YWluIGENCj5kZXNjcmlwdGlvbiBmb3IgIm1haW4iIGZ1bmN0aW9uLg0KPkJ1dCwg
LmRlYnVnX2ZyYW1lIGhhcyBhIGRlc2NyaXB0aW9uIDoNCj4NCj4wMDAwMDBkOCAwMDAwMDAyNCAw
MDAwMDAwMCBGREUgY2llPTAwMDAwMDAwIHBjPTEwMDAwN2I4Li4xMDAwMDgzOA0KPiAgRFdfQ0ZB
X2FkdmFuY2VfbG9jOiAxNiB0byAxMDAwMDdjOA0KPiAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OiAx
NDQNCj4gIERXX0NGQV9vZmZzZXRfZXh0ZW5kZWRfc2Y6IHI2NSBhdCBjZmErMTYNCj4uLi4NCj4N
Cj5EdWUgdG8gdGhpcyAoc2luY2UsIHBlcmYgY2hlY2tzIHdoZXRoZXIgLmVoX2ZyYW1lIGlzIHBy
ZXNlbnQgYW5kIGdvZXMgb24NCj5zZWFyY2hpbmcgZm9yIHRoYXQgYWRkcmVzcyBpbnNpZGUgdGhh
dCBmcmFtZSksIHBlcmYgaXMgdW5hYmxlIHRvIHByb2Nlc3MNCj50aGUgcHJvYmVzIDoNCj4gIyBw
ZXJmIHByb2JlIC14IC4vYmluIG1haW4NCj5GYWlsZWQgdG8gZ2V0IGNhbGwgZnJhbWUgb24gMHgx
MDAwMDdiOA0KPiAgRXJyb3I6IEZhaWxlZCB0byBhZGQgZXZlbnRzLg0KPg0KPlRvIGF2b2lkIHRo
aXMgaXNzdWUsIHdlIG5lZWQgdG8gY2hlY2sgYm90aCB0aGUgc2VjdGlvbnMgKC5laF9mcmFtZSBh
bmQNCj4uZGVidWdfZnJhbWUpLCB3aGljaCBpcyBkb25lIGluIHRoaXMgcGF0Y2guDQo+DQo+Tm90
ZSB0aGF0LCB3ZSBjYW4gYWx3YXlzIGZvcmNlIGV2ZXJ5dGhpbmcgaW50byBib3RoIC5laF9mcmFt
ZSBhbmQNCj4uZGVidWdfZnJhbWUgYnkgOg0KPiAkIGdjYyBiaW4uYyAtZmFzeW5jaHJvbm91cy11
bndpbmQtdGFibGVzICAtZm5vLWR3YXJmMi1jZmktYXNtIC1nIC1vIGJpbg0KPg0KPlNpZ25lZC1v
ZmYtYnk6IEhlbWFudCBLdW1hciA8aGVtYW50QGxpbnV4LnZuZXQuaWJtLmNvbT4NCg0KTG9va3Mg
Z29vZCB0byBtZTopDQoNCkFja2VkLWJ5OiBNYXNhbWkgSGlyYW1hdHN1IDxtYXNhbWkuaGlyYW1h
dHN1LnB0QGhpdGFjaGkuY29tPg0KDQpUaGFua3MhDQoNCj4tLS0NCj5DaGFuZ2VzIHNpbmNlIHYy
Og0KPi0gRml4ZWQgYW4gaXNzdWUgcmVsYXRlZCB0byBmaWxsaW5nIHVwIGJvdGggdGhlIENGSXMg
KFN1Z2dlc3RlZCBieSBNYXNhbWkpLg0KPg0KPkNoYW5nZXMgc2luY2UgdjE6DQo+LSBwZi0+Y2Zp
IGlzIG5vdyBjYWNoZWQgYXMgcGYtPmNmaV9laCBhbmQgcGYtPmNmaV9kYmcgZGVwZW5kaW5nIG9u
IHRoZSBzb3VyY2Ugb2YgQ0ZJDQo+ICAoU3VnZ2VzdGVkIGJ5IE1hcmsgV2llbGFyZCkuDQo+DQo+
IHRvb2xzL3BlcmYvdXRpbC9wcm9iZS1maW5kZXIuYyB8IDYyICsrKysrKysrKysrKysrKysrKysr
KysrKystLS0tLS0tLS0tLS0tLS0tLQ0KPiB0b29scy9wZXJmL3V0aWwvcHJvYmUtZmluZGVyLmgg
fCAgNSArKystDQo+IDIgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRp
b25zKC0pDQo+DQo+ZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1maW5kZXIuYyBi
L3Rvb2xzL3BlcmYvdXRpbC9wcm9iZS1maW5kZXIuYw0KPmluZGV4IDA1MDEyYmIuLmU0ZDA0OTgg
MTAwNjQ0DQo+LS0tIGEvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWZpbmRlci5jDQo+KysrIGIvdG9v
bHMvcGVyZi91dGlsL3Byb2JlLWZpbmRlci5jDQo+QEAgLTY4NSw5ICs2ODUsMTAgQEAgc3RhdGlj
IGludCBjYWxsX3Byb2JlX2ZpbmRlcihEd2FyZl9EaWUgKnNjX2RpZSwgc3RydWN0IHByb2JlX2Zp
bmRlciAqcGYpDQo+IAkJcGYtPmZiX29wcyA9IE5VTEw7DQo+ICNpZiBfRUxGVVRJTFNfUFJFUkVR
KDAsIDE0MikNCj4gCX0gZWxzZSBpZiAobm9wcyA9PSAxICYmIHBmLT5mYl9vcHNbMF0uYXRvbSA9
PSBEV19PUF9jYWxsX2ZyYW1lX2NmYSAmJg0KPi0JCSAgIHBmLT5jZmkgIT0gTlVMTCkgew0KPisJ
CSAgIChwZi0+Y2ZpX2VoICE9IE5VTEwgfHwgcGYtPmNmaV9kYmcgIT0gTlVMTCkpIHsNCj4gCQlE
d2FyZl9GcmFtZSAqZnJhbWU7DQo+LQkJaWYgKGR3YXJmX2NmaV9hZGRyZnJhbWUocGYtPmNmaSwg
cGYtPmFkZHIsICZmcmFtZSkgIT0gMCB8fA0KPisJCWlmICgoZHdhcmZfY2ZpX2FkZHJmcmFtZShw
Zi0+Y2ZpX2VoLCBwZi0+YWRkciwgJmZyYW1lKSAhPSAwICYmDQo+KwkJICAgICAoZHdhcmZfY2Zp
X2FkZHJmcmFtZShwZi0+Y2ZpX2RiZywgcGYtPmFkZHIsICZmcmFtZSkgIT0gMCkpIHx8DQo+IAkJ
ICAgIGR3YXJmX2ZyYW1lX2NmYShmcmFtZSwgJnBmLT5mYl9vcHMsICZub3BzKSAhPSAwKSB7DQo+
IAkJCXByX3dhcm5pbmcoIkZhaWxlZCB0byBnZXQgY2FsbCBmcmFtZSBvbiAweCVqeFxuIiwNCj4g
CQkJCSAgICh1aW50bWF4X3QpcGYtPmFkZHIpOw0KPkBAIC0xMDEzLDggKzEwMTQsNyBAQCBzdGF0
aWMgaW50IHB1Ym5hbWVfc2VhcmNoX2NiKER3YXJmICpkYmcsIER3YXJmX0dsb2JhbCAqZ2wsIHZv
aWQgKmRhdGEpDQo+IAlyZXR1cm4gRFdBUkZfQ0JfT0s7DQo+IH0NCj4NCj4tLyogRmluZCBwcm9i
ZSBwb2ludHMgZnJvbSBkZWJ1Z2luZm8gKi8NCj4tc3RhdGljIGludCBkZWJ1Z2luZm9fX2ZpbmRf
cHJvYmVzKHN0cnVjdCBkZWJ1Z2luZm8gKmRiZywNCj4rc3RhdGljIGludCBkZWJ1Z2luZm9fX2Zp
bmRfcHJvYmVfbG9jYXRpb24oc3RydWN0IGRlYnVnaW5mbyAqZGJnLA0KPiAJCQkJICBzdHJ1Y3Qg
cHJvYmVfZmluZGVyICpwZikNCj4gew0KPiAJc3RydWN0IHBlcmZfcHJvYmVfcG9pbnQgKnBwID0g
JnBmLT5wZXYtPnBvaW50Ow0KPkBAIC0xMDIzLDI3ICsxMDIzLDYgQEAgc3RhdGljIGludCBkZWJ1
Z2luZm9fX2ZpbmRfcHJvYmVzKHN0cnVjdCBkZWJ1Z2luZm8gKmRiZywNCj4gCUR3YXJmX0RpZSAq
ZGllcDsNCj4gCWludCByZXQgPSAwOw0KPg0KPi0jaWYgX0VMRlVUSUxTX1BSRVJFUSgwLCAxNDIp
DQo+LQlFbGYgKmVsZjsNCj4tCUdFbGZfRWhkciBlaGRyOw0KPi0JR0VsZl9TaGRyIHNoZHI7DQo+
LQ0KPi0JLyogR2V0IHRoZSBjYWxsIGZyYW1lIGluZm9ybWF0aW9uIGZyb20gdGhpcyBkd2FyZiAq
Lw0KPi0JZWxmID0gZHdhcmZfZ2V0ZWxmKGRiZy0+ZGJnKTsNCj4tCWlmIChlbGYgPT0gTlVMTCkN
Cj4tCQlyZXR1cm4gLUVJTlZBTDsNCj4tDQo+LQlpZiAoZ2VsZl9nZXRlaGRyKGVsZiwgJmVoZHIp
ID09IE5VTEwpDQo+LQkJcmV0dXJuIC1FSU5WQUw7DQo+LQ0KPi0JaWYgKGVsZl9zZWN0aW9uX2J5
X25hbWUoZWxmLCAmZWhkciwgJnNoZHIsICIuZWhfZnJhbWUiLCBOVUxMKSAmJg0KPi0JICAgIHNo
ZHIuc2hfdHlwZSA9PSBTSFRfUFJPR0JJVFMpIHsNCj4tCQlwZi0+Y2ZpID0gZHdhcmZfZ2V0Y2Zp
X2VsZihlbGYpOw0KPi0JfSBlbHNlIHsNCj4tCQlwZi0+Y2ZpID0gZHdhcmZfZ2V0Y2ZpKGRiZy0+
ZGJnKTsNCj4tCX0NCj4tI2VuZGlmDQo+LQ0KPiAJb2ZmID0gMDsNCj4gCXBmLT5sY2FjaGUgPSBp
bnRsaXN0X19uZXcoTlVMTCk7DQo+IAlpZiAoIXBmLT5sY2FjaGUpDQo+QEAgLTExMDYsNiArMTA4
NSwzOSBAQCBmb3VuZDoNCj4gCXJldHVybiByZXQ7DQo+IH0NCj4NCj4rLyogRmluZCBwcm9iZSBw
b2ludHMgZnJvbSBkZWJ1Z2luZm8gKi8NCj4rc3RhdGljIGludCBkZWJ1Z2luZm9fX2ZpbmRfcHJv
YmVzKHN0cnVjdCBkZWJ1Z2luZm8gKmRiZywNCj4rCQkJCSAgc3RydWN0IHByb2JlX2ZpbmRlciAq
cGYpDQo+K3sNCj4rCWludCByZXQgPSAwOw0KPisNCj4rI2lmIF9FTEZVVElMU19QUkVSRVEoMCwg
MTQyKQ0KPisJRWxmICplbGY7DQo+KwlHRWxmX0VoZHIgZWhkcjsNCj4rCUdFbGZfU2hkciBzaGRy
Ow0KPisNCj4rCWlmIChwZi0+Y2ZpX2VoIHx8IHBmLT5jZmlfZGJnKQ0KPisJCXJldHVybiBkZWJ1
Z2luZm9fX2ZpbmRfcHJvYmVfbG9jYXRpb24oZGJnLCBwZik7DQo+Kw0KPisJLyogR2V0IHRoZSBj
YWxsIGZyYW1lIGluZm9ybWF0aW9uIGZyb20gdGhpcyBkd2FyZiAqLw0KPisJZWxmID0gZHdhcmZf
Z2V0ZWxmKGRiZy0+ZGJnKTsNCj4rCWlmIChlbGYgPT0gTlVMTCkNCj4rCQlyZXR1cm4gLUVJTlZB
TDsNCj4rDQo+KwlpZiAoZ2VsZl9nZXRlaGRyKGVsZiwgJmVoZHIpID09IE5VTEwpDQo+KwkJcmV0
dXJuIC1FSU5WQUw7DQo+Kw0KPisJaWYgKGVsZl9zZWN0aW9uX2J5X25hbWUoZWxmLCAmZWhkciwg
JnNoZHIsICIuZWhfZnJhbWUiLCBOVUxMKSAmJg0KPisJICAgIHNoZHIuc2hfdHlwZSA9PSBTSFRf
UFJPR0JJVFMpDQo+KwkJcGYtPmNmaV9laCA9IGR3YXJmX2dldGNmaV9lbGYoZWxmKTsNCj4rDQo+
KwlwZi0+Y2ZpX2RiZyA9IGR3YXJmX2dldGNmaShkYmctPmRiZyk7DQo+KyNlbmRpZg0KPisNCj4r
CXJldCA9IGRlYnVnaW5mb19fZmluZF9wcm9iZV9sb2NhdGlvbihkYmcsIHBmKTsNCj4rCXJldHVy
biByZXQ7DQo+K30NCj4rDQo+IHN0cnVjdCBsb2NhbF92YXJzX2ZpbmRlciB7DQo+IAlzdHJ1Y3Qg
cHJvYmVfZmluZGVyICpwZjsNCj4gCXN0cnVjdCBwZXJmX3Byb2JlX2FyZyAqYXJnczsNCj5kaWZm
IC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3Byb2JlLWZpbmRlci5oIGIvdG9vbHMvcGVyZi91dGls
L3Byb2JlLWZpbmRlci5oDQo+aW5kZXggYmVkODI3MS4uMGFlYzc3MCAxMDA2NDQNCj4tLS0gYS90
b29scy9wZXJmL3V0aWwvcHJvYmUtZmluZGVyLmgNCj4rKysgYi90b29scy9wZXJmL3V0aWwvcHJv
YmUtZmluZGVyLmgNCj5AQCAtNzYsNyArNzYsMTAgQEAgc3RydWN0IHByb2JlX2ZpbmRlciB7DQo+
DQo+IAkvKiBGb3IgdmFyaWFibGUgc2VhcmNoaW5nICovDQo+ICNpZiBfRUxGVVRJTFNfUFJFUkVR
KDAsIDE0MikNCj4tCUR3YXJmX0NGSQkJKmNmaTsJCS8qIENhbGwgRnJhbWUgSW5mb3JtYXRpb24g
Ki8NCj4rCS8qIENhbGwgRnJhbWUgSW5mb3JtYXRpb24gZnJvbSAuZWhfZnJhbWUgKi8NCj4rCUR3
YXJmX0NGSQkJKmNmaV9laDsNCj4rCS8qIENhbGwgRnJhbWUgSW5mb3JtYXRpb24gZnJvbSAuZGVi
dWdfZnJhbWUgKi8NCj4rCUR3YXJmX0NGSQkJKmNmaV9kYmc7DQo+ICNlbmRpZg0KPiAJRHdhcmZf
T3AJCSpmYl9vcHM7CS8qIEZyYW1lIGJhc2UgYXR0cmlidXRlICovDQo+IAlzdHJ1Y3QgcGVyZl9w
cm9iZV9hcmcJKnB2YXI7CQkvKiBDdXJyZW50IHRhcmdldCB2YXJpYWJsZSAqLw0KPi0tDQo+MS45
LjMNCg0K

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-01-14  1:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-13  9:56 [PATCH v3] perf/probe: Search both .eh_frame and .debug_frame sections for probe location Hemant Kumar
2016-01-14  1:32 ` 平松雅巳 / HIRAMATU,MASAMI

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).