Commit Graph

2597 Commits

Author SHA1 Message Date
Anhad Singh cf21cf24fc feat(libc.so): link flags
* -z pack-relative-relocs
* --sort-common
* --gc-sections

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-01-15 13:49:28 +11:00
Anhad Singh 07ff79069e feat(ld.so): add support for DT_RELR
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-01-15 13:49:27 +11:00
Jeremy Soller a3c12e27e4 Fix build for i686 2025-01-14 18:01:26 -07:00
Jeremy Soller b011dbe366 Merge branch 'master' of https://gitlab.redox-os.org/redox-os/relibc 2025-01-14 12:24:38 -07:00
Jeremy Soller 5a69226af6 Fix compilation with new nightly 2025-01-14 12:24:33 -07:00
Jeremy Soller f4fff7448e Merge branch 'patch5' into 'master'
fix(ld.so): less locks

See merge request redox-os/relibc!601
2025-01-13 22:23:41 +00:00
Jeremy Soller f9590c4b17 Update rust-toolchain 2025-01-13 14:33:43 -07:00
Anhad Singh b9e0505715 fix(ld.so): less locks
Acquire the global scope lock at the start of relocate.

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-01-13 23:48:03 +11:00
Jeremy Soller 90f30c5f51 Make NulTerminated::new return option 2025-01-09 13:33:56 -07:00
Jeremy Soller af50d18d16 Return error instead of panic when load_library cannot find root DSO 2025-01-09 13:33:29 -07:00
Jeremy Soller 02520b194e Fix compilation with trace feature 2025-01-09 12:23:23 -07:00
Jeremy Soller 01d7f7b44a Fixup last commit 2025-01-09 10:22:28 -07:00
Jeremy Soller 431d55aa24 Add setlinebuf 2025-01-09 10:21:17 -07:00
Jeremy Soller 77d96541d9 Merge branch 'langinfo' into 'master'
Implement 'langinfo.h' and refactor strftime() to use langinfo constants

See merge request redox-os/relibc!599
2025-01-08 21:31:46 +00:00
Jeremy Soller a7b608260a Merge branch 'patch5' into 'master'
feat(ld.so): performance improvements

See merge request redox-os/relibc!600
2025-01-08 14:44:34 +00:00
Anhad Singh aae27c5e0c feat(ld.so): switch to object crate
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-01-08 16:50:47 +11:00
Anhad Singh e49072655c feat(ld.so): partially switch to object
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-01-08 16:50:10 +11:00
Anhad Singh e219f9768e feat(ld.so): GNU hash table
Note that the ELF specification mandates the presence of either the GNU
hash table or SysV hash table. See Figure 2-7. Dynamic Array Tags.

Also both can be present, though that is not currently handled.

BLAZINGLY FAST!

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2025-01-08 16:48:26 +11:00
Guillaume Gielly 420a902e2b Readd item constants... 2025-01-07 13:55:54 +01:00
Guillaume Gielly b0c45af008 Refactor langinfo module to use a static string table for constants 2025-01-07 13:47:05 +01:00
Jeremy Soller b67d7e2fdf Merge branch 'fix-gnu-make-glob' into 'master'
fix: GNU seems to prefer its own glob.h

See merge request redox-os/relibc!598
2025-01-07 00:15:33 +00:00
Guillaume Gielly b5b5bd2522 Support building with #![deny(unsafe_op_in_unsafe_fn)] 2025-01-05 23:02:04 +01:00
Guillaume Gielly cf106906b5 Code cleanup 2025-01-05 22:30:35 +01:00
Guillaume Gielly ffd5edd283 Add strptime() module and clean up unused strptime function 2025-01-05 20:10:50 +01:00
Guillaume Gielly ba225e2000 Refactor strftime() to use langinfo constants for locale-based formatting :
- replaced hardcoded day and month names with calls to nl_langinfo,
- integrated langinfo constants  DAY_1, ABDAY_1, MON_1, ABMON_1) for weekday and month names,
- used AM_STR and PM_STR for AM/PM strings in %p and %P specifiers,
- add comments.
2025-01-05 19:45:29 +01:00
Guillaume Gielly 770e768818 Implement 'langinfo.h' 2025-01-05 18:20:42 +01:00
Josh Megnauth 922878b22e fix: GNU seems to prefer its own glob.h
Make (and possibly other) GNU programs seem to prefer using its own
`glob.h`. For Make, its configure detects if GNU's glob then uses it if
it is OR compiles a bundled version if it's not.

Make fails to link now that we have `glob.h` (duplicated symbols).
2025-01-05 02:37:41 -05:00
Jeremy Soller 25b0da4876 Merge branch 'sigsetjmp_x64_implementation' into 'master'
Implement sigsetjmp and siglongjmp for X64

See merge request redox-os/relibc!478
2025-01-04 00:29:19 +00:00
Bendeguz Pisch 35a3efd936 Implement sigsetjmp and siglongjmp for X64 2025-01-04 00:29:19 +00:00
Jeremy Soller 9265b778c6 Merge branch 'impr_time' into 'master'
Adding `tzset`, timezone awareness, and some tweaks

See merge request redox-os/relibc!596
2025-01-02 20:19:34 +00:00
Darley Barreto c14b2cee4c Adding tzset, timezone awareness, and some tweaks 2025-01-02 20:19:34 +00:00
Jeremy Soller 94e264d253 Merge branch 'patch5' into 'master'
fix(ld.so): errors UB

See merge request redox-os/relibc!595
2025-01-01 14:18:37 +00:00
Anhad Singh bfe1c0b545 fix(ld.so): redox build
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 19:30:37 +11:00
Anhad Singh 01e6eda258 misc(dlfcn): cleanup
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 19:03:05 +11:00
Anhad Singh 42d884c6a3 fix(ld.so): errors UB
Currently, how ld.so errors are handled by functions in dlfcn is wrong.
dlopen calls `linker.load_library` which returns a
`Result<ObjectHandler, goblin::Error>`. Now `goblin::Error` may have
variants that are heap allocated. For example:
`Error::Malformed(format!("invalid path: '{}': {}", path, err))`. The
error string would be allocated by ld.so's allocator but will be dropped
inside libc. This is UB.

After this patch, we now return a custom `DlError` instead. To get more
information about the error, `LD_DEBUG=all` can be set.

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 18:35:20 +11:00
Anhad Singh 9cf72fd0b2 feat(ld.so): add all option for LD_DEBUG
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 18:00:45 +11:00
Anhad Singh 60f700fb50 chore(linker): remove todo
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 15:26:23 +11:00
Anhad Singh c25292ae21 misc(ld.so): clippy fixes
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 15:25:40 +11:00
Jeremy Soller f08952b1b0 Merge branch 'patch5' into 'master'
feat: rwlock

Closes #196

See merge request redox-os/relibc!594
2024-12-30 17:17:05 +00:00
Jeremy Soller e4162ef850 Merge branch 'monetary' into 'master'
Implement 'monetary.h' and and a basic strfmon() function

See merge request redox-os/relibc!589
2024-12-30 17:15:35 +00:00
Jeremy Soller ac9505c246 Merge branch 'fix-199-improved-hashbang' into 'master'
Handle prepended whitespace for hashbang

See merge request redox-os/relibc!591
2024-12-30 17:14:24 +00:00
Josh Megnauth 513f1951fe Handle prepended whitespace for hashbang 2024-12-30 17:14:24 +00:00
Anhad Singh 0449c35e52 chore: fix formatting
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 01:23:51 +11:00
Anhad Singh 5eeb59dad2 feat(rand48): rwlock for global params
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 01:23:20 +11:00
Anhad Singh bc51d8e1d5 fix(pal/redox): use RwLock instead of InnerRwLock
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 01:07:36 +11:00
Anhad Singh 4232858b89 misc(tests/ptrace): update expected
Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 00:54:58 +11:00
Anhad Singh 2c307616d8 fix(tests/ptrace.c): persistent logs
Even though it might seem like it, it is not necessary that write(2) is
the only system call performed. It could be that the libc has to
allocate memory (via MMAP) or makes use of a futex. To produce
consistant results, only log on SYS_write and when the syscall number
has been patched.

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 00:54:58 +11:00
Anhad Singh cfe89f828a feat: rwlock instead of mutex for global scope
* Rwlock -> InnerRwLock
* RwLock makes use of InnerRwLock.

Signed-off-by: Anhad Singh <andypython@protonmail.com>
2024-12-31 00:54:52 +11:00
Jeremy Soller 647141a3fc Merge branch 'popen-test-fix' into 'master'
fix popen tests

See merge request redox-os/relibc!593
2024-12-29 00:58:44 +00:00
Ron Williams a4ca5b4e85 fix popen tests 2024-12-28 16:34:27 -08:00