Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 10c91577 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Ingo Molnar
Browse files

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: default avatarMasami 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: default avatarIngo Molnar <mingo@kernel.org>
parent 98fe07fc
Loading
Loading
Loading
Loading
+22 −11
Original line number Diff line number Diff line
@@ -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;
}