From 296178913c5dfbc2b35842fc16ed680ef51fd402 Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 5 Apr 2015 17:05:57 -0400 Subject: nt32: initial commit of core port files. signed-off by Z. Gilboa; see copying.midipix (9cd0746c) for additional information. --- src/ldso/nt32/dynlink.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/ldso/nt32/dynlink.c (limited to 'src/ldso/nt32/dynlink.c') diff --git a/src/ldso/nt32/dynlink.c b/src/ldso/nt32/dynlink.c new file mode 100644 index 0000000..c3cb23e --- /dev/null +++ b/src/ldso/nt32/dynlink.c @@ -0,0 +1,62 @@ +#define _BSD_SOURCE + +#include +#include "psxglue.h" +#include "pthread_impl.h" + +extern struct __ldso_vtbl * __ldso_vtbl; + +int __dladdr(const void * addr, Dl_info * info) +{ + return __ldso_vtbl->dladdr(addr,info); +} + +int __dlinfo(void * dso, int req, void * res) +{ + return __ldso_vtbl->dlinfo(dso,req,res); +} + +void *__dlsym(void * restrict p, const char * restrict s, void * restrict ra) +{ + return __ldso_vtbl->dlsym(p,s,ra); +} + +void * dlopen(const char * file, int mode) +{ + return __ldso_vtbl->dlopen(file,mode); +} + +int dlclose(void *p) +{ + return __ldso_vtbl->dlclose(p); +} + +char * dlerror(void) +{ + return __ldso_vtbl->dlerror(); +} + +void __reset_tls(void) +{ + __ldso_vtbl->reset_tls(); +} + +void *__copy_tls(unsigned char * mem) +{ + /** + * this is always the simple case, since: + * emutls is based on PE named sections; and + * tls allocation and initialization are handled by clone(2) + **/ + + pthread_t td; + void ** dtv; + + dtv = (void **)mem; + dtv[0] = 0; + + td = (void *)(dtv + 1); + td->dtv = dtv; + + return td; +} -- cgit v1.2.3