提交 f71e5149 编写于 作者: O obdev 提交者: wangzelin.wzl

make sanity support aarch64

上级 0cd1d555
......@@ -45,7 +45,7 @@ if (OB_USE_CLANG)
if (ENABLE_SANITY)
target_compile_options(oblib_base_base
INTERFACE
"$<$<COMPILE_LANGUAGE:CXX>:SHELL:-Xclang -load -Xclang ${CMAKE_CURRENT_SOURCE_DIR}/lib/alloc/libsanity.so>"
"$<$<COMPILE_LANGUAGE:CXX>:SHELL:-Xclang -load -Xclang ${CMAKE_CURRENT_SOURCE_DIR}/lib/alloc/libsanity_${ARCHITECTURE}.so>"
-fno-builtin-memset
-fno-builtin-bzero
-fno-builtin-memcpy
......
......@@ -130,7 +130,7 @@ void *AChunkMgr::low_alloc(const uint64_t size, const bool can_use_huge_page, bo
void *ptr = nullptr;
huge_page_used = false;
const int prot = PROT_READ | PROT_WRITE;
const int flags = MAP_PRIVATE | MAP_ANONYMOUS | (SANITY_BOOL_EXPR(alloc_shadow) ? MAP_FIXED : 0);
int flags = MAP_PRIVATE | MAP_ANONYMOUS | (SANITY_BOOL_EXPR(alloc_shadow) ? MAP_FIXED : 0);
int huge_flags = flags;
#ifdef MAP_HUGETLB
if (OB_LIKELY(can_use_huge_page)) {
......@@ -143,8 +143,11 @@ void *AChunkMgr::low_alloc(const uint64_t size, const bool can_use_huge_page, bo
if (SANITY_BOOL_EXPR(alloc_shadow)) {
int64_t new_addr = ATOMIC_FAA(&global_canonical_addr, size);
if (!SANITY_ADDR_IN_RANGE((void*)new_addr)) {
LOG_ERROR("sanity address exhausted", K(errno), KP(new_addr));
LOG_WARN("sanity address exhausted", K(errno), KP(new_addr));
ATOMIC_FAA(&global_canonical_addr, -size);
ptr = NULL; // let it goon, it means no shadow, same as out of checker!
// in aarch64, mmap will return EPERM error when NULL address and MAP_FIXED are privided at the same time
flags &= ~MAP_FIXED;
} else {
ptr = (void*)new_addr;
}
......
......@@ -28,7 +28,7 @@ add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0 -g -O2 -frtti)
if( ${ARCHITECTURE} STREQUAL "x86_64" )
LLVM_MAP_COMPONENTS_TO_LIBNAMES(llvm_libs Support Core IRReader ExecutionEngine OrcJit McJit X86CodeGen X86AsmParser runtimedyld bitreader bitwriter object objectyaml target DebugInfoDWARF Symbolize)
else()
LLVM_MAP_COMPONENTS_TO_LIBNAMES(llvm_libs Support Core IRReader ExecutionEngine OrcJit McJit AArch64CodeGen AArch64AsmParser runtimedyld bitreader bitwriter object objectyaml target DebugInfoDWARF)
LLVM_MAP_COMPONENTS_TO_LIBNAMES(llvm_libs Support Core IRReader ExecutionEngine OrcJit McJit AArch64CodeGen AArch64AsmParser runtimedyld bitreader bitwriter object objectyaml target DebugInfoDWARF Symbolize)
endif()
set(CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
include(${LLVM_CMAKE_DIR}/HandleLLVMOptions.cmake)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册