]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Solaris: adapt to aligned_alloc only enforcing a multiple of 4
authorPaul Floyd <pjfloyd@wanadoo.fr>
Sun, 5 Mar 2023 14:42:39 +0000 (15:42 +0100)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Sun, 5 Mar 2023 14:42:39 +0000 (15:42 +0100)
coregrind/m_replacemalloc/vg_replace_malloc.c

index 1bdcac7d3e6f2a860021181feec8925e7e478c17..719d011410cbb757cc6b98147e734a8d9e93a1a9 100644 (file)
@@ -1926,6 +1926,19 @@ extern int *___errno (void) __attribute__((weak));
 #define VG_ALIGNED_ALLOC_SIZE_MULTIPLE_ALIGN 0
 #endif
 
+#if defined(VGO_solaris)
+#define VG_ALIGNED_ALLOC_ALIGN_POWER_TWO 0
+#else
+#define VG_ALIGNED_ALLOC_ALIGN_POWER_TWO 1
+#endif
+
+#if defined(VGO_solaris)
+#define VG_ALIGNED_ALLOC_ALIGN_FACTOR_FOUR 1
+#else
+#define VG_ALIGNED_ALLOC_ALIGN_FACTOR_FOUR 0
+#endif
+
+
 #if defined (VGO_linux) && !defined(MUSL_LIBC)
 
  #define ALIGNED_ALLOC(soname, fnname) \
@@ -1968,7 +1981,8 @@ extern int *___errno (void) __attribute__((weak));
                 (ULong)alignment, (ULong)size ); \
        if (alignment == 0 \
            || (VG_ALIGNED_ALLOC_SIZE_MULTIPLE_ALIGN && (size % alignment != 0)) \
-           || (alignment & (alignment - 1)) != 0) { \
+           || (VG_ALIGNED_ALLOC_ALIGN_POWER_TWO &&  (alignment & (alignment - 1)) != 0) \
+           || (VG_ALIGNED_ALLOC_ALIGN_FACTOR_FOUR && (size % 4 != 0))) { \
           SET_ERRNO_EINVAL; \
           return 0; \
        } \