[Devel] [PATCH vz10 15/15] selftests/breakpoints: fix compilation warnings in breakpoint_test

Konstantin Khorenko khorenko at virtuozzo.com
Mon Mar 23 23:31:34 MSK 2026


  breakpoint_test.c: In function 'read_var':
  breakpoint_test.c:186:33: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    186 |                         sval = *(short *)&dummy_var[i];
        |                                 ^~~~~~~~~~~~~~~~~~~~~~
  breakpoint_test.c:189:33: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    189 |                         ival = *(int *)&dummy_var[i];
        |                                 ^~~~~~~~~~~~~~~~~~~~
  breakpoint_test.c:177:52: warning: variable 'lval' set but not used [-Wunused-but-set-variable]
  breakpoint_test.c:177:36: warning: variable 'ival' set but not used [-Wunused-but-set-variable]
  breakpoint_test.c:177:26: warning: variable 'sval' set but not used [-Wunused-but-set-variable]
  breakpoint_test.c:177:14: warning: variable 'cval' set but not used [-Wunused-but-set-variable]
  breakpoint_test.c: In function 'trigger_tests':
  breakpoint_test.c:206:14: warning: unused variable 'val' [-Wunused-variable]
  breakpoint_test.c: In function 'launch_tests':
  breakpoint_test.c:335:33: warning: unused variable 'i' [-Wunused-variable]
  breakpoint_test.c: In function 'main':
  breakpoint_test.c:390:13: warning: unused variable 'ret' [-Wunused-variable]
  breakpoint_test.c: In function 'toggle_breakpoint':
  breakpoint_test.c:91:22: warning: 'xlen' may be used uninitialized [-Wmaybe-uninitialized]
     91 |         vdr7 = (xlen | xtype) << 16;
        |                ~~~~~~^~~~~~~~

Fix the following warnings:
- [-Wstrict-aliasing] and [-Wunused-but-set-variable] in read_var():
   The volatile pointer dereferences alone don't suppress the
   strict-aliasing warning. Add a GCC diagnostic pragma to silence it --
   the type-punned reads are intentional here: we need sized memory
   accesses at specific addresses to trigger hardware breakpoints.
- [-Wmaybe-uninitialized]: initialize xlen in toggle_breakpoint().
- [-Wunused-variable]: remove unused variables val, i, ret.

https://virtuozzo.atlassian.net/browse/VSTOR-127529
Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>

Feature: fix selftests
Made-with: Cursor
---
 .../selftests/breakpoints/breakpoint_test.c        | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/breakpoints/breakpoint_test.c b/tools/testing/selftests/breakpoints/breakpoint_test.c
index d46962a24724..675640aadf0f 100644
--- a/tools/testing/selftests/breakpoints/breakpoint_test.c
+++ b/tools/testing/selftests/breakpoints/breakpoint_test.c
@@ -55,7 +55,7 @@ static void toggle_breakpoint(int n, int type, int len,
 {
 	int ret;
 
-	int xtype, xlen;
+	int xtype, xlen = 0;
 	unsigned long vdr7, dr7;
 
 	switch (type) {
@@ -172,6 +172,13 @@ static void write_var(int len)
 	}
 }
 
+/*
+ * Type-punned reads are intentional here: we need sized memory accesses
+ * at specific addresses to trigger hardware breakpoints.
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
 static void read_var(int len)
 {
 	char cval; short sval; int ival; long long lval;
@@ -195,6 +202,7 @@ static void read_var(int len)
 		check_trapped();
 	}
 }
+#pragma GCC diagnostic pop
 
 /*
  * Do the r/w/x accesses to trigger the breakpoints. And run
@@ -203,7 +211,6 @@ static void read_var(int len)
 static void trigger_tests(void)
 {
 	int len, local, global, i;
-	char val;
 	int ret;
 
 	ret = ptrace(PTRACE_TRACEME, 0, NULL, 0);
@@ -332,7 +339,7 @@ static void launch_tests(void)
 {
 	char buf[1024];
 	unsigned int tests = 0;
-	int len, local, global, i;
+	int len, local, global;
 
 	tests += 3 * COUNT_ISN_BPS;
 	tests += sizeof(long) / 2 * 3 * COUNT_WPS;
@@ -387,7 +394,6 @@ static void launch_tests(void)
 int main(int argc, char **argv)
 {
 	pid_t pid;
-	int ret;
 
 	ksft_print_header();
 
-- 
2.47.1



More information about the Devel mailing list