From 6f8ae442bbadc51a12ad6ce8fc94461bb1e632e8 Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 5 Nov 2017 22:21:30 -0500 Subject: psxglue.h: defined struct __psx_vtbl and struct __ldso_vtbl more elegantly. --- arch/nt32/psxglue.h | 63 +++++++++++++++++++++-------------------------------- 1 file changed, 25 insertions(+), 38 deletions(-) (limited to 'arch/nt32/psxglue.h') diff --git a/arch/nt32/psxglue.h b/arch/nt32/psxglue.h index 0e4a440..5dbe57b 100644 --- a/arch/nt32/psxglue.h +++ b/arch/nt32/psxglue.h @@ -7,48 +7,23 @@ #define __PSXOPT_LDSO 0x4 #define __PSXOPT_VRFS 0x8 -typedef int __ldso_dladdr(const void * addr, void * info); -typedef int __ldso_dlinfo(void * dso, int req, void * res); -typedef void * __ldso_dlsym(void * p, const char * s, void * ra); -typedef void * __ldso_dlopen(const char * file, int mode, const char ** pathv, int * status); -typedef int __ldso_dlclose(void *p); -typedef char * __ldso_dlerror(void); -typedef void __ldso_reset_tls(void); - -typedef int __psx_start_main(void *, int, char **, int (*)(void *, int, char **)); -typedef void __psx_convert_thread(void); -typedef void __psx_unmapself(void *, void *); -typedef long __psx_log_output(char *, signed int); - struct __ldso_vtbl { - __ldso_dladdr * dladdr; - __ldso_dlinfo * dlinfo; - __ldso_dlsym * dlsym; - __ldso_dlopen * dlopen; - __ldso_dlclose * dlclose; - __ldso_dlerror * dlerror; - __ldso_reset_tls * reset_tls; + int (*dladdr) (const void * addr, void * info); + int (*dlinfo) (void * dso, int req, void * res); + void * (*dlsym) (void * p, const char * s, void * ra); + void * (*dlopen) (const char * file, int mode, const char ** pathv, int * status); + int (*dlclose) (void *p); + char * (*dlerror) (void); + void (*reset_tls) (void); }; struct __psx_vtbl { - void (*do_global_ctors_fn)(); - void (*do_global_dtors_fn)(); - __psx_start_main * start_main; - __psx_convert_thread * convert_thread; - __psx_unmapself * unmapself; - __psx_log_output * log_output; -}; - -struct __psx_context { - int size; - int options; - void ** sys_vtbl; - struct __ldso_vtbl * ldso_vtbl; - const struct __psx_vtbl*psx_vtbl; - unsigned int teb_sys_idx; - unsigned int teb_libc_idx; - void * pthread_surrogate_fn; - void * pthread_create_fn; + void (*do_global_ctors_fn) (); + void (*do_global_dtors_fn) (); + int (*start_main) (void *, int, char **, int (*)(void *, int, char **)); + void (*convert_thread) (void); + void (*unmapself) (void *, void *); + ssize_t (*log_output) (void *, ssize_t); }; struct __tlca_abi { @@ -59,6 +34,18 @@ struct __tlca_abi { char ** pthread_dtls; }; +struct __psx_context { + int size; + int options; + void ** sys_vtbl; + const struct __ldso_vtbl * ldso_vtbl; + const struct __psx_vtbl * psx_vtbl; + unsigned int teb_sys_idx; + unsigned int teb_libc_idx; + void * pthread_surrogate_fn; + void * pthread_create_fn; +}; + typedef int __psx_init_routine( int * argc, char *** argv, -- cgit v1.2.3