From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753297AbbDAKef (ORCPT ); Wed, 1 Apr 2015 06:34:35 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:52741 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750887AbbDAKdd (ORCPT ); Wed, 1 Apr 2015 06:33:33 -0400 From: Wang Nan To: , , CC: , , , Subject: [PATCH 0/4] perf tools: introduce --map-adjustment. Date: Wed, 1 Apr 2015 10:33:11 +0000 Message-ID: <1427884395-241111-1-git-send-email-wangnan0@huawei.com> X-Mailer: git-send-email 1.8.3.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.107.197.200] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series of patches introduce a --map-adjustment argument for dealing with private dynamic linkers. Some programs write their private dynamic loader instead of glibc ld for different reasons. They mmap() executable memory area, assemble code from different '.so' and '.o' files then do the relocation and code fixing by itself. Since the memory area is not file-backended, perf is unable to handle symbol information in those files. Actually, it is not hard for us to create a /tmp/perf-%d.map file from those ELF objects then utilize the JIT interface. However, without this series of patches, dwarf unwind information is lost. We are unable to unwind stack recorded by --call-graph=dwarf if they are compiled without frame pointer. In addition, we are unable to use annotation to analysis instruction level histogram. This series of patches solve this problem by introducing '--map-adjustment' argument and let users directly hint perf-report about the private mapping which known to be copied from ELF files. Patch 1/4: fix a bug in unwind hooks. Patch 2/4: extracts common code from machine__process_mmap2_event and machine__process_mmap_event, create machine_map_new(). Patch 3/4: the main part of this series. The usage of the newly introduced argument is described in the commit message of that patch. It also update document for the argument. Patch 4/4: Allows libunwind to try to read from user provided dso even the required address is not actually mapped. Wang Nan (4): perf tools: unwind: ensure unwind hooks return negative errorno. perf tools: introduce machine_map_new to merge mmap/mmap2 processing code. perf tools: report: introduce --map-adjustment argument. perf tools: unwinding: try to read from map_adj for a unmapped address. tools/perf/Documentation/perf-report.txt | 11 + tools/perf/builtin-report.c | 2 + tools/perf/util/machine.c | 355 ++++++++++++++++++++++++++++++- tools/perf/util/machine.h | 3 + tools/perf/util/unwind-libunwind.c | 28 ++- 5 files changed, 383 insertions(+), 16 deletions(-) -- 1.8.3.4