mirror of
				https://gitlab.alpinelinux.org/alpine/aports.git
				synced 2025-10-31 00:12:05 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Patch-Source: https://github.com/microsoft/mimalloc/commit/e3fea8f4e1a04f4b260a78e6b5a8f0eead990445
 | |
| Patch-Source: https://github.com/microsoft/mimalloc/commit/8fd1184272fdf5c93f4776a36086911b55fb315e
 | |
| See-Also: https://github.com/microsoft/mimalloc/issues/895
 | |
| --
 | |
| From 8fd1184272fdf5c93f4776a36086911b55fb315e Mon Sep 17 00:00:00 2001
 | |
| From: Daan <daanl@outlook.com>
 | |
| Date: Fri, 17 May 2024 09:06:27 -0700
 | |
| Subject: [PATCH] fix alignment issue on Alpine 32-bit musl compilation (issue
 | |
|  #895)
 | |
| 
 | |
| ---
 | |
|  src/arena.c | 15 +++++----------
 | |
|  1 file changed, 5 insertions(+), 10 deletions(-)
 | |
| 
 | |
| diff --git a/src/arena.c b/src/arena.c
 | |
| index acfde132..aa4bfa42 100644
 | |
| --- a/src/arena.c
 | |
| +++ b/src/arena.c
 | |
| @@ -141,8 +141,8 @@ static bool mi_arena_memid_indices(mi_memid_t memid, size_t* arena_index, mi_bit
 | |
|  
 | |
|  #define MI_ARENA_STATIC_MAX  (MI_INTPTR_SIZE*MI_KiB)  // 8 KiB on 64-bit
 | |
|  
 | |
| -static uint8_t mi_arena_static[MI_ARENA_STATIC_MAX];
 | |
| -static _Atomic(size_t) mi_arena_static_top;
 | |
| +static mi_decl_cache_align uint8_t mi_arena_static[MI_ARENA_STATIC_MAX];  // must be cache aligned, see issue #895
 | |
| +static mi_decl_cache_align _Atomic(size_t) mi_arena_static_top;
 | |
|  
 | |
|  static void* mi_arena_static_zalloc(size_t size, size_t alignment, mi_memid_t* memid) {
 | |
|    *memid = _mi_memid_none();
 | |
| @@ -151,7 +151,7 @@ static void* mi_arena_static_zalloc(size_t size, size_t alignment, mi_memid_t* m
 | |
|    if ((toplow + size) > MI_ARENA_STATIC_MAX) return NULL;
 | |
|  
 | |
|    // try to claim space
 | |
| -  if (alignment == 0) { alignment = 1; }
 | |
| +  if (alignment < MI_MAX_ALIGN_SIZE) { alignment = MI_MAX_ALIGN_SIZE; }
 | |
|    const size_t oversize = size + alignment - 1;
 | |
|    if (toplow + oversize > MI_ARENA_STATIC_MAX) return NULL;
 | |
|    const size_t oldtop = mi_atomic_add_acq_rel(&mi_arena_static_top, oversize);
 | |
| @@ -167,7 +167,7 @@ static void* mi_arena_static_zalloc(size_t size, size_t alignment, mi_memid_t* m
 | |
|    memid->initially_zero = true;
 | |
|    const size_t start = _mi_align_up(oldtop, alignment);
 | |
|    uint8_t* const p = &mi_arena_static[start];
 | |
| -  _mi_memzero(p, size);
 | |
| +  _mi_memzero_aligned(p, size);
 | |
|    return p;
 | |
|  }
 | |
|  
 |