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 <[email protected]>
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
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel