Commit Graph

1612 Commits

Author SHA1 Message Date
Anhad Singh f6fa4e8246 feat(ld_so): setup sighandler
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-11-30 00:02:33 +11:00
Anhad Singh e9f3147e3b fix(tcb): do not use Vec::from_raw_parts
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-11-29 20:55:02 +11:00
Anhad Singh 1a7726541a fix TCB and TLS
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-11-29 18:40:16 +11:00
Anhad Singh c88eb3d5d0 Revert "fix(linker): deref uninit TCB"
This reverts commit 37dbf5cbb2.
2024-11-29 00:03:09 +11:00
Anhad Singh 37dbf5cbb2 fix(linker): deref uninit TCB
The bug is described for `x86_64` and Linux but is the same for other architectures and on Redox.

`Tcb::current()` is used to retrieve the current TCB, which is done by by reading `fs:[0x10]`. The TCB layout describes that at offset `0x10`, there is `tcb_ptr: *mut GenericTcb<...>`, which is nothing more but a pointer to itself.

This is fine as otherwise a system call would be required to get the TCB (`arch_prctl(ARCH_GET_FS)` on Linux).

However, this is problematic as the function may be called when the FS base is not set, and in that case the expected output of the function should be [`None`], but we don't currently handle that.

To fix this, any code paths that maybe call this function on an uninitialized TCB are be switched to call `current_slow()`. Which just uses `arch_prctl(ARCH_GET_FS)` to get the FS base and check if it's non-zero.

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-11-25 16:09:06 +11:00
Jeremy Soller 3c79fd759a Merge branch 'exit-return-never' into 'master'
Exit should return never (`!`)

See merge request redox-os/relibc!567
2024-11-23 19:55:38 +00:00
Josh Megnauth a709dd47bf fix: Multiplication overflow in setsockopt 2024-11-23 19:53:33 +00:00
Josh Megnauth 90f934c769 Exit should return never (!)
`_Exit`, `exit`, and related functions should return `!` because they
don't return. This also signals to cbindgen that it should emit
`[[noreturn]]` for those functions.
2024-11-23 03:33:00 -05:00
Jeremy Soller a430a7861d Merge branch 'pwd-docs' into 'master'
Add docs for pwd.h

See merge request redox-os/relibc!563
2024-11-21 15:07:30 +00:00
Peter Limkilde Svendsen 864f4306ce Add docs for pwd.h 2024-11-21 15:07:30 +00:00
Jeremy Soller 7a729571ec Merge branch 'sys-auxv-docs' into 'master'
Add docs for sys/auxv.h

See merge request redox-os/relibc!564
2024-11-21 15:07:25 +00:00
Peter Limkilde Svendsen 5591eeacb3 Add docs for sys/file.h 2024-11-20 23:21:48 +01:00
Peter Limkilde Svendsen 399b0ad81f Add docs for sys/auxv.h 2024-11-20 23:17:10 +01:00
Peter Limkilde Svendsen 2a7d01f02d Add docs for string.h, add missing functions 2024-11-19 00:20:40 +00:00
Josh Megnauth fc1e220a99 fix(netdb): Buffer overrun when parsing DNS 2024-11-18 13:43:22 +00:00
Peter Limkilde Svendsen 864d5e4795 Use only one .cast_mut() in memmem() 2024-11-17 20:19:52 +01:00
Jeremy Soller 2c73cc947c Merge branch 'memmem' into 'master'
Implement memmem()

See merge request redox-os/relibc!560
2024-11-17 16:18:15 +00:00
Peter Limkilde Svendsen 6a765ed88f Implement memmem() 2024-11-17 16:18:14 +00:00
Jeremy Soller ce7b85b0df Merge branch 'dont-overallocate-cstrings' into 'master'
Avoid over allocations & reallocations

See merge request redox-os/relibc!558
2024-11-17 16:17:22 +00:00
Jeremy Soller 88987eb000 Merge branch 'pty-utmp-docs' into 'master'
Add docs for pty.h and utmp.h

See merge request redox-os/relibc!557
2024-11-17 16:17:04 +00:00
Jeremy Soller 09bcfd0711 Merge branch 'errno-const-macros' into 'master'
Test errno constant macros, make ENOTSUP available in Rust

See merge request redox-os/relibc!556
2024-11-17 16:16:47 +00:00
Peter Limkilde Svendsen 42011f28d8 Test errno constant macros, make ENOTSUP available in Rust 2024-11-17 16:16:47 +00:00
Jeremy Soller 7b2e315c17 Merge branch 'cbindgen-use-attributes' into 'master'
Emit C attributes via cbindgen

See merge request redox-os/relibc!548
2024-11-17 16:15:07 +00:00
Josh Megnauth 5348273ccc Emit C attributes via cbindgen 2024-11-17 16:15:07 +00:00
Jeremy Soller dbe5c85411 Merge branch 'inttypes-docs' into 'master'
Add docs for inttypes.h

See merge request redox-os/relibc!554
2024-11-17 16:13:32 +00:00
Jeremy Soller 693769da1e Merge branch 'sys-random-docs' into 'master'
Add docs for sys/random.h

See merge request redox-os/relibc!553
2024-11-17 16:13:17 +00:00
Jeremy Soller 093d11c451 Merge branch 'elf-docs' into 'master'
Add basic docs for elf.h

See merge request redox-os/relibc!552
2024-11-17 16:13:01 +00:00
Jeremy Soller c57022894b Merge branch 'crypt-docs' into 'master'
Add docs for crypt.h

See merge request redox-os/relibc!551
2024-11-17 16:12:44 +00:00
Peter Limkilde Svendsen b8ad113a84 Add docs for crypt.h 2024-11-17 16:12:43 +00:00
Josh Megnauth d6ac5f8947 Avoid over allocations & reallocations
As we know, vectors amortize the cost of adding new elements by reserving
space for multiple elements when full. This is useful but may lead to
allocating more memory than necessary.

`relibc` generally avoids over allocations by reserving the exact amount
of space when possible. I fixed a few areas that still over allocated or
reallocated unnecessarily by leveraging iterators that are more likely
to know sizes.
2024-11-14 22:53:12 -05:00
Peter Limkilde Svendsen 66eb440d79 Add docs for pty.h and utmp.h 2024-11-13 18:19:22 +01:00
Peter Limkilde Svendsen 2f1e183cc6 Add docs for inttypes.h 2024-11-09 18:24:18 +01:00
Peter Limkilde Svendsen 0090dea50f Add docs for sys/random.h 2024-11-09 18:12:58 +01:00
Peter Limkilde Svendsen 1474dce2a7 Add basic docs for elf.h 2024-11-09 18:02:47 +01:00
Peter Limkilde Svendsen c440c61e58 Avoid unnecessary intrinsic in calloc 2024-11-09 17:35:09 +01:00
Peter Limkilde Svendsen 890be6fc02 Add docs for stdlib.h, add stubs for missing functions 2024-11-08 14:45:26 +00:00
Josh Megnauth bf1ea4e799 Set h_errno for gethostbyname/addr 2024-11-02 12:21:47 +00:00
Jeremy Soller 2dad215394 Merge branch 'net-if-docs' into 'master'
Add docs for net/if.h

See merge request redox-os/relibc!546
2024-10-31 23:59:00 +00:00
Peter Limkilde Svendsen 36ed4cbd7a Add docs for net/if.h 2024-10-31 23:59:00 +00:00
Peter Limkilde Svendsen 8367249c1a Add docs for semaphore.h 2024-10-31 23:58:52 +00:00
Jeremy Soller 5135a43e9e Merge branch 'sys-un-docs' into 'master'
Add docs for sys/un.h

See merge request redox-os/relibc!544
2024-10-31 21:43:34 +00:00
Jeremy Soller d56c4dad2c Merge branch 'sys-mman-docs' into 'master'
Add docs for sys/mman.h, make mremap pub

See merge request redox-os/relibc!543
2024-10-31 21:43:21 +00:00
Peter Limkilde Svendsen 6c1ccd161a Add docs for sys/mman.h, make mremap pub 2024-10-31 21:43:21 +00:00
Peter Limkilde Svendsen ee428d10f8 Use MaybeUninit for ftime arg, document safety 2024-10-31 21:43:00 +00:00
Peter Limkilde Svendsen 5f2ece19a2 Add docs for sys/un.h 2024-10-31 22:26:34 +01:00
Jeremy Soller 0373bc0d1c Merge branch 'wctype-docs' into 'master'
Add docs for wctype.h, fix unsafe handling

See merge request redox-os/relibc!541
2024-10-31 12:05:16 +00:00
Peter Limkilde Svendsen e43a9bd2f6 Add docs for wctype.h, fix unsafe handling 2024-10-31 12:05:16 +00:00
Peter Limkilde Svendsen 76f36f09df Add docs for sys/timeb.h, require unsafe blocks 2024-10-31 12:04:48 +00:00
Jeremy Soller 1d5c02ab92 Merge branch 'utime-docs' into 'master'
Add utime.h docs, use unsafe blocks

See merge request redox-os/relibc!538
2024-10-29 23:01:21 +00:00
Peter Limkilde Svendsen 2e5c1f7b72 Add utime.h docs, use unsafe blocks 2024-10-29 23:01:21 +00:00