From: Petar Jovanovic Date: Sat, 27 Feb 2016 00:38:38 +0000 (+0000) Subject: mips: acquire exact page size using sysconf for unit_libcbase X-Git-Tag: svn/VALGRIND_3_12_0~206 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=23ac24e19b74fee0912da37e981b87713f8f38e2;p=thirdparty%2Fvalgrind.git mips: acquire exact page size using sysconf for unit_libcbase Set exact value of VKI_PAGE_SIZE by calling sysconf(_SC_PAGESIZE). This should set a correct value to this variable on MIPS systems with different page sizes. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15817 --- diff --git a/memcheck/tests/unit_libcbase.c b/memcheck/tests/unit_libcbase.c index 63f1d79d6a..2944cea725 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" +/* On PPC, MIPS and ARM64 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; +#elif defined(VGP_mips32_linux) || defined(VGP_mips64_linux) +#include +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,9 @@ void test_random(void) int main(void) { +#if defined(VGP_mips32_linux) || defined(VGP_mips64_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.