From ac584a4c61259908bf5c047691137f51f71faa95 Mon Sep 17 00:00:00 2001 From: midipix Date: Mon, 25 Feb 2019 01:27:37 -0500 Subject: project: static linking: dlfake: initial commit. --- wrappers/dlfcn/dlfake.c | 42 ++++++++++++++++++++++++++++++++++++++++++ wrappers/dlfcn/dlfake.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 wrappers/dlfcn/dlfake.c create mode 100644 wrappers/dlfcn/dlfake.h (limited to 'wrappers') diff --git a/wrappers/dlfcn/dlfake.c b/wrappers/dlfcn/dlfake.c new file mode 100644 index 0000000..d347bf0 --- /dev/null +++ b/wrappers/dlfcn/dlfake.c @@ -0,0 +1,42 @@ +#include "dlfake.h" +#include "linkage/inittab.h" + +extern struct _inittab _PyImport_Inittab[]; + +void * dlfake_dlopen(const char * name, int mode) +{ + struct _inittab * pyext; + + if (!name) + return _PyImport_Inittab; + + for (pyext=_PyImport_Inittab; pyext->name; pyext++) + if (!strcmp(name,pyext->name)) + return _PyImport_Inittab; + + return 0; +} + +int dlfake_dlclose(void * handle) +{ + return -1; +} + +void * dlfake_dlsym(void * handle, const char * sym) +{ + return 0; +} + +static const char dlfake_errstr[] = + "dlfake_dlerror(): " + "not implemented"; + +char * dlfake_dlerror(void) +{ + return (char *)dlfake_errstr; +} + +int dlfake_dladdr(const void * addr, void * info) +{ + return 0; +} diff --git a/wrappers/dlfcn/dlfake.h b/wrappers/dlfcn/dlfake.h new file mode 100644 index 0000000..87ccab7 --- /dev/null +++ b/wrappers/dlfcn/dlfake.h @@ -0,0 +1,30 @@ +#ifndef _CTYPES_DLFCN_H_ +#define _CTYPES_DLFCN_H_ + +#ifndef PY_ALL_STATIC +#error something went wrong +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void * dlfake_dlopen(const char *, int); +int dlfake_dlclose(void *); +void * dlfake_dlsym(void *, const char *); +char * dlfake_dlerror(void); +int dlfake_dladdr(const void *, void *); + +#define ctypes_dlopen dlfake_dlopen +#define ctypes_dlclose dlfake_dlclose +#define ctypes_dlsym dlfake_dlsym +#define ctypes_dladdr dlfake_dladdr +#define ctypes_dlerror dlfake_dlerror + +#ifdef __cplusplus +} +#endif + +#endif -- cgit v1.2.3