From 993bb69300888129675d90425d2d6deeec8845cc Mon Sep 17 00:00:00 2001
From: Andre Maroneze <andre.maroneze@cea.fr>
Date: Fri, 1 Oct 2021 17:02:15 +0200
Subject: [PATCH] [Kernel] add wkey for assembly warnings

---
 src/kernel_internals/typing/asm_contracts.ml       | 2 +-
 src/kernel_services/plugin_entry_points/kernel.ml  | 2 ++
 src/kernel_services/plugin_entry_points/kernel.mli | 3 +++
 tests/misc/oracle/audit-out.json                   | 2 +-
 tests/syntax/oracle/gnu-asm-aesni.res.oracle       | 2 +-
 5 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/kernel_internals/typing/asm_contracts.ml b/src/kernel_internals/typing/asm_contracts.ml
index 9de8a8b51ff..a37810a3b3f 100644
--- a/src/kernel_internals/typing/asm_contracts.ml
+++ b/src/kernel_internals/typing/asm_contracts.ml
@@ -143,7 +143,7 @@ class visit_assembly =
           let source = fst (Cil_datatype.Instr.loc i) in
           let once = true in
           Kernel.warning
-            ~once ~source
+            ~once ~source ~wkey:Kernel.wkey_asm
             "Clobber list contains \"memory\" argument. Assuming no \
              side effects beyond those mentioned in operands."
         end;
diff --git a/src/kernel_services/plugin_entry_points/kernel.ml b/src/kernel_services/plugin_entry_points/kernel.ml
index dffe3cb4b69..a3f6205f58a 100644
--- a/src/kernel_services/plugin_entry_points/kernel.ml
+++ b/src/kernel_services/plugin_entry_points/kernel.ml
@@ -201,6 +201,8 @@ let () = set_warn_status wkey_audit Log.Werror
 
 let wkey_parser_unsupported = register_warn_category "parser:unsupported"
 
+let wkey_asm = register_warn_category "assembly"
+
 (* ************************************************************************* *)
 (** {2 Specialised functors for building kernel parameters} *)
 (* ************************************************************************* *)
diff --git a/src/kernel_services/plugin_entry_points/kernel.mli b/src/kernel_services/plugin_entry_points/kernel.mli
index 8a935ac016f..52136e1a395 100644
--- a/src/kernel_services/plugin_entry_points/kernel.mli
+++ b/src/kernel_services/plugin_entry_points/kernel.mli
@@ -194,6 +194,9 @@ val wkey_audit: warn_category
 val wkey_parser_unsupported: warn_category
 (** Warning related to unsupported parsing-related features. *)
 
+val wkey_asm: warn_category
+(** Warnings related to assembly code. *)
+
 (* ************************************************************************* *)
 (** {2 Functors for late option registration}                                *)
 (** Kernel_function-related options cannot be registered in this module:
diff --git a/tests/misc/oracle/audit-out.json b/tests/misc/oracle/audit-out.json
index 50dc8171330..f12c5aae66e 100644
--- a/tests/misc/oracle/audit-out.json
+++ b/tests/misc/oracle/audit-out.json
@@ -54,7 +54,7 @@
       "enabled": [
         "*", "CERT", "CERT:EXP", "CERT:EXP:46", "CERT:MSC", "CERT:MSC:37",
         "CERT:MSC:38", "acsl-extension", "annot", "annot:missing-spec",
-        "annot:multi-from", "annot-error", "audit", "check",
+        "annot:multi-from", "annot-error", "assembly", "audit", "check",
         "check:volatile", "cmdline", "ghost", "ghost:bad-use", "inline",
         "linker", "linker:drop-conflicting-unused", "parser",
         "parser:conditional-feature", "parser:unsupported", "pp",
diff --git a/tests/syntax/oracle/gnu-asm-aesni.res.oracle b/tests/syntax/oracle/gnu-asm-aesni.res.oracle
index 009db9d96ab..ce6233fb1cc 100644
--- a/tests/syntax/oracle/gnu-asm-aesni.res.oracle
+++ b/tests/syntax/oracle/gnu-asm-aesni.res.oracle
@@ -1,5 +1,5 @@
 [kernel] Parsing tests/syntax/gnu-asm-aesni.c (with preprocessing)
-[kernel] tests/syntax/gnu-asm-aesni.c:93: Warning: 
+[kernel:assembly] tests/syntax/gnu-asm-aesni.c:93: Warning: 
   Clobber list contains "memory" argument. Assuming no side effects beyond those mentioned in operands.
 /* Generated by Frama-C */
 #include "__fc_builtin.h"
-- 
GitLab