[Rust] add support for optionally compiling libc functions (#763)

* add SNMALLOC_RUST_LIBC_API option
This commit is contained in:
Will Brown
2025-04-03 08:56:41 -04:00
committed by GitHub
parent 59987ca908
commit e6bf8570d0
2 changed files with 12 additions and 1 deletions

View File

@@ -32,6 +32,7 @@ option(SNMALLOC_ENABLE_FUZZING "Enable fuzzing instrumentation tests" OFF)
option(SNMALLOC_USE_SELF_VENDORED_STL "Avoid using system STL" OFF)
# Options that apply only if we're not building the header-only library
cmake_dependent_option(SNMALLOC_RUST_SUPPORT "Build static library for rust" OFF "NOT SNMALLOC_HEADER_ONLY_LIBRARY" OFF)
cmake_dependent_option(SNMALLOC_RUST_LIBC_API "Include libc API in the rust library" OFF "SNMALLOC_RUST_SUPPORT" OFF)
cmake_dependent_option(SNMALLOC_STATIC_LIBRARY "Build static libraries" ON "NOT SNMALLOC_HEADER_ONLY_LIBRARY" OFF)
cmake_dependent_option(SNMALLOC_CHECK_LOADS "Perform bounds checks on the source argument to memcpy with heap objects" OFF "NOT SNMALLOC_HEADER_ONLY_LIBRARY" OFF)
cmake_dependent_option(SNMALLOC_OPTIMISE_FOR_CURRENT_MACHINE "Compile for current machine architecture" Off "NOT SNMALLOC_HEADER_ONLY_LIBRARY" OFF)
@@ -585,6 +586,10 @@ endif()
add_shim(snmallocshim-rust STATIC src/snmalloc/override/rust.cc)
add_shim(snmallocshim-checks-rust STATIC src/snmalloc/override/rust.cc)
target_compile_definitions(snmallocshim-checks-rust PRIVATE SNMALLOC_CHECK_CLIENT)
if (SNMALLOC_RUST_LIBC_API)
target_compile_definitions(snmallocshim-rust PRIVATE SNMALLOC_RUST_LIBC_API)
target_compile_definitions(snmallocshim-checks-rust PRIVATE SNMALLOC_RUST_LIBC_API)
endif()
endif()
if (SNMALLOC_BUILD_TESTING)

View File

@@ -1,5 +1,11 @@
#define SNMALLOC_NAME_MANGLE(a) sn_##a
#include "snmalloc/snmalloc.h"
// The libc API provided by malloc.cc will always be mangled per above.
#ifdef SNMALLOC_RUST_LIBC_API
# include "malloc.cc"
#else
# include "snmalloc/snmalloc.h"
#endif
#include <string.h>