Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3573919imm; Tue, 29 May 2018 09:29:15 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpphXZUWIX126bcOyOEzlBGbYTcfK02uZmyYf7xsp4Qb94STNNZPOLgMJTZ+3I9ZfvcBBxn X-Received: by 2002:a63:4281:: with SMTP id p123-v6mr14478392pga.144.1527611355722; Tue, 29 May 2018 09:29:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527611355; cv=none; d=google.com; s=arc-20160816; b=CDnn82O/Fla8zkhVJ4wZXaWaY8d7nkBt8eq4lkaIcMnirnG9Q+Kvn4VxbxTJk02Vup KIbK6uZVjqXBmF+tf0TjWDa0IC9vpnoD507/I84VUoOXR8L/O2HvZgnOr4KTqSFHWGDJ qStgN5szC8kXGCSd4t3T6qKsmT1WSptWrK/6uCO4R291SO5lNFUjgsZ8cT40jT8VcvcY IEDbqFNrox1gVcAFPvbI7FULm/DUZofzDGYuVaUeiiDZLaK6YJHNEj+NHgUR+0+4uDZ/ toHclIgasc9+Hxaxr1/vFE5377BZ2uQlaKruQkYjijz0SdTknGKaamcliLJAvEggCNIF 0WyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=qIj7y9qW2ppRoI5IzBVXJJNKyivWwL6ji3VX1Kf+DqU=; b=053ft5wPp7xJC/Z9qnsPtAc9KoCSTjHA5p5al3jECTPgvOUl27vh+aODd7B4EsYB5i LX1sBYmrzhRDtHzhYwAQZ4phgSvZRwGoywR2dPzEuWSZ45o0QzjdyJ/Wa/fmaK08kA7j P7GrJb5QRfsZZb9EhaTY+RtSoci0SdMHYl5BzB5ZUwN7JFt9/eqvhuQhTCbZV6tpPnnr v9Wx932tofESlOvt2wTyvjkD+NvxFlyhUk/06JNp/SZN2ioDjJqdnr52qU7lWVRzZnHe XPhi4krnvyGksZ26pkJ8aAU5zcfpR5C4moLRMnWTLHWlQzBVhUM9FxKpapotN+cPAECF 2UEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=merlin.20170209 header.b=aLEipUD+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d26-v6si25283299pge.500.2018.05.29.09.29.01; Tue, 29 May 2018 09:29:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=merlin.20170209 header.b=aLEipUD+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965098AbeE2Q0y (ORCPT + 99 others); Tue, 29 May 2018 12:26:54 -0400 Received: from merlin.infradead.org ([205.233.59.134]:53412 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935486AbeE2Q0x (ORCPT ); Tue, 29 May 2018 12:26:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=merlin.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=qIj7y9qW2ppRoI5IzBVXJJNKyivWwL6ji3VX1Kf+DqU=; b=aLEipUD+hOi3k+mGhwkl3u+nz 6HkK58eXjZ70lKNDd+Hog/Mkn7T6PHTQqcBBNVZ/9GQ5i7BAKjkZb28xqtgDkpR7MUi6nduV6muub 0tnQnWvQulet6loxMFZ2Jmpm+MEEPM8/x29SrVnoZdfBmo4ZtLUpOe6XlGk4dbwF7u718D2S6aXQ6 ZYF2PMEsYAe/ht4bZ7/MNBsalnGUOnJ6lYQRexlE5x1vJSmN77ZPoTUW1f4xDvplRElMLrDH8cK8K 5vWC4/i94Y/cCHjm/A91xiU3v+KLu8zbN2YzCLPYyHOxk0wfqZBQqckjuNFCg7TeO0LQ0VKZwDT/E 8LbkCkxFA==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=hirez.programming.kicks-ass.net) by merlin.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1fNhSI-0006bW-O3; Tue, 29 May 2018 16:26:39 +0000 Received: by hirez.programming.kicks-ass.net (Postfix, from userid 1000) id B60922029F1C1; Tue, 29 May 2018 18:26:36 +0200 (CEST) Date: Tue, 29 May 2018 18:26:36 +0200 From: Peter Zijlstra To: changbin.du@intel.com Cc: akpm@linux-foundation.org, tglx@linutronix.de, pombredanne@nexb.com, neilb@suse.com, linux-kernel@vger.kernel.org, jpoimboe@redhat.com Subject: Re: [PATCH] scripts/faddr2line: show the code context Message-ID: <20180529162636.GW12235@hirez.programming.kicks-ass.net> References: <1521444205-2259-1-git-send-email-changbin.du@intel.com> <20180529160332.GD12258@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180529160332.GD12258@hirez.programming.kicks-ass.net> User-Agent: Mutt/1.9.5 (2018-04-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 29, 2018 at 06:03:32PM +0200, Peter Zijlstra wrote: > On Mon, Mar 19, 2018 at 03:23:25PM +0800, changbin.du@intel.com wrote: > > From: Changbin Du > > > > Inspired by gdb command 'list', show the code context of target lines. > > Here is a example: > > > > $ scripts/faddr2line vmlinux native_write_msr+0x6 > > native_write_msr+0x6/0x20: > > arch_static_branch at arch/x86/include/asm/msr.h:105 > > 100 return EAX_EDX_VAL(val, low, high); > > 101 } > > 102 > > 103 static inline void notrace __wrmsr(unsigned int msr, u32 low, u32 high) > > 104 { > > 105 asm volatile("1: wrmsr\n" > > 106 "2:\n" > > 107 _ASM_EXTABLE_HANDLE(1b, 2b, ex_handler_wrmsr_unsafe) > > 108 : : "c" (msr), "a"(low), "d" (high) : "memory"); > > 109 } > > 110 > > (inlined by) static_key_false at include/linux/jump_label.h:142 > > 137 #define JUMP_TYPE_LINKED 2UL > > 138 #define JUMP_TYPE_MASK 3UL > > 139 > > 140 static __always_inline bool static_key_false(struct static_key *key) > > 141 { > > 142 return arch_static_branch(key, false); > > 143 } > > 144 > > 145 static __always_inline bool static_key_true(struct static_key *key) > > 146 { > > 147 return !arch_static_branch(key, true); > > (inlined by) native_write_msr at arch/x86/include/asm/msr.h:150 > > 145 static inline void notrace > > 146 native_write_msr(unsigned int msr, u32 low, u32 high) > > 147 { > > 148 __wrmsr(msr, low, high); > > 149 > > 150 if (msr_tracepoint_active(__tracepoint_write_msr)) > > 151 do_trace_write_msr(msr, ((u64)high << 32 | low), 0); > > 152 } > > 153 > > 154 /* Can be uninlined because referenced by paravirt */ > > 155 static inline int notrace > > Not a fan of this :-/ And you didn't even make it optional. Nor did you > Cc the original author of the tool. Something like so fixes it up and attempts to make the --list version more readable. --- scripts/faddr2line | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/scripts/faddr2line b/scripts/faddr2line index 1876a741087c..a0149db00be7 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -56,7 +56,7 @@ command -v ${SIZE} >/dev/null 2>&1 || die "size isn't installed" command -v ${NM} >/dev/null 2>&1 || die "nm isn't installed" usage() { - echo "usage: faddr2line ..." >&2 + echo "usage: faddr2line [--list] ..." >&2 exit 1 } @@ -166,15 +166,25 @@ __faddr2line() { local file_lines=$(${ADDR2LINE} -fpie $objfile $addr | sed "s; $dir_prefix\(\./\)*; ;") [[ -z $file_lines ]] && return + if [[ $LIST = 0 ]]; then + echo "$file_lines" | while read -r line + do + echo $line + done + DONE=1; + return + fi + # show each line with context echo "$file_lines" | while read -r line do + echo echo $line n=$(echo $line | sed 's/.*:\([0-9]\+\).*/\1/g') n1=$[$n-5] n2=$[$n+5] f=$(echo $line | sed 's/.*at \(.\+\):.*/\1/g') - awk 'NR>=strtonum("'$n1'") && NR<=strtonum("'$n2'") {printf("%d\t%s\n", NR, $0)}' $f + awk 'NR>=strtonum("'$n1'") && NR<=strtonum("'$n2'") { if (NR=='$n') printf(">%d<", NR); else printf(" %d ", NR); printf("\t%s\n", $0)}' $f done DONE=1 @@ -185,6 +195,10 @@ __faddr2line() { [[ $# -lt 2 ]] && usage objfile=$1 + +LIST=0 +[[ "$objfile" == "--list" ]] && LIST=1 && shift && objfile=$1 + [[ ! -f $objfile ]] && die "can't find objfile $objfile" shift