mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-02-18 19:03:16 +00:00
55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
/*
|
|
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
#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
|