aboutsummaryrefslogtreecommitdiff
path: root/include/stdlib.h
AgeCommit message (Collapse)AuthorFilesLines
2023-10-31stdlib: Remove use of mergesort on qsort (BZ 21719)Adhemerval Zanella1-2/+0
This patch removes the mergesort optimization on qsort implementation and uses the introsort instead. The mergesort implementation has some issues: - It is as-safe only for certain types sizes (if total size is less than 1 KB with large element sizes also forcing memory allocation) which contradicts the function documentation. Although not required by the C standard, it is preferable and doable to have an O(1) space implementation. - The malloc for certain element size and element number adds arbitrary latency (might even be worse if malloc is interposed). - To avoid trigger swap from memory allocation the implementation relies on system information that might be virtualized (for instance VMs with overcommit memory) which might lead to potentially use of swap even if system advertise more memory than actually has. The check also have the downside of issuing syscalls where none is expected (although only once per execution). - The mergesort is suboptimal on an already sorted array (BZ#21719). The introsort implementation is already optimized to use constant extra space (due to the limit of total number of elements from maximum VM size) and thus can be used to avoid the malloc usage issues. Resulting performance is slower due the usage of qsort, specially in the worst-case scenario (partialy or sorted arrays) and due the fact mergesort uses a slight improved swap operations. This change also renders the BZ#21719 fix unrequired (since it is meant to fix the sorted input performance degradation for mergesort). The manual is also updated to indicate the function is now async-cancel safe. Checked on x86_64-linux-gnu. Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
2023-09-04__call_tls_dtors: Use call_function_static_weakSamuel Thibault1-5/+1
2023-08-03chk: Add and fix hidden builtin definitions for *_chkSamuel Thibault1-0/+2
Otherwise on gnu-i686 there are unwanted PLT entries in libc.so when fortification is enabled. Tested for i686-gnu, x86_64-gnu, i686-linux-gnu and x86_64-linux-gnu
2023-02-16C2x strtol binary constant handlingJoseph Myers1-2/+44
C2x adds binary integer constants starting with 0b or 0B, and supports those constants in strtol-family functions when the base passed is 0 or 2. Implement that strtol support for glibc. As discussed at <https://sourceware.org/pipermail/libc-alpha/2020-December/120414.html>, this is incompatible with previous C standard versions, in that such an input string starting with 0b or 0B was previously required to be parsed as 0 (with the rest of the string unprocessed). Thus, as proposed there, this patch adds 20 new __isoc23_* functions with appropriate header redirection support. This patch does *not* do anything about scanf %i (which will need 12 new functions per long double variant, so 12, 24 or 36 depending on the glibc configuration), instead leaving that for a future patch. The function names would remain as __isoc23_* even if C2x ends up published in 2024 rather than 2023. Making this change leads to the question of what should happen to internal uses of these functions in glibc and its tests. The header redirection (which applies for _GNU_SOURCE or any other feature test macros enabling C2x features) has the effect of redirecting internal uses but without those uses then ending up at a hidden alias (see the comment in include/stdio.h about interaction with libc_hidden_proto). It seems desirable for the default for internal uses to be the same versions used by normal code using _GNU_SOURCE, so rather than doing anything to disable that redirection, similar macro definitions to those in include/stdio.h are added to the include/ headers for the new functions. Given that the default for uses in glibc is for the redirections to apply, the next question is whether the C2x semantics are correct for all those uses. Uses with the base fixed to 10, 16 or any other value other than 0 or 2 can be ignored. I think this leaves the following internal uses to consider (an important consideration for review of this patch will be both whether this list is complete and whether my conclusions on all entries in it are correct): benchtests/bench-malloc-simple.c benchtests/bench-string.h elf/sotruss-lib.c math/libm-test-support.c nptl/perf.c nscd/nscd_conf.c nss/nss_files/files-parse.c posix/tst-fnmatch.c posix/wordexp.c resolv/inet_addr.c rt/tst-mqueue7.c soft-fp/testit.c stdlib/fmtmsg.c support/support_test_main.c support/test-container.c sysdeps/pthread/tst-mutex10.c I think all of these places are OK with the new semantics, except for resolv/inet_addr.c, where the POSIX semantics of inet_addr do not allow for binary constants; thus, I changed that file (to use __strtoul_internal, whose semantics are unchanged) and added a test for this case. In the case of posix/wordexp.c I think accepting binary constants is OK since POSIX explicitly allows additional forms of shell arithmetic expressions, and in stdlib/fmtmsg.c SEV_LEVEL is not in POSIX so again I think accepting binary constants is OK. Functions such as __strtol_internal, which are only exported for compatibility with old binaries from when those were used in inline functions in headers, have unchanged semantics; the __*_l_internal versions (purely internal to libc and not exported) have a new argument to specify whether to accept binary constants. As well as for the standard functions, the header redirection also applies to the *_l versions (GNU extensions), and to legacy functions such as strtoq, to avoid confusing inconsistency (the *q functions redirect to __isoc23_*ll rather than needing their own __isoc23_* entry points). For the functions that are only declared with _GNU_SOURCE, this means the old versions are no longer available for normal user programs at all. An internal __GLIBC_USE_C2X_STRTOL macro is used to control the redirections in the headers, and cases in glibc that wish to avoid the redirections - the function implementations themselves and the tests of the old versions of the GNU functions - then undefine and redefine that macro to allow the old versions to be accessed. (There would of course be greater complexity should we wish to make any of the old versions into compat symbols / avoid them being defined at all for new glibc ABIs.) strtol_l.c has some similarity to strtol.c in gnulib, but has already diverged some way (and isn't listed at all at https://sourceware.org/glibc/wiki/SharedSourceFiles unlike strtoll.c and strtoul.c); I haven't made any attempts at gnulib compatibility in the changes to that file. I note incidentally that inttypes.h and wchar.h are missing the __nonnull present on declarations of this family of functions in stdlib.h; I didn't make any changes in that regard for the new declarations added.
2022-07-27arc4random: simplify design for better safetyJason A. Donenfeld1-3/+0
Rather than buffering 16 MiB of entropy in userspace (by way of chacha20), simply call getrandom() every time. This approach is doubtlessly slower, for now, but trying to prematurely optimize arc4random appears to be leading toward all sorts of nasty properties and gotchas. Instead, this patch takes a much more conservative approach. The interface is added as a basic loop wrapper around getrandom(), and then later, the kernel and libc together can work together on optimizing that. This prevents numerous issues in which userspace is unaware of when it really must throw away its buffer, since we avoid buffering all together. Future improvements may include userspace learning more from the kernel about when to do that, which might make these sorts of chacha20-based optimizations more possible. The current heuristic of 16 MiB is meaningless garbage that doesn't correspond to anything the kernel might know about. So for now, let's just do something conservative that we know is correct and won't lead to cryptographic issues for users of this function. This patch might be considered along the lines of, "optimization is the root of all evil," in that the much more complex implementation it replaces moves too fast without considering security implications, whereas the incremental approach done here is a much safer way of going about things. Once this lands, we can take our time in optimizing this properly using new interplay between the kernel and userspace. getrandom(0) is used, since that's the one that ensures the bytes returned are cryptographically secure. But on systems without it, we fallback to using /dev/urandom. This is unfortunate because it means opening a file descriptor, but there's not much of a choice. Secondly, as part of the fallback, in order to get more or less the same properties of getrandom(0), we poll on /dev/random, and if the poll succeeds at least once, then we assume the RNG is initialized. This is a rough approximation, as the ancient "non-blocking pool" initialized after the "blocking pool", not before, and it may not port back to all ancient kernels, though it does to all kernels supported by glibc (≥3.2), so generally it's the best approximation we can do. The motivation for including arc4random, in the first place, is to have source-level compatibility with existing code. That means this patch doesn't attempt to litigate the interface itself. It does, however, choose a conservative approach for implementing it. Cc: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> Cc: Florian Weimer <fweimer@redhat.com> Cc: Cristian Rodríguez <crrodriguez@opensuse.org> Cc: Paul Eggert <eggert@cs.ucla.edu> Cc: Mark Harris <mark.hsj@gmail.com> Cc: Eric Biggers <ebiggers@kernel.org> Cc: linux-crypto@vger.kernel.org Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2022-07-22stdlib: Add arc4random, arc4random_buf, and arc4random_uniform (BZ #4417)Adhemerval Zanella Netto1-0/+12
The implementation is based on scalar Chacha20 with per-thread cache. It uses getrandom or /dev/urandom as fallback to get the initial entropy, and reseeds the internal state on every 16MB of consumed buffer. To improve performance and lower memory consumption the per-thread cache is allocated lazily on first arc4random functions call, and if the memory allocation fails getentropy or /dev/urandom is used as fallback. The cache is also cleared on thread exit iff it was initialized (so if arc4random is not called it is not touched). Although it is lock-free, arc4random is still not async-signal-safe (the per thread state is not updated atomically). The ChaCha20 implementation is based on RFC8439 [1], omitting the final XOR of the keystream with the plaintext because the plaintext is a stream of zeros. This strategy is similar to what OpenBSD arc4random does. The arc4random_uniform is based on previous work by Florian Weimer, where the algorithm is based on Jérémie Lumbroso paper Optimal Discrete Uniform Generation from Coin Flips, and Applications (2013) [2], who credits Donald E. Knuth and Andrew C. Yao, The complexity of nonuniform random number generation (1976), for solving the general case. The main advantage of this method is the that the unit of randomness is not the uniform random variable (uint32_t), but a random bit. It optimizes the internal buffer sampling by initially consuming a 32-bit random variable and then sampling byte per byte. Depending of the upper bound requested, it might lead to better CPU utilization. Checked on x86_64-linux-gnu, aarch64-linux, and powerpc64le-linux-gnu. Co-authored-by: Florian Weimer <fweimer@redhat.com> Reviewed-by: Yann Droneaud <ydroneaud@opteya.com> [1] https://datatracker.ietf.org/doc/html/rfc8439 [2] https://arxiv.org/pdf/1304.1916.pdf
2021-07-22Remove __morecore and __default_morecoreSiddhesh Poyarekar1-3/+0
Make the __morecore and __default_morecore symbols compat-only and remove their declarations from the API. Also, include morecore.c directly into malloc.c; this should ideally get merged into malloc in a future cleanup. Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com>
2021-06-30login: Hidden prototypes for _getpt, __ptsname_r, grantpt, unlockptFlorian Weimer1-0/+6
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-05-05nptl: Move sem_close, sem_open into libcFlorian Weimer1-0/+1
The symbols were moved using move-symbol-to-libc.py. Both functions are moved at the same time because they depend on internal functions in sysdeps/pthread/sem_routines.c, which are moved in this commit as well. Additional hidden prototypes are required to avoid check-localplt failures. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-11-11hurd: keep only required PLTs in ld.soSamuel Thibault1-1/+1
We need NO_RTLD_HIDDEN because of the need for PLT calls in ld.so. See Roland's comment in https://sourceware.org/bugzilla/show_bug.cgi?id=15605 "in the Hurd it's crucial that calls like __mmap be the libc ones instead of the rtld-local ones after the bootstrap phase, when the dynamic linker is being used for dlopen and the like." We used to just avoid all hidden use in the rtld ; this commit switches to keeping only those that should use PLT calls, i.e. essentially those defined in sysdeps/mach/hurd/dl-sysdep.c: __assert_fail __assert_perror_fail __*stat64 _exit This fixes a few startup issues, notably the call to __tunable_get_val that is made before PLTs are set up.
2020-04-30Rename __LONG_DOUBLE_USES_FLOAT128 to __LDOUBLE_REDIRECTS_TO_FLOAT128_ABIPaul E. Murphy1-2/+2
Improve the commentary to aid future developers who will stumble upon this novel, yet not always perfect, mechanism to support alternative formats for long double. Likewise, rename __LONG_DOUBLE_USES_FLOAT128 to __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI now that development work has settled down. The command used was git grep -l __LONG_DOUBLE_USES_FLOAT128 ':!./ChangeLog*' | \ xargs sed -i 's/__LONG_DOUBLE_USES_FLOAT128/__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI/g' Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2020-04-30ldbl-128ibm-compat: workaround GCC 9 C++ PR90731Paul E. Murphy1-0/+9
GCC 9 has a bug (PR90731) whereby __typeof does not correctly copy exception specifiers[1]. Surprisingly, this can be quieted by declaring "#pragma system_header", or if the headers are installed in a system directory. Work around this by using the pragma for any gcc version between 9.0 and 9.2 to ensure tests continue to compile. [1] Example error from g++ 9.2.1: In file included from ../include/sys/cdefs.h:3, from ../include/features.h:465, from ../bits/libc-header-start.h:33, from ../math/math.h:27, from ../include/math.h:7, from test-math-isinff.cc:21: ../libio/bits/stdio-ldbl.h:25:20: error: declaration of ‘int sprintf(char*, const char*, ...)’ has a different exception specifier 25 | __LDBL_REDIR_DECL (sprintf) | ^~~~~~~ ../misc/sys/cdefs.h:461:26: note: in definition of macro ‘__LDBL_REDIR_DECL’ 461 | extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128")); | ^~~~ In file included from ../include/stdio.h:5, from test-math-isinff.cc:22: ../libio/stdio.h:334:12: note: from previous declaration ‘int sprintf(char*, const char*, ...) throw ()’ 334 | extern int sprintf (char *__restrict __s, | ^~~~~~~ Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2020-02-15ld.so: Do not export free/calloc/malloc/realloc functions [BZ #25486]Florian Weimer1-0/+2
Exporting functions and relying on symbol interposition from libc.so makes the choice of implementation dependent on DT_NEEDED order, which is not what some compiler drivers expect. This commit replaces one magic mechanism (symbol interposition) with another one (preprocessor-/compiler-based redirection). This makes the hand-over from the minimal malloc to the full malloc more explicit. Removing the ABI symbols is backwards-compatible because libc.so is always in scope, and the dynamic loader will find the malloc-related symbols there since commit f0b2132b35248c1f4a80f62a2c38cddcc802aa8c ("ld.so: Support moving versioned symbols between sonames [BZ #24741]"). Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2019-12-27Do not redirect calls to __GI_* symbols, when redirecting to *ieee128Tulio Magno Quites Machado Filho1-0/+3
On platforms where long double has IEEE binary128 format as a third option (initially, only powerpc64le), many exported functions are redirected to their __*ieee128 equivalents. This redirection is provided by installed headers such as stdio-ldbl.h, and is supposed to work correctly with user code. However, during the build of glibc, similar redirections are employed, in internal headers, such as include/stdio.h, in order to avoid extra PLT entries. These redirections conflict with the redirections to __*ieee128, and must be avoided during the build. This patch protects the second redirections with a test for __LONG_DOUBLE_USES_FLOAT128, a new macro that is defined to 1 when functions that deal with long double typed values reuses the _Float128 implementation (this is currently only true for powerpc64le). Tested for powerpc64le, x86_64, and with build-many-glibcs.py. Co-authored-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com> Reviewed-by: Florian Weimer <fweimer@redhat.com>
2018-02-26Use libc_hidden_* for atoi (bug 15105).Joseph Myers1-0/+2
Continuing the fixes for localplt test failures with -Os arising from functions not being inlined in that case, this patch fixes such failures for atoi by using libc_hidden_proto and libc_hidden_def. Tested for x86_64 (both that it removes this particular localplt failure for -Os, and that the testsuite continues to pass without -Os). [BZ #15105] * stdlib/atoi.c (atoi): Use libc_hidden_def. * include/stdlib.h [!_ISOMAC] (atoi): Use libc_hidden_proto.
2017-10-03Introduce NO_RTLD_HIDDEN, make hurd use it instead of NO_HIDDENSamuel Thibault1-1/+1
On the Hurd, the rtld needs to see its own dumb versions of a few functions (defined in sysdeps/mach/hurd/dl-sysdep.c) overridden by libc's versions once loaded. rtld should thus not have hidden attribute for these. To achieve this, the Hurd port used to just define NO_HIDDEN, which disables it completely. For now, this changes that to disabling it for all rtld functions, for simplicity. See Roland's comment on https://sourceware.org/bugzilla/show_bug.cgi?id=15605#c5 The ld.so numbers remain at 8 .rel.plt 000000c8 00000c24 00000c24 00000c24 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 9 .plt 000001a0 00000cf0 00000cf0 00000cf0 2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE 10 .plt.got 00000010 00000e90 00000e90 00000e90 2**3 CONTENTS, ALLOC, LOAD, READONLY, CODE 18 .got.plt 00000070 0002d000 0002d000 0002c000 2**2 CONTENTS, ALLOC, LOAD, DATA which is about 3 times as much as on Linux. The libc.so numbers get divided by 3 (the remainings are mostly RPC stub calls) * include/libc-symbols.h [NO_RTLD_HIDDEN] (rtld_hidden_proto, rtld_hidden_tls_proto, rtld_hidden_def, rtld_hidden_weak, rtld_hidden_rtld_hidden_ver, data_def, rtld_hidden_data_weak, rtld_hidden_data_ver): Define to empty. * include/assert.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__assert_fail, __assert_perror_fail): Likewise. * include/dirent.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__rewinddir): Likewise. * include/libc-internal.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__profile_frequency): Likewise. * include/setjmp.h (__sigsetjmp): Likewise. * include/signal.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__sigaction, __libc_sigaction): Likewise. * include/stdlib.h [NO_RTLD_HIDDEN] (unsetenv, __strtoul_internal): Do not set hidden attribute. * include/string.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__stpcpy, __strdup, __strerror_t, __strsep_g, memchr, memcmp, memcpy, memmove, memset, rawmemchr, stpcpy, strchr, strcmp, strlen, strnlen, strsep): Likewise. * include/sys/stat.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__fxstat, __fxstat64, __lxstat, __lxstat64, __xstat, __xstat64, __fxstatat64): Likewise. * include/sys/utsname.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__uname): Likewise. * include/sysdeps/generic/_itoa.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (_itoa_upper_digits, _itoa_lower_digits): Likewise. * sysdeps/mach/hurd/configure.ac (NO_HIDDEN): Do not set. (NO_RTLD_HIDDEN): Set. * sysdeps/mach/hurd/configure: Refresh. * config.h.in: Refresh.
2017-10-01Mark internal stdlib functions with attribute_hidden [BZ #18822]H.J. Lu1-19/+32
Mark internal stdlib functions with attribute_hidden to allow direct access within libc.so and libc.a without using GOT nor PLT. __realpath is hidden with libc_hidden_proto and libc_hidden_def since the exported realpath is an alias of __realpath. [BZ #18822] * include/stdlib.h (__random): Add attribute_hidden. (__random_r): Likewise. (__srandom_r): Likewise. (__initstate_r): Likewise. (__setstate_r): Likewise. (__erand48_r): Likewise. (__nrand48_r): Likewise. (__jrand48_r): Likewise. (__srand48_r): Likewise. (__seed48_r): Likewise. (__lcong48_r): Likewise. (__drand48_iterate): Likewise. (__setenv): Likewise. (__unsetenv): Likewise. (__clearenv): Likewise. (__ptsname_r): Likewise. (__posix_openpt): Likewise. (__add_to_environ): Likewise. (__realpath): Add libc_hidden_proto. (__ecvt_r): Likewise. (__fcvt_r): Likewise. (__qecvt_r): Likewise. (__qfcvt_r): Likewise. * misc/efgcvt_r.c (cvt_symbol_1): Add libc_hidden_def (local). * stdlib/canonicalize.c (__realpath): Add libc_hidden_def.
2017-10-01Mark 3 *_internal functions with attribute_hidden [BZ #18822]H.J. Lu1-1/+1
Mark __ptsname_internal, __mktime_internal and __fopen_internal with attribute_hidden to allow direct access to them within libc.so and libc.a without using GOT nor PLT. [BZ #18822] * include/stdlib.h (__ptsname_internal): Add attribute_hidden. * include/time.h (__mktime_internal): Likewise. * libio/iolibio.h (__fopen_internal): Likewise.
2017-08-13Remove internal_function attribute from string-to-float functionsFlorian Weimer1-14/+8
These are called across DSO boundaries and should therefore use the standard calling convention.
2017-06-20Use locale_t, not __locale_t, throughout glibcZack Weinberg1-8/+8
<locale.h> is specified to define locale_t in POSIX.1-2008, and so are all of the headers that define functions that take locale_t arguments. Under _GNU_SOURCE, the additional headers that define such functions have also always defined locale_t. Therefore, there is no need to use __locale_t in public function prototypes, nor in any internal code. * ctype/ctype-c99_l.c, ctype/ctype.h, ctype/ctype_l.c * include/monetary.h, include/stdlib.h, include/time.h * include/wchar.h, locale/duplocale.c, locale/freelocale.c * locale/global-locale.c, locale/langinfo.h, locale/locale.h * locale/localeinfo.h, locale/newlocale.c * locale/nl_langinfo_l.c, locale/uselocale.c * localedata/bug-usesetlocale.c, localedata/tst-xlocale2.c * stdio-common/vfscanf.c, stdlib/monetary.h, stdlib/stdlib.h * stdlib/strfmon_l.c, stdlib/strtod_l.c, stdlib/strtof_l.c * stdlib/strtol.c, stdlib/strtol_l.c, stdlib/strtold_l.c * stdlib/strtoll_l.c, stdlib/strtoul_l.c, stdlib/strtoull_l.c * string/strcasecmp.c, string/strcoll_l.c, string/string.h * string/strings.h, string/strncase.c, string/strxfrm_l.c * sysdeps/ieee754/float128/strtof128_l.c * sysdeps/ieee754/float128/wcstof128.c * sysdeps/ieee754/float128/wcstof128_l.c * sysdeps/ieee754/ldbl-128ibm/strtold_l.c * sysdeps/ieee754/ldbl-64-128/strtold_l.c * sysdeps/ieee754/ldbl-opt/nldbl-compat.c * sysdeps/ieee754/ldbl-opt/nldbl-strfmon_l.c * sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c * sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c * sysdeps/powerpc/powerpc32/power7/strcasecmp.S * sysdeps/powerpc/powerpc64/power7/strcasecmp.S * sysdeps/x86_64/strcasecmp_l-nonascii.c * sysdeps/x86_64/strncase_l-nonascii.c, time/strftime_l.c * time/strptime_l.c, time/time.h, wcsmbs/mbsrtowcs_l.c * wcsmbs/wchar.h, wcsmbs/wcscasecmp.c, wcsmbs/wcsncase.c * wcsmbs/wcstod.c, wcsmbs/wcstod_l.c, wcsmbs/wcstof.c * wcsmbs/wcstof_l.c, wcsmbs/wcstol_l.c, wcsmbs/wcstold.c * wcsmbs/wcstold_l.c, wcsmbs/wcstoll_l.c, wcsmbs/wcstoul_l.c * wcsmbs/wcstoull_l.c, wctype/iswctype_l.c * wctype/towctrans_l.c, wctype/wcfuncs_l.c * wctype/wctrans_l.c, wctype/wctype.h, wctype/wctype_l.c: Change all uses of __locale_t to locale_t.
2017-06-12float128: Add strtof128, wcstof128, and related functions.Paul E. Murphy1-0/+29
The implementations are contained with sysdeps/ieee754/float128 as they are only built when _Float128 is enabled within libc/m. * include/gmp.h (__mpn_construct_float128): New declaration. * include/stdlib.h: Include bits/floatn.h for _Float128 tests. (__strtof128_l): New declaration. (__strtof128_nan): Likewise. (__wcstof128_nan): Likewise. (__strtof128_internal): Likewise. (____strtof128_l_internal): Likewise. * include/wchar.h: Include bits/floatn.h for _Float128 tests. (__wcstof128_l): New declaration. (__wcstof128_internal): Likewise. * stdlib/Makefile (bug-strtod2): Link libm too. * stdlib/stdlib.h (strtof128): New declaration. (strtof128_l): Likewise. * stdlib/tst-strtod-nan-locale-main.c: Updated to use tst-strtod.h macros to ensure float128 gets tested too. * stdlib/tst-strtod-round-skeleton.c (CHOOSE_f128): New macro. * stdlib/tst-strtod.h: Include bits/floatn.h for _Float128 tests. (IF_FLOAT128): New macro. (GEN_TEST_STRTOD): Update to optionally include _Float128 in the tests. (STRTOD_TEST_FOREACH): Likewise. * sysdeps/ieee754/float128/Makefile: Insert new strtof128 and wcstof128 functions into libc. * sysdeps/ieee754/float128/Versions: Add exports for the above new functions. * sysdeps/ieee754/float128/mpn2float128.c: New file. * sysdeps/ieee754/float128/strtod_nan_float128.h: New file. * sysdeps/ieee754/float128/strtof128.c: New file. * sysdeps/ieee754/float128/strtof128_l.c: New file. * sysdeps/ieee754/float128/strtof128_nan.c: New file. * sysdeps/ieee754/float128/wcstof128.c: New file. * sysdeps/ieee754/float128/wcstof128_l.c: New file. * sysdeps/ieee754/float128/wcstof128_nan.c: New fike. * wcsmbs/Makefile: (CFLAGS-wcstof128.c): Append strtox-CFLAGS. (CFLAGS-wcstof128_l): Likewise. * wcsmbs/wchar.h: Include bits/floatn.h for _Float128 tests. (wcstof128): New declaration. (wcstof128_l): Likewise.
2017-05-30Add reallocarray functionDennis Wölfing1-0/+4
The reallocarray function is an extension from OpenBSD. It is an integer-overflow-safe replacement for realloc(p, X*Y) and malloc(X*Y) (realloc(NULL, X*Y)). It can therefore help in preventing certain security issues in code. This is an updated version of a patch originally submitted by Rüdiger Sonderfeld in May 2014 [1]. Checked on i686-linux-gnu and x86_64-linux-gnu. [1] <https://sourceware.org/ml/libc-alpha/2014-05/msg00481.html>. 2017-05-30 Dennis Wölfing <denniswoelfing@gmx.de> Rüdiger Sonderfeld <ruediger@c-plusplus.de> * include/stdlib.h (__libc_reallocarray): New declaration. * malloc/Makefile (routines): Add reallocarray. (tests): Add tst-reallocarray.c. * malloc/Versions: Add reallocarray and __libc_reallocarray. * malloc/malloc-internal.h (check_mul_overflow_size_t): New inline function. * malloc/malloc.h (reallocarray): New declaration. * stdlib/stdlib.h (reallocarray): Likewise. * malloc/reallocarray.c: New file. * malloc/tst-reallocarray.c: New test file. * manual/memory.texi: Document reallocarray. * sysdeps/unix/sysv/linux/aarch64/libc.abilist: Add reallocarray. * sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/arm/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/hppa/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/i386/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/microblaze/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/nios2/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sh/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tilepro/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: Likewise.
2017-05-11Suppress internal declarations for most of the testsuite.Zack Weinberg1-4/+0
This patch adds a new build module called 'testsuite'. IS_IN (testsuite) implies _ISOMAC, as do IS_IN_build and __cplusplus (which means several ad-hoc tests for __cplusplus can go away). libc-symbols.h now suppresses almost all of *itself* when _ISOMAC is defined; in particular, _ISOMAC mode does not get config.h automatically anymore. There are still quite a few tests that need to see internal gunk of one variety or another. For them, we now have 'tests-internal' and 'test-internal-extras'; files in this category will still be compiled with MODULE_NAME=nonlib, and everything proceeds as it always has. The bulk of this patch is moving tests from 'tests' to 'tests-internal'. There is also 'tests-static-internal', which has the same effect on files in 'tests-static', and 'modules-names-tests', which has the *inverse* effect on files in 'modules-names' (it's inverted because most of the things in modules-names are *not* tests). For both of these, the file must appear in *both* the new variable and the old one. There is also now a special case for when libc-symbols.h is included without MODULE_NAME being defined at all. (This happens during the creation of libc-modules.h, and also when preprocessing Versions files.) When this happens, IS_IN is set to be always false and _ISOMAC is *not* defined, which was the status quo, but now it's explicit. The remaining changes to C source files in this patch seemed likely to cause problems in the absence of the main change. They should be relatively self-explanatory. In a few cases I duplicated a definition from an internal header rather than move the test to tests-internal; this was a judgement call each time and I'm happy to change those however reviewers feel is more appropriate. * Makerules: New subdir configuration variables 'tests-internal' and 'test-internal-extras'. Test files in these categories will still be compiled with MODULE_NAME=nonlib. Test files in the existing categories (tests, xtests, test-srcs, test-extras) are now compiled with MODULE_NAME=testsuite. New subdir configuration variable 'modules-names-tests'. Files which are in both 'modules-names' and 'modules-names-tests' will be compiled with MODULE_NAME=testsuite instead of MODULE_NAME=extramodules. (gen-as-const-headers): Move to tests-internal. (do-tests-clean, common-mostlyclean): Support tests-internal. * Makeconfig (built-modules): Add testsuite. * Makefile: Change libof-check-installed-headers-c and libof-check-installed-headers-cxx to 'testsuite'. * Rules: Likewise. Support tests-internal. * benchtests/strcoll-inputs/filelist#en_US.UTF-8: Remove extra-modules.mk. * config.h.in: Don't check for __OPTIMIZE__ or __FAST_MATH__ here. * include/libc-symbols.h: Move definitions of _GNU_SOURCE, PASTE_NAME, PASTE_NAME1, IN_MODULE, IS_IN, and IS_IN_LIB to the very top of the file and rationalize their order. If MODULE_NAME is not defined at all, define IS_IN to always be false, and don't define _ISOMAC. If any of IS_IN (testsuite), IS_IN_build, or __cplusplus are true, define _ISOMAC and suppress everything else in this file, starting with the inclusion of config.h. Do check for inappropriate definitions of __OPTIMIZE__ and __FAST_MATH__ here, but only if _ISOMAC is not defined. Correct some out-of-date commentary. * include/math.h: If _ISOMAC is defined, undefine NO_LONG_DOUBLE and _Mlong_double_ before including math.h. * include/string.h: If _ISOMAC is defined, don't expose _STRING_ARCH_unaligned. Move a comment to a more appropriate location. * include/errno.h, include/stdio.h, include/stdlib.h, include/string.h * include/time.h, include/unistd.h, include/wchar.h: No need to check __cplusplus nor use __BEGIN_DECLS/__END_DECLS. * misc/sys/cdefs.h (__NTHNL): New macro. * sysdeps/m68k/m680x0/fpu/bits/mathinline.h (__m81_defun): Use __NTHNL to avoid errors with GCC 6. * elf/tst-env-setuid-tunables.c: Include config.h with _LIBC defined, for HAVE_TUNABLES. * inet/tst-checks-posix.c: No need to define _ISOMAC. * intl/tst-gettext2.c: Provide own definition of N_. * math/test-signgam-finite-c99.c: No need to define _ISOMAC. * math/test-signgam-main.c: No need to define _ISOMAC. * stdlib/tst-strtod.c: Convert to test-driver. Split locale_test to... * stdlib/tst-strtod1i.c: ...this new file. * stdlib/tst-strtod5.c: Convert to test-driver and add copyright notice. Split tests of __strtod_internal to... * stdlib/tst-strtod5i.c: ...this new file. * string/test-string.h: Include stdint.h. Duplicate definition of inhibit_loop_to_libcall here (from libc-symbols.h). * string/test-strstr.c: Provide dummy definition of libc_hidden_builtin_def when including strstr.c. * sysdeps/ia64/fpu/libm-symbols.h: Suppress entire file in _ISOMAC mode; no need to test __STRICT_ANSI__ nor __cplusplus as well. * sysdeps/x86_64/fpu/math-tests-arch.h: Include cpu-features.h. Don't include init-arch.h. * sysdeps/x86_64/multiarch/test-multiarch.h: Include cpu-features.h. Don't include init-arch.h. * elf/Makefile: Move tst-ptrguard1-static, tst-stackguard1-static, tst-tls1-static, tst-tls2-static, tst-tls3-static, loadtest, unload, unload2, circleload1, neededtest, neededtest2, neededtest3, neededtest4, tst-tls1, tst-tls2, tst-tls3, tst-tls6, tst-tls7, tst-tls8, tst-dlmopen2, tst-ptrguard1, tst-stackguard1, tst-_dl_addr_inside_object, and all of the ifunc tests to tests-internal. Don't add $(modules-names) to test-extras. * inet/Makefile: Move tst-inet6_scopeid_pton to tests-internal. Add tst-deadline to tests-static-internal. * malloc/Makefile: Move tst-mallocstate and tst-scratch_buffer to tests-internal. * misc/Makefile: Move tst-atomic and tst-atomic-long to tests-internal. * nptl/Makefile: Move tst-typesizes, tst-rwlock19, tst-sem11, tst-sem12, tst-sem13, tst-barrier5, tst-signal7, tst-tls3, tst-tls3-malloc, tst-tls5, tst-stackguard1, tst-sem11-static, tst-sem12-static, and tst-stackguard1-static to tests-internal. Link tests-internal with libpthread also. Don't add $(modules-names) to test-extras. * nss/Makefile: Move tst-field to tests-internal. * posix/Makefile: Move bug-regex5, bug-regex20, bug-regex33, tst-rfc3484, tst-rfc3484-2, and tst-rfc3484-3 to tests-internal. * stdlib/Makefile: Move tst-strtod1i, tst-strtod3, tst-strtod4, tst-strtod5i, tst-tls-atexit, and tst-tls-atexit-nodelete to tests-internal. * sunrpc/Makefile: Move tst-svc_register to tests-internal. * sysdeps/powerpc/Makefile: Move test-get_hwcap and test-get_hwcap-static to tests-internal. * sysdeps/unix/sysv/linux/Makefile: Move tst-setgetname to tests-internal. * sysdeps/x86_64/fpu/Makefile: Add all libmvec test modules to modules-names-tests.
2017-03-13 Remove the str(n)dup inlines from string/bits/string2.h. Although inliningWilco Dijkstra1-7/+1
calls with constant strings shows a small (~10%) performance gain, strdup is typically used in error reporting code, so not performance critical. Remove the now unused __need_malloc_and_calloc related defines from stdlib.h. Rename existing uses of str(n)dup to __str(n)dup so it no longer needs to be redirected to a builtin. Also building GLIBC with -Os now no longer shows localplt or linkname space failures (partial fix for BZ #15105 and BZ #19463). [BZ #15105] [BZ #19463] * elf/dl-cache.c (_dl_load_cache_lookup): Use __strdup. * inet/rcmd.c (rcmd_af): Likewise. * inet/rexec.c (rexec_af): Likewise. * intl/dcigettext.c (_LIBC): Likewise. * intl/finddomain.c (_nl_find_domain): Use strdup expansion. * locale/loadarchive.c (_nl_load_locale_from_archive): Use __strdup. * locale/setlocale.c (setlocale): Likewise. * posix/spawn_faction_addopen.c (posix_spawn_file_actions_addopen): Likewise. * stdlib/putenv.c (putenv): Use __strndup. * sunrpc/svc_simple.c (__registerrpc): Use __strdup. * sysdeps/posix/getaddrinfo.c (gaih_inet): Use __strdup/__strndup. * include/stdlib.h (__need_malloc_and_calloc): Remove uses. (__Need_M_And_C) Remove define/undef. * stdlib/stdlib.h (__need_malloc_and_calloc): Remove uses. (__malloc_and_calloc_defined): Remove define. * string/bits/string2.h (__strdup): Remove define. (strdup): Likewise. (__strndup): Likewise. (strndup): Likewise.
2015-11-24Refactor strtod parsing of NaN payloads.Joseph Myers1-0/+18
The nan* functions handle their string argument by constructing a NAN(...) string on the stack as a VLA and passing it to strtod functions. This approach has problems discussed in bug 16961 and bug 16962: the stack usage is unbounded, and it gives incorrect results in certain cases where the argument is not a valid n-char-sequence. The natural fix for both issues is to refactor the NaN payload parsing out of strtod into a separate function that the nan* functions can call directly, so that no temporary string needs constructing on the stack at all. This patch does that refactoring in preparation for fixing those bugs (but without actually using the new functions from nan* - which will also require exporting them from libc at version GLIBC_PRIVATE). This patch is not intended to change any user-visible behavior, so no tests are added (fixes for the above bugs will of course add tests for them). This patch builds on my recent fixes for strtol and strtod issues in Turkish locales. Given those fixes, the parsing of NaN payloads is locale-independent; thus, the new functions do not need to take a locale_t argument. Tested for x86_64, x86, mips64 and powerpc. * stdlib/strtod_nan.c: New file. * stdlib/strtod_nan_double.h: Likewise. * stdlib/strtod_nan_float.h: Likewise. * stdlib/strtod_nan_main.c: Likewise. * stdlib/strtod_nan_narrow.h: Likewise. * stdlib/strtod_nan_wide.h: Likewise. * stdlib/strtof_nan.c: Likewise. * stdlib/strtold_nan.c: Likewise. * sysdeps/ieee754/ldbl-128/strtod_nan_ldouble.h: Likewise. * sysdeps/ieee754/ldbl-128ibm/strtod_nan_ldouble.h: Likewise. * sysdeps/ieee754/ldbl-96/strtod_nan_ldouble.h: Likewise. * wcsmbs/wcstod_nan.c: Likewise. * wcsmbs/wcstof_nan.c: Likewise. * wcsmbs/wcstold_nan.c: Likewise. * stdlib/Makefile (routines): Add strtof_nan, strtod_nan and strtold_nan. * wcsmbs/Makefile (routines): Add wcstod_nan, wcstold_nan and wcstof_nan. * include/stdlib.h (__strtof_nan): Declare and use libc_hidden_proto. (__strtod_nan): Likewise. (__strtold_nan): Likewise. (__wcstof_nan): Likewise. (__wcstod_nan): Likewise. (__wcstold_nan): Likewise. * include/wchar.h (____wcstoull_l_internal): Declare. * stdlib/strtod_l.c: Do not include <ieee754.h>. (____strtoull_l_internal): Remove declaration. (STRTOF_NAN): Define macro. (SET_MANTISSA): Remove macro. (STRTOULL): Likewise. (____STRTOF_INTERNAL): Use STRTOF_NAN to parse NaN payload. * stdlib/strtof_l.c (____strtoull_l_internal): Remove declaration. (STRTOF_NAN): Define macro. (SET_MANTISSA): Remove macro. * sysdeps/ieee754/ldbl-128/strtold_l.c (STRTOF_NAN): Define macro. (SET_MANTISSA): Remove macro. * sysdeps/ieee754/ldbl-128ibm/strtold_l.c (STRTOF_NAN): Define macro. (SET_MANTISSA): Remove macro. * sysdeps/ieee754/ldbl-64-128/strtold_l.c (STRTOF_NAN): Define macro. (SET_MANTISSA): Remove macro. * sysdeps/ieee754/ldbl-96/strtold_l.c (STRTOF_NAN): Define macro. (SET_MANTISSA): Remove macro. * wcsmbs/wcstod_l.c (____wcstoull_l_internal): Remove declaration. * wcsmbs/wcstof_l.c (____wcstoull_l_internal): Likewise. * wcsmbs/wcstold_l.c (____wcstoull_l_internal): Likewise.
2015-10-15Mark ld.so internel stdlib functions hiddenH.J. Lu1-0/+5
Since ld.so internel stdlib functions are only used internally in ld.so, they can be made hidden. [BZ #19122] * include/stdlib.h [IS_IN (rtld)] (unsetenv): Add attribute_hidden. [IS_IN (rtld)] (__strtoul_internal): Likewise.
2014-11-24Remove NOT_IN_libcSiddhesh Poyarekar1-1/+1
Replace with !IS_IN (libc). This completes the transition from the IS_IN/NOT_IN macros to the IN_MODULE macro set. The generated code is unchanged on x86_64. * stdlib/isomac.c (fmt): Replace NOT_IN_libc with IN_MODULE. (get_null_defines): Adjust. * sunrpc/Makefile: Adjust comment. * Makerules (CPPFLAGS-nonlib): Remove NOT_IN_libc. * elf/Makefile (CPPFLAGS-sotruss-lib): Likewise. (CFLAGS-interp.c): Likewise. (CFLAGS-ldconfig.c): Likewise. (CPPFLAGS-.os): Likewise. * elf/rtld-Rules (rtld-CPPFLAGS): Likewise. * extra-lib.mk (CPPFLAGS-$(lib)): Likewise. * extra-modules.mk (extra-modules.mk): Likewise. * iconv/Makefile (CPPFLAGS-iconvprogs): Likewise. * locale/Makefile (CPPFLAGS-locale_programs): Likewise. * malloc/Makefile (CPPFLAGS-memusagestat): Likewise. * nscd/Makefile (CPPFLAGS-nscd): Likewise. * nss/Makefile (CPPFLAGS-nss_test1): Likewise. * stdlib/Makefile (CFLAGS-tst-putenvmod.c): Likewise. * sysdeps/gnu/Makefile ($(objpfx)errlist-compat.c): Likewise. * sysdeps/unix/sysv/linux/Makefile (CPPFLAGS-lddlibc4): Likewise. * iconvdata/Makefile (CPPFLAGS): Likewise. (cpp-srcs-left): Add libof for all iconvdata routines. * bits/stdio-lock.h: Replace NOT_IN_libc with IS_IN. * include/assert.h: Likewise. * include/ctype.h: Likewise. * include/errno.h: Likewise. * include/libc-symbols.h: Likewise. * include/math.h: Likewise. * include/netdb.h: Likewise. * include/resolv.h: Likewise. * include/stdio.h: Likewise. * include/stdlib.h: Likewise. * include/string.h: Likewise. * include/sys/stat.h: Likewise. * include/wctype.h: Likewise. * intl/l10nflist.c: Likewise. * libidn/idn-stub.c: Likewise. * libio/libioP.h: Likewise. * nptl/libc_multiple_threads.c: Likewise. * nptl/pthreadP.h: Likewise. * posix/regex_internal.h: Likewise. * resolv/res_hconf.c: Likewise. * sysdeps/arm/armv7/multiarch/memcpy.S: Likewise. * sysdeps/arm/memmove.S: Likewise. * sysdeps/arm/sysdep.h: Likewise. * sysdeps/generic/_itoa.h: Likewise. * sysdeps/generic/symbol-hacks.h: Likewise. * sysdeps/gnu/errlist.awk: Likewise. * sysdeps/gnu/errlist.c: Likewise. * sysdeps/i386/i586/memcpy.S: Likewise. * sysdeps/i386/i586/memset.S: Likewise. * sysdeps/i386/i686/memcpy.S: Likewise. * sysdeps/i386/i686/memmove.S: Likewise. * sysdeps/i386/i686/mempcpy.S: Likewise. * sysdeps/i386/i686/memset.S: Likewise. * sysdeps/i386/i686/multiarch/bcopy.S: Likewise. * sysdeps/i386/i686/multiarch/bzero.S: Likewise. * sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S: Likewise. * sysdeps/i386/i686/multiarch/memchr-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/memchr.S: Likewise. * sysdeps/i386/i686/multiarch/memcmp-sse4.S: Likewise. * sysdeps/i386/i686/multiarch/memcmp-ssse3.S: Likewise. * sysdeps/i386/i686/multiarch/memcmp.S: Likewise. * sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: Likewise. * sysdeps/i386/i686/multiarch/memcpy-ssse3.S: Likewise. * sysdeps/i386/i686/multiarch/memcpy.S: Likewise. * sysdeps/i386/i686/multiarch/memcpy_chk.S: Likewise. * sysdeps/i386/i686/multiarch/memmove.S: Likewise. * sysdeps/i386/i686/multiarch/memmove_chk.S: Likewise. * sysdeps/i386/i686/multiarch/mempcpy.S: Likewise. * sysdeps/i386/i686/multiarch/mempcpy_chk.S: Likewise. * sysdeps/i386/i686/multiarch/memrchr-c.c: Likewise. * sysdeps/i386/i686/multiarch/memrchr-sse2-bsf.S: Likewise. * sysdeps/i386/i686/multiarch/memrchr-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/memrchr.S: Likewise. * sysdeps/i386/i686/multiarch/memset-sse2-rep.S: Likewise. * sysdeps/i386/i686/multiarch/memset-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/memset.S: Likewise. * sysdeps/i386/i686/multiarch/memset_chk.S: Likewise. * sysdeps/i386/i686/multiarch/rawmemchr.S: Likewise. * sysdeps/i386/i686/multiarch/strcat-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/strcat-ssse3.S: Likewise. * sysdeps/i386/i686/multiarch/strcat.S: Likewise. * sysdeps/i386/i686/multiarch/strchr-sse2-bsf.S: Likewise. * sysdeps/i386/i686/multiarch/strchr-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/strchr.S: Likewise. * sysdeps/i386/i686/multiarch/strcmp-sse4.S: Likewise. * sysdeps/i386/i686/multiarch/strcmp-ssse3.S: Likewise. * sysdeps/i386/i686/multiarch/strcmp.S: Likewise. * sysdeps/i386/i686/multiarch/strcpy-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/strcpy-ssse3.S: Likewise. * sysdeps/i386/i686/multiarch/strcpy.S: Likewise. * sysdeps/i386/i686/multiarch/strcspn.S: Likewise. * sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S: Likewise. * sysdeps/i386/i686/multiarch/strlen-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/strlen.S: Likewise. * sysdeps/i386/i686/multiarch/strnlen.S: Likewise. * sysdeps/i386/i686/multiarch/strrchr-sse2-bsf.S: Likewise. * sysdeps/i386/i686/multiarch/strrchr-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/strrchr.S: Likewise. * sysdeps/i386/i686/multiarch/strspn.S: Likewise. * sysdeps/i386/i686/multiarch/wcschr-c.c: Likewise. * sysdeps/i386/i686/multiarch/wcschr-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/wcschr.S: Likewise. * sysdeps/i386/i686/multiarch/wcscmp-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/wcscmp.S: Likewise. * sysdeps/i386/i686/multiarch/wcscpy-c.c: Likewise. * sysdeps/i386/i686/multiarch/wcscpy-ssse3.S: Likewise. * sysdeps/i386/i686/multiarch/wcscpy.S: Likewise. * sysdeps/i386/i686/multiarch/wcslen-c.c: Likewise. * sysdeps/i386/i686/multiarch/wcslen-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/wcslen.S: Likewise. * sysdeps/i386/i686/multiarch/wcsrchr-c.c: Likewise. * sysdeps/i386/i686/multiarch/wcsrchr-sse2.S: Likewise. * sysdeps/i386/i686/multiarch/wcsrchr.S: Likewise. * sysdeps/i386/i686/multiarch/wmemcmp-c.c: Likewise. * sysdeps/i386/i686/multiarch/wmemcmp.S: Likewise. * sysdeps/ia64/fpu/libm-symbols.h: Likewise. * sysdeps/nptl/bits/libc-lock.h: Likewise. * sysdeps/nptl/bits/libc-lockP.h: Likewise. * sysdeps/nptl/bits/stdio-lock.h: Likewise. * sysdeps/posix/closedir.c: Likewise. * sysdeps/posix/opendir.c: Likewise. * sysdeps/posix/readdir.c: Likewise. * sysdeps/posix/rewinddir.c: Likewise. * sysdeps/powerpc/novmx-sigjmp.c: Likewise. * sysdeps/powerpc/powerpc32/__longjmp.S: Likewise. * sysdeps/powerpc/powerpc32/bsd-_setjmp.S: Likewise. * sysdeps/powerpc/powerpc32/fpu/__longjmp.S: Likewise. * sysdeps/powerpc/powerpc32/fpu/setjmp.S: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/bzero.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memchr.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memcmp-ppc32.S: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memcmp.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memcpy-ppc32.S: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memcpy.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memmove.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memset-ppc32.S: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/memset.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strcasecmp_l.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strchr.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strlen-ppc32.S: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strlen.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strncase.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strncase_l.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strncmp-ppc32.S: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strncmp.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/strnlen.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/wcschr.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr.c: Likewise. * sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy.c: Likewise. * sysdeps/powerpc/powerpc32/power6/memset.S: Likewise. * sysdeps/powerpc/powerpc32/setjmp.S: Likewise. * sysdeps/powerpc/powerpc64/__longjmp.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/bzero.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memcmp.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memcpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memmove-ppc64.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memmove.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/mempcpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memrchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/memset.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/stpcpy-ppc64.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/stpcpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/stpncpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcat.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strchrnul.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcmp.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcpy-ppc64.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strcspn.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strlen.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncase.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncase_l.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncat.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncmp.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncpy-ppc64.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strncpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strnlen.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strpbrk.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strrchr-ppc64.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strrchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strspn-ppc64.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/strspn.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wcschr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wcscpy.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c: Likewise. * sysdeps/powerpc/powerpc64/multiarch/wordcopy.c: Likewise. * sysdeps/powerpc/powerpc64/setjmp.S: Likewise. * sysdeps/s390/s390-32/multiarch/ifunc-resolve.c: Likewise. * sysdeps/s390/s390-32/multiarch/memcmp.S: Likewise. * sysdeps/s390/s390-32/multiarch/memcpy.S: Likewise. * sysdeps/s390/s390-32/multiarch/memset.S: Likewise. * sysdeps/s390/s390-64/multiarch/ifunc-resolve.c: Likewise. * sysdeps/s390/s390-64/multiarch/memcmp.S: Likewise. * sysdeps/s390/s390-64/multiarch/memcpy.S: Likewise. * sysdeps/s390/s390-64/multiarch/memset.S: Likewise. * sysdeps/sparc/sparc64/multiarch/memcpy-niagara1.S: Likewise. * sysdeps/sparc/sparc64/multiarch/memcpy-niagara2.S: Likewise. * sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S: Likewise. * sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: Likewise. * sysdeps/sparc/sparc64/multiarch/memcpy.S: Likewise. * sysdeps/sparc/sparc64/multiarch/memset-niagara1.S: Likewise. * sysdeps/sparc/sparc64/multiarch/memset-niagara4.S: Likewise. * sysdeps/sparc/sparc64/multiarch/memset.S: Likewise. * sysdeps/unix/alpha/sysdep.S: Likewise. * sysdeps/unix/alpha/sysdep.h: Likewise. * sysdeps/unix/make-syscalls.sh: Likewise. * sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/aarch64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/alpha/vfork.S: Likewise. * sysdeps/unix/sysv/linux/arm/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/getpid.c: Likewise. * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise. * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/ia64/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/lowlevellock-futex.h: Likewise. * sysdeps/unix/sysv/linux/m68k/bits/m68k-vdso.h: Likewise. * sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/microblaze/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/microblaze/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/not-cancel.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/s390/longjmp_chk.c: Likewise. * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/vfork.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S: Likewise. * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise. * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sh/vfork.S: Likewise. * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/brk.S: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/tile/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/tile/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/tile/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/tile/waitpid.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise. * sysdeps/wordsize-32/symbol-hacks.h: Likewise. * sysdeps/x86_64/memcpy.S: Likewise. * sysdeps/x86_64/memmove.c: Likewise. * sysdeps/x86_64/memset.S: Likewise. * sysdeps/x86_64/multiarch/init-arch.h: Likewise. * sysdeps/x86_64/multiarch/memcmp-sse4.S: Likewise. * sysdeps/x86_64/multiarch/memcmp-ssse3.S: Likewise. * sysdeps/x86_64/multiarch/memcmp.S: Likewise. * sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S: Likewise. * sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: Likewise. * sysdeps/x86_64/multiarch/memcpy-ssse3.S: Likewise. * sysdeps/x86_64/multiarch/memcpy.S: Likewise. * sysdeps/x86_64/multiarch/memcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memmove.c: Likewise. * sysdeps/x86_64/multiarch/mempcpy.S: Likewise. * sysdeps/x86_64/multiarch/mempcpy_chk.S: Likewise. * sysdeps/x86_64/multiarch/memset-avx2.S: Likewise. * sysdeps/x86_64/multiarch/memset.S: Likewise. * sysdeps/x86_64/multiarch/memset_chk.S: Likewise. * sysdeps/x86_64/multiarch/strcat-sse2-unaligned.S: Likewise. * sysdeps/x86_64/multiarch/strcat-ssse3.S: Likewise. * sysdeps/x86_64/multiarch/strcat.S: Likewise. * sysdeps/x86_64/multiarch/strchr-sse2-no-bsf.S: Likewise. * sysdeps/x86_64/multiarch/strchr.S: Likewise. * sysdeps/x86_64/multiarch/strcmp-ssse3.S: Likewise. * sysdeps/x86_64/multiarch/strcmp.S: Likewise. * sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: Likewise. * sysdeps/x86_64/multiarch/strcpy-ssse3.S: Likewise. * sysdeps/x86_64/multiarch/strcpy.S: Likewise. * sysdeps/x86_64/multiarch/strcspn.S: Likewise. * sysdeps/x86_64/multiarch/strspn.S: Likewise. * sysdeps/x86_64/multiarch/wcscpy-c.c: Likewise. * sysdeps/x86_64/multiarch/wcscpy-ssse3.S: Likewise. * sysdeps/x86_64/multiarch/wcscpy.S: Likewise. * sysdeps/x86_64/multiarch/wmemcmp-c.c: Likewise. * sysdeps/x86_64/multiarch/wmemcmp.S: Likewise. * sysdeps/x86_64/strcmp.S: Likewise.
2014-11-12Fix qsort_r namespace (bug 17571).Joseph Myers1-1/+2
qsort_r is defined in the same file as qsort, but is not an ISO C function, so should be a weak alias for __qsort_r. The uses in getaddrinfo should also call __qsort_r, since getaddrinfo is a POSIX function and qsort_r isn't. This patch implements this. Because nscd uses the getaddrinfo sources outside libc, as do the tst-rfc3484 tests, a #define of __qsort_r to qsort_r is added there alongside the similar defines for other libc-internal symbols used in getaddrinfo. Tested for x86_64 (testsuite, and that disassembly of installed shared libraries is unchanged by the patch). [BZ #17571] * stdlib/msort.c (qsort_r): Rename to __qsort_r and define as weak alias of __qsort_r. (qsort): Call __qsort_r instead of qsort_r. * include/stdlib.h (qsort_r): Do not call libc_hidden_proto. (__qsort_r): Declare. Call libc_hidden_proto. * sysdeps/posix/getaddrinfo.c (getaddrinfo): Call __qsort_r instead of qsort_r. * nscd/gai.c (__qsort_r): Define to qsort_r. * posix/tst-rfc3484.c (__qsort_r): Likewise. * posix/tst-rfc3484-2.c (__qsort_r): Likewise. * posix/tst-rfc3484-3.c (__qsort_r): Likewise.
2014-10-09Don't use INTDEF/INTUSE with __cxa_atexit (bug 14132).Joseph Myers1-4/+1
This patch removes use of the obsolete INTDEF/INTUSE mechanism for __cxa_atexit, replacing it with libc_hidden_def/libc_hidden_proto. Tested for x86_64 that installed stripped shared libraries are unchanged by the patch. [BZ #14132] * stdlib/cxa_atexit.c (__cxa_atexit): Use libc_hidden_def instead of INTDEF. * include/stdlib.h (__cxa_atexit_internal): Remove declaration. (__cxa_atexit): Use libc_hidden_proto. [!NOT_IN_libc] (__cxa_atexit): Remove macro definition.
2013-03-28Avoid unconditional __call_tls_dtors calls in static linking.Roland McGrath1-2/+6
2013-02-18C++11 thread_local destructors supportSiddhesh Poyarekar1-0/+5
This feature is specifically for the C++ compiler to offload calling thread_local object destructors on thread program exit, to glibc. This is to overcome the possible complication of destructors of thread_local objects getting called after the DSO in which they're defined is unloaded by the dynamic linker. The DSO is marked as 'unloadable' if it has a constructed thread_local object and marked as 'unloadable' again when all the constructed thread_local objects defined in it are destroyed.
2013-01-16Hide reference to mktemp in libpthreadAndreas Schwab1-0/+1
2012-07-25Rename __secure_getenv to secure_getenvFlorian Weimer1-1/+2
2012-02-25First steps to get conformtest fully workingUlrich Drepper1-5/+5
2012-01-07Remove pre-ISO C supportUlrich Drepper1-19/+18
No more __const.
2011-05-15Use mmap for allocation of buffers used for __abort_msgUlrich Drepper1-3/+8
2009-12-23Fix isomac test after recent header change.Ulrich Drepper1-1/+5
2009-11-24Optimize grantpt.Ulrich Drepper1-0/+3
grantpt was performing two consecutive calls to stat with the same file name. Avoid this by creating a special version of the ptsname function which allows to pass the stat result back to the caller.
2009-06-15Preserve message printed before abort.Ulrich Drepper1-0/+3
The terminal output etc is not visible in a core file. The new libc-internal variable __abort_msg will point to a string with the message which has been printed before the abort in case abort is called from inside libc. BZ #10217
2007-11-13* stdlib/stdlib.h: Define __compar_d_fn_t. Declare qsort_r.Ulrich Drepper1-1/+2
* include/stdlib.h: Add hidden_proto for qsort_t and adjust protoype for _quicksort. * stdlib/msort.c (qsort): Now a wrapper around qsort_r. (qsort_r): Renamed from qsort. Take additional parameter and pass it on as third parameter to compare function and _quicksort. * stdlib/qsort.c (_quicksort): Take additional parameter and pass on to the compare function. * stdlib/Versions [libc] (GLIBC_2.8): Add qsort_r. * Versions.def: Add GLIBC_2.8 for libc.
2007-08-07* include/stdlib.h: Add libc_hidden_proto for strto*, __strto*_l.cvs/fedora-glibc-20070809T0939Roland McGrath1-42/+14
Remove __strto*_l inlines. * include/wchar.h: Add libc_hidden_proto for wcsto*, __wcsto*_l. * stdlib/strtod.c: Add libc_hidden_def. * stdlib/strtod_l.c: Likewise. * stdlib/strtold.c [__LONG_DOUBLE_MATH_OPTIONAL]: Add libc_hidden_proto for __new_strtold and __new_wcstold. * sysdeps/ieee754/ldbl-128ibm/strtold_l.c: Add libc_hidden_proto for __STRTOF, STRTOF. * stdlib/strtol.c: Add libc_hidden_def. * stdlib/strtol_l.c: Likewise. * sysdeps/wordsize-64/strtol.c: Add libc_hidden_ver for strtoll and strtoq. * scripts/data/localplt-powerpc-linux-gnu.data: New file. * scripts/data/localplt-x86_64-linux-gnu.data: File renamed to ... * scripts/data/localplt-generic.data: ... here. * elf/Makefile (check-data): Get generic file if no other. ($(objpfx)check-localplt.out): Make target unconditional.
2007-08-03* sysdeps/unix/dirstream.h (struct __dirstream): Move lock memberUlrich Drepper1-7/+38
to fill a hole on 64-bit platforms. * stdlib/stdlib.h: Remove __strto*_internal prototypes and strto* inline functions. * include/stdlib.h: Add __strto*_internal prototypes here. * wcsmbs/wchar.h: Remove __wcsto*_internal prototypes and wcsto* inline functions. * include/wchar.h: Add __wcsto*_internal prototypes. * sysdeps/generic/inttypes.h: No need to protect the declaration of the __strto*_internal and __wcsto*_internal members here.
2006-01-14* math/math.h [__NO_LONG_DOUBLE_MATH] (__nldbl_nexttowardf): NewRoland McGrath1-4/+22
prototype. (nexttowardf): Redirect to __nldbl_nexttowardf. (nexttoward): Redirect to nextafter. (__MATHDECL_2, __MATHDECL_1): Redirect *l functions to non-*l versions if __LONG_DOUBLE_MATH_OPTIONAL and __NO_LONG_DOUBLE_MATH. * math/complex.h (__MATHDECL_1): Likewise. * math/bits/mathcalls.h (nexttoward): Don't prototype if __LDBL_COMPAT. * misc/sys/cdefs.h: Include <bits/wordsize.h>. (__LDBL_COMPAT, __LDBL_REDIR1, __LDBL_REDIR, __LDBL_REDIR1_NTH, __LDBL_REDIR_NTH, __LDBL_REDIR_DECL): New macros. * libio/bits/stdio-ldbl.h: New file. * libio/Makefile (headers): Add it. * libio/stdio.h [__LDBL_COMPAT]: #include it. * libio/bits/libio-ldbl.h: New file. * libio/Makefile (headers): Add it. * libio/libio.h [__LDBL_COMPAT]: #include it. * libio/libioP.h: Include <math_ldbl_opt.h>. * include/wchar.h (__fwprintf, __vfwprintf): Fix commented out attribute. (__vfwprintf_chk): New prototype. Add libc_hidden_proto. * wcsmbs/bits/wchar-ldbl.h: New file. * wcsmbs/Makefile (headers): Add it. * wcsmbs/wchar.h [__LDBL_COMPAT]: #include it. * wcsmbs/bits/wchar2.h (__vswprintf_alias): Removed. (vswprintf): Define as a macro rather than inline function. * stdio-common/bits/printf-ldbl.h: New file. * stdio-common/Makefile (headers): Add it. * stdio-common/printf.h [__LDBL_COMPAT]: #include it. * libio/fwprintf.c: Include libioP.h. (fwprintf): Use ldbl_weak_alias instead of weak_alias. * libio/fwscanf.c: Include libioP.h. (fwscanf): Rename to __fwscanf and add ldbl_strong_alias. * libio/iovdprintf.c (vdprintf): Use ldbl_weak_alias instead of weak_alias. * libio/iovsprintf.c (_IO_vsprintf): Rename to __IO_vsprintf, add ldbl_strong_alias and use INTDEF2 instead of INTDEF. (vsprintf): Use ldbl_weak_alias instead of weak_alias. * libio/iovsscanf.c (__vsscanf, vsscanf): Use ldbl_weak_alias instead of weak_alias. * libio/iovswscanf.c (vswscanf): Rename to __vswscanf, add ldbl_strong_alias and use ldbl_hidden_def instead of libc_hidden_def. * libio/obprintf.c (obstack_printf, obstack_vprintf): Use ldbl_weak_alias instead of weak_alias. * libio/swprintf.c: Include libioP.h. (swprintf): Rename to __swprintf and add ldbl_strong_alias. * libio/swscanf.c: Include libioP.h. (swscanf): Rename to __swscanf and add ldbl_strong_alias. * libio/vasprintf.c (vasprintf): Use ldbl_weak_alias instead of weak_alias. * libio/vscanf.c (vscanf): Use ldbl_weak_alias instead of weak_alias. * libio/vsnprintf.c (__vsnprintf, vsnprintf): Use ldbl_weak_alias instead of weak_alias. * libio/vswprintf.c (__vswprintf): Remove alias. (vswprintf): Use ldbl_weak_alias instead of weak_alias. * libio/vwprintf.c: Include libioP.h. (vwprintf): Rename to __vwprintf and add ldbl_strong_alias. * libio/vwscanf.c (vwscanf): Rename to __vwscanf and add ldbl_strong_alias. * libio/wprintf.c: Include libioP.h. (wprintf): Rename to __wprintf and add ldbl_strong_alias. * libio/wscanf.c: Include libioP.h. (wscanf): Rename to __wscanf and add ldbl_strong_alias. * stdio-common/asprintf.c (__asprintf): Rename to ___asprintf, add ldbl_strong_alias and use INTDEF2 instead of INTDEF. (asprintf): Use ldbl_weak_alias instead of weak_alias. * stdio-common/dprintf.c (dprintf): Rename to __dprintf, add ldbl_strong_alias and use ldbl_hidden_def instead of libc_hidden_def. * stdio-common/fprintf.c: Include libioP.h. (fprintf): Rename to __fprintf, add ldbl_strong_alias and use ldbl_hidden_def instead of libc_hidden_def. (_IO_fprintf): Use ldbl_weak_alias instead of weak_alias. * stdio-common/fscanf.c: Include libioP.h. (fscanf): Rename to __fscanf and add ldbl_strong_alias. * stdio-common/printf.c: Include libioP.h. (printf): Rename to __printf and add ldbl_strong_alias. (_IO_printf): Use ldbl_strong_alias instead of strong_alias. * stdio-common/printf_fp.c (__printf_fp): Rename to __printf_fp, add ldbl_strong_alias and use ldbl_hidden_def instead of libc_hidden_def. * stdio-common/printf_size.c (printf_size): Rename to __printf_size and add ldbl_strong_alias. * stdio-common/scanf.c (scanf): Rename to __scanf and add ldbl_strong_alias. * stdio-common/snprintf.c (snprintf): Use ldbl_weak_alias instead of weak_alias. * stdio-common/sprintf.c (sprintf): Rename to __sprintf, add ldbl_strong_alias and use ldbl_hidden_def instead of libc_hidden_def. (_IO_sprintf): Use ldbl_strong_alias instead of strong_alias. * stdio-common/sscanf.c: Include libioP.h instead of iolibio.h. (sscanf): Rename to __sscanf and add ldbl_strong_alias. * stdio-common/vfprintf.c (vfprintf): Define to _IO_vfprintf_internal. Use ldbl_strong_alias instead. Use ldbl_hidden_def instead of libc_hidden_def. (_IO_vfprintf_internal): Clear is_long_double if __ldbl_is_dbl, handle the argument as double if it is non-zero. (vfwprintf): Use ldbl_weak_alias instead of weak_alias. (_IO_vfprintf): Add ldbl_strong_alias. * stdio-common/vfscanf.c (_IO_vfscanf): Rename to _IO_vfscanf_internal, don't use strtold if __ldbl_is_dbl, add ldbl_strong_alias. (vfwscanf): Use ldbl_weak_alias instead of weak_alias. (__vfscanf): Rename to ___vfscanf, add ldbl_strong_alias and use ldbl_hidden_def instead of libc_hidden_def. (vfscanf): Use ldbl_weak_alias instead of weak_alias. * stdio-common/vprintf.c: Include libioP.h. (vprintf): Rename to __vprintf and add ldbl_strong_alias. * debug/fprintf_chk.c (__fprintf_chk): Rename to ___fprintf_chk and add ldbl_strong_alias. * debug/printf_chk.c (__printf_chk): Rename to ___printf_chk and add ldbl_strong_alias. * debug/snprintf_chk.c: Include libioP.h. (__snprintf_chk): Rename to ___snprintf_chk and add ldbl_strong_alias. * debug/sprintf_chk.c: Include libioP.h. (__sprintf_chk): Rename to ___sprintf_chk and add ldbl_strong_alias. * debug/vfprintf_chk.c (__vfprintf_chk): Rename to ___vfprintf_chk, add ldbl_strong_alias and use ldbl_hidden_def instead of libc_hidden_def. * debug/vfwprintf_chk.c (__vfwprintf_chk): Add libc_hidden_def. * debug/vprintf_chk.c (__vprintf_chk): Rename to ___vprintf_chk and add ldbl_strong_alias. * debug/vsnprintf_chk.c (__vsnprintf_chk): Rename to ___vsnprintf_chk, add ldbl_strong_alias and use ldbl_hidden_def instead of libc_hidden_def. * debug/vsprintf_chk.c (__vsprintf_chk): Rename to ___vsprintf_chk, add ldbl_strong_alias and use ldbl_hidden_def instead of libc_hidden_def. * stdlib/stdlib.h (strtold): Don't define inline if [!__LDBL_COMPAT]. * wcsmbs/wchar.h (wcstold): Likewise. * stdlib/strtod_l.c: Include math_ldbl_opt.h. (____STRTOF_INTERNAL): Define. (INTERNAL (__STRTOF)): Rename to ____STRTOF_INTERNAL. (__STRTOF): Call ____STRTOF_INTERNAL instead. [LONG_DOUBLE_COMPAT] (strtold_l, wcstold_l, __strtold_l, __wcstold_l): Add compatibility symbols. * stdlib/strtod.c: Include math_ldbl_opt.h. [LONG_DOUBLE_COMPAT] (strtold, wcstold, __strtold_internal, __wcstold_internal): Add compatibility symbols. * stdlib/strtold.c: Include bits/wordsize.h, wchar.h. (NEW, NEW1): Define. (__new_strtold, __new_wcstold): New prototypes. (____new_strtold_internal, ____new_wcstold_internal): Likewise. Add libc_hidden_proto. (STRTOF): Define to NEW (*told). [__LONG_DOUBLE_MATH_OPTIONAL] (wcstold, strtold): Add long_double_symbol. [__LONG_DOUBLE_MATH_OPTIONAL] (__wcstold_internal, __strtold_internal): Likewise. Add libc_hidden_ver. * stdlib/bits/stdlib-ldbl.h: New file. * stdlib/Makefile (headers): Add it. * stdlib/stdlib.h [__LDBL_COMPAT]: #include it. * include/stdlib.h (ecvt_r, fcvt_r, qecvt_r, qfcvt_r): Remove libc_hidden_proto. (__ecvt, __fcvt, __gcvt, __ecvt_r, __fcvt_r, __qecvt, __qfcvt, __qgcvt, __qecvt_r, __qfcvt_r): New prototypes. * misc/efgcvt_r.c: Include shlib-compat.h. (LONG_DOUBLE_CVT): Define. (__APPEND, __APPEND2): Define. (*fcvt_r): Use __APPEND instead of APPEND. Remove libc_hidden_def. (*ecvt_r): Likewise. (cvt_symbol): Define. Use it on fcvt_r and ecvt_r. * misc/efgcvt.c: Include shlib-compat.h. (LONG_DOUBLE_CVT): Define. (__APPEND, __APPEND2): Define. (fcvt): Use __APPEND instead of APPEND. Remove libc_hidden_def. (ecvt, gcvt): Likewise. (cvt_symbol): Define. Use it on fcvt, ecvt and gcvt. * stdlib/bits/monetary-ldbl.h: New file. * stdlib/Makefile (headers): Add it. * stdlib/monetary.h [__LDBL_COMPAT]: #include it. * stdlib/strfmon.c: Include math_ldbl_opt.h. (strfmon): Rename to __strfmon and add ldbl_strong_alias. * stdlib/strfmon_l.c: Remove all traces of [!USE_IN_LIBIO]. (__vstrfmon_l): Don't set is_long_double if __ldbl_is_dbl. (__strfmon_l): Rename to ___strfmon_l and add ldbl_strong_alias. (strfmon_l): Use ldbl_weak_alias instead of weak_alias. * misc/bits/syslog-ldbl.h: New file. * misc/Makefile (headers): Add it. * misc/sys/syslog.h [__LDBL_COMPAT]: #include it. * misc/syslog.c: Include math_ldbl_opt.h. (syslog): Rename to __syslog and add ldbl_strong_alias, use ldbl_hidden_def instead of libc_hidden_def. (vsyslog): Rename to __vsyslog and add ldbl_strong_alias, use ldbl_hidden_def instead of libc_hidden_def. * sysdeps/generic/math_ldbl_opt.h: New file. * math/w_j1l.c (j1l, y1l): Rename to __ prefixed variants. Add weak_alias. * math/w_j0l.c (j0l, y0l): Likewise. * math/w_jnl.c (jnl, ynl): Likewise. * sysdeps/ieee754/ldbl-96/s_nexttoward.c (__nexttowardl): Remove strong_alias. (nexttowardl): Remove weak_alias. * sysdeps/ieee754/ldbl-96/s_erfl.c (__erfl, __erfcl): Remove strong_alias. (erfl, erfcl): Remove weak_alias. * sysdeps/ieee754/ldbl-64-128/s_asinhl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_atanl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_cbrtl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_ceill.c: New file. * sysdeps/ieee754/ldbl-64-128/s_copysignl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_cosl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_erfl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_expm1l.c: New file. * sysdeps/ieee754/ldbl-64-128/s_fabsl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_finitel.c: New file. * sysdeps/ieee754/ldbl-64-128/s_floorl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_fpclassifyl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_frexpl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_ilogbl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_isinfl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_isnanl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_llrintl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_llroundl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_log1pl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_logbl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_lrintl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_lroundl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_modfl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_nearbyintl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_nextafterl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_nexttoward.c: New file. * sysdeps/ieee754/ldbl-64-128/s_nexttowardf.c: New file. * sysdeps/ieee754/ldbl-64-128/s_nexttowardfd.c: New file. * sysdeps/ieee754/ldbl-64-128/s_remquol.c: New file. * sysdeps/ieee754/ldbl-64-128/s_rintl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_roundl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_scalblnl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_scalbnl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_signbitl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_sincosl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_sinl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_tanhl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_tanl.c: New file. * sysdeps/ieee754/ldbl-64-128/s_truncl.c: New file. * sysdeps/ieee754/ldbl-64-128/strtold_l.c: New file. * sysdeps/ieee754/ldbl-64-128/w_expl.c: New file. * sysdeps/ieee754/ldbl-opt/configure.in: New file. * sysdeps/ieee754/ldbl-opt/configure: New file. * sysdeps/ieee754/ldbl-opt/Makefile: New file. * sysdeps/ieee754/ldbl-opt/Versions: New file. * sysdeps/ieee754/ldbl-opt/cabs.c: New file. * sysdeps/ieee754/ldbl-opt/cabsl.c: New file. * sysdeps/ieee754/ldbl-opt/carg.c: New file. * sysdeps/ieee754/ldbl-opt/cargl.c: New file. * sysdeps/ieee754/ldbl-opt/cimag.c: New file. * sysdeps/ieee754/ldbl-opt/cimagl.c: New file. * sysdeps/ieee754/ldbl-opt/conj.c: New file. * sysdeps/ieee754/ldbl-opt/conjl.c: New file. * sysdeps/ieee754/ldbl-opt/creal.c: New file. * sysdeps/ieee754/ldbl-opt/creall.c: New file. * sysdeps/ieee754/ldbl-opt/math_ldbl_opt.c: New file. * sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h: New file. * sysdeps/ieee754/ldbl-opt/nldbl-acos.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-acosh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-asin.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-asinh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-asprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-atan.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-atan2.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-atanh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cabs.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cacos.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cacosh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-carg.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-casin.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-casinh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-catan.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-catanh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cbrt.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-ccos.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-ccosh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-ceil.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cexp.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cimag.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-clog.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-clog10.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-compat.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-compat.h: New file. * sysdeps/ieee754/ldbl-opt/nldbl-conj.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-copysign.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cos.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cosh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cpow.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-cproj.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-creal.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-csin.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-csinh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-csqrt.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-ctan.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-ctanh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-dprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-drem.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-erf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-erfc.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-exp.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-exp10.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-exp2.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-expm1.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fabs.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fdim.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-finite.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-floor.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fma.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fmax.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fmin.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fmod.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-frexp.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fwprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fwprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-fwscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-gamma.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-hypot.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-ilogb.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-iovfscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-isinf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-isnan.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-j0.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-j1.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-jn.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-ldexp.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-lgamma.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-lgamma_r.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-llrint.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-llround.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-log.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-log10.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-log1p.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-log2.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-logb.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-lrint.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-lround.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-modf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-nan.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-nearbyint.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-nextafter.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-nexttoward.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-nexttowardf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-obstack_printf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-obstack_vprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-pow.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-pow10.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-printf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-printf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-printf_fp.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-printf_size.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-qecvt.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-qecvt_r.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-qfcvt.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-qfcvt_r.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-qgcvt.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-remainder.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-remquo.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-rint.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-round.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-scalb.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-scalbln.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-scalbn.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-scanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-signbit.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-significand.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-sin.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-sincos.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-sinh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-snprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-snprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-sprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-sprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-sqrt.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-sscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-strfmon.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-strfmon_l.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-strtold.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-strtoldint.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-swprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-swprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-swscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-syslog.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-syslog_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-tan.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-tanh.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-tgamma.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-trunc.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vasprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vdprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vfprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vfprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vfscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vfwprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vfwscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vsnprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vsprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vsprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vsscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vswprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vswprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vswscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vsyslog.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vsyslog_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vwprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vwprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-vwscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-wcstold.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-wcstoldint.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-wprintf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-wprintf_chk.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-wscanf.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-y0.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-y1.c: New file. * sysdeps/ieee754/ldbl-opt/nldbl-yn.c: New file. * sysdeps/ieee754/ldbl-opt/s_asinh.c: New file. * sysdeps/ieee754/ldbl-opt/s_atan.c: New file. * sysdeps/ieee754/ldbl-opt/s_cacos.c: New file. * sysdeps/ieee754/ldbl-opt/s_cacosh.c: New file. * sysdeps/ieee754/ldbl-opt/s_cacoshl.c: New file. * sysdeps/ieee754/ldbl-opt/s_cacosl.c: New file. * sysdeps/ieee754/ldbl-opt/s_casin.c: New file. * sysdeps/ieee754/ldbl-opt/s_casinh.c: New file. * sysdeps/ieee754/ldbl-opt/s_casinhl.c: New file. * sysdeps/ieee754/ldbl-opt/s_casinl.c: New file. * sysdeps/ieee754/ldbl-opt/s_catan.c: New file. * sysdeps/ieee754/ldbl-opt/s_catanh.c: New file. * sysdeps/ieee754/ldbl-opt/s_catanhl.c: New file. * sysdeps/ieee754/ldbl-opt/s_catanl.c: New file. * sysdeps/ieee754/ldbl-opt/s_cbrt.c: New file. * sysdeps/ieee754/ldbl-opt/s_ccos.c: New file. * sysdeps/ieee754/ldbl-opt/s_ccosh.c: New file. * sysdeps/ieee754/ldbl-opt/s_ccoshl.c: New file. * sysdeps/ieee754/ldbl-opt/s_ccosl.c: New file. * sysdeps/ieee754/ldbl-opt/s_ceil.c: New file. * sysdeps/ieee754/ldbl-opt/s_cexp.c: New file. * sysdeps/ieee754/ldbl-opt/s_cexpl.c: New file. * sysdeps/ieee754/ldbl-opt/s_clog.c: New file. * sysdeps/ieee754/ldbl-opt/s_clog10.c: New file. * sysdeps/ieee754/ldbl-opt/s_clog10l.c: New file. * sysdeps/ieee754/ldbl-opt/s_clogl.c: New file. * sysdeps/ieee754/ldbl-opt/s_copysign.c: New file. * sysdeps/ieee754/ldbl-opt/s_cpow.c: New file. * sysdeps/ieee754/ldbl-opt/s_cpowl.c: New file. * sysdeps/ieee754/ldbl-opt/s_cproj.c: New file. * sysdeps/ieee754/ldbl-opt/s_cprojl.c: New file. * sysdeps/ieee754/ldbl-opt/s_csin.c: New file. * sysdeps/ieee754/ldbl-opt/s_csinh.c: New file. * sysdeps/ieee754/ldbl-opt/s_csinhl.c: New file. * sysdeps/ieee754/ldbl-opt/s_csinl.c: New file. * sysdeps/ieee754/ldbl-opt/s_csqrt.c: New file. * sysdeps/ieee754/ldbl-opt/s_csqrtl.c: New file. * sysdeps/ieee754/ldbl-opt/s_ctan.c: New file. * sysdeps/ieee754/ldbl-opt/s_ctanh.c: New file. * sysdeps/ieee754/ldbl-opt/s_ctanhl.c: New file. * sysdeps/ieee754/ldbl-opt/s_ctanl.c: New file. * sysdeps/ieee754/ldbl-opt/s_erf.c: New file. * sysdeps/ieee754/ldbl-opt/s_expm1.c: New file. * sysdeps/ieee754/ldbl-opt/s_fabs.c: New file. * sysdeps/ieee754/ldbl-opt/s_fdim.c: New file. * sysdeps/ieee754/ldbl-opt/s_fdiml.c: New file. * sysdeps/ieee754/ldbl-opt/s_finite.c: New file. * sysdeps/ieee754/ldbl-opt/s_floor.c: New file. * sysdeps/ieee754/ldbl-opt/s_fma.c: New file. * sysdeps/ieee754/ldbl-opt/s_fmal.c: New file. * sysdeps/ieee754/ldbl-opt/s_fmax.c: New file. * sysdeps/ieee754/ldbl-opt/s_fmaxl.c: New file. * sysdeps/ieee754/ldbl-opt/s_fmin.c: New file. * sysdeps/ieee754/ldbl-opt/s_fminl.c: New file. * sysdeps/ieee754/ldbl-opt/s_frexp.c: New file. * sysdeps/ieee754/ldbl-opt/s_ilogb.c: New file. * sysdeps/ieee754/ldbl-opt/s_isinf.c: New file. * sysdeps/ieee754/ldbl-opt/s_isnan.c: New file. * sysdeps/ieee754/ldbl-opt/s_ldexp.c: New file. * sysdeps/ieee754/ldbl-opt/s_ldexpl.c: New file. * sysdeps/ieee754/ldbl-opt/s_llrint.c: New file. * sysdeps/ieee754/ldbl-opt/s_llround.c: New file. * sysdeps/ieee754/ldbl-opt/s_log1p.c: New file. * sysdeps/ieee754/ldbl-opt/s_logb.c: New file. * sysdeps/ieee754/ldbl-opt/s_lrint.c: New file. * sysdeps/ieee754/ldbl-opt/s_lround.c: New file. * sysdeps/ieee754/ldbl-opt/s_modf.c: New file. * sysdeps/ieee754/ldbl-opt/s_nan.c: New file. * sysdeps/ieee754/ldbl-opt/s_nanl.c: New file. * sysdeps/ieee754/ldbl-opt/s_nearbyint.c: New file. * sysdeps/ieee754/ldbl-opt/s_nextafter.c: New file. * sysdeps/ieee754/ldbl-opt/s_remquo.c: New file. * sysdeps/ieee754/ldbl-opt/s_rint.c: New file. * sysdeps/ieee754/ldbl-opt/s_round.c: New file. * sysdeps/ieee754/ldbl-opt/s_scalbln.c: New file. * sysdeps/ieee754/ldbl-opt/s_scalbn.c: New file. * sysdeps/ieee754/ldbl-opt/s_significand.c: New file. * sysdeps/ieee754/ldbl-opt/s_significandl.c: New file. * sysdeps/ieee754/ldbl-opt/s_sin.c: New file. * sysdeps/ieee754/ldbl-opt/s_sincos.c: New file. * sysdeps/ieee754/ldbl-opt/s_tan.c: New file. * sysdeps/ieee754/ldbl-opt/s_tanh.c: New file. * sysdeps/ieee754/ldbl-opt/s_trunc.c: New file. * sysdeps/ieee754/ldbl-opt/w_acos.c: New file. * sysdeps/ieee754/ldbl-opt/w_acosh.c: New file. * sysdeps/ieee754/ldbl-opt/w_acoshl.c: New file. * sysdeps/ieee754/ldbl-opt/w_acosl.c: New file. * sysdeps/ieee754/ldbl-opt/w_asin.c: New file. * sysdeps/ieee754/ldbl-opt/w_asinl.c: New file. * sysdeps/ieee754/ldbl-opt/w_atan2.c: New file. * sysdeps/ieee754/ldbl-opt/w_atan2l.c: New file. * sysdeps/ieee754/ldbl-opt/w_atanh.c: New file. * sysdeps/ieee754/ldbl-opt/w_atanhl.c: New file. * sysdeps/ieee754/ldbl-opt/w_cosh.c: New file. * sysdeps/ieee754/ldbl-opt/w_coshl.c: New file. * sysdeps/ieee754/ldbl-opt/w_drem.c: New file. * sysdeps/ieee754/ldbl-opt/w_dreml.c: New file. * sysdeps/ieee754/ldbl-opt/w_exp.c: New file. * sysdeps/ieee754/ldbl-opt/w_exp10.c: New file. * sysdeps/ieee754/ldbl-opt/w_exp10l.c: New file. * sysdeps/ieee754/ldbl-opt/w_fmod.c: New file. * sysdeps/ieee754/ldbl-opt/w_fmodl.c: New file. * sysdeps/ieee754/ldbl-opt/w_hypot.c: New file. * sysdeps/ieee754/ldbl-opt/w_hypotl.c: New file. * sysdeps/ieee754/ldbl-opt/w_j0.c: New file. * sysdeps/ieee754/ldbl-opt/w_j0l.c: New file. * sysdeps/ieee754/ldbl-opt/w_j1.c: New file. * sysdeps/ieee754/ldbl-opt/w_j1l.c: New file. * sysdeps/ieee754/ldbl-opt/w_jn.c: New file. * sysdeps/ieee754/ldbl-opt/w_jnl.c: New file. * sysdeps/ieee754/ldbl-opt/w_lgamma.c: New file. * sysdeps/ieee754/ldbl-opt/w_lgamma_r.c: New file. * sysdeps/ieee754/ldbl-opt/w_lgammal.c: New file. * sysdeps/ieee754/ldbl-opt/w_lgammal_r.c: New file. * sysdeps/ieee754/ldbl-opt/w_log.c: New file. * sysdeps/ieee754/ldbl-opt/w_log10.c: New file. * sysdeps/ieee754/ldbl-opt/w_log10l.c: New file. * sysdeps/ieee754/ldbl-opt/w_log2.c: New file. * sysdeps/ieee754/ldbl-opt/w_log2l.c: New file. * sysdeps/ieee754/ldbl-opt/w_logl.c: New file. * sysdeps/ieee754/ldbl-opt/w_pow.c: New file. * sysdeps/ieee754/ldbl-opt/w_powl.c: New file. * sysdeps/ieee754/ldbl-opt/w_remainder.c: New file. * sysdeps/ieee754/ldbl-opt/w_remainderl.c: New file. * sysdeps/ieee754/ldbl-opt/w_scalb.c: New file. * sysdeps/ieee754/ldbl-opt/w_scalbl.c: New file. * sysdeps/ieee754/ldbl-opt/w_sinh.c: New file. * sysdeps/ieee754/ldbl-opt/w_sinhl.c: New file. * sysdeps/ieee754/ldbl-opt/w_sqrt.c: New file. * sysdeps/ieee754/ldbl-opt/w_sqrtl.c: New file. * sysdeps/ieee754/ldbl-opt/w_tgamma.c: New file. * sysdeps/ieee754/ldbl-opt/w_tgammal.c: New file. * sysdeps/unix/sysv/linux/sparc/bits/wordsize.h: New file. * sysdeps/unix/sysv/linux/sparc/sparc32/Implies: New file. * sysdeps/sparc/sparc32/Implies: Move ldbl-128 first and flt-32 after dbl-64. * sysdeps/unix/sysv/linux/sparc/sparc32/Versions (NLDBL_VERSION): %define this to to GLIBC_2.4. * sysdeps/sparc/sparc32/fpu/e_sqrtl.c: New file. * sysdeps/sparc/sparc32/fpu/s_fabs.c: New file. * sysdeps/sparc/sparc32/fpu/s_fabsf.S: New file. * sysdeps/sparc/sparc32/fpu/s_fabsl.c: New file. * sysdeps/sparc/sparc32/soft-fp/q_qtoui.c: Removed. * sysdeps/sparc/sparc32/soft-fp/q_qtoux.c: Removed. * sysdeps/sparc/sparc32/soft-fp/q_qtox.c: Removed. * sysdeps/sparc/sparc32/soft-fp/q_uitoq.c: Removed. * sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c: Removed. * sysdeps/sparc/sparc32/soft-fp/q_xtoq.c: Removed. * sysdeps/sparc/sparc32/soft-fp/q_lltoq.c: New file. * sysdeps/sparc/sparc32/soft-fp/q_qtoll.c: New file. * sysdeps/sparc/sparc32/soft-fp/q_qtou.c: New file. * sysdeps/sparc/sparc32/soft-fp/q_qtoull.c: New file. * sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c: New file. * sysdeps/sparc/sparc32/soft-fp/q_utoq.c: New file. * sysdeps/sparc/sparc32/soft-fp/Versions: New file. * sysdeps/sparc/fpu/bits/mathinline.h (__unordered_cmp, __unordered_v9cmp): Define differently depending on -m32 -mlong-double-{64,128}. (__signbitl, sqrtl, __ieee754_sqrtl): New inlines. * sysdeps/sparc/fpu/bits/mathdef.h (__NO_LONG_DOUBLE_MATH): Remove. * sysdeps/sparc/sparc32/soft-fp/Makefile (sparc32-quad-routines): Set. (sysdep-routines): Add sparc32-quad-routines. * sysdeps/sparc/sparc32/soft-fp/sfp-machine.h: Include stdlib.h. (FP_HANDLE_EXCEPTIONS): Call ___Q_simulate_exceptions as a normal function. * sysdeps/sparc/sparc32/soft-fp/q_sqrt.c (__ieee754_sqrtl): New alias to _Q_sqrt. * sysdeps/sparc/sparc32/soft-fp/q_div.c (_Q_div): Fix a typo. * sysdeps/sparc/sparc64/soft-fp/sfp-machine.h: Include stdlib.h. * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update. * libio/libio.h (_IO_vfscanf, _IO_vfprintf): Remove __THROW. (_IO_vfwscanf, _IO_vfwprintf): Likewise. * libio/libioP.h (_IO_vdprintf): Likewise.
2006-01-04* include/stdlib.h: Make even more C++ compliant.Ulrich Drepper1-15/+15
2005-12-23* Makeconfig: Define CXXFLAGS. Split out warnings from +gccwarn whichUlrich Drepper1-0/+4
are not understood by the C++ compiler. * Makerules: Add rules to build C++ code for test cases. * include/stdlib.h: Protect for inclusion in C++ code. * include/time.h: Likewise. * test-skeleton.c (timeout_handler): Rewrite ts initialization for C++ compatibility.
2005-07-15* include/stdlib.h: Remove malloc attribute from __posix_memalign. Andreas Jaeger1-2/+2
* stdlib/stdlib.h: Likewise.
2004-12-22(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.Ulrich Drepper1-43/+21
2007-07-122.5-18.1Jakub Jelinek1-21/+43
2004-09-07No need to use __THROW in this header.Ulrich Drepper1-16/+14
2002-08-27* ctype/ctype.h (isascii_l, toascii_l): Define to __*_l counterparts.Roland McGrath1-0/+8
* ctype/ctype-extn.c (isblank_l): Add weak alias. * sysdeps/generic/strtol_l.c (strtol_l): Likewise. * sysdeps/generic/strtoll_l.c (strtoll_l): Likewise. * sysdeps/generic/strtoul_l.c (strtoul_l): Likewise. * sysdeps/generic/strtoull_l.c (strtoull_l): Likewise. * wctype/iswctype_l.c (iswctype_l): Likewise. * time/strftime.c [USE_IN_EXTENDED_LOCALE_MODEL]: No libc_hidden_def. * ctype/ctype.h (__exctype_l): Don't declare __ name. * stdlib/stdlib.h: Don't declare __*_l names. * include/stdlib.h: Declare them here instead. * include/string.h: Don't declare __*_l names. * string/string.h: Declare them here instead. * time/time.h: Don't declare __*_l names. * include/time.h: Declare them here instead. * wcsmbs/wchar.h: Don't declare __*_l names. * include/wchar.h: Declare them here instead. * wctype/wctype.h: Declare iswalnum_l, not __iswalnum_l. Don't declare __*_l names. * include/wctype.h: Declare them here instead. * stdlib/monetary.h: Declare strfmon_l, not __strfmon_l. * stdlib/strfmon_l.c (strfmon_l): Define as weak alias. * locale/langinfo.h: Don't declare __nl_langinfo_l. * include/langinfo.h: Declare it here with __typeof.