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

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

x86: Instruction decoder test should generate build warning



Since some instructions are not decoded correctly by older
versions of objdump, it may cause false positive error in insn
decoder posttest.

This changes build error of insn decoder test to build warning.

Signed-off-by: default avatarMasami Hiramatsu <mhiramat@redhat.com>
Cc: systemtap <systemtap@sources.redhat.com>
Cc: DLE <dle-develop@lists.sourceforge.net>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Randy Dunlap <rdunlap@xenotime.net>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
LKML-Reference: <20091116230631.5250.41579.stgit@harusame>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 6b0cb5f9
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ int main(int argc, char **argv)
	unsigned char insn_buf[16];
	struct insn insn;
	int insns = 0, c;
	int warnings = 0;

	parse_args(argc, argv);

@@ -151,18 +152,22 @@ int main(int argc, char **argv)
		insn_init(&insn, insn_buf, x86_64);
		insn_get_length(&insn);
		if (insn.length != nb) {
			fprintf(stderr, "Error: %s found a difference at %s\n",
			warnings++;
			fprintf(stderr, "Warning: %s found difference at %s\n",
				prog, sym);
			fprintf(stderr, "Error: %s", line);
			fprintf(stderr, "Error: objdump says %d bytes, but "
			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);
			exit(2);
		}
	}
	fprintf(stderr, "Succeed: decoded and checked %d instructions\n",
		insns);
	if (warnings)
		fprintf(stderr, "Warning: decoded and checked %d"
			" instructions with %d warnings\n", insns, warnings);
	else
		fprintf(stderr, "Succeed: decoded and checked %d"
			" instructions\n", insns);
	return 0;
}