diff options
| author | Masami Hiramatsu <mhiramat@redhat.com> | 2009-11-20 12:13:14 -0500 |
|---|---|---|
| committer | H. Peter Anvin <hpa@zytor.com> | 2009-11-21 02:01:04 -0500 |
| commit | 6f5f67267dc4faecd9cba63894de92ca92a608b8 (patch) | |
| tree | 2ebee0e99341c812a55947cf0a611b4d0fef6d68 | |
| parent | 80509e27e40d7554e576405ed9f5b7966c567112 (diff) | |
x86: insn decoder test checks objdump version
Check objdump version before using it for insn decoder build test,
because some older objdump can't decode AVX code correctly.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Randy Dunlap <rdunlap@xenotime.net>
Cc: Jim Keniston <jkenisto@us.ibm.com>
LKML-Reference: <20091120171314.6715.30390.stgit@dhcp-100-2-132.bos.redhat.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| -rw-r--r-- | arch/x86/tools/Makefile | 5 | ||||
| -rw-r--r-- | arch/x86/tools/chkobjdump.awk | 23 |
2 files changed, 27 insertions, 1 deletions
diff --git a/arch/x86/tools/Makefile b/arch/x86/tools/Makefile index c80b0792cd83..f82082677337 100644 --- a/arch/x86/tools/Makefile +++ b/arch/x86/tools/Makefile | |||
| @@ -12,8 +12,11 @@ else | |||
| 12 | posttest_64bit = -n | 12 | posttest_64bit = -n |
| 13 | endif | 13 | endif |
| 14 | 14 | ||
| 15 | distill_awk = $(srctree)/arch/x86/tools/distill.awk | ||
| 16 | chkobjdump = $(srctree)/arch/x86/tools/chkobjdump.awk | ||
| 17 | |||
| 15 | quiet_cmd_posttest = TEST $@ | 18 | quiet_cmd_posttest = TEST $@ |
| 16 | cmd_posttest = $(OBJDUMP) -d -j .text $(objtree)/vmlinux | $(AWK) -f $(srctree)/arch/x86/tools/distill.awk | $(obj)/test_get_len $(posttest_64bit) $(posttest_verbose) | 19 | 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) |
| 17 | 20 | ||
| 18 | posttest: $(obj)/test_get_len vmlinux | 21 | posttest: $(obj)/test_get_len vmlinux |
| 19 | $(call cmd,posttest) | 22 | $(call cmd,posttest) |
diff --git a/arch/x86/tools/chkobjdump.awk b/arch/x86/tools/chkobjdump.awk new file mode 100644 index 000000000000..0d13cd9fdcff --- /dev/null +++ b/arch/x86/tools/chkobjdump.awk | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | # GNU objdump version checker | ||
| 2 | # | ||
| 3 | # Usage: | ||
| 4 | # objdump -v | awk -f chkobjdump.awk | ||
| 5 | BEGIN { | ||
| 6 | # objdump version 2.19 or later is OK for the test. | ||
| 7 | od_ver = 2; | ||
| 8 | od_sver = 19; | ||
| 9 | } | ||
| 10 | |||
| 11 | /^GNU/ { | ||
| 12 | split($4, ver, "."); | ||
| 13 | if (ver[1] > od_ver || | ||
| 14 | (ver[1] == od_ver && ver[2] >= od_sver)) { | ||
| 15 | exit 1; | ||
| 16 | } else { | ||
| 17 | printf("Warning: objdump version %s is older than %d.%d\n", | ||
| 18 | $4, od_ver, od_sver); | ||
| 19 | print("Warning: Skipping posttest."); | ||
| 20 | # Logic is inverted, because we just skip test without error. | ||
| 21 | exit 0; | ||
| 22 | } | ||
| 23 | } | ||
