mimalloc icon indicating copy to clipboard operation
mimalloc copied to clipboard

v3.0.1 build fails

Open moubctez opened this issue 11 months ago • 1 comments

Trying to build v3.0.1 on NetBSD gives:

In file included from /tmp/pkgsrc/devel/mimalloc/work/mimalloc-3.0.1/src/prim/prim.c:25,
                 from /tmp/pkgsrc/devel/mimalloc/work/mimalloc-3.0.1/src/static.c:38:
/tmp/pkgsrc/devel/mimalloc/work/mimalloc-3.0.1/src/prim/unix/prim.c: In function 'unix_mmap_prim':
/tmp/pkgsrc/devel/mimalloc/work/mimalloc-3.0.1/src/prim/unix/prim.c:204:16: error: too few arguments to function 'mi_bsr'
  204 |     size_t n = mi_bsr(try_alignment);
      |                ^~~~~~
In file included from /tmp/pkgsrc/devel/mimalloc/work/mimalloc-3.0.1/include/mimalloc/types.h:25,
                 from /tmp/pkgsrc/devel/mimalloc/work/mimalloc-3.0.1/include/mimalloc/internal.h:17,
                 from /tmp/pkgsrc/devel/mimalloc/work/mimalloc-3.0.1/src/static.c:17:
/tmp/pkgsrc/devel/mimalloc/work/mimalloc-3.0.1/include/mimalloc/bits.h:269:20: note: declared here
  269 | static inline bool mi_bsr(size_t x, size_t* idx) {
      |                    ^~~~~~

My fix:

--- src/prim/unix/prim.c.orig	2025-01-13 10:00:52.394506291 +0000
+++ src/prim/unix/prim.c
@@ -201,7 +201,8 @@ static void* unix_mmap_prim(void* addr, 
   void* p = NULL;
   #if defined(MAP_ALIGNED)  // BSD
   if (addr == NULL && try_alignment > 1 && (try_alignment % _mi_os_page_size()) == 0) {
-    size_t n = mi_bsr(try_alignment);
+    size_t idx;
+    size_t n = mi_bsr(try_alignment, &idx);
     if (((size_t)1 << n) == try_alignment && n >= 12 && n <= 30) {  // alignment is a power of 2 and 4096 <= alignment <= 1GiB
       p = mmap(addr, size, protect_flags, flags | MAP_ALIGNED(n), fd, 0);
       if (p==MAP_FAILED || !_mi_is_aligned(p,try_alignment)) {

moubctez avatar Jan 13 '25 10:01 moubctez

Thanks! I'll push a fix soon

daanx avatar Jan 13 '25 22:01 daanx