Fix TSan build: Add weak stubs for sanitizer compatibility
Added weak stubs to core/link_stubs.c for symbols that are not needed in HAKMEM_FORCE_LIBC_ALLOC_BUILD=1 (TSan/ASan) builds: Stubs added: - g_bump_chunk (int) - g_tls_bcur, g_tls_bend (__thread uint8_t*[8]) - smallmid_backend_free() - expand_superslab_head() Also added: #include <stdint.h> for uint8_t Impact: - TSan build: PASS (larson_hakmem_tsan successfully built) - Phase 2 ready: Can now use TSan to debug Larson crashes Next: Use TSan to investigate Larson 47% crash rate 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
// Weak, no-op stubs to satisfy link in configurations where
|
// Weak, no-op stubs to satisfy link in configurations where
|
||||||
@ -34,3 +35,18 @@ __attribute__((weak)) int pool_reg_lookup(void* ptr, pid_t* tid_out, int* class_
|
|||||||
|
|
||||||
// Memory profile print stub (bench_comprehensive references this symbol)
|
// Memory profile print stub (bench_comprehensive references this symbol)
|
||||||
__attribute__((weak)) void hak_tiny_print_memory_profile(void) {}
|
__attribute__((weak)) void hak_tiny_print_memory_profile(void) {}
|
||||||
|
|
||||||
|
// TSan/ASan build stubs (avoid link errors when HAKMEM_FORCE_LIBC_ALLOC_BUILD=1)
|
||||||
|
// These symbols are referenced in refill/bump allocation paths but not needed for sanitizer builds
|
||||||
|
__attribute__((weak)) int g_bump_chunk = 1;
|
||||||
|
__attribute__((weak)) __thread uint8_t* g_tls_bcur[8] = {0};
|
||||||
|
__attribute__((weak)) __thread uint8_t* g_tls_bend[8] = {0};
|
||||||
|
|
||||||
|
__attribute__((weak)) void smallmid_backend_free(void* ptr, int unused) {
|
||||||
|
(void)ptr; (void)unused;
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((weak)) int expand_superslab_head(void* head) {
|
||||||
|
(void)head;
|
||||||
|
return -1; // Failure (not needed in sanitizer build)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user