x86/tools: Rename distill.awk to objdump_reformat.awk
authorMasami Hiramatsu <mhiramat@kernel.org>
Fri, 24 Nov 2017 15:10:54 +0000 (00:10 +0900)
committerIngo Molnar <mingo@kernel.org>
Tue, 12 Dec 2017 12:27:47 +0000 (13:27 +0100)
Rename distill.awk to objdump_reformat.awk because it more
clearly expresses its purpose of re-formatting the output
of objdump so that insn_decoder_test can read it.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/151153625409.22827.10470603625519700259.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/tools/Makefile
arch/x86/tools/distill.awk [deleted file]
arch/x86/tools/insn_decoder_test.c
arch/x86/tools/objdump_reformat.awk [new file with mode: 0644]

index b0d75684d313d55302df10bf1afc733b75c03cfd..09af7ff53044b9af67837fa26f14ad75d210e94d 100644 (file)
@@ -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 (file)
index 80cd7d5..0000000
+++ /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
-}
index 8be7264cb7238ea9a5a114a9c5bf62aaea12dce9..286d2e3b9d57489046b473f2aa8a5e9e9bd94bde 100644 (file)
@@ -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 (file)
index 0000000..f418c91
--- /dev/null
@@ -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
+}