|
Revision tags: v6.4.0, v6.4.0rc1, v6.5.0 |
|
| #
d780b39f |
| 05-Jun-2022 |
Antonio Huete Jimenez <tuxillo@quantumachine.net> |
libc: Add malloc_usable_size(3) support.
Submitted-by: @dillon
|
|
Revision tags: v6.2.2, v6.2.1, v6.3.0 |
|
| #
7307c476 |
| 23-Dec-2021 |
Sascha Wildner <saw@online.de> |
libc: Add a clearenv() function.
Seems useful for dports, as pointed out by zrj.
Taken-from: FreeBSD
|
|
Revision tags: v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3 |
|
| #
4beeb8ba |
| 13-Nov-2019 |
Sascha Wildner <saw@online.de> |
libc: Remove _nmalloc_thr_init from Symbol.map again.
My fault, it is now internal only.
Pointed-out-by: dillon
|
| #
1a43169d |
| 12-Nov-2019 |
Sascha Wildner <saw@online.de> |
libc: Fix up two Symbol.map's a bit.
* Keep _nmalloc_thr_init, it didn't go away.
* Put _libc_thr_init into DF508.0.
* Reindent like everywhere else.
|
| #
721505de |
| 12-Nov-2019 |
Matthew Dillon <dillon@apollo.backplane.com> |
libc - Implement sigblockall() and sigunblockall()
* Signal safety is becoming a defacto requirement for most of libc and pthreads. In particular, the memory allocator. Given the chances of te
libc - Implement sigblockall() and sigunblockall()
* Signal safety is becoming a defacto requirement for most of libc and pthreads. In particular, the memory allocator. Given the chances of teaching tens of thousands of programmers about signal safety, and just making it work in libc and pthreads, only one of these two possibilities is actually realizable.
In particular, high-level languages have become so complex, and some applications (chrome, firefox, etc) have become so complex, that the code is regularly tripping over signal safety issues.
However, implementing signal safety with current mechanisms is extremely expensive due to the need for multiple system calls. To whit, DragonFlyBSD now has a mechanism that does not require system calls in the critical path.
* Implement sigblockall() and sigunblockall(). These functions leverage the new /dev/lpmap per-thread shared page mechanism to provide a way to temporary block the dispatch of all maskable signals without having to make any system calls.
These are extremely fast routines.
- Reentrant / Recursable
- Temporarily blocks any dispatch of a maskable asynchronous signal to the calling thread. Other threads are not affected... this is a per-thread mechanism.
- The last sigunblockall() will immediately dispatch any blocked signals.
- The normal signal mask is not affected by these routines.
- Does not block signals caused by synchronous traps.
- The current recursion count is retained on [v]fork() to ease coding and to also allow signals to be temporarily blocked across a fork until the child process is ready to deal with them, if desired.
* Implement signal safety for most of pthreads. All temporary internal mutexes are now wrapped with sigblockall() and sigunblockall().
* Implement signal safety for the malloc subsystem. All functions are wrawpped with sigblockall() and sigunblockall().
These implementations make lang/mono and lang/rust far more reliable than they were before. Where 9 out of 10 builds used to fail, now they succeed.
show more ...
|
| #
086b156c |
| 09-Sep-2019 |
Sascha Wildner <saw@online.de> |
libc: Add gets_s(3) from ISO/IEC TR 24731-1.
For more information see the Technical Report (drafts of it are on the web) or e.g. http://en.cppreference.com/w/c/io/gets.
This also adds set_constrain
libc: Add gets_s(3) from ISO/IEC TR 24731-1.
For more information see the Technical Report (drafts of it are on the web) or e.g. http://en.cppreference.com/w/c/io/gets.
This also adds set_constraint_handler_s(), abort_handler_s(), ignore_handler_s(), the RSIZE_MAX define, and the types rsize_t, errno_t and constraint_handler_t.
Visibility is restricted to our default environment by default, but can be enabled by defining __STDC_WANT_LIB_EXT1__ to 1, per the TR.
While here, put gets()'s documentation into a manual page of its own with a note that it is depracated. We'll likely remove it from libc too at a later point in time.
Requested-by: zrj Taken-from: FreeBSD (with some adjustments)
show more ...
|
|
Revision tags: v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3 |
|
| #
d60b58c8 |
| 04-May-2019 |
Sascha Wildner <saw@online.de> |
libc: Add posix_fadvise(), for now empty except for some error checking.
This should help some dports.
From POSIX' point of view this is sufficient because it is not required that the implementatio
libc: Add posix_fadvise(), for now empty except for some error checking.
This should help some dports.
From POSIX' point of view this is sufficient because it is not required that the implementation does anything with the passed information.
The manual page was taken from FreeBSD.
show more ...
|
|
Revision tags: v5.4.2 |
|
| #
64c3fdb4 |
| 09-Apr-2019 |
zrj <rimvydas.jasinskas@gmail.com> |
libc/stdlib: Add recallocarray() function.
It is useful function for security related features, like resizing memory objects containing sensitive data to avoid information leaking. Update manpage.
libc/stdlib: Add recallocarray() function.
It is useful function for security related features, like resizing memory objects containing sensitive data to avoid information leaking. Update manpage.
Taken-from: OpenBSD
show more ...
|
| #
78297c9b |
| 09-Apr-2019 |
zrj <rimvydas.jasinskas@gmail.com> |
libc/stdlib: Add freezero() function.
It is useful function for security related features. Internally uses explicit_bzero(3) before freeing the pointers. It could be implemented in nmalloc.c for ext
libc/stdlib: Add freezero() function.
It is useful function for security related features. Internally uses explicit_bzero(3) before freeing the pointers. It could be implemented in nmalloc.c for extra benefits. Update the manpage.
Taken-from: OpenBSD
show more ...
|
| #
d3a54aee |
| 03-Apr-2019 |
zrj <rimvydas.jasinskas@gmail.com> |
libc/stdlib: Refactor aligned_alloc().
* Lift the restriction from posix_memalign() that alignment should be more or equal to sizeof(void *). * Make aligned_alloc() a weak symbol. * Adjust
libc/stdlib: Refactor aligned_alloc().
* Lift the restriction from posix_memalign() that alignment should be more or equal to sizeof(void *). * Make aligned_alloc() a weak symbol. * Adjust the manpage.
show more ...
|
| #
284b4eb2 |
| 01-Apr-2019 |
zrj <rimvydas.jasinskas@gmail.com> |
libc/stdlib: Add __cxa_thread_atexit_impl() hook.
The __cxa_thread_atexit_impl() helper is needed for mainly c++ runtime libraries to support destructors for thread local storage using LIFO. The _th
libc/stdlib: Add __cxa_thread_atexit_impl() hook.
The __cxa_thread_atexit_impl() helper is needed for mainly c++ runtime libraries to support destructors for thread local storage using LIFO. The _thread_finalize() is implemented based on OpenBSD variant with few exceptions: less restrictive destructors calling scheme and c++ runtime preserves implementation details how it orders (or even uses) this libc addition. Based on other BSDs and libsdc++/libc++ code this is least intrusive method to have pthread_exit() hooks in libc runtime. By the looks, in base system nothing was using libstdc++ internal version.
While there, enable __cxa_thread_atexit_impl() usage in gcc80 libstdc++.
show more ...
|
| #
66932323 |
| 12-Jan-2019 |
Sascha Wildner <saw@online.de> |
libc: Add reallocarray() from OpenBSD.
It is useful for dhcpcd, mandoc and libssh. Also some dports might pick it up. A few other dports have workarounds which, once reallocarray() is in release too
libc: Add reallocarray() from OpenBSD.
It is useful for dhcpcd, mandoc and libssh. Also some dports might pick it up. A few other dports have workarounds which, once reallocarray() is in release too, can be removed.
Taken-from: OpenBSD (manual page from FreeBSD) Pointed-out-by: aly
show more ...
|
|
Revision tags: v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1 |
|
| #
e6975a4e |
| 05-May-2018 |
Sascha Wildner <saw@online.de> |
libc: Add strsuftoll{,x}()
In preparation for makefs(8).
Various dports (such as ftp/tnftpd) will also pick it up.
Taken-from: NetBSD Dports-testing: zrj
|
|
Revision tags: v5.2.0, v5.3.0, v5.2.0rc, v5.0.2 |
|
| #
e2caf0e7 |
| 08-Nov-2017 |
Matthew Dillon <dillon@apollo.backplane.com> |
libc and pthreads - Fix atfork issues with nmalloc, update dmalloc
* Implement atfork handling for nmalloc. As part of this, refactor some of nmalloc.
* Remove ZERO_LENGTH_PTR from nmalloc. Ins
libc and pthreads - Fix atfork issues with nmalloc, update dmalloc
* Implement atfork handling for nmalloc. As part of this, refactor some of nmalloc.
* Remove ZERO_LENGTH_PTR from nmalloc. Instead, force 0-byte allocations to allocate 1 byte. The standard requires unique pointers to be returned.
* For now go back to a single depot lock instead of a per-zone lock. It is unclear whether multi-threaded performance will suffer or not, but its the only way to implement atfork handling.
* Implement proper atfork interlocks for nmalloc via pthreads to avoid corruption when heavily threaded programs call fork().
* Bring dmalloc up to date in various ways, including properly implementing a minimum 16-byte alignment for allocations >= 16 bytes, and atfork handling. Also use a global depot lock for the same reason we use it in nmalloc, and implement a front-end magazine shortcut for any allocations <= 2MB.
Reported-by: mneumann
show more ...
|
|
Revision tags: v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1, v4.8.1 |
|
| #
69baab3b |
| 09-Jul-2017 |
Imre Vadász <imre@vdsz.com> |
Define __* symbols for the malloc(3) functions to make wrapping easier.
This should match what FreeBSD and other systems do. Where the __* variants always refer to the libc function, but the actual
Define __* symbols for the malloc(3) functions to make wrapping easier.
This should match what FreeBSD and other systems do. Where the __* variants always refer to the libc function, but the actual malloc(), free() etc. symbols can be overrided by a malloc wrapper.
show more ...
|
|
Revision tags: v4.8.0, v4.6.2, v4.9.0, v4.8.0rc, v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0, v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc |
|
| #
d66febeb |
| 08-Sep-2015 |
John Marino <draco@marino.st> |
libc symbols bound to rtld must have matching version numbers
Reset the version of symbols bound to rtld back to DF306.0 version. While here, remove definition for __progname and environ which canno
libc symbols bound to rtld must have matching version numbers
Reset the version of symbols bound to rtld back to DF306.0 version. While here, remove definition for __progname and environ which cannot be versioned.
show more ...
|
| #
c87aec90 |
| 06-Sep-2015 |
John Marino <draco@marino.st> |
Fix libc symbol maps after build test
The following modifications (typos, bugs, missing symbols, extra symbols) allows buildworld to complete with libc versioning turned on (a first). After perform
Fix libc symbol maps after build test
The following modifications (typos, bugs, missing symbols, extra symbols) allows buildworld to complete with libc versioning turned on (a first). After performance verification via dports bulk build, the versioning will be activated.
show more ...
|
| #
b3a01159 |
| 05-Sep-2015 |
John Marino <draco@marino.st> |
More libc Symbol map refinements (nearing completion now)
|
| #
f5331ec2 |
| 02-Sep-2015 |
John Marino <draco@marino.st> |
Update some more symbols maps for libc
This continues the work towards versioning libc. I found that a wchar function, open_wmemstream(), had a prototype but was not implemented on DragonFly (but i
Update some more symbols maps for libc
This continues the work towards versioning libc. I found that a wchar function, open_wmemstream(), had a prototype but was not implemented on DragonFly (but it is on FreeBSD) so I filtered it out with #if 0 block.
show more ...
|
|
Revision tags: v4.2.4, v4.3.1, v4.2.3, v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc, v4.0.5, v4.0.4, v4.0.3, v4.0.2 |
|
| #
f081f25c |
| 02-Dec-2014 |
John Marino <draco@marino.st> |
libc versioning: Add missing symbols, put rest in DFprivate_1_0
This builds, like the previous attempt, but all executables that pull in libc segfault when errno is accessed, so libc versioning is n
libc versioning: Add missing symbols, put rest in DFprivate_1_0
This builds, like the previous attempt, but all executables that pull in libc segfault when errno is accessed, so libc versioning is not working.
show more ...
|
| #
6063a561 |
| 01-Dec-2014 |
John Marino <draco@marino.st> |
libc version maps: Update inactive symbol maps
This is a work in progress, but it is encouraging that a full buildworld completed with a versioned libc. This will not be activated until it is verif
libc version maps: Update inactive symbol maps
This is a work in progress, but it is encouraging that a full buildworld completed with a versioned libc. This will not be activated until it is verified with a complete bulk run of packages.
show more ...
|
|
Revision tags: v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0, v3.8.2, v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1, v3.6.0, v3.7.1, v3.6.0rc, v3.4.3 |
|
| #
df5c926f |
| 16-Jun-2013 |
John Marino <draco@marino.st> |
libc: Add symbol versions (not active)
|