|
Revision tags: release/12.4.0, release/13.1.0, release/12.3.0, release/13.0.0, release/12.2.0 |
|
| #
3e7224df |
| 17-Oct-2020 |
Xin LI <[email protected]> |
Implement ptsname_r.
MFC after: 2 weeks PR: 250062 Reviewed by: jilles, 0mp, Ray <i maskray me> Differential Revision: https://reviews.freebsd.org/D26647
|
|
Revision tags: release/11.4.0 |
|
| #
0d2fabfc |
| 20-Jan-2020 |
Edward Tomasz Napierala <[email protected]> |
Add qsort_s(3). Apart from the constraints, it also makes it easier to port software written for Linux variant of qsort_r(3).
Reviewed by: kib, arichardson MFC after: 2 weeks Relnotes: yes Sponsore
Add qsort_s(3). Apart from the constraints, it also makes it easier to port software written for Linux variant of qsort_r(3).
Reviewed by: kib, arichardson MFC after: 2 weeks Relnotes: yes Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D23174
show more ...
|
| #
c62ff280 |
| 14-Dec-2019 |
Conrad Meyer <[email protected]> |
Deprecate sranddev(3) API
It serves no useful purpose and wasn't as popular as its equally meritless cousin, srandomdev(3).
Setting aside the problems with rand(3) in general, the problem with this
Deprecate sranddev(3) API
It serves no useful purpose and wasn't as popular as its equally meritless cousin, srandomdev(3).
Setting aside the problems with rand(3) in general, the problem with this interface is that the seed isn't shared with the caller (other than by attacking the output of the generator, which is trivial, but not a hallmark of pleasant API design). The (arguable) utility of rand(3) or random(3) is as a semi-fast simulation generator which produces consistent results from a given seed. These are mutually at odd. Furthermore, sometimes people got the mistaken impression that a high quality random seed meant a weak generator like rand(3) or random(3) could be used for things like cryptographic key generation. This is absolutely not so.
The API was never part of a standard and was not widely used in tree. Existing in-tree uses have all been removed.
Possible replacement in out of tree codebases:
char buf[3]; time_t t;
time(t); strftime(buf, sizeof(buf), "%S", gmtime(&t)); srand(atoi(buf));
Relnotes: yes
show more ...
|
|
Revision tags: release/12.1.0, release/11.3.0, release/12.0.0 |
|
| #
540cc17f |
| 19-Aug-2018 |
Konstantin Belousov <[email protected]> |
Provide set_constraint_handler_s(3) man page.
Mention abort_handler_s(3) and ignore_handler_s(3), provide cross-reference from memset(3).
Submitted by: Yuri Pankov <[email protected]> MFC after: 3
Provide set_constraint_handler_s(3) man page.
Mention abort_handler_s(3) and ignore_handler_s(3), provide cross-reference from memset(3).
Submitted by: Yuri Pankov <[email protected]> MFC after: 3 days Differential revision: https://reviews.freebsd.org/D16797
show more ...
|
| #
d3ee4763 |
| 19-Aug-2018 |
Konstantin Belousov <[email protected]> |
Use tab for indent.
Submitted by: Yuri Pankov <[email protected]> MFC after: 3 days
|
|
Revision tags: release/11.2.0 |
|
| #
5fe6063d |
| 31-Jan-2018 |
Warner Losh <[email protected]> |
Move strtold wrapper from strtol.c to its own strtold.c. This code was written by theraven@ (David Chisnall) entirely, there's no original Berkeley code left here so just copy his copyright over.
|
|
Revision tags: release/10.4.0, release/11.1.0 |
|
| #
9851b340 |
| 30-Mar-2017 |
Konstantin Belousov <[email protected]> |
Implement the memset_s(3) function as specified by the C11 ISO/IEC 9899:2011 Appendix K 3.7.4.1.
Other needed supporting types, defines and constraint_handler infrastructure is added as specified in
Implement the memset_s(3) function as specified by the C11 ISO/IEC 9899:2011 Appendix K 3.7.4.1.
Other needed supporting types, defines and constraint_handler infrastructure is added as specified in the C11 spec.
Submitted by: Tom Rix <[email protected]> Sponsored by: Juniper Networks Discussed with: ed MFC after: 3 weeks Differential revision: https://reviews.freebsd.org/D9903 Differential revision: https://reviews.freebsd.org/D10161
show more ...
|
| #
b7c7684a |
| 07-Jan-2017 |
Konstantin Belousov <[email protected]> |
Export __cxa_thread_atexit_impl as an alias for __cxa_thread_atexit.
libstdc++ before gcc r244057 expected that libc provided __cxa_thread_atexit_impl, and libstdc++ implemented __cxa_thread_atexit,
Export __cxa_thread_atexit_impl as an alias for __cxa_thread_atexit.
libstdc++ before gcc r244057 expected that libc provided __cxa_thread_atexit_impl, and libstdc++ implemented __cxa_thread_atexit, by forwarding the calls to _impl. Mentioned gcc revision checks for __cxa_thread_atexit in libc and does not provide the symbol from libstdc++ if found.
This change helps older gcc, in particular, all released versions which implement thread_local, by consolidating the implementation into libc. For that versions, if configured with the current libc, the __cxa_thread_atexit is exported from libstdc++ as a trivial wrapper around libc::__cxa_thread_atexit_impl.
The __cxa_thread_atexit implementation is put into separate source file to allow for static linking with older libstdc++.a.
gcc bugzilla: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78968 Reported by: Hannes Hauswedell <[email protected]> PR: 215709 Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
show more ...
|
|
Revision tags: release/11.0.1, release/11.0.0 |
|
| #
cb1cb6a2 |
| 16-Sep-2016 |
Marcel Moolenaar <[email protected]> |
When MAKEOBJDIRPREFIX points to a case-insensitive file system, the build can break when different source files create the same object files (case-insensitivity speaking). This is the case for _Exit
When MAKEOBJDIRPREFIX points to a case-insensitive file system, the build can break when different source files create the same object files (case-insensitivity speaking). This is the case for _Exit.c and _exit.s. Compile _Exit.c as C99_Exit.c
Reviewed by: sjg@ MFC after: completion Sponsored by: Bracket Computing Differential Revision: https://reviews.freebsd.org/D7893
show more ...
|
| #
b585cd3e |
| 06-Aug-2016 |
Konstantin Belousov <[email protected]> |
Add __cxa_thread_atexit(3) API implementation.
This is the backing feature to implement C++11 thread storage duration specified by the thread_local keyword. A destructor for given thread-local obje
Add __cxa_thread_atexit(3) API implementation.
This is the backing feature to implement C++11 thread storage duration specified by the thread_local keyword. A destructor for given thread-local object is registered to be executed at the thread termination time using __cxa_thread_atexit(). Libc calls the __cxa_thread_calls_dtors() during exit(3), before finalizers and atexit functions, and libthr calls the function at the thread termination time, after the stack unwinding and thread-specific key destruction.
There are several uncertainties in the API which lacks a formal specification. Among them: - is it allowed to register destructors during destructing; we allow, but limiting the nesting level. If too many iterations detected, a diagnostic is issued to stderr and thread forcibly terminates for now. - how to handle destructors which belong to an unloading dso; for now, we ignore destructor calls for such entries, and issue a diagnostic. Linux does prevent dso unload until all threads with destructors from the dso terminated. It is supposed that the diagnostics allow to detect real-world applications relying on the above details and possibly adjust our implementation. Right now the choices were to provide the slim API (but that rarely stands the practice test).
Tests are added to check generic functionality and to specify some of the above implementation choices.
Submitted by: Mahdi Mokhtari <mokhi64_gmail.com> Reviewed by: theraven Discussed with: dim (detection of -std=c++11 supoort for tests) Sponsored by: The FreeBSD Foundation (my involvement) MFC after: 2 weeks Differential revisions: https://reviews.freebsd.org/D7224, https://reviews.freebsd.org/D7427
show more ...
|
|
Revision tags: release/10.3.0 |
|
| #
2747eff1 |
| 27-Dec-2015 |
Ed Schouten <[email protected]> |
Replace implementation of hsearch() by one that scales.
Traditionally the hcreate() function creates a hash table that uses chaining, using a fixed user-provided size. The problem with this approach
Replace implementation of hsearch() by one that scales.
Traditionally the hcreate() function creates a hash table that uses chaining, using a fixed user-provided size. The problem with this approach is that this often either wastes memory (table too big) or yields bad performance (table too small). For applications it may not always be easy to estimate the right hash table size. A fixed number only increases performance compared to a linked list by a constant factor.
This problem can be solved easily by dynamically resizing the hash table. If the size of the hash table is at least doubled, this has no negative on the running time complexity. If a dynamically sized hash table is used, we can also switch to using open addressing instead of chaining, which has the advantage of just using a single allocation for the entire table, instead of allocating many small objects.
Finally, a problem with the existing implementation is that its deterministic algorithm for hashing makes it possible to come up with fixed patterns to trigger an excessive number of collisions. We can easily solve this by using FNV-1a as a hashing algorithm in combination with a randomly generated offset basis.
Measurements have shown that this implementation is about 20-25% faster than the existing implementation (even if the existing implementation is given an excessive number of buckets). Though it allocates more memory through malloc() than the old implementation (between 4-8 pointers per used entry instead of 3), process memory use is similar to the old implementation as if the estimated size was underestimated by a factor 10. This is due to the fact that malloc() needs to perform less bookkeeping.
Reviewed by: jilles, pfg Obtained from: https://github.com/NuxiNL/cloudlibc Differential Revision: https://reviews.freebsd.org/D4644
show more ...
|
|
Revision tags: release/10.2.0 |
|
| #
450dfafb |
| 01-May-2015 |
Baptiste Daroussin <[email protected]> |
Import reallocarray(3) from OpenBSD
Add a manpage for it, assign the copyright to the OpenBSD project on it since it is mostly copy/paste from OpenBSD manpage. style(9) fixes
Differential Revision:
Import reallocarray(3) from OpenBSD
Add a manpage for it, assign the copyright to the OpenBSD project on it since it is mostly copy/paste from OpenBSD manpage. style(9) fixes
Differential Revision: https://reviews.freebsd.org/D2420 Reviewed by: kib
show more ...
|
|
Revision tags: release/10.1.0 |
|
| #
9823a90c |
| 21-Jul-2014 |
Pedro F. Giffuni <[email protected]> |
Add re-entrant versions of the hash functions based on the GNU api.
While testing this I found a conformance issue in hdestroy() that will be fixed in a subsequent commit.
Obtained from: NetBSD (hc
Add re-entrant versions of the hash functions based on the GNU api.
While testing this I found a conformance issue in hdestroy() that will be fixed in a subsequent commit.
Obtained from: NetBSD (hcreate.c, CVS Rev. 1.7)
show more ...
|
|
Revision tags: release/9.3.0 |
|
| #
46cdc140 |
| 02-Apr-2014 |
David Chisnall <[email protected]> |
Add support for some block functions that come from OS X. These are intended to build with any C compiler.
Reviewed by: pfg MFC after: 3 weeks
|
| #
8876613d |
| 04-Mar-2014 |
Marcel Moolenaar <[email protected]> |
Replace use of ${.CURDIR} by ${LIBC_SRCTOP} and define ${LIBC_SRCTOP} if not already defined. This allows building libc from outside of lib/libc using a reach-over makefile.
A typical use-case is to
Replace use of ${.CURDIR} by ${LIBC_SRCTOP} and define ${LIBC_SRCTOP} if not already defined. This allows building libc from outside of lib/libc using a reach-over makefile.
A typical use-case is to build a standard ILP32 version and a COMPAT32 version in a single iteration by building the COMPAT32 version using a reach-over makefile.
Obtained from: Juniper Networks, Inc.
show more ...
|
|
Revision tags: release/10.0.0, release/9.2.0, release/8.4.0, release/9.1.0 |
|
| #
3f19323a |
| 25-Jun-2012 |
Isabell Long <[email protected]> |
Add more locale-specific functions to the relevant man pages and Makefiles: - libc/stdtime/strftime.3 - libc/stdtime/strptime.3 - libc/stdlib/strfmon.3
Reviewed by: theraven Approved by: gabor (ment
Add more locale-specific functions to the relevant man pages and Makefiles: - libc/stdtime/strftime.3 - libc/stdtime/strptime.3 - libc/stdlib/strfmon.3
Reviewed by: theraven Approved by: gabor (mentor)
show more ...
|
| #
a4bd5210 |
| 17-Apr-2012 |
Jason Evans <[email protected]> |
Import jemalloc 9ef7f5dc34ff02f50d401e41c8d9a4a928e7c2aa (dev branch, prior to 3.0.0 release) as contrib/jemalloc, and integrate it into libc. The code being imported by this commit diverged from lib
Import jemalloc 9ef7f5dc34ff02f50d401e41c8d9a4a928e7c2aa (dev branch, prior to 3.0.0 release) as contrib/jemalloc, and integrate it into libc. The code being imported by this commit diverged from lib/libc/stdlib/malloc.c in March 2010, which means that a portion of the jemalloc 1.0.0 ChangeLog entries are relevant, as are the entries for all subsequent releases.
show more ...
|
|
Revision tags: release/8.3.0_cvs, release/8.3.0 |
|
| #
9e16bab4 |
| 09-Jan-2012 |
Ed Schouten <[email protected]> |
Add aligned_alloc(3).
The C11 folks reinvented the wheel by introducing an aligned version of malloc(3) called aligned_alloc(3), instead of posix_memalign(3). Instead of returning the allocation by
Add aligned_alloc(3).
The C11 folks reinvented the wheel by introducing an aligned version of malloc(3) called aligned_alloc(3), instead of posix_memalign(3). Instead of returning the allocation by reference, it returns the address, just like malloc(3).
Reviewed by: jasone@
show more ...
|
|
Revision tags: release/9.0.0 |
|
| #
0a31efe0 |
| 07-Dec-2011 |
David Chisnall <[email protected]> |
Implement quick_exit() / at_quick_exit() from C++11 / C1x. Also add a __noreturn macro and modify the other exiting functions to use it.
The __noreturn macro, unlike __dead2, must be used BEFORE th
Implement quick_exit() / at_quick_exit() from C++11 / C1x. Also add a __noreturn macro and modify the other exiting functions to use it.
The __noreturn macro, unlike __dead2, must be used BEFORE the function. This is in line with the C and C++ specifications that place _Noreturn (c1x) and [[noreturn]] (C++11) in front of the functions. As with __dead2, this macro falls back to using the GCC attribute.
Unfortunately, clang currently sets the same value for the C version macro in C99 and C1x modes, so these functions are hidden by default. At some point before 10.0, I need to go through the headers and clean up the C1x / C++11 visibility.
Reviewed by: brooks (mentor)
show more ...
|
| #
8bd9dc08 |
| 18-Jul-2011 |
Dimitry Andric <[email protected]> |
Fix building of 32-bit compat libraries on amd64 with clang, and using -g, by reverting r219139. The LLVM PR referenced in that revision was fixed in the mean time, and we imported a clang snapshot
Fix building of 32-bit compat libraries on amd64 with clang, and using -g, by reverting r219139. The LLVM PR referenced in that revision was fixed in the mean time, and we imported a clang snapshot soon afterwards, so the temporary workaround of disabling clang's integrated assembler is no longer needed.
In this particular case, using e.g. DEBUG_FLAGS=-g causes clang to output certain directives into assembly that our version of GNU as chokes on.
Reported by: dougb Approved by: re (kib)
show more ...
|
| #
a8d044f3 |
| 17-Mar-2011 |
Marcel Moolenaar <[email protected]> |
Don't add sigwait.c to MISRCS here when sigwait.c lives under ../sys and it's already added to SRCS there.
|
| #
6882fd36 |
| 01-Mar-2011 |
Dimitry Andric <[email protected]> |
Put in a temporary workaround for ctfmerge hanging on processing kernel.debug (or possibly other files), when WITH_CTF is active.
This is caused by a bug in clang's integrated assembler, causing mal
Put in a temporary workaround for ctfmerge hanging on processing kernel.debug (or possibly other files), when WITH_CTF is active.
This is caused by a bug in clang's integrated assembler, causing malloc to sometimes hang during initialization in statically linked executables that use threading, such as the copy of ctfmerge that is built during the bootstrap stage of buildworld. The bug has been submitted upstream:
http://llvm.org/bugs/show_bug.cgi?id=9352
Note that you might have to rebuild and install libc first, to get your kernel build to finish, because the ctfmerge binary built during bootstrap is linked with your base system's copy of libc.a, which might already contain a bad copy of malloc.o.
show more ...
|
|
Revision tags: release/7.4.0_cvs, release/8.2.0_cvs, release/7.4.0, release/8.2.0 |
|
| #
83c9e089 |
| 10-Sep-2010 |
David Xu <[email protected]> |
Because POSIX does not allow EINTR to be returned from sigwait(), add a wrapper for it in libc and rework the code in libthr, the system call still can return EINTR, we keep this feature.
Discussed
Because POSIX does not allow EINTR to be returned from sigwait(), add a wrapper for it in libc and rework the code in libthr, the system call still can return EINTR, we keep this feature.
Discussed on: thread Reviewed by: jilles
show more ...
|
| #
2c0959ae |
| 24-Aug-2010 |
Warner Losh <[email protected]> |
Powerpc is special here. powerpc and powerpc64 use different ABIs, so their implementations aren't in the same files. Introduce LIBC_ARCH and use that in preference to MACHINE_CPUARCH. Tested by a
Powerpc is special here. powerpc and powerpc64 use different ABIs, so their implementations aren't in the same files. Introduce LIBC_ARCH and use that in preference to MACHINE_CPUARCH. Tested by amd64 and powerpc64 builds (thanks nathanw@)
show more ...
|
| #
25faff34 |
| 23-Aug-2010 |
Warner Losh <[email protected]> |
MFtbemd:
Prefer MACHNE_CPUARCH to MACHINE_ARCH in most contexts where you want to test of all the CPUs of a given family conform.
|