Commit Graph

1670 Commits

Author SHA1 Message Date
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 ed196516a2 Only inherit environ from ldso if previously NULL. 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 4e5ccbffd1 Allow constructors to access env vars. 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 3701ea3be7 Conflict-proof #[global_allocator] symbols too.
The #[global_allocator] used by relibc is only relibc's business.
Symbols should therefore not leak if another applications for example
wants to override the system allocator (and for bootstrap, which links
to relibc but uses its own #[global_allocator] based on libc functions).
2022-07-26 21:34:47 +02:00
4lDO2 05446070ec Use same rust-toolchain version as elsewhere. 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 0bd81aa3d4 Update llvm_asm to asm for aarch64 2022-07-26 11:46:50 -06:00
Jeremy Soller afb5094cda Add triple underscore tls_get_addr for x86 2022-07-22 19:35:59 -06:00
Jeremy Soller abe30ba884 Add i386 __restore_rt 2022-07-22 19:24:05 -06:00
Jeremy Soller ece0bd090d Fix x86 setjmp/longjmp 2022-07-22 19:23:46 -06: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 6d394ba4f4 Merge branch 'update-dependencies' into 'master'
Update dependencies for rust 2022-03-18.

See merge request redox-os/relibc!342
2022-03-27 09:21:22 +00:00
4lDO2 fb411c0b19 Use redox_syscall 0.2.12 from crates.io, not git 2022-03-24 17:12:05 +01:00
4lDO2 f14c95db6a Update syscall. 2022-03-24 17:12:05 +01: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 8a2ff1ec4a Only try to set FS on x86_64 2022-02-13 15:05:07 -07:00
Jeremy Soller 824184a66c Make sure strong symbols are preferred by ld_so 2021-12-15 12:05:21 -07:00
Jeremy Soller ecd934951d R_X86_64_TPOFF64 does not require symbol, allow it to be unset 2021-12-14 14:53:16 -07: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
Jeremy Soller 6b46704ac3 Fix netdb stack overuse 2021-11-30 10:30:31 -07:00
Jeremy Soller 65bd3ed1e3 Fixes for program_invocation_name and program_invocation_short_name 2021-11-30 10:27:24 -07:00
Jeremy Soller a50d80ee28 Use anonymous fmap 2021-09-22 20:47:18 -06:00
Jeremy Soller b2dd1f8950 Add cfsetispeed and cfsetospeed stubs for redox 2021-09-14 20:56:35 -06:00
Jeremy Soller ae7cee26a6 Move wctype_t definition to wctype rust header 2021-09-14 20:36:23 -06:00
Jeremy Soller e5d2ba754a Match termios structure to that used in redox_termios 2021-09-13 20:39:40 -06:00
Jeremy Soller dbaeb8f067 Show ld.so expect message 2021-08-10 18:26:09 -06:00
4lDO2 da9beb8cb7 Merge branch 'manual_redox_tls' into 'master'
Initialize TLS manually on Redox as Linux does.

See merge request redox-os/relibc!340
2021-08-06 13:24:48 +00:00