7#ifndef ZEPHYR_LLEXT_SYMBOL_H
8#define ZEPHYR_LLEXT_SYMBOL_H
91#ifdef LL_EXTENSION_BUILD
93#define Z_LL_EXTENSION_SYMBOL_NAMED(sym_ident, sym_name) \
94 static const struct llext_const_symbol \
95 Z_GENERIC_SECTION(.exported_sym) __used \
96 __llext_sym_ ## sym_name = { \
97 .name = STRINGIFY(sym_name), .addr = (const void *)&sym_ident, \
101#define Z_LL_EXTENSION_SYMBOL_NAMED(sym_ident, sym_name)
114#define LL_EXTENSION_SYMBOL_NAMED(sym_ident, sym_name) \
115 Z_LL_EXTENSION_SYMBOL_NAMED(sym_ident, sym_name)
128#define LL_EXTENSION_SYMBOL(x) Z_LL_EXTENSION_SYMBOL_NAMED(x, x)
131#if defined(LL_EXTENSION_BUILD)
133#define Z_EXPORT_SYMBOL_NAMED(sym_ident, sym_name) \
134 Z_LL_EXTENSION_SYMBOL_NAMED(sym_ident, sym_name)
135#elif defined(CONFIG_LLEXT_EXPORT_BUILTINS_BY_SLID)
137#define Z_EXPORT_SYMBOL_NAMED(sym_ident, sym_name) \
138 static const char Z_GENERIC_SECTION(llext_exports_strtab) __used \
139 __llext_sym_name_ ## sym_name[] = STRINGIFY(sym_name); \
140 static const STRUCT_SECTION_ITERABLE(llext_const_symbol, \
141 __llext_sym_ ## sym_name) = { \
142 .name = __llext_sym_name_ ## sym_name, \
143 .addr = (const void *)&sym_ident, \
145#elif defined(CONFIG_LLEXT)
147#define Z_EXPORT_SYMBOL_NAMED(sym_ident, sym_name) \
148 static const STRUCT_SECTION_ITERABLE(llext_const_symbol, \
149 __llext_sym_ ## sym_name) = { \
150 .name = STRINGIFY(sym_name), .addr = (const void *)&sym_ident, \
154#define Z_EXPORT_SYMBOL_NAMED(sym_ident, sym_name)
169#define EXPORT_SYMBOL_NAMED(sym_ident, sym_name) \
170 Z_EXPORT_SYMBOL_NAMED(sym_ident, sym_name)
183#define EXPORT_SYMBOL(x) EXPORT_SYMBOL_NAMED(x, x)
__UINTPTR_TYPE__ uintptr_t
Definition stdint.h:105
Constant symbols are unchangeable named memory addresses.
Definition symbol.h:42
const char *const name
Name of symbol.
Definition symbol.h:49
const void *const addr
Address of symbol.
Definition symbol.h:56
const uintptr_t slid
Symbol Link Identifier.
Definition symbol.h:52
Symbols are named memory addresses.
Definition symbol.h:67
const char * name
Name of symbol.
Definition symbol.h:69
void * addr
Address of symbol.
Definition symbol.h:72
A symbol table.
Definition symbol.h:81
size_t sym_cnt
Number of symbols in the table.
Definition symbol.h:83
struct llext_symbol * syms
Array of symbols.
Definition symbol.h:86