[PATCH] D28849: [compiler-rt] [test] Fix page address logic in clear_cache_test to use binary negation
Michał Górny via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 18 00:56:29 PST 2017
mgorny created this revision.
Herald added a subscriber: dberris.
Fix the logic used to calculate page address in clear_cache_test to use
the binary negation of 4095 rather than arithmetic. The latter gives
incorrect result since:
-4095 -> 0xfffff001
~4095 -> 0xfffff000
Alternatively, -4096 could be used to obtain the correct result.
However, considering the confusion caused by this so far I think it's
better to use binary negation explicitly.
The issue went unnoticed so far because the array alignment caused
the last bit not to be set. However, on 32-bit x86 no such alignment is
enforced and the wrong page address caused the test to fail.
Repository:
rL LLVM
https://reviews.llvm.org/D28849
Files:
test/builtins/Unit/clear_cache_test.c
Index: test/builtins/Unit/clear_cache_test.c
===================================================================
--- test/builtins/Unit/clear_cache_test.c
+++ test/builtins/Unit/clear_cache_test.c
@@ -56,8 +56,8 @@
int main()
{
// make executable the page containing execution_buffer
- char* start = (char*)((uintptr_t)execution_buffer & (-4095));
- char* end = (char*)((uintptr_t)(&execution_buffer[128+4096]) & (-4095));
+ char* start = (char*)((uintptr_t)execution_buffer & (~4095));
+ char* end = (char*)((uintptr_t)(&execution_buffer[128+4096]) & (~4095));
#if defined(_WIN32)
DWORD dummy_oldProt;
MEMORY_BASIC_INFORMATION b;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D28849.84806.patch
Type: text/x-patch
Size: 662 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170118/6cc93f27/attachment.bin>
More information about the cfe-commits
mailing list