|
From: Petar J. <mip...@gm...> - 2016-02-26 16:29:02
|
Anyone has an issue if I add runtime pagesize detection in
memcheck/tests/unit_libcbase.c?
Check below.
Thanks.
Regards,
Petar
diff --git a/memcheck/tests/unit_libcbase.c b/memcheck/tests/unit_libcbase.c
index 63f1d79..6f3b129 100644
--- a/memcheck/tests/unit_libcbase.c
+++ b/memcheck/tests/unit_libcbase.c
@@ -9,6 +9,17 @@
#include "pub_tool_vki.h"
#include "m_libcbase.c"
+#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
+ || defined(VGP_ppc64le_linux) || defined(VGP_mips32_linux) \
+ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux)
+
+#include <unistd.h>
+
+/* On PPC, MIPS and ARM64 Linux VKI_PAGE_SIZE is a variable, not a macro.
*/
+unsigned long VKI_PAGE_SIZE;
+
+#endif
+
/* Provide a stub to not have to pull in m_debuglog.c */
void VG_(debugLog) ( Int level, const HChar* modulename,
const HChar* format, ... )
@@ -74,14 +85,6 @@ void test_VG_STREQN(void)
CHECK( VG_STREQN(3, "abcd", "abce"));
}
-// On PPC/Linux VKI_PAGE_SIZE is a variable, not a macro.
-#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
- || defined(VGP_ppc64le_linux)
-unsigned long VKI_PAGE_SIZE = 1UL << 12;
-#elif defined(VGP_arm64_linux)
-unsigned long VKI_PAGE_SIZE = 1UL << 16;
-#endif
-
void test_VG_IS_XYZ_ALIGNED(void)
{
CHECK( VG_IS_2_ALIGNED(0x0) );
@@ -485,6 +488,13 @@ void test_random(void)
int main(void)
{
+
+#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
+ || defined(VGP_ppc64le_linux) || defined(VGP_mips32_linux) \
+ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux)
+
+ VKI_PAGE_SIZE = sysconf(_SC_PAGESIZE);
+#endif
// Nb: the order of the tests is based on the order of the code in
// m_libcbase.c, except that macros defined in pub_tool_libcbase.h are
// tested first.
|