diff options
| author | kx <kx@radix-linux.su> | 2026-10-09 18:00:15 +0300 |
|---|---|---|
| committer | kx <kx@radix-linux.su> | 2026-10-09 18:00:15 +0300 |
| commit | 065da3509019b15dd0e678072e6be629e5330bef (patch) | |
| tree | 69c934c9e786ac048b4fbe8f4c4c5571661521f4 /utils/mcpu-dyn.h | |
| parent | d130fe27fa753be02ed76fd9b277aa3c3d928eb9 (diff) | |
| download | libmcpu-0.4.0.tar.xz | |
Version 0.4.00.4.0
Diffstat (limited to 'utils/mcpu-dyn.h')
| -rw-r--r-- | utils/mcpu-dyn.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/utils/mcpu-dyn.h b/utils/mcpu-dyn.h new file mode 100644 index 0000000..1fc0aa2 --- /dev/null +++ b/utils/mcpu-dyn.h @@ -0,0 +1,66 @@ +#ifndef __CPU_DYN_H +#define __CPU_DYN_H + +#include "mcpu-asm.h" +#include "mcpu-exec.h" + + +typedef struct cpu_dyn_library_symbol +{ + char *name; + unsigned binding; + unsigned type; +} cpu_dyn_library_symbol; + +typedef struct cpu_dyn_library_info +{ + char *soname; + cpu_dyn_library_symbol *symbols; + size_t symbol_count; +} cpu_dyn_library_info; + +typedef struct cpu_dyn_metadata +{ + const char *soname; + const char *const *needed; + size_t needed_count; +} cpu_dyn_metadata; + +typedef struct cpu_dyn_dependency_info +{ + int abi; + char *soname; + char **needed; + size_t needed_count; +} cpu_dyn_dependency_info; + +int cpu_dyn_write( const char *path, const cpu_asm_image *image, + const cpu_exec_options *options, int shared, + char *err, size_t errsz); + +int cpu_dyn_write_abi3( const char *path, const cpu_asm_image *image, + const cpu_exec_options *options, int shared, + const cpu_dyn_metadata *metadata, + char *err, size_t errsz); + +int cpu_dyn_library_read( const char *path, cpu_dyn_library_info *info, + char *err, size_t errsz ); +void cpu_dyn_library_free( cpu_dyn_library_info *info ); +int cpu_dyn_library_find_symbol( const cpu_dyn_library_info *info, + const char *name, + const cpu_dyn_library_symbol **symbol ); + +int cpu_dyn_dependency_read( const char *path, int want_exec, + cpu_dyn_dependency_info *info, + char *err, size_t errsz ); +void cpu_dyn_dependency_free( cpu_dyn_dependency_info *info ); + +int cpu_dyn_load( const char *path, const char *preload_list, + int argc, char **argv, cpu_exec_loaded *loaded, + char *err, size_t errsz); +int cpu_dyn_load_resolved( const char *path, const char *module_list, + size_t preload_count, + int argc, char **argv, cpu_exec_loaded *loaded, + char *err, size_t errsz ); + +#endif |
