git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
regression: elf loading
[lunaix-os.git]
/
lunaix-os
/
kernel
/
loader
/
exec.c
diff --git
a/lunaix-os/kernel/loader/exec.c
b/lunaix-os/kernel/loader/exec.c
index 1c206d2566c3d99f31ab63ecbfc793b5d403f47a..cf0a422e2f1d7acab87cc8253d61fb1667ba4abb 100644
(file)
--- a/
lunaix-os/kernel/loader/exec.c
+++ b/
lunaix-os/kernel/loader/exec.c
@@
-60,6
+60,8
@@
__exec_remap_heap(struct ld_param* param, struct proc_mm* pvms)
heap->region_copied = __heap_copied;
mm_index((void**)&pvms->heap, heap);
heap->region_copied = __heap_copied;
mm_index((void**)&pvms->heap, heap);
+
+ return status;
}
int
}
int
@@
-112,15
+114,17
@@
exec_load(struct ld_param* param,
if (envp)
memcpy(arg_start + sz_argv, (void*)envp, sz_envp);
if (envp)
memcpy(arg_start + sz_argv, (void*)envp, sz_envp);
- struct usr_exec_param* param = mapped;
- *param = (struct usr_exec_param){ .argc = argv_len,
- .argv = arg_start,
- .envc = envp_len,
- .envp = arg_start + sz_argv,
- .info = param->info };
ptr_t* ustack = (ptr_t*)USTACK_TOP;
ptr_t* ustack = (ptr_t*)USTACK_TOP;
+ struct usr_exec_param* exec_param = mapped;
+
ustack[-1] = (ptr_t)mapped;
param->info.stack_top = &ustack[-1];
ustack[-1] = (ptr_t)mapped;
param->info.stack_top = &ustack[-1];
+
+ *exec_param = (struct usr_exec_param){ .argc = argv_len,
+ .argv = arg_start,
+ .envc = envp_len,
+ .envp = arg_start + sz_argv,
+ .info = param->info };
} else {
// TODO need to find a way to inject argv and envp remotely
fail("not implemented");
} else {
// TODO need to find a way to inject argv and envp remotely
fail("not implemented");