summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2019-03-10 06:38:12 +0000
committermidipix <writeonce@midipix.org>2019-03-12 02:27:22 -0400
commite1d2681818033bd7475408fc4e3847fcaaf8e275 (patch)
tree78adf00126a1f6c543388053b8549c8e28128257 /src
parentc2c8cdde83575bc555c575daa208a1248601eb4a (diff)
downloadmmglue-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.c3
-rw-r--r--src/arch/nt32/vtbl.c2
-rw-r--r--src/arch/nt64/crt_glue.c3
-rw-r--r--src/arch/nt64/vtbl.c2
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;