Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932394AbdCFSxf (ORCPT ); Mon, 6 Mar 2017 13:53:35 -0500 Received: from www.osadl.org ([62.245.132.105]:41313 "EHLO www.osadl.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932175AbdCFSx1 (ORCPT ); Mon, 6 Mar 2017 13:53:27 -0500 From: Nicholas Mc Guire To: Thomas Gleixner Cc: Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, Masami Hiramatsu , Adrian Hunter , Arnaldo Carvalho de Melo , Josh Poimboeuf , linux-kernel@vger.kernel.org, Nicholas Mc Guire Subject: [PATCH] objtool: drop redundant flags generation Date: Mon, 6 Mar 2017 18:00:25 +0100 Message-Id: <1488819625-27395-1-git-send-email-der.herr@hofr.at> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3008 Lines: 84 The generator was emitting quite a few duplicate flags which was making doublebitand.cocci nervous. This awk hack resolves the duplicate issue. Signed-off-by: Nicholas Mc Guire --- The coccinelle complaints emitted was about 230 findings total: ./arch/x86/lib/inat-tables.c:214:10-20: duplicated argument to & or | ./arch/x86/lib/inat-tables.c:214:23-33: duplicated argument to & or | ./arch/x86/lib/inat-tables.c:218:10-20: duplicated argument to & or | ./arch/x86/lib/inat-tables.c:218:23-33: duplicated argument to & or | .... ./tools/objtool/arch/x86/insn/inat-tables.c:214:10-20: duplicated argument to & or | ./tools/objtool/arch/x86/insn/inat-tables.c:214:23-33: duplicated argument to & or | ./tools/objtool/arch/x86/insn/inat-tables.c:218:10-20: duplicated argument to & or | ./tools/objtool/arch/x86/insn/inat-tables.c:218:23-33: duplicated argument to & or | ... spatch --sp-file scripts/coccinelle/tests/doublebitand.cocci inat-tables.c -D report will give you the full list - all are caused by duplicates in the generated output by the add_flags function in the two instances of gen-insn-attr-x86.awk. Q: The two copies of gen-insn-attr-x86.awk are identical and its not actually clear why this duplication is needed ? Further the maintainers list emitted for the two files differ. Patch was checked by manual review of the diff between the initial file and the regenerated file after the below patch was applied. Second verification was by make tools/objtool and comparing the generated binaries in tools/objtool/arch/x86/decode.o with diff. Patch is against 4.11-rc1 (localversion-next is next-20170306) arch/x86/tools/gen-insn-attr-x86.awk | 12 ++++++++++-- tools/objtool/arch/x86/insn/gen-insn-attr-x86.awk | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/arch/x86/tools/gen-insn-attr-x86.awk b/arch/x86/tools/gen-insn-attr-x86.awk index a3d2c62..9cdeefe 100644 --- a/arch/x86/tools/gen-insn-attr-x86.awk +++ b/arch/x86/tools/gen-insn-attr-x86.awk @@ -226,8 +226,16 @@ function print_table(tbl,name,fmt,n) } function add_flags(old,new) { - if (old && new) - return old " | " new + if (old == new) + return old + if (old && new) { + if(match(old,new)) + return old + else if(match(new,old)) + return new + else + return old " | " new + } else if (old) return old else diff --git a/tools/objtool/arch/x86/insn/gen-insn-attr-x86.awk b/tools/objtool/arch/x86/insn/gen-insn-attr-x86.awk index a3d2c62..9cdeefe 100644 --- a/tools/objtool/arch/x86/insn/gen-insn-attr-x86.awk +++ b/tools/objtool/arch/x86/insn/gen-insn-attr-x86.awk @@ -226,8 +226,16 @@ function print_table(tbl,name,fmt,n) } function add_flags(old,new) { - if (old && new) - return old " | " new + if (old == new) + return old + if (old && new) { + if(match(old,new)) + return old + else if(match(new,old)) + return new + else + return old " | " new + } else if (old) return old else -- 2.1.4