All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
	x86@kernel.org, Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Peter Zijlstra <peterz@infradead.org>,
	"H . Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-kernel@vger.kernel.org
Subject: [PATCH -tip 2/3] x86: tools: Rename distill.awk to objdump_reformat.awk
Date: Sat, 25 Nov 2017 00:10:54 +0900	[thread overview]
Message-ID: <151153625409.22827.10470603625519700259.stgit@devbox> (raw)
In-Reply-To: <151153619501.22827.16897864004882996684.stgit@devbox>

Rename distill.awk to objdump_reformat.awk because
it actually re-format the output of objdump so that
insn_decoder_test can read it.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
 arch/x86/tools/Makefile             |    4 +--
 arch/x86/tools/distill.awk          |   48 -----------------------------------
 arch/x86/tools/insn_decoder_test.c  |    6 ++--
 arch/x86/tools/objdump_reformat.awk |   48 +++++++++++++++++++++++++++++++++++
 4 files changed, 53 insertions(+), 53 deletions(-)
 delete mode 100644 arch/x86/tools/distill.awk
 create mode 100644 arch/x86/tools/objdump_reformat.awk

diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile
index b0d75684d313..09af7ff53044 100644
--- a/arch/x86/tools/Makefile
+++ b/arch/x86/tools/Makefile
@@ -13,11 +13,11 @@ else
   posttest_64bit = -n
 endif
 
-distill_awk = $(srctree)/arch/x86/tools/distill.awk
+reformatter = $(srctree)/arch/x86/tools/objdump_reformat.awk
 chkobjdump = $(srctree)/arch/x86/tools/chkobjdump.awk
 
 quiet_cmd_posttest = TEST    $@
-      cmd_posttest = ($(OBJDUMP) -v | $(AWK) -f $(chkobjdump)) || $(OBJDUMP) -d -j .text $(objtree)/vmlinux | $(AWK) -f $(distill_awk) | $(obj)/insn_decoder_test $(posttest_64bit) $(posttest_verbose)
+      cmd_posttest = ($(OBJDUMP) -v | $(AWK) -f $(chkobjdump)) || $(OBJDUMP) -d -j .text $(objtree)/vmlinux | $(AWK) -f $(reformatter) | $(obj)/insn_decoder_test $(posttest_64bit) $(posttest_verbose)
 
 quiet_cmd_sanitytest = TEST    $@
       cmd_sanitytest = $(obj)/insn_sanity $(posttest_64bit) -m 1000000
diff --git a/arch/x86/tools/distill.awk b/arch/x86/tools/distill.awk
deleted file mode 100644
index 80cd7d53bd07..000000000000
--- a/arch/x86/tools/distill.awk
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/awk -f
-# SPDX-License-Identifier: GPL-2.0
-# Usage: objdump -d a.out | awk -f distill.awk | ./insn_decoder_test
-# Distills the disassembly as follows:
-# - Removes all lines except the disassembled instructions.
-# - For instructions that exceed 1 line (7 bytes), crams all the hex bytes
-# into a single line.
-# - Remove bad(or prefix only) instructions
-
-BEGIN {
-	prev_addr = ""
-	prev_hex = ""
-	prev_mnemonic = ""
-	bad_expr = "(\\(bad\\)|^rex|^.byte|^rep(z|nz)$|^lock$|^es$|^cs$|^ss$|^ds$|^fs$|^gs$|^data(16|32)$|^addr(16|32|64))"
-	fwait_expr = "^9b "
-	fwait_str="9b\tfwait"
-}
-
-/^ *[0-9a-f]+ <[^>]*>:/ {
-	# Symbol entry
-	printf("%s%s\n", $2, $1)
-}
-
-/^ *[0-9a-f]+:/ {
-	if (split($0, field, "\t") < 3) {
-		# This is a continuation of the same insn.
-		prev_hex = prev_hex field[2]
-	} else {
-		# Skip bad instructions
-		if (match(prev_mnemonic, bad_expr))
-			prev_addr = ""
-		# Split fwait from other f* instructions
-		if (match(prev_hex, fwait_expr) && prev_mnemonic != "fwait") {
-			printf "%s\t%s\n", prev_addr, fwait_str
-			sub(fwait_expr, "", prev_hex)
-		}
-		if (prev_addr != "")
-			printf "%s\t%s\t%s\n", prev_addr, prev_hex, prev_mnemonic
-		prev_addr = field[1]
-		prev_hex = field[2]
-		prev_mnemonic = field[3]
-	}
-}
-
-END {
-	if (prev_addr != "")
-		printf "%s\t%s\t%s\n", prev_addr, prev_hex, prev_mnemonic
-}
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c
index 8be7264cb723..286d2e3b9d57 100644
--- a/arch/x86/tools/insn_decoder_test.c
+++ b/arch/x86/tools/insn_decoder_test.c
@@ -29,7 +29,7 @@
  * particular.  See if insn_get_length() and the disassembler agree
  * on the length of each instruction in an elf disassembly.
  *
- * Usage: objdump -d a.out | awk -f distill.awk | ./insn_decoder_test
+ * Usage: objdump -d a.out | awk -f objdump_reformat.awk | ./insn_decoder_test
  */
 
 const char *prog;
@@ -38,8 +38,8 @@ static int x86_64;
 
 static void usage(void)
 {
-	fprintf(stderr, "Usage: objdump -d a.out | awk -f distill.awk |"
-		" %s [-y|-n] [-v]\n", prog);
+	fprintf(stderr, "Usage: objdump -d a.out | awk -f objdump_reformat.awk"
+		" | %s [-y|-n] [-v]\n", prog);
 	fprintf(stderr, "\t-y	64bit mode\n");
 	fprintf(stderr, "\t-n	32bit mode\n");
 	fprintf(stderr, "\t-v	verbose mode\n");
diff --git a/arch/x86/tools/objdump_reformat.awk b/arch/x86/tools/objdump_reformat.awk
new file mode 100644
index 000000000000..f418c91b71f0
--- /dev/null
+++ b/arch/x86/tools/objdump_reformat.awk
@@ -0,0 +1,48 @@
+#!/bin/awk -f
+# SPDX-License-Identifier: GPL-2.0
+# Usage: objdump -d a.out | awk -f objdump_reformat.awk | ./insn_decoder_test
+# Reformats the disassembly as follows:
+# - Removes all lines except the disassembled instructions.
+# - For instructions that exceed 1 line (7 bytes), crams all the hex bytes
+# into a single line.
+# - Remove bad(or prefix only) instructions
+
+BEGIN {
+	prev_addr = ""
+	prev_hex = ""
+	prev_mnemonic = ""
+	bad_expr = "(\\(bad\\)|^rex|^.byte|^rep(z|nz)$|^lock$|^es$|^cs$|^ss$|^ds$|^fs$|^gs$|^data(16|32)$|^addr(16|32|64))"
+	fwait_expr = "^9b "
+	fwait_str="9b\tfwait"
+}
+
+/^ *[0-9a-f]+ <[^>]*>:/ {
+	# Symbol entry
+	printf("%s%s\n", $2, $1)
+}
+
+/^ *[0-9a-f]+:/ {
+	if (split($0, field, "\t") < 3) {
+		# This is a continuation of the same insn.
+		prev_hex = prev_hex field[2]
+	} else {
+		# Skip bad instructions
+		if (match(prev_mnemonic, bad_expr))
+			prev_addr = ""
+		# Split fwait from other f* instructions
+		if (match(prev_hex, fwait_expr) && prev_mnemonic != "fwait") {
+			printf "%s\t%s\n", prev_addr, fwait_str
+			sub(fwait_expr, "", prev_hex)
+		}
+		if (prev_addr != "")
+			printf "%s\t%s\t%s\n", prev_addr, prev_hex, prev_mnemonic
+		prev_addr = field[1]
+		prev_hex = field[2]
+		prev_mnemonic = field[3]
+	}
+}
+
+END {
+	if (prev_addr != "")
+		printf "%s\t%s\t%s\n", prev_addr, prev_hex, prev_mnemonic
+}

  parent reply	other threads:[~2017-11-24 15:11 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-24 15:09 [PATCH -tip 0/3] x86/tools: Rename tools and cleanup messages for insn decoder Masami Hiramatsu
2017-11-24 15:10 ` [PATCH -tip 1/3] x86: tools: Rename test_get_len to insn_decoder_test Masami Hiramatsu
2017-12-12 15:08   ` [tip:perf/core] x86/tools: " tip-bot for Masami Hiramatsu
2017-11-24 15:10 ` Masami Hiramatsu [this message]
2017-12-12 15:08   ` [tip:perf/core] x86/tools: Rename distill.awk to objdump_reformat.awk tip-bot for Masami Hiramatsu
2017-11-24 15:11 ` [PATCH -tip 3/3] x86: tools: Standardize output format of insn_decode_test Masami Hiramatsu
2017-12-12 15:09   ` [tip:perf/core] x86/tools: " tip-bot for Masami Hiramatsu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=151153625409.22827.10470603625519700259.stgit@devbox \
    --to=mhiramat@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.