/* * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include #ifdef __cplusplus extern "C" { #endif #define ESP_ELFSYM_EXPORT(_sym) { #_sym, (void*)&_sym } #define ESP_ELFSYM_END { NULL, NULL } /** @brief Function symbol description */ struct esp_elfsym { const char *name; /*!< Function name */ const void *sym; /*!< Function pointer */ }; /** * @brief Find symbol address by name. * * @param sym_name - Symbol name * * @return Symbol address if success or 0 if failed. */ uintptr_t elf_find_sym(const char *sym_name); /** * @brief Resolves a symbol name (e.g. function name) to its address. * * @param sym_name - Symbol name * @return Symbol address if success or 0 if failed. */ typedef uintptr_t (*symbol_resolver)(const char *sym_name); /** * @brief Override the internal symbol resolver. * The default resolver is based on static lists that are determined by KConfig. * This override allows for an arbitrary implementation. * * @param resolver the resolver function */ void elf_set_symbol_resolver(symbol_resolver resolver); #ifdef __cplusplus } #endif