diff --git a/components/linux/CMakeLists.txt b/components/linux/CMakeLists.txt index e29218d213..c3b72b56bc 100644 --- a/components/linux/CMakeLists.txt +++ b/components/linux/CMakeLists.txt @@ -4,7 +4,7 @@ if(NOT "${target}" STREQUAL "linux") endif() if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - list(APPEND srcs getrandom.c) + list(APPEND srcs getrandom.c assert_func.c) endif() idf_component_register(INCLUDE_DIRS include diff --git a/components/linux/assert_func.c b/components/linux/assert_func.c new file mode 100644 index 0000000000..6d2312b487 --- /dev/null +++ b/components/linux/assert_func.c @@ -0,0 +1,23 @@ +/* + * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include "hal/assert.h" + +// Implementation of __assert_func for macOS. +void __assert_func(const char *file, int line, const char *func, const char *expr) +{ + fprintf(stderr, "assert failed at %s:%d (%s): %s\n", file, line, func, expr); + abort(); +} + +// Defining this symbol as well, since `hal` component will add "-U __assert_func" linker option, +// and symbols are prefixed with an additional underscore on macOS. +// (Can't use __attribute__((alias)) because aliases are not supported on macOS.) +void _assert_func(const char *file, int line, const char *func, const char *expr) +{ + __assert_func(file, line, func, expr); +}