Commit Graph

3208 Commits

Author SHA1 Message Date
Wildan M 31797971bc Write unified test script and make test readable 2025-12-10 23:28:57 +07:00
Jeremy Soller e2870172d8 Merge branch 'p2' into 'master'
fix(redox-rt/proc): `from_raw` should negate `raw` for `KillProcTarget::ProcGroup`

See merge request redox-os/relibc!793
2025-12-10 06:17:26 -07:00
Jeremy Soller 89986a6b10 Merge branch 'arm-dynlink' into 'master'
Fix missing symbols for ARM dynamic linking

See merge request redox-os/relibc!763
2025-12-10 06:16:16 -07:00
Wildan Mubarok d6eaa0dbf9 Fix missing symbols for ARM dynamic linking 2025-12-10 06:16:16 -07:00
Jeremy Soller b8bae33fde Merge branch 'master' into 'master'
fix(riscv64/x86): build

See merge request redox-os/relibc!792
2025-12-09 21:52:38 -07:00
Anhad Singh 3f986068e9 fix(redox-rt/proc): from_raw should negate raw for
`KillProcTarget::ProcGroup`

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-12-10 14:46:16 +11:00
Anhad Singh aa86e9e027 fix(riscv64/x86): build
Stub `__tlsdesc_dynamic` for riscv64/x86 for now.

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-12-10 13:52:37 +11:00
Jeremy Soller b5aad8faab Merge branch 'master' into 'master'
fix(ld_so): page faulting when library not found

See merge request redox-os/relibc!791
2025-12-09 19:28:06 -07:00
Anhad Singh 64d3793190 fix(ld_so): page faulting when library not found
The error handling was already in place. The reason it was page faulting
is that, on failure, the function exits as soon as it encounters an
`Err` variant. When that happens, the DSO object for which the
dependency was being loaded is dropped. Dropping it calls `munmap` to
unload the executable and also runs the functions in `.fini`. However,
`run_fini` should only be called if the `DSO` is being unloaded after it
has been successfully loaded (i.e. all dependencies were satisfied and
all init functions had run).

Closes #1599

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-12-10 13:24:53 +11:00
Jeremy Soller 7d6296f29d Merge branch 'cleanup_exec5' into 'master'
redox-rt: Remove unnecessary image_file field from FexecResult::Interp

See merge request redox-os/relibc!790
2025-12-09 15:42:59 -07:00
bjorn3 dc77995b57 redox-rt: Remove unnecessary image_file field from FexecResult::Interp 2025-12-09 22:22:09 +01:00
Jeremy Soller 44512df6a3 Merge branch 'cleanup_exec4' into 'master'
Use non-fixed and anonymous remote mmap and get rid of BTreeMap in redox-rt

See merge request redox-os/relibc!789
2025-12-09 13:05:43 -07:00
bjorn3 c96aeea39f redox-rt: Get rid of BTreeMap usage in fexec_impl 2025-12-09 21:04:45 +01:00
bjorn3 0158b111e0 redox-rt: Use non-fixed and anonymous remote mmap 2025-12-09 21:04:40 +01:00
Jeremy Soller 02f6dd3faf Merge branch 'master' into 'master'
fix(ld_so): dynamic linker on aarch64

See merge request redox-os/relibc!788
2025-12-09 06:28:14 -07:00
Anhad Singh 8572c855fc feat(ld_so/dso): TLSDESC
The dynamic linker now works on aarch64. You can also try it on Linux by
setting `TEST_RUNNER` to `qemu-aarch64` when running `make test
TARGET=aarch64-unknown-linux-gnu`

Co-authored-by: @willnode
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-12-09 22:28:39 +11:00
Anhad Singh 979de28ebc feat(aarch64/ld_so): implement _start routine 2025-12-09 15:07:11 +11:00
Anhad Singh 843f3f89ff fix(tests/Makefile): use correct dynamic linker path depending on target 2025-12-09 15:02:34 +11:00
Anhad Singh 396a0d20bf fix(build): target specific sysroot directory 2025-12-09 14:13:09 +11:00
Jeremy Soller 7fcab3a43a Merge branch 'master' into 'master'
fix(ci): make it green

See merge request redox-os/relibc!786
2025-12-08 16:50:39 -07:00
Jeremy Soller ee9040873a Merge branch 'cleanup_exec3' into 'master'
Move cloexec handling to happen right before the final exec

Closes #234

See merge request redox-os/relibc!787
2025-12-08 16:48:24 -07:00
bjorn3 1ede79fe88 Move cloexec and deactivate_tcb handling into redox-rt 2025-12-08 22:19:57 +01:00
bjorn3 b607877c07 Move cloexec handling to happen right before the final exec
This way if the target can't be executed, cloexec fds remain open as
expected.
2025-12-08 20:39:55 +01:00
Anhad Singh 2575639212 fix(tests/time): explictly set timezone instead of assuming 2025-12-09 01:18:32 +11:00
Anhad Singh eb4ce618e2 fix(header/time): define TIME_UTC
Workaround for a bug inside `cbindgen`. For some reason it does not like
us exporting constants that depend on other constants that are *not*
defined as a part of the same module.
2025-12-09 01:13:22 +11:00
Jeremy Soller 52ceed2f67 Merge branch 'doc-netdb-and-poll' into 'master'
Doc netdb and poll

See merge request redox-os/relibc!785
2025-12-08 06:16:57 -07:00
auronandace 1ed1096e60 add clippy annotation to netdb thanks to safety note 2025-12-08 08:41:00 +00:00
auronandace 651768ad54 only import the needed types in netdb and poll 2025-12-08 08:34:38 +00:00
auronandace e45c7de6f6 update and add spec links for netdb and poll 2025-12-08 08:30:17 +00:00
Jeremy Soller ff7ab99baf Merge branch 'fix-time-test' into 'master'
mark timespec_get and timespec_getres as unsafe and annotate no mangle

See merge request redox-os/relibc!784
2025-12-07 15:49:07 -07:00
auronandace 27bd869119 mark timespec_get and timespec_getres as unsafe and annotate no mangle 2025-12-07 21:07:49 +00:00
Jeremy Soller fe5273890a Merge branch 'cleanup_exec2' into 'master'
Hard code the default scheme to file

See merge request redox-os/relibc!783
2025-12-07 12:37:08 -07:00
bjorn3 4dae665cbf Hard code the default scheme to file
Init no longer changes the default scheme to initfs at any point in
time. And for sandboxing you would be switching scheme namespace, not
default scheme.

It should be possible to mix and match relibc version from before and
after this change without breaking exec, though I haven't tested it.
2025-12-07 19:51:45 +01:00
Jeremy Soller d3f54836d1 Merge branch 'cleanup_exec' into 'master'
Account for nul terminator in total_args_envs_auxvpointee_size

See merge request redox-os/relibc!782
2025-12-07 11:40:27 -07:00
bjorn3 45a58f1a9e Account for nul terminator in total_args_envs_auxvpointee_size 2025-12-07 19:38:14 +01:00
Jeremy Soller 8f38bbe511 Merge branch 'cleanup_exec' into 'master'
Calculate total_args_envs_size in redox_rt::proc::fexec_impl

See merge request redox-os/relibc!781
2025-12-07 11:31:56 -07:00
Jeremy Soller 9ace82b9e1 Merge branch 'printf-negative-precision-fix' into 'master'
printf: use None if precision given in the next argument is negative

See merge request redox-os/relibc!779
2025-12-07 11:29:01 -07:00
bjorn3 6021ece539 Calculate total_args_envs_size in redox_rt::proc::fexec_impl
Calculating it earlier is a micro-optimization that doesn't seem like it
matters at all compared to all other costs of spawning a process. But at
the same time it makes things more fragile. And in fact bootstrap
actually passed the wrong value. It passed the
total_args_envs_auxvpointee_size that it computed rather than the
total_args_envs_size. While over-approximation doesn't cause UB, it
unnecessarily increases the amount of memory used after exec.

In addition pass &[&[u8]] rather than iterators for args and envs to
enable precomputing the total arg and env size. This also prevents you
from forgetting to pass a reversed iterator.
2025-12-07 18:52:47 +01:00
Jeremy Soller 6609f127be Merge branch 'doc-select-utsname' into 'master'
Doc select utsname

See merge request redox-os/relibc!780
2025-12-07 10:13:47 -07:00
auronandace bb7ad19792 only import the needed types for sys_utsname and sys_select 2025-12-07 17:04:59 +00:00
auronandace 64d688dc4e update and add spec links to sys_utsname and sys_select 2025-12-07 17:01:51 +00:00
Connor-GH 1b86d87475 printf: use None if precision given in the next argument is negative 2025-12-07 10:16:33 -06:00
Jeremy Soller 228420291e Merge branch 'dlinfo-alias' into 'master'
Fix Dl_info alias not exported

See merge request redox-os/relibc!778
2025-12-05 06:15:10 -07:00
Wildan M 8e4e43dcc4 Fix Dl_info alias not exported 2025-12-05 16:14:29 +07:00
Jeremy Soller 2a7c7c5d42 Merge branch 'impl-timespec_get' into 'master'
Implement timespec_get and timespec_getres

See merge request redox-os/relibc!777
2025-12-04 14:00:24 -07:00
Josh Megnauth 4538fdb0c9 Implement timespec_get and timespec_getres
`timespec_get` and `timespec_getres` are both C23 functions. They're
similar to the POSIX functions `clock_gettime` and `clock_getres`, but
both sets of functions define extra, exclusive features. I didn't
implement the extra features yet, partially because Redox doesn't seem
to support them yet either.
2025-12-04 20:38:35 +00:00
Jeremy Soller 14b011da84 Merge branch 'p0' into 'master'
fix(platform/redox): add missing imports

See merge request redox-os/relibc!776
2025-12-04 08:33:53 -07:00
Anhad Singh e7b6c25d72 fix(platform/redox): add missing imports
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-12-05 01:07:18 +11:00
Jeremy Soller ca669fc60d Merge branch 'doc-locale-and-sched' into 'master'
Doc locale and sched

See merge request redox-os/relibc!775
2025-12-04 06:20:21 -07:00
auronandace 1ce298eaa9 only import needed types in locale and sched 2025-12-04 09:11:57 +00:00