diff options
author | midipix <writeonce@midipix.org> | 2019-03-10 06:38:12 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2019-03-12 02:27:22 -0400 |
commit | e1d2681818033bd7475408fc4e3847fcaaf8e275 (patch) | |
tree | 78adf00126a1f6c543388053b8549c8e28128257 /src | |
parent | c2c8cdde83575bc555c575daa208a1248601eb4a (diff) | |
download | mmglue-e1d2681818033bd7475408fc4e3847fcaaf8e275.tar.bz2 mmglue-e1d2681818033bd7475408fc4e3847fcaaf8e275.tar.xz |
structured exception handling: added a pointer to the framework's __seh_vtbl.
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/nt32/crt_glue.c | 3 | ||||
-rw-r--r-- | src/arch/nt32/vtbl.c | 2 | ||||
-rw-r--r-- | src/arch/nt64/crt_glue.c | 3 | ||||
-rw-r--r-- | src/arch/nt64/vtbl.c | 2 |
4 files changed, 10 insertions, 0 deletions
diff --git a/src/arch/nt32/crt_glue.c b/src/arch/nt32/crt_glue.c index f65fa9b..7a33981 100644 --- a/src/arch/nt32/crt_glue.c +++ b/src/arch/nt32/crt_glue.c @@ -8,6 +8,7 @@ extern const struct __ldso_vtbl * __ldso_vtbl; extern const struct __psx_vtbl * __psx_vtbl; +extern const struct __seh_vtbl * __seh_vtbl; static int __pthread_surrogate_init(struct pthread * self); @@ -84,6 +85,8 @@ void __libc_entry_routine( __syscall_vtbl = (unsigned long **)ctx.sys_vtbl; __ldso_vtbl = ctx.ldso_vtbl; __psx_vtbl = ctx.psx_vtbl; + __seh_vtbl = ctx.seh_vtbl; + __teb_sys_idx = ctx.teb_sys_idx; __teb_libc_idx = ctx.teb_libc_idx; diff --git a/src/arch/nt32/vtbl.c b/src/arch/nt32/vtbl.c index f21ce17..7691977 100644 --- a/src/arch/nt32/vtbl.c +++ b/src/arch/nt32/vtbl.c @@ -5,6 +5,8 @@ const struct __ldso_vtbl * __ldso_vtbl = 0; const struct __psx_vtbl * __psx_vtbl = 0; +const struct __seh_vtbl * __seh_vtbl = 0; + unsigned long ** __syscall_vtbl = 0; unsigned long __teb_sys_idx = 0; unsigned long __teb_libc_idx = 0; diff --git a/src/arch/nt64/crt_glue.c b/src/arch/nt64/crt_glue.c index f65fa9b..7a33981 100644 --- a/src/arch/nt64/crt_glue.c +++ b/src/arch/nt64/crt_glue.c @@ -8,6 +8,7 @@ extern const struct __ldso_vtbl * __ldso_vtbl; extern const struct __psx_vtbl * __psx_vtbl; +extern const struct __seh_vtbl * __seh_vtbl; static int __pthread_surrogate_init(struct pthread * self); @@ -84,6 +85,8 @@ void __libc_entry_routine( __syscall_vtbl = (unsigned long **)ctx.sys_vtbl; __ldso_vtbl = ctx.ldso_vtbl; __psx_vtbl = ctx.psx_vtbl; + __seh_vtbl = ctx.seh_vtbl; + __teb_sys_idx = ctx.teb_sys_idx; __teb_libc_idx = ctx.teb_libc_idx; diff --git a/src/arch/nt64/vtbl.c b/src/arch/nt64/vtbl.c index f21ce17..7691977 100644 --- a/src/arch/nt64/vtbl.c +++ b/src/arch/nt64/vtbl.c @@ -5,6 +5,8 @@ const struct __ldso_vtbl * __ldso_vtbl = 0; const struct __psx_vtbl * __psx_vtbl = 0; +const struct __seh_vtbl * __seh_vtbl = 0; + unsigned long ** __syscall_vtbl = 0; unsigned long __teb_sys_idx = 0; unsigned long __teb_libc_idx = 0; |