Commit Graph

369 Commits

Author SHA1 Message Date
Jeremy Soller adbdf1d73d Fixes for redox-exec on aarch64 2022-08-24 15:45:36 -06:00
Jeremy Soller 2cd461fa21 Use relibc chdir for fchdir 2022-08-24 08:50:50 -06:00
Jeremy Soller 915359d11d Disable use of EnvRegisters on aarch64 2022-08-24 07:49:29 -06:00
4lDO2 1987ae7c77 Check for ENOENT/ENOTDIR in chdir(). 2022-08-23 10:49:29 +02:00
Jeremy Soller eac4a349d8 Set default FPU control word to 0x37F 2022-08-22 08:10:42 -06:00
Jeremy Soller 1243330146 Implement pte_clone_ret for x86 2022-08-20 22:20:42 -06:00
Jeremy Soller 619245024a Use 32-bit program headers too 2022-08-20 20:10:15 -06:00
Jeremy Soller 791460d5d1 Use 32-bit elf headers on 32-bit redox 2022-08-20 19:48:47 -06:00
Jeremy Soller 5526528364 Partial aarch64 implementation of relibc internal functions 2022-08-20 14:19:29 -06:00
Jeremy Soller 60a4b59194 Fix push/pop of preserved registers on x86 2022-08-18 08:09:11 -06:00
Jeremy Soller 32770ed976 Improvements to x86 assembly in redox-exec 2022-08-18 08:01:14 -06:00
Jeremy Soller ebb0507f59 Impelement relibc_internal_fork_wrapper for x86 32-bit 2022-08-17 14:21:00 -06:00
4lDO2 c26ce37620 Also fail if cwd could not be written to escalated. 2022-08-13 19:16:48 +02:00
4lDO2 5e74d173ab Fix ld.so access function on Redox. 2022-08-13 19:16:48 +02:00
4lDO2 36775eeb1b Implement EXDEV symlink resolution. 2022-08-13 19:16:48 +02:00
4lDO2 54b3f873f8 Move cwd from kernel to relibc. 2022-08-13 19:16:45 +02:00
Jeremy Soller 9e2cbcc407 redox-exec: Add aarch64 stubs 2022-07-29 10:06:54 -06:00
Jeremy Soller 13e58007bc Add stubs for new asm functions on x86 2022-07-28 08:16:28 -06:00
Jeremy Soller 05e3a5ac8b redox-exec: Move x86_64 specific things to arch module 2022-07-28 08:08:01 -06:00
4lDO2 16d0f96d64 Move fork implementation to redox-exec 2022-07-28 14:19:31 +02:00
Jeremy Soller dc865148fc Get Linux to compile again 2022-07-27 10:10:41 -06:00
4lDO2 f438a4259a Use redox_syscall 0.3 from crates.io 2022-07-27 17:38:12 +02:00
4lDO2 13cbac293b Fix write to mmap-min-addr 2022-07-26 21:35:25 +02:00
4lDO2 985b2a59a9 Use better interfaces in exec/clone 2022-07-26 21:35:24 +02:00
4lDO2 d32dd52d3b Use 2021 edition in redox-exec 2022-07-26 21:34:48 +02:00
4lDO2 b58ad5bf13 In clone, use better asm function names and align. 2022-07-26 21:34:48 +02:00
4lDO2 049a5156d7 Implement PT_INTERP, and thus dynamic linking.
With this change, gcc can now successfully compile a tiny program that
printfs an integer returned from a function, from a dynamically linked
library that it compiled as well.

Rustc however, is orders of magnitude more complex, and the next step is
to fix constructors which require access to `environ`, in ld.so
2022-07-26 21:34:48 +02:00
4lDO2 db16393fd7 Manually init FPU context in pte_clone. 2022-07-26 21:34:48 +02:00
4lDO2 24ecd6ee16 Fix waitpid deadlock. 2022-07-26 21:34:48 +02:00
4lDO2 8ac0626be7 Handle sigactions properly in execve and fork. 2022-07-26 21:34:48 +02:00
4lDO2 b930cc98d0 Correctly preserve and set MXCSR and FCW. 2022-07-26 21:34:47 +02:00
4lDO2 bac2509ccd Fix leaks for setuid/setgid too. 2022-07-26 21:34:47 +02:00
4lDO2 1476cdeb8f Split fexec_impl into crate, used by escalated. 2022-07-26 21:34:46 +02:00
4lDO2 df8e2deddc Fix file descriptor leak in fork(). 2022-07-26 21:34:12 +02:00
4lDO2 777a82b50f Refactor out clone, fix some fd leaks. 2022-07-26 21:34:12 +02:00
4lDO2 bb45466a4e Implement clone in userspace. 2022-07-26 21:34:11 +02:00
4lDO2 a7c817d81a WIP: Support setuid/setgid 2022-07-26 21:33:01 +02:00
4lDO2 37cc4e5383 WIP: Add setuid/setgid support. 2022-07-26 21:33:01 +02:00
4lDO2 c95d276af9 Allow POSIX's environ to be set.
Rust's libstd for example uses environ when using the `envs` builder
method for spawning processes, and therefore relibc cannot simply assume
environ will always point to the internal relibc env var Vec.
2022-07-26 21:33:01 +02:00
4lDO2 2186cd1fbd Implement fexec in userspace. 2022-07-26 21:32:56 +02:00
Jeremy Soller 559387cc64 Initial support for x86 32-bit 2022-07-22 16:24:45 -06:00
Jeremy Soller 7f3f2fa105 Add some messages when unimplemented PTE functions are called 2022-04-14 07:52:39 -06:00
Jeremy Soller 8576b99759 Add timeout to futex_wait calls 2022-04-04 20:23:29 -06:00
4lDO2 ebd597f748 Update dependencies for rust 2022-03-18. 2022-03-24 17:12:02 +01:00
Jeremy Soller ec0047c864 Fix redox readlink 2022-03-23 13:47:58 -06:00
Jeremy Soller f63d9cefad Add mlock and friends 2022-03-17 14:03:45 -06:00
Jeremy Soller e90fa3e32f Do not try to open traceme on special PIDs 2021-12-01 09:52:31 -07:00
Jeremy Soller c51aec1af6 Workaround waitpid deadlock by making ptrace state thread local 2021-11-30 21:19:48 -07:00
Jeremy Soller 7a8015eb68 Use r10 instead of rcx for linux pte_clone 2021-11-30 11:34:53 -07:00
Jeremy Soller 66615ef449 Use CLONE_THREAD for linux pte_clone 2021-11-30 11:27:02 -07:00