summaryrefslogtreecommitdiffhomepage
path: root/src/ldso/pe_load_framework_loader_ex.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ldso/pe_load_framework_loader_ex.c')
-rw-r--r--src/ldso/pe_load_framework_loader_ex.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ldso/pe_load_framework_loader_ex.c b/src/ldso/pe_load_framework_loader_ex.c
index 25428aa..cd3d8e6 100644
--- a/src/ldso/pe_load_framework_loader_ex.c
+++ b/src/ldso/pe_load_framework_loader_ex.c
@@ -31,6 +31,8 @@ int32_t pe_load_framework_loader_ex(
abi);
if (status) {
+ rtdata = &context;
+
context.hself = 0;
context.hparent = 0;
context.himage = 0;
@@ -55,7 +57,16 @@ int32_t pe_load_framework_loader_ex(
context.abi.data4[6] = abi->data4[6];
context.abi.data4[7] = abi->data4[7];
- rtdata = &context;
+ context.hldrctx[PE_LDSO_CTX_IDX_PREV_LOADER] = 0;
+ context.hldrctx[PE_LDSO_CTX_IDX_PREV_ROOT] = 0;
+
+ if (__SIZEOF_POINTER__ == 8) {
+ context.hldrctx[PE_LDSO_CTX_IDX_RESERVED_1] = 0;
+ context.hldrctx[PE_LDSO_CTX_IDX_RESERVED_2] = 0;
+ }
+ } else {
+ rtdata->hldrctx[PE_LDSO_CTX_IDX_PREV_LOADER] = rtdata->hloader;
+ rtdata->hldrctx[PE_LDSO_CTX_IDX_PREV_ROOT] = rtdata->hroot;
}
if ((status = pe_find_framework_loader(