When building tests, we get this warning:
tst-mmap.hh:76:19: warning: dereferencing type-punned pointer will break
strict-aliasing rules [-Wstrict-aliasing]
76 | char byte = **(volatile char**)&func;
| ^~~~~~~~~~~~~~~~~~~~~~
I think this code was actually wrong... func is a function pointer, not
a function, so its name already points to the function's code - there is no
reason to take &func. I'm not even sure how this works.
After this patch, the warning is gone, and the relevant test
(tst-elf-permissions.so) still passes.
Refs #976
Signed-off-by: Nadav Har'El <[email protected]>
---
tests/tst-mmap.hh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/tst-mmap.hh b/tests/tst-mmap.hh
index fed718ca..dcd2ea5d 100644
--- a/tests/tst-mmap.hh
+++ b/tests/tst-mmap.hh
@@ -73,8 +73,8 @@ static inline bool try_write(void *addr)
static inline bool try_write(int (*func)())
{
catch_segv();
- char byte = **(volatile char**)&func;
- **(volatile char**)&func = byte;
+ char byte = *(volatile char*)func;
+ *(volatile char*)func = byte;
return !caught_segv();
}
--
2.21.0
--
You received this message because you are subscribed to the Google Groups "OSv
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/osv-dev/20191128082723.1313-1-nyh%40scylladb.com.