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
Anhad Singh
00746c2566
misc(tests): disable dlfcn test for now
...
Signed-off-by: Anhad Singh <andypython@protonmail.com >
2024-11-25 12:31:33 +11:00
Anhad Singh
b9bef59d8a
fix(libc.so): link with libgcc
...
Signed-off-by: Anhad Singh <andypython@protonmail.com >
2024-11-25 12:20:32 +11:00
Anhad Singh
7aa340570f
chore: enable dynamic tests
...
Signed-off-by: Anhad Singh <andypython@protonmail.com >
2024-11-25 12:13:03 +11:00
Jeremy Soller
a64a6a4cd0
Merge branch 'fix-failing-features-test' into 'master'
...
Temporarily disable `noreturn` attribute test
See merge request redox-os/relibc!568
2024-11-24 13:55:06 +00:00
Josh Megnauth
daa77e7149
Temporarily disable noreturn attribute test
2024-11-24 13:55:05 +00: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
Jeremy Soller
b95bd0dfa6
Merge branch 'fix-socket-set-edom-timeout-overflow' into 'master'
...
fix: Multiplication overflow in setsockopt
Closes #201
See merge request redox-os/relibc!566
2024-11-23 19:53:33 +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
Jeremy Soller
8381218ab1
Merge branch 'sys-file-docs' into 'master'
...
Add docs for sys/file.h
See merge request redox-os/relibc!565
2024-11-21 15:07:21 +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
Jeremy Soller
e528eae801
Merge branch 'string-docs' into 'master'
...
Add docs for string.h, add missing functions
See merge request redox-os/relibc!562
2024-11-19 00:20:40 +00:00
Peter Limkilde Svendsen
2a7d01f02d
Add docs for string.h, add missing functions
2024-11-19 00:20:40 +00:00
Jeremy Soller
46c2d36193
Merge branch 'fix-dns-extra-output' into 'master'
...
fix(netdb): Buffer overrun when parsing DNS
See merge request redox-os/relibc!559
2024-11-18 13:43:23 +00:00
Josh Megnauth
fc1e220a99
fix(netdb): Buffer overrun when parsing DNS
2024-11-18 13:43:22 +00:00
Jeremy Soller
32fca670ea
Merge branch 'memmem-cast-mut' into 'master'
...
Use only one .cast_mut() in memmem()
See merge request redox-os/relibc!561
2024-11-17 20:09:46 +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
caac784caa
Merge branch 'iso646' into 'master'
...
Add iso646.h and corresponding tests
See merge request redox-os/relibc!555
2024-11-17 16:16:11 +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
Jeremy Soller
63cb0401e5
Merge branch 'calloc-no-intrinsics' into 'master'
...
Avoid unnecessary intrinsic in calloc
See merge request redox-os/relibc!550
2024-11-17 16:12:27 +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
56d05e2cdc
Add iso646.h and corresponding tests
2024-11-10 16:19:15 +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
Jeremy Soller
a45c7b26d9
Merge branch 'stdlib-docs' into 'master'
...
Add docs for stdlib.h, add stubs for missing functions
See merge request redox-os/relibc!549
2024-11-08 14:45:26 +00:00
Peter Limkilde Svendsen
890be6fc02
Add docs for stdlib.h, add stubs for missing functions
2024-11-08 14:45:26 +00:00
Jeremy Soller
659cb66c30
Merge branch 'netdb-h_errno' into 'master'
...
Set `h_errno` for gethostbyname/addr
See merge request redox-os/relibc!547
2024-11-02 12:21:47 +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