Merge pull request #862 from mmichal10/sanitizers
Enable compiling pyocf with sanitizers
This commit is contained in:
commit
bddc18f891
10
env/posix/ocf_env.h
vendored
10
env/posix/ocf_env.h
vendored
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright(c) 2019-2022 Intel Corporation
|
||||
* Copyright(c) 2023-2024 Huawei Technologies
|
||||
* Copyright(c) 2023-2025 Huawei Technologies
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
@ -378,12 +378,12 @@ typedef struct {
|
||||
|
||||
static inline int env_atomic_read(const env_atomic *a)
|
||||
{
|
||||
return a->counter; /* TODO */
|
||||
return __atomic_load_n(&a->counter, __ATOMIC_SEQ_CST);
|
||||
}
|
||||
|
||||
static inline void env_atomic_set(env_atomic *a, int i)
|
||||
{
|
||||
a->counter = i; /* TODO */
|
||||
__atomic_store_n(&a->counter, i, __ATOMIC_SEQ_CST);
|
||||
}
|
||||
|
||||
static inline void env_atomic_add(int i, env_atomic *a)
|
||||
@ -453,12 +453,12 @@ static inline int env_atomic_add_unless(env_atomic *a, int i, int u)
|
||||
|
||||
static inline long env_atomic64_read(const env_atomic64 *a)
|
||||
{
|
||||
return a->counter; /* TODO */
|
||||
return __atomic_load_n(&a->counter, __ATOMIC_SEQ_CST);
|
||||
}
|
||||
|
||||
static inline void env_atomic64_set(env_atomic64 *a, long i)
|
||||
{
|
||||
a->counter = i; /* TODO */
|
||||
__atomic_store_n(&a->counter, i, __ATOMIC_SEQ_CST);
|
||||
}
|
||||
|
||||
static inline void env_atomic64_add(long i, env_atomic64 *a)
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright(c) 2012-2022 Intel Corporation
|
||||
* Copyright(c) 2024 Huawei Technologies
|
||||
* Copyright(c) 2024-2025 Huawei Technologies
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
@ -366,10 +366,10 @@ static void raw_dynamic_load_all_complete(
|
||||
{
|
||||
context->cmpl(context->priv, error);
|
||||
|
||||
ocf_req_put(context->req);
|
||||
env_secure_free(context->page, PAGE_SIZE);
|
||||
env_free(context->zpage);
|
||||
ctx_data_free(context->cache->owner, context->req->data);
|
||||
ocf_req_put(context->req);
|
||||
env_vfree(context);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
#
|
||||
# Copyright(c) 2019-2022 Intel Corporation
|
||||
# Copyright(c) 2025 Huawei Technologies
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
|
||||
@ -11,9 +12,8 @@ INCDIR=$(ADAPTERDIR)/ocf/include
|
||||
WRAPDIR=$(ADAPTERDIR)/c/wrappers
|
||||
HELPDIR=$(ADAPTERDIR)/c/helpers
|
||||
|
||||
CC=gcc
|
||||
CFLAGS=-g -Wall -I$(INCDIR) -I$(SRCDIR)/ocf/env
|
||||
LDFLAGS=-pthread -lz
|
||||
CFLAGS=-g -Wall -I$(INCDIR) -I$(SRCDIR)/ocf/env $(OPT_CFLAGS)
|
||||
LDFLAGS=-pthread #-lz
|
||||
|
||||
SRC=$(shell find $(SRCDIR) $(WRAPDIR) $(HELPDIR) -name \*.c)
|
||||
OBJS=$(patsubst %.c, %.o, $(SRC))
|
||||
@ -48,6 +48,7 @@ distclean: clean
|
||||
@rm -rf $(OCFLIB) $(OBJS)
|
||||
@rm -rf $(SRCDIR)/ocf
|
||||
@rm -rf $(INCDIR)/ocf
|
||||
@find . -name *.gc* -delete
|
||||
@echo " DISTCLEAN "
|
||||
|
||||
.PHONY: all clean sync config_random distclean
|
||||
|
37
tests/functional/run_with_sanitizers.sh
Executable file
37
tests/functional/run_with_sanitizers.sh
Executable file
@ -0,0 +1,37 @@
|
||||
#
|
||||
# Copyright(c) 2019-2022 Intel Corporation
|
||||
# Copyright(c) 2025 Huawei Technologies
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
|
||||
#!/usr/bin/env bash
|
||||
|
||||
LIB_DIR="/lib/x86_64-linux-gnu/"
|
||||
|
||||
ASAN_LIB="$LIB_DIR/libasan.so.6"
|
||||
TSAN_LIB="$LIB_DIR/libtsan.so.0"
|
||||
UBSAN_LIB="$LIB_DIR/libubsan.so.1"
|
||||
|
||||
# Path to test file/directory
|
||||
PYOCF_TESTS_PATH="tests/"
|
||||
|
||||
echo "Cleaning and building with Address Sanitizer"
|
||||
make distclean
|
||||
OPT_CFLAGS="-fsanitize=address" make -j >/dev/null
|
||||
echo "Running tests, please wait..."
|
||||
LD_PRELOAD=$ASAN_LIB ASAN_OPTIONS=log_output=asan_log.txt PYTHONMALLOC=malloc pytest $PYOCF_TESTS_PATH 2>&1 | tee asan_output.txt
|
||||
echo "Done, check asan_log.txt"
|
||||
|
||||
echo "Cleaning and building with Thread Sanitizer"
|
||||
make distclean
|
||||
OPT_CFLAGS="-fsanitize=thread -fno-omit-frame-pointer" make -j >/dev/null
|
||||
echo "Running tests, please wait..."
|
||||
LD_PRELOAD=$TSAN_LIB TSAN_OPTIONS=log_output=tsan_log.txt pytest -s $PYOCF_TESTS_PATH 2>&1 | tee tsan_output.txt
|
||||
echo "Done, check tsan_log.txt"
|
||||
|
||||
echo "Cleaning and building with Undefined Behaviour Sanitizer"
|
||||
make distclean
|
||||
OPT_CFLAGS="-fsanitize=undefined -fno-sanitize=alignment" make -j >/dev/null
|
||||
echo "Running tests, please wait..."
|
||||
LD_PRELOAD=$UBSAN_LIB UBSAN_OPTIONS=log_output=ubsan_log.txt pytest -s $PYOCF_TESTS_PATH 2>&1 | tee ubsan_output.txt
|
||||
echo "Done, check ubsan_output.txt"
|
Loading…
Reference in New Issue
Block a user