summaryrefslogtreecommitdiff
path: root/utils/mcpu-dyn.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/mcpu-dyn.h')
-rw-r--r--utils/mcpu-dyn.h66
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