All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH -tip 0/3] x86/tools: Rename tools and cleanup messages for insn decoder
@ 2017-11-24 15:09 Masami Hiramatsu
  2017-11-24 15:10 ` [PATCH -tip 1/3] x86: tools: Rename test_get_len to insn_decoder_test Masami Hiramatsu
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Masami Hiramatsu @ 2017-11-24 15:09 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Masami Hiramatsu, x86, Greg Kroah-Hartman, Peter Zijlstra,
	H . Peter Anvin, Thomas Gleixner, linux-kernel

These patches renames tools and cleanup messages
for x86 insn decoder according to Ingo's comment.
It is a kind of cleanup series of code. Just changes
meaningless command names to appropriate (or better)
one and does some cleanup including standarize
messages.

---

Masami Hiramatsu (3):
      x86: tools: Rename test_get_len to insn_decoder_test
      x86: tools: Rename distill.awk to objdump_reformat.awk
      x86: tools: Standardize output format of insn_decode_test


 arch/x86/tools/Makefile             |   12 +-
 arch/x86/tools/distill.awk          |   48 ---------
 arch/x86/tools/insn_decoder_test.c  |  180 +++++++++++++++++++++++++++++++++++
 arch/x86/tools/objdump_reformat.awk |   48 +++++++++
 arch/x86/tools/test_get_len.c       |  173 ----------------------------------
 5 files changed, 234 insertions(+), 227 deletions(-)
 delete mode 100644 arch/x86/tools/distill.awk
 create mode 100644 arch/x86/tools/insn_decoder_test.c
 create mode 100644 arch/x86/tools/objdump_reformat.awk
 delete mode 100644 arch/x86/tools/test_get_len.c

--
Masami Hiramatsu <mhiramat@kernel.org>

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

* [PATCH -tip 1/3] x86: tools: Rename test_get_len to insn_decoder_test
  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 ` Masami Hiramatsu
  2017-12-12 15:08   ` [tip:perf/core] x86/tools: " tip-bot for Masami Hiramatsu
  2017-11-24 15:10 ` [PATCH -tip 2/3] x86: tools: Rename distill.awk to objdump_reformat.awk Masami Hiramatsu
  2017-11-24 15:11 ` [PATCH -tip 3/3] x86: tools: Standardize output format of insn_decode_test Masami Hiramatsu
  2 siblings, 1 reply; 7+ messages in thread
From: Masami Hiramatsu @ 2017-11-24 15:10 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Masami Hiramatsu, x86, Greg Kroah-Hartman, Peter Zijlstra,
	H . Peter Anvin, Thomas Gleixner, linux-kernel

Rename test_get_len test command to insn_decoder_test
as more meaningful name. This also changes some
comments in related files.

Note that this also removes the paragraph about
writing to the Free Software Foundation's mailing
address.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
 arch/x86/tools/Makefile            |   10 +-
 arch/x86/tools/distill.awk         |    2 
 arch/x86/tools/insn_decoder_test.c |  169 +++++++++++++++++++++++++++++++++++
 arch/x86/tools/test_get_len.c      |  173 ------------------------------------
 4 files changed, 175 insertions(+), 179 deletions(-)
 create mode 100644 arch/x86/tools/insn_decoder_test.c
 delete mode 100644 arch/x86/tools/test_get_len.c

diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile
index 972b8e8d939c..b0d75684d313 100644
--- a/arch/x86/tools/Makefile
+++ b/arch/x86/tools/Makefile
@@ -17,24 +17,24 @@ distill_awk = $(srctree)/arch/x86/tools/distill.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)/test_get_len $(posttest_64bit) $(posttest_verbose)
+      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)
 
 quiet_cmd_sanitytest = TEST    $@
       cmd_sanitytest = $(obj)/insn_sanity $(posttest_64bit) -m 1000000
 
-posttest: $(obj)/test_get_len vmlinux $(obj)/insn_sanity
+posttest: $(obj)/insn_decoder_test vmlinux $(obj)/insn_sanity
 	$(call cmd,posttest)
 	$(call cmd,sanitytest)
 
-hostprogs-y	+= test_get_len insn_sanity
+hostprogs-y	+= insn_decoder_test insn_sanity
 
 # -I needed for generated C source and C source which in the kernel tree.
-HOSTCFLAGS_test_get_len.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/x86/include/uapi/ -I$(srctree)/arch/x86/include/ -I$(srctree)/arch/x86/lib/ -I$(srctree)/include/uapi/
+HOSTCFLAGS_insn_decoder_test.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/x86/include/uapi/ -I$(srctree)/arch/x86/include/ -I$(srctree)/arch/x86/lib/ -I$(srctree)/include/uapi/
 
 HOSTCFLAGS_insn_sanity.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/x86/include/ -I$(srctree)/arch/x86/lib/ -I$(srctree)/include/
 
 # Dependencies are also needed.
-$(obj)/test_get_len.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c
+$(obj)/insn_decoder_test.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c
 
 $(obj)/insn_sanity.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c
 
diff --git a/arch/x86/tools/distill.awk b/arch/x86/tools/distill.awk
index e0edeccc1429..80cd7d53bd07 100644
--- a/arch/x86/tools/distill.awk
+++ b/arch/x86/tools/distill.awk
@@ -1,6 +1,6 @@
 #!/bin/awk -f
 # SPDX-License-Identifier: GPL-2.0
-# Usage: objdump -d a.out | awk -f distill.awk | ./test_get_len
+# 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
diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c
new file mode 100644
index 000000000000..8be7264cb723
--- /dev/null
+++ b/arch/x86/tools/insn_decoder_test.c
@@ -0,0 +1,169 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * Copyright (C) IBM Corporation, 2009
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <unistd.h>
+
+#define unlikely(cond) (cond)
+
+#include <asm/insn.h>
+#include <inat.c>
+#include <insn.c>
+
+/*
+ * Test of instruction analysis in general and insn_get_length() in
+ * 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
+ */
+
+const char *prog;
+static int verbose;
+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, "\t-y	64bit mode\n");
+	fprintf(stderr, "\t-n	32bit mode\n");
+	fprintf(stderr, "\t-v	verbose mode\n");
+	exit(1);
+}
+
+static void malformed_line(const char *line, int line_nr)
+{
+	fprintf(stderr, "%s: malformed line %d:\n%s", prog, line_nr, line);
+	exit(3);
+}
+
+static void dump_field(FILE *fp, const char *name, const char *indent,
+		       struct insn_field *field)
+{
+	fprintf(fp, "%s.%s = {\n", indent, name);
+	fprintf(fp, "%s\t.value = %d, bytes[] = {%x, %x, %x, %x},\n",
+		indent, field->value, field->bytes[0], field->bytes[1],
+		field->bytes[2], field->bytes[3]);
+	fprintf(fp, "%s\t.got = %d, .nbytes = %d},\n", indent,
+		field->got, field->nbytes);
+}
+
+static void dump_insn(FILE *fp, struct insn *insn)
+{
+	fprintf(fp, "Instruction = {\n");
+	dump_field(fp, "prefixes", "\t",	&insn->prefixes);
+	dump_field(fp, "rex_prefix", "\t",	&insn->rex_prefix);
+	dump_field(fp, "vex_prefix", "\t",	&insn->vex_prefix);
+	dump_field(fp, "opcode", "\t",		&insn->opcode);
+	dump_field(fp, "modrm", "\t",		&insn->modrm);
+	dump_field(fp, "sib", "\t",		&insn->sib);
+	dump_field(fp, "displacement", "\t",	&insn->displacement);
+	dump_field(fp, "immediate1", "\t",	&insn->immediate1);
+	dump_field(fp, "immediate2", "\t",	&insn->immediate2);
+	fprintf(fp, "\t.attr = %x, .opnd_bytes = %d, .addr_bytes = %d,\n",
+		insn->attr, insn->opnd_bytes, insn->addr_bytes);
+	fprintf(fp, "\t.length = %d, .x86_64 = %d, .kaddr = %p}\n",
+		insn->length, insn->x86_64, insn->kaddr);
+}
+
+static void parse_args(int argc, char **argv)
+{
+	int c;
+	prog = argv[0];
+	while ((c = getopt(argc, argv, "ynv")) != -1) {
+		switch (c) {
+		case 'y':
+			x86_64 = 1;
+			break;
+		case 'n':
+			x86_64 = 0;
+			break;
+		case 'v':
+			verbose = 1;
+			break;
+		default:
+			usage();
+		}
+	}
+}
+
+#define BUFSIZE 256
+
+int main(int argc, char **argv)
+{
+	char line[BUFSIZE], sym[BUFSIZE] = "<unknown>";
+	unsigned char insn_buf[16];
+	struct insn insn;
+	int insns = 0;
+	int warnings = 0;
+
+	parse_args(argc, argv);
+
+	while (fgets(line, BUFSIZE, stdin)) {
+		char copy[BUFSIZE], *s, *tab1, *tab2;
+		int nb = 0;
+		unsigned int b;
+
+		if (line[0] == '<') {
+			/* Symbol line */
+			strcpy(sym, line);
+			continue;
+		}
+
+		insns++;
+		memset(insn_buf, 0, 16);
+		strcpy(copy, line);
+		tab1 = strchr(copy, '\t');
+		if (!tab1)
+			malformed_line(line, insns);
+		s = tab1 + 1;
+		s += strspn(s, " ");
+		tab2 = strchr(s, '\t');
+		if (!tab2)
+			malformed_line(line, insns);
+		*tab2 = '\0';	/* Characters beyond tab2 aren't examined */
+		while (s < tab2) {
+			if (sscanf(s, "%x", &b) == 1) {
+				insn_buf[nb++] = (unsigned char) b;
+				s += 3;
+			} else
+				break;
+		}
+		/* Decode an instruction */
+		insn_init(&insn, insn_buf, sizeof(insn_buf), x86_64);
+		insn_get_length(&insn);
+		if (insn.length != nb) {
+			warnings++;
+			fprintf(stderr, "Warning: %s found difference at %s\n",
+				prog, sym);
+			fprintf(stderr, "Warning: %s", line);
+			fprintf(stderr, "Warning: objdump says %d bytes, but "
+				"insn_get_length() says %d\n", nb,
+				insn.length);
+			if (verbose)
+				dump_insn(stderr, &insn);
+		}
+	}
+	if (warnings)
+		fprintf(stderr, "Warning: decoded and checked %d"
+			" instructions with %d warnings\n", insns, warnings);
+	else
+		fprintf(stdout, "Success: decoded and checked %d"
+			" instructions\n", insns);
+	return 0;
+}
diff --git a/arch/x86/tools/test_get_len.c b/arch/x86/tools/test_get_len.c
deleted file mode 100644
index ecf31e0358c8..000000000000
--- a/arch/x86/tools/test_get_len.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Copyright (C) IBM Corporation, 2009
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <unistd.h>
-
-#define unlikely(cond) (cond)
-
-#include <asm/insn.h>
-#include <inat.c>
-#include <insn.c>
-
-/*
- * Test of instruction analysis in general and insn_get_length() in
- * 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 | ./test_get_len
- */
-
-const char *prog;
-static int verbose;
-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, "\t-y	64bit mode\n");
-	fprintf(stderr, "\t-n	32bit mode\n");
-	fprintf(stderr, "\t-v	verbose mode\n");
-	exit(1);
-}
-
-static void malformed_line(const char *line, int line_nr)
-{
-	fprintf(stderr, "%s: malformed line %d:\n%s", prog, line_nr, line);
-	exit(3);
-}
-
-static void dump_field(FILE *fp, const char *name, const char *indent,
-		       struct insn_field *field)
-{
-	fprintf(fp, "%s.%s = {\n", indent, name);
-	fprintf(fp, "%s\t.value = %d, bytes[] = {%x, %x, %x, %x},\n",
-		indent, field->value, field->bytes[0], field->bytes[1],
-		field->bytes[2], field->bytes[3]);
-	fprintf(fp, "%s\t.got = %d, .nbytes = %d},\n", indent,
-		field->got, field->nbytes);
-}
-
-static void dump_insn(FILE *fp, struct insn *insn)
-{
-	fprintf(fp, "Instruction = {\n");
-	dump_field(fp, "prefixes", "\t",	&insn->prefixes);
-	dump_field(fp, "rex_prefix", "\t",	&insn->rex_prefix);
-	dump_field(fp, "vex_prefix", "\t",	&insn->vex_prefix);
-	dump_field(fp, "opcode", "\t",		&insn->opcode);
-	dump_field(fp, "modrm", "\t",		&insn->modrm);
-	dump_field(fp, "sib", "\t",		&insn->sib);
-	dump_field(fp, "displacement", "\t",	&insn->displacement);
-	dump_field(fp, "immediate1", "\t",	&insn->immediate1);
-	dump_field(fp, "immediate2", "\t",	&insn->immediate2);
-	fprintf(fp, "\t.attr = %x, .opnd_bytes = %d, .addr_bytes = %d,\n",
-		insn->attr, insn->opnd_bytes, insn->addr_bytes);
-	fprintf(fp, "\t.length = %d, .x86_64 = %d, .kaddr = %p}\n",
-		insn->length, insn->x86_64, insn->kaddr);
-}
-
-static void parse_args(int argc, char **argv)
-{
-	int c;
-	prog = argv[0];
-	while ((c = getopt(argc, argv, "ynv")) != -1) {
-		switch (c) {
-		case 'y':
-			x86_64 = 1;
-			break;
-		case 'n':
-			x86_64 = 0;
-			break;
-		case 'v':
-			verbose = 1;
-			break;
-		default:
-			usage();
-		}
-	}
-}
-
-#define BUFSIZE 256
-
-int main(int argc, char **argv)
-{
-	char line[BUFSIZE], sym[BUFSIZE] = "<unknown>";
-	unsigned char insn_buf[16];
-	struct insn insn;
-	int insns = 0;
-	int warnings = 0;
-
-	parse_args(argc, argv);
-
-	while (fgets(line, BUFSIZE, stdin)) {
-		char copy[BUFSIZE], *s, *tab1, *tab2;
-		int nb = 0;
-		unsigned int b;
-
-		if (line[0] == '<') {
-			/* Symbol line */
-			strcpy(sym, line);
-			continue;
-		}
-
-		insns++;
-		memset(insn_buf, 0, 16);
-		strcpy(copy, line);
-		tab1 = strchr(copy, '\t');
-		if (!tab1)
-			malformed_line(line, insns);
-		s = tab1 + 1;
-		s += strspn(s, " ");
-		tab2 = strchr(s, '\t');
-		if (!tab2)
-			malformed_line(line, insns);
-		*tab2 = '\0';	/* Characters beyond tab2 aren't examined */
-		while (s < tab2) {
-			if (sscanf(s, "%x", &b) == 1) {
-				insn_buf[nb++] = (unsigned char) b;
-				s += 3;
-			} else
-				break;
-		}
-		/* Decode an instruction */
-		insn_init(&insn, insn_buf, sizeof(insn_buf), x86_64);
-		insn_get_length(&insn);
-		if (insn.length != nb) {
-			warnings++;
-			fprintf(stderr, "Warning: %s found difference at %s\n",
-				prog, sym);
-			fprintf(stderr, "Warning: %s", line);
-			fprintf(stderr, "Warning: objdump says %d bytes, but "
-				"insn_get_length() says %d\n", nb,
-				insn.length);
-			if (verbose)
-				dump_insn(stderr, &insn);
-		}
-	}
-	if (warnings)
-		fprintf(stderr, "Warning: decoded and checked %d"
-			" instructions with %d warnings\n", insns, warnings);
-	else
-		fprintf(stdout, "Success: decoded and checked %d"
-			" instructions\n", insns);
-	return 0;
-}

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

* [PATCH -tip 2/3] x86: tools: Rename distill.awk to objdump_reformat.awk
  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-11-24 15:10 ` Masami Hiramatsu
  2017-12-12 15:08   ` [tip:perf/core] x86/tools: " 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
  2 siblings, 1 reply; 7+ messages in thread
From: Masami Hiramatsu @ 2017-11-24 15:10 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Masami Hiramatsu, x86, Greg Kroah-Hartman, Peter Zijlstra,
	H . Peter Anvin, Thomas Gleixner, linux-kernel

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
+}

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

* [PATCH -tip 3/3] x86: tools: Standardize output format of insn_decode_test
  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-11-24 15:10 ` [PATCH -tip 2/3] x86: tools: Rename distill.awk to objdump_reformat.awk Masami Hiramatsu
@ 2017-11-24 15:11 ` Masami Hiramatsu
  2017-12-12 15:09   ` [tip:perf/core] x86/tools: " tip-bot for Masami Hiramatsu
  2 siblings, 1 reply; 7+ messages in thread
From: Masami Hiramatsu @ 2017-11-24 15:11 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Masami Hiramatsu, x86, Greg Kroah-Hartman, Peter Zijlstra,
	H . Peter Anvin, Thomas Gleixner, linux-kernel

Standardize warning, error, and success printout format
of insn_decode_test so that user can easily understand
which test tool caused the messages.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
 arch/x86/tools/insn_decoder_test.c |   33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c
index 286d2e3b9d57..a3b4fd954931 100644
--- a/arch/x86/tools/insn_decoder_test.c
+++ b/arch/x86/tools/insn_decoder_test.c
@@ -17,6 +17,7 @@
 #include <string.h>
 #include <assert.h>
 #include <unistd.h>
+#include <stdarg.h>
 
 #define unlikely(cond) (cond)
 
@@ -48,10 +49,21 @@ static void usage(void)
 
 static void malformed_line(const char *line, int line_nr)
 {
-	fprintf(stderr, "%s: malformed line %d:\n%s", prog, line_nr, line);
+	fprintf(stderr, "%s: error: malformed line %d:\n%s",
+		prog, line_nr, line);
 	exit(3);
 }
 
+static void pr_warn(const char *fmt, ...)
+{
+	va_list ap;
+
+	fprintf(stderr, "%s: warning: ", prog);
+	va_start(ap, fmt);
+	vfprintf(stderr, fmt, ap);
+	va_end(ap);
+}
+
 static void dump_field(FILE *fp, const char *name, const char *indent,
 		       struct insn_field *field)
 {
@@ -149,21 +161,20 @@ int main(int argc, char **argv)
 		insn_get_length(&insn);
 		if (insn.length != nb) {
 			warnings++;
-			fprintf(stderr, "Warning: %s found difference at %s\n",
-				prog, sym);
-			fprintf(stderr, "Warning: %s", line);
-			fprintf(stderr, "Warning: objdump says %d bytes, but "
-				"insn_get_length() says %d\n", nb,
-				insn.length);
+			pr_warn("Found an x86 instruction decoder bug, "
+				"please report this.\n", sym);
+			pr_warn("%s", line);
+			pr_warn("objdump says %d bytes, but insn_get_length() "
+				"says %d\n", nb, insn.length);
 			if (verbose)
 				dump_insn(stderr, &insn);
 		}
 	}
 	if (warnings)
-		fprintf(stderr, "Warning: decoded and checked %d"
-			" instructions with %d warnings\n", insns, warnings);
+		pr_warn("Decoded and checked %d instructions with %d "
+			"failures\n", insns, warnings);
 	else
-		fprintf(stdout, "Success: decoded and checked %d"
-			" instructions\n", insns);
+		fprintf(stdout, "%s: success: Decoded and checked %d"
+			" instructions\n", prog, insns);
 	return 0;
 }

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

* [tip:perf/core] x86/tools: Rename test_get_len to insn_decoder_test
  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-bot for Masami Hiramatsu
  0 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Masami Hiramatsu @ 2017-12-12 15:08 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, mhiramat, torvalds, hpa, peterz, tglx, gregkh, mingo

Commit-ID:  6b63dd119eb4eee44733ca435168ce05487b8644
Gitweb:     https://git.kernel.org/tip/6b63dd119eb4eee44733ca435168ce05487b8644
Author:     Masami Hiramatsu <mhiramat@kernel.org>
AuthorDate: Sat, 25 Nov 2017 00:10:25 +0900
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 12 Dec 2017 13:27:47 +0100

x86/tools: Rename test_get_len to insn_decoder_test

Rename test_get_len test command to insn_decoder_test
as it a more meaningful name. This also changes some
comments in related files.

Note that this also removes the paragraph about
writing to the Free Software Foundation's mailing
address.

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/151153622537.22827.14928774603980883278.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/tools/Makefile                                | 10 +++++-----
 arch/x86/tools/distill.awk                             |  2 +-
 arch/x86/tools/{test_get_len.c => insn_decoder_test.c} |  6 +-----
 3 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile
index 972b8e8..b0d7568 100644
--- a/arch/x86/tools/Makefile
+++ b/arch/x86/tools/Makefile
@@ -17,24 +17,24 @@ distill_awk = $(srctree)/arch/x86/tools/distill.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)/test_get_len $(posttest_64bit) $(posttest_verbose)
+      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)
 
 quiet_cmd_sanitytest = TEST    $@
       cmd_sanitytest = $(obj)/insn_sanity $(posttest_64bit) -m 1000000
 
-posttest: $(obj)/test_get_len vmlinux $(obj)/insn_sanity
+posttest: $(obj)/insn_decoder_test vmlinux $(obj)/insn_sanity
 	$(call cmd,posttest)
 	$(call cmd,sanitytest)
 
-hostprogs-y	+= test_get_len insn_sanity
+hostprogs-y	+= insn_decoder_test insn_sanity
 
 # -I needed for generated C source and C source which in the kernel tree.
-HOSTCFLAGS_test_get_len.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/x86/include/uapi/ -I$(srctree)/arch/x86/include/ -I$(srctree)/arch/x86/lib/ -I$(srctree)/include/uapi/
+HOSTCFLAGS_insn_decoder_test.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/x86/include/uapi/ -I$(srctree)/arch/x86/include/ -I$(srctree)/arch/x86/lib/ -I$(srctree)/include/uapi/
 
 HOSTCFLAGS_insn_sanity.o := -Wall -I$(objtree)/arch/x86/lib/ -I$(srctree)/arch/x86/include/ -I$(srctree)/arch/x86/lib/ -I$(srctree)/include/
 
 # Dependencies are also needed.
-$(obj)/test_get_len.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c
+$(obj)/insn_decoder_test.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c
 
 $(obj)/insn_sanity.o: $(srctree)/arch/x86/lib/insn.c $(srctree)/arch/x86/lib/inat.c $(srctree)/arch/x86/include/asm/inat_types.h $(srctree)/arch/x86/include/asm/inat.h $(srctree)/arch/x86/include/asm/insn.h $(objtree)/arch/x86/lib/inat-tables.c
 
diff --git a/arch/x86/tools/distill.awk b/arch/x86/tools/distill.awk
index e0edecc..80cd7d5 100644
--- a/arch/x86/tools/distill.awk
+++ b/arch/x86/tools/distill.awk
@@ -1,6 +1,6 @@
 #!/bin/awk -f
 # SPDX-License-Identifier: GPL-2.0
-# Usage: objdump -d a.out | awk -f distill.awk | ./test_get_len
+# 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
diff --git a/arch/x86/tools/test_get_len.c b/arch/x86/tools/insn_decoder_test.c
similarity index 94%
rename from arch/x86/tools/test_get_len.c
rename to arch/x86/tools/insn_decoder_test.c
index ecf31e0..8be7264 100644
--- a/arch/x86/tools/test_get_len.c
+++ b/arch/x86/tools/insn_decoder_test.c
@@ -9,10 +9,6 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
  * Copyright (C) IBM Corporation, 2009
  */
 
@@ -33,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 | ./test_get_len
+ * Usage: objdump -d a.out | awk -f distill.awk | ./insn_decoder_test
  */
 
 const char *prog;

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

* [tip:perf/core] x86/tools: Rename distill.awk to objdump_reformat.awk
  2017-11-24 15:10 ` [PATCH -tip 2/3] x86: tools: Rename distill.awk to objdump_reformat.awk Masami Hiramatsu
@ 2017-12-12 15:08   ` tip-bot for Masami Hiramatsu
  0 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Masami Hiramatsu @ 2017-12-12 15:08 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: tglx, mingo, peterz, mhiramat, gregkh, torvalds, hpa, linux-kernel

Commit-ID:  98fe07fccc3e25889186277a5158c0a658d528a4
Gitweb:     https://git.kernel.org/tip/98fe07fccc3e25889186277a5158c0a658d528a4
Author:     Masami Hiramatsu <mhiramat@kernel.org>
AuthorDate: Sat, 25 Nov 2017 00:10:54 +0900
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 12 Dec 2017 13:27:47 +0100

x86/tools: Rename distill.awk to objdump_reformat.awk

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                              | 4 ++--
 arch/x86/tools/insn_decoder_test.c                   | 6 +++---
 arch/x86/tools/{distill.awk => objdump_reformat.awk} | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile
index b0d7568..09af7ff 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/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c
index 8be7264..286d2e3 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/distill.awk b/arch/x86/tools/objdump_reformat.awk
similarity index 91%
rename from arch/x86/tools/distill.awk
rename to arch/x86/tools/objdump_reformat.awk
index 80cd7d5..f418c91 100644
--- a/arch/x86/tools/distill.awk
+++ b/arch/x86/tools/objdump_reformat.awk
@@ -1,7 +1,7 @@
 #!/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:
+# 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.

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

* [tip:perf/core] x86/tools: Standardize output format of insn_decode_test
  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-bot for Masami Hiramatsu
  0 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Masami Hiramatsu @ 2017-12-12 15:09 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: gregkh, hpa, tglx, torvalds, linux-kernel, peterz, mhiramat, mingo

Commit-ID:  10c91577d5e631773a6394e14cf60125389b71ae
Gitweb:     https://git.kernel.org/tip/10c91577d5e631773a6394e14cf60125389b71ae
Author:     Masami Hiramatsu <mhiramat@kernel.org>
AuthorDate: Sat, 25 Nov 2017 00:11:22 +0900
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 12 Dec 2017 13:27:47 +0100

x86/tools: Standardize output format of insn_decode_test

Standardize warning, error, and success printout format
of insn_decode_test so that user can easily understand
which test tool caused the messages.

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/151153628279.22827.4869104298276788693.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/tools/insn_decoder_test.c | 33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/arch/x86/tools/insn_decoder_test.c b/arch/x86/tools/insn_decoder_test.c
index 286d2e3..a3b4fd9 100644
--- a/arch/x86/tools/insn_decoder_test.c
+++ b/arch/x86/tools/insn_decoder_test.c
@@ -17,6 +17,7 @@
 #include <string.h>
 #include <assert.h>
 #include <unistd.h>
+#include <stdarg.h>
 
 #define unlikely(cond) (cond)
 
@@ -48,10 +49,21 @@ static void usage(void)
 
 static void malformed_line(const char *line, int line_nr)
 {
-	fprintf(stderr, "%s: malformed line %d:\n%s", prog, line_nr, line);
+	fprintf(stderr, "%s: error: malformed line %d:\n%s",
+		prog, line_nr, line);
 	exit(3);
 }
 
+static void pr_warn(const char *fmt, ...)
+{
+	va_list ap;
+
+	fprintf(stderr, "%s: warning: ", prog);
+	va_start(ap, fmt);
+	vfprintf(stderr, fmt, ap);
+	va_end(ap);
+}
+
 static void dump_field(FILE *fp, const char *name, const char *indent,
 		       struct insn_field *field)
 {
@@ -149,21 +161,20 @@ int main(int argc, char **argv)
 		insn_get_length(&insn);
 		if (insn.length != nb) {
 			warnings++;
-			fprintf(stderr, "Warning: %s found difference at %s\n",
-				prog, sym);
-			fprintf(stderr, "Warning: %s", line);
-			fprintf(stderr, "Warning: objdump says %d bytes, but "
-				"insn_get_length() says %d\n", nb,
-				insn.length);
+			pr_warn("Found an x86 instruction decoder bug, "
+				"please report this.\n", sym);
+			pr_warn("%s", line);
+			pr_warn("objdump says %d bytes, but insn_get_length() "
+				"says %d\n", nb, insn.length);
 			if (verbose)
 				dump_insn(stderr, &insn);
 		}
 	}
 	if (warnings)
-		fprintf(stderr, "Warning: decoded and checked %d"
-			" instructions with %d warnings\n", insns, warnings);
+		pr_warn("Decoded and checked %d instructions with %d "
+			"failures\n", insns, warnings);
 	else
-		fprintf(stdout, "Success: decoded and checked %d"
-			" instructions\n", insns);
+		fprintf(stdout, "%s: success: Decoded and checked %d"
+			" instructions\n", prog, insns);
 	return 0;
 }

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

end of thread, other threads:[~2017-12-12 15:13 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [PATCH -tip 2/3] x86: tools: Rename distill.awk to objdump_reformat.awk Masami Hiramatsu
2017-12-12 15:08   ` [tip:perf/core] x86/tools: " 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

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.