x86/tools: Standardize output format of insn_decode_test
authorMasami Hiramatsu <mhiramat@kernel.org>
Fri, 24 Nov 2017 15:11:22 +0000 (00:11 +0900)
committerIngo Molnar <mingo@kernel.org>
Tue, 12 Dec 2017 12:27:47 +0000 (13:27 +0100)
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

index 286d2e3b9d57489046b473f2aa8a5e9e9bd94bde..a3b4fd9549317b605de6e918aa6df22a9737ad07 100644 (file)
@@ -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;
 }