[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN][PATCH] coverage: add extended coverage capabilities


  • To: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Grygorii Strashko <grygorii_strashko@xxxxxxxx>
  • Date: Fri, 5 Dec 2025 00:15:55 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XEpOz7Z8v/q7AWokUrghZoT+a2Ymm8BMWlMf6wU5JF0=; b=KnzUGMX83kOaQ5zDWx7K5+LRHCbqJINIixJtImpNQQRqepYvqlByEgQ74VvIAKZ2t47NI5S8hY6SUM5SdalIlmLXsjbXqZ5lms58JSk2L0cjtANI9EAdonPlDgv5b4BfuRTW9aemxjdXoPFr5odzLA30o+xcpL16KF/Jkdg+QnH0/4BUOVRL5Hp3HV+h2RaHmI2VMZCZavJFhNsEI3EpdNyghaYJXcRd+SUfCiiQCraciYZe3Ab4X95rj9Y1jdpqLskPHrigdJiuF2KgnAUPRN2CRGiWyoR7W1ikov4Lzl7A7Alsf5X20TBNCFAVnxFGJ8wEgCM/jHqpChLG+BEJJw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ub4MBmxF/b8/IGCerG0rFXrWl4bR+EkYOLJ/gQvbVNKmkrZzLMwXWunluTlSfHWSYr/iSZN6MrTIHSzHb372l96IN/uSkdu51WAEYmhWDLXVLqUUnOiBhjjFb5kiZspu3UVTl93qChJJnyixrJq3u/d1plEli8T56cbl5nvcR17JzNvq6AkhB89+uxQc/MNF07VCJw5SJUebTloaluWUH1MqcG2RDBvrF2XlQP5T17sM1kaYSDfsh2BbzI0Tca2NHSA1kLfth5uTNl9U8WnO6bC7QtLncMsnaJePXNyYiNNF/MFY7qy7LvH9HF18EpPF7vO1B9b9dHQfhGi/56nq4Q==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
  • Cc: Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Jason Andryuk <jason.andryuk@xxxxxxx>, Victor Lira <victorm.lira@xxxxxxx>
  • Delivery-date: Thu, 04 Dec 2025 22:16:28 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>



On 04.12.25 12:02, Andrew Cooper wrote:
On 03/12/2025 10:24 pm, Grygorii Strashko wrote:
From: Grygorii Strashko <grygorii_strashko@xxxxxxxx>

Added CONFIG_COVERAGE_EXTENDED to enable coverage for .init and lib code.
When enabled - Xen .init data will not be freed.

Signed-off-by: Grygorii Strashko <grygorii_strashko@xxxxxxxx>
---
  xen/Kconfig.debug          | 10 ++++++++++
  xen/Rules.mk               | 13 +++++++++++++
  xen/arch/arm/setup.c       |  2 ++
  xen/arch/x86/setup.c       |  4 ++++
  xen/common/libelf/Makefile |  4 +++-
  xen/common/libfdt/Makefile |  4 +++-
  6 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
index d900d926c555..3e04e1a3992b 100644
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -44,6 +44,16 @@ config COVERAGE
If unsure, say N here. +config COVERAGE_EXTENDED
+    bool "Extended Code coverage support"
+    depends on COVERAGE
+    default y
+    help
+      Enable Extended code coverage support which include .init and libs code.
+      The .init sections are not freed in this case.
+
+      If unsure, say N here.

IMO this is unhelpful.  Noone wants to opt for the model we've got right
now.

Instead, I think we want:

config RELAX_INIT_CHECK
     bool

and have CONFIG_COVERAGE select it.  There's no need for any user
visible option here.


+
  config CONDITION_COVERAGE
        bool "Condition coverage support"
        depends on COVERAGE && CC_HAS_MCDC
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 2b28d1ac3c18..6d66a2332fb0 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -260,6 +267,7 @@ $(obj)/%.o: $(src)/%.S FORCE
quiet_cmd_obj_init_o = INIT_O $@
+ifneq ($(CONFIG_COVERAGE_EXTENDED),y)
  define cmd_obj_init_o
      $(OBJDUMP) -h $< | while read idx name sz rest; do \
          case "$$name" in \
@@ -272,6 +280,11 @@ define cmd_obj_init_o
      done || exit $$?; \
      $(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section 
.$(s)=.init.$(s)) $< $@
  endef
+else
+define cmd_obj_init_o
+    $(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section 
.$(s)=.init.$(s)) $< $@
+endef
+endif

This wants to be something more like:

@@ -261,6 +268,7 @@ $(obj)/%.o: $(src)/%.S FORCE
 quiet_cmd_obj_init_o = INIT_O  $@
  define cmd_obj_init_o
+ifneq ($(CONFIG_RELAX_INIT_CHECK),y)
      $(OBJDUMP) -h $< | while read idx name sz rest; do \
          case "$$name" in \
          .*.local) ;; \
@@ -269,7 +277,8 @@ define cmd_obj_init_o
              echo "Error: size of $<:$$name is 0x$$sz" >&2; \
              exit $$(expr $$idx + 1);; \
          esac; \
-    done || exit $$?; \
+    done || exit $$?
+endif
      $(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section 
.$(s)=.init.$(s)) $< $@
  endef


above diff is not working and generates build failure :(

--
Best regards,
-grygorii




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.