aboutsummaryrefslogtreecommitdiff
path: root/manual
AgeCommit message (Collapse)AuthorFilesLines
2016-04-29NSS: Implement group merging support.Stephen Gallagher1-1/+45
https://sourceware.org/glibc/wiki/Proposals/GroupMerging == Justification == It is common today for users to rely on centrally-managed user stores for handling their user accounts. However, much software existing today does not have an innate understanding of such accounts. Instead, they commonly rely on membership in known groups for managing access-control (for example the "wheel" group on Fedora and RHEL systems or the "adm" group on Debian-derived systems). In the present incarnation of nsswitch, the only way to have such groups managed by a remote user store such as FreeIPA or Active Directory would be to manually remove the groups from /etc/group on the clients so that nsswitch would then move past nss_files and into the SSSD, nss-ldap or other remote user database. == Solution == With this patch, a new action is introduced for nsswitch: NSS_ACTION_MERGE. To take advantage of it, one will add [SUCCESS=merge] between two database entries in the nsswitch.conf file. When a group is located in the first of the two group entries, processing will continue on to the next one. If the group is also found in the next entry (and the group name and GID are an exact match), the member list of the second entry will be added to the group object to be returned. == Implementation == After each DL_LOOKUP_FN() returns, the next action is checked. If the function returned NSS_STATUS_SUCCESS and the next action is NSS_ACTION_MERGE, a copy of the result buffer is saved for the next pass through the loop. If on this next pass through the loop the database returns another instance of a group matching both the group name and GID, the member list is added to the previous list and it is returned as a single object. If the following database does not contain the same group, then the original is copied back into the destination buffer. This patch implements merge functionality only for the group database. For other databases, there is a default implementation that will return the EINVAL errno if a merge is requested. The merge functionality can be implemented for other databases at a later time if such is needed. Each database must provide a unique implementation of the deep-copy and merge functions. If [SUCCESS=merge] is present in nsswitch.conf for a glibc version that does not support it, glibc will process results up until that operation, at which time it will return results if it has found them or else will simply return an error. In practical terms, this ends up behaving like the remainder of the nsswitch.conf line does not exist. == Iterators == This feature does not modify the iterator functionality from its current behavior. If getgrnam() or getgrgid() is called, glibc will iterate through all entries in the `group` line in nsswitch.conf and display the list of members without attempting to merge them. This is consistent with the behavior of nss_files where if two separate lines are specified for the same group in /etc/groups, getgrnam()/getgrgid() will display both. Clients are already expected to handle this gracefully. == No Premature Optimizations == The following is a list of places that might be eligible for optimization, but were not overengineered for this initial contribution: * Any situation where a merge may occur will result in one malloc() of the same size as the input buffer. * Any situation where a merge does occur will result in a second malloc() to hold the list of pointers to member name strings. * The list of members is simply concatenated together and is not tested for uniqueness (which is identical to the behavior for nss_files, which will simply return identical values if they both exist on the line in the file. This could potentially be optimized to reduce space usage in the buffer, but it is both complex and computationally expensive to do so. == Testing == I performed testing by running the getent utility against my newly-built glibc and configuring /etc/nsswitch.conf with the following entry: group: group: files [SUCCESS=merge] sss In /etc/group I included the line: wheel:x:10:sgallagh I then configured my local SSSD using the id_provider=local to respond with: wheel:*:10:localuser,localuser2 I then ran `getent group wheel` against the newly-built glibc in multiple situations and received the expected output as described above: * When SSSD was running. * When SSSD was configured in nsswitch.conf but the daemon was not running. * When SSSD was configured in nsswitch.conf but nss_sss.so.2 was not installed on the system. * When the order of 'sss' and 'files' was reversed. * All of the above with the [SUCCESS=merge] removed (to ensure no regressions). * All of the above with `getent group 10`. * All of the above with `getent group` with and without `enumerate=true` set in SSSD. * All of the above with and without nscd enabled on the system.
2016-04-29glob: Simplify the interface for the GLOB_ALTDIRFUNC callback gl_readdirFlorian Weimer2-1/+80
Previously, application code had to set up the d_namlen member if the target supported it, involving conditional compilation. After this change, glob will use the length of the string in d_name instead of d_namlen to determine the file name length. All glibc targets provide the d_type and d_ino members, and setting them as needed for gl_readdir is straightforward. Changing the behavior with regards to d_ino is left to a future cleanup.
2016-04-14malloc: Run fork handler as late as possible [BZ #19431]Florian Weimer1-8/+0
Previously, a thread M invoking fork would acquire locks in this order: (M1) malloc arena locks (in the registered fork handler) (M2) libio list lock A thread F invoking flush (NULL) would acquire locks in this order: (F1) libio list lock (F2) individual _IO_FILE locks A thread G running getdelim would use this order: (G1) _IO_FILE lock (G2) malloc arena lock After executing (M1), (F1), (G1), none of the threads can make progress. This commit changes the fork lock order to: (M'1) libio list lock (M'2) malloc arena locks It explicitly encodes the lock order in the implementations of fork, and does not rely on the registration order, thus avoiding the deadlock.
2016-04-14Remove union wait [BZ #19613]Florian Weimer1-42/+6
The overloading approach in the W* macros was incompatible with integer expressions of a type different from int. Applications using union wait and these macros will have to migrate to the POSIX-specified int status type.
2016-03-10Allow spurious underflow / inexact for ldbl-128ibm.Joseph Myers1-0/+10
A large number of the test-ldouble failures seen for ldbl-128ibm are spurious "underflow" and "inexact" exceptions. These arise from such exceptions in the underlying arithmetic; unlike other spurious exceptions from that arithmetic, they do not in general relate to cases where the returned result is also substantially inaccurate, are not so readily avoidable by appropriately conditional libgcc patches, and are widespread enough to be hard to handle through individual XFAILing of the affected tests. Thus, this patch documents relaxed accuracy goals for libm functions for IBM long double and makes libm-test.inc reflect these spurious exceptions in ldbl-128ibm arithmetic and always allow them in ldbl-128ibm testing (while still not allowing these exceptions to be missing where required to be present). Tested for powerpc. * manual/math.texi (Errors in Math Functions): Document relaxed accuracy goals for IBM long double. * math/libm-test.inc (test_exceptions): Always allow spurious "underflow" and "inexact" exceptions for IBM long double.
2016-02-24Require Linux 3.2 except on x86 / x86_64, 3.2 headers everywhere.Joseph Myers1-1/+1
In <https://sourceware.org/ml/libc-alpha/2016-01/msg00885.html> I proposed a minimum Linux kernel version of 3.2 for glibc 2.24, since Linux 2.6.32 has reached EOL. In the discussion in February, some concerns were expressed about compatibility with OpenVZ containers. It's not clear that these are real issues, given OpenVZ backporting kernel features and faking the kernel version for guest software, as discussed in <https://sourceware.org/ml/libc-alpha/2016-02/msg00278.html>. It's also not clear that supporting running GNU/Linux distributions from late 2016 (at the earliest) on a kernel series from 2009 is a sensible expectation. However, as an interim step, this patch increases the requirement everywhere except x86 / x86_64 (since the controversy was only about those architectures); the special caveats and settings can easily be removed later when we're ready to increase the requirements on x86 / x86_64 (and if someone would like to raise the issue on LWN as suggested in the previous discussion, that would be welcome). 3.2 kernel headers are required everywhere by this patch. (x32 already requires 3.4 or later, so is unaffected by this patch.) As usual for such a change, this patch only changes the configure scripts and associated documentation. The intent is to follow up with removal of dead __LINUX_KERNEL_VERSION conditionals. Each __ASSUME_* or other macro that becomes dead can then be removed independently. Tested for x86_64 and x86. * sysdeps/unix/sysv/linux/configure.ac (LIBC_LINUX_VERSION): Define to 3.2.0. (arch_minimum_kernel): Likewise. * sysdeps/unix/sysv/linux/configure: Regenerated. * sysdeps/unix/sysv/linux/i386/configure.ac (arch_minimum_kernel): Define to 2.6.32. * sysdeps/unix/sysv/linux/i386/configure: Regenerated. * sysdeps/unix/sysv/linux/x86_64/64/configure.ac (arch_minimum_kernel): Define to 2.6.32. * sysdeps/unix/sysv/linux/x86_64/64/configure: Regenerated. * README: Document Linux 3.2 requirement. * manual/install.texi (Linux): Document Linux 3.2 headers requirement. * INSTALL: Regenerated.
2016-02-20Deprecate readdir_r, readdir64_r [BZ #19056]Florian Weimer1-6/+7
2016-02-19malloc: Remove max_total_mem member form struct malloc_parFlorian Weimer1-1/+1
Also note that sumblks in struct mallinfo is always 0. No functional change.
2016-02-14Update INSTALL with latest versions tested to work.Carlos O'Donell1-7/+6
2016-01-10Fix doc quoting problems with Texinfo 5Paul Eggert1-0/+7
Without this change, in the info file output, Texinfo 5 quotes code in text with undirected single quotes 'like this' and generates code examples that with many PDF readers cannot be cut out of PDFs and pasted into code. * manual/libc.texinfo: Configure the libc manual like the GNU Emacs manual, by using @documentencoding and setting txicodequoteundirected and txicodequotebacktick. This way, Texinfo 5 quotes code in text with directed single quotes ‘like this’ and produces examples that can be cut out of PDFs. This change causes Texinfo 5 to generate info files that contain UTF-8 characters in the set {'‘', '’', '“', '”', 'Ä', 'ä', 'ö', '−', '–', '—', '©', '⇒', '•', '…'}, which is OK nowadays.
2016-01-07Make shebang interpreter directives consistentMarko Myllynen4-4/+4
2016-01-05Update miscellaneous files from upstream sources.Joseph Myers1-600/+1529
This patch updates texinfo.tex, config.guess, config.sub and move-if-change from their respective upstream sources. * manual/texinfo.tex: Update to version 2016-01-04.21 with trailing whitespace removed. * scripts/config.guess: Update to version 2016-01-01. * scripts/config.sub: Update to version 2016-01-01. * scripts/move-if-change: Update from gnulib.
2016-01-04Update copyright dates not handled by scripts/update-copyrights.Joseph Myers1-1/+1
I've updated copyright dates in glibc for 2016. This is the patch for the changes not generated by scripts/update-copyrights and subsequent build / regeneration of generated files. * NEWS: Update copyright dates. * catgets/gencat.c (print_version): Likewise. * csu/version.c (banner): Likewise. * debug/catchsegv.sh: Likewise. * debug/pcprofiledump.c (print_version): Likewise. * debug/xtrace.sh (do_version): Likewise. * elf/ldconfig.c (print_version): Likewise. * elf/ldd.bash.in: Likewise. * elf/pldd.c (print_version): Likewise. * elf/sotruss.sh: Likewise. * elf/sprof.c (print_version): Likewise. * iconv/iconv_prog.c (print_version): Likewise. * iconv/iconvconfig.c (print_version): Likewise. * locale/programs/locale.c (print_version): Likewise. * locale/programs/localedef.c (print_version): Likewise. * login/programs/pt_chown.c (print_version): Likewise. * malloc/memusage.sh (do_version): Likewise. * malloc/memusagestat.c (print_version): Likewise. * malloc/mtrace.pl: Likewise. * manual/libc.texinfo: Likewise. * nptl/version.c (banner): Likewise. * nscd/nscd.c (print_version): Likewise. * nss/getent.c (print_version): Likewise. * nss/makedb.c (print_version): Likewise. * posix/getconf.c (main): Likewise. * scripts/test-installation.pl: Likewise. * sysdeps/unix/sysv/linux/lddlibc4.c (main): Likewise.
2016-01-04Update copyright dates with scripts/update-copyrights.Joseph Myers46-46/+46
2015-12-14Make obsolete syscall wrappers into compat symbols (bug 18472).Joseph Myers1-2/+0
Various Linux kernel syscalls have become obsolete over time. Specifically, the following are obsolete in all kernel versions supported by glibc, are not present for architectures more recently added to the kernel, and as such, the wrapper functions for them should be compat symbols, not in static libc and not available for new links with shared libc. * bdflush: in Linux 2.6, does nothing if present. * create_module get_kernel_syms query_module: Linux 2.4 module interface, syscalls not present in Linux 2.6. * uselib: part of the mechanism for loading a.out shared libraries, irrelevant with ELF. This patch adds support for syscalls.list to list syscall aliases of the form NAME@VERSION:OBSOLETED, with SHLIB_COMPAT conditionals being generated for such aliases. Those five syscalls are then made into compat symbols (obsoleted in glibc 2.23, so future ports won't have these symbols at all), with the header <sys/kdaemon.h> declaring bdflush being removed. When we move to 3.2 as minimum kernel version, the same can be done for nfsservctl (removed in Linux 3.1) as well. Tested for x86_64 and x86 (testsuite, as well as checking that the symbols in question indeed become compat symbols, that they are indeed omitted from static libc, and that the generated SHLIB_COMPAT conditionals look right). [BZ #18472] * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Handle entries for the form NAME@VERSION:OBSOLETED and generate SHLIB_COMPAT conditionals for them. * sysdeps/unix/make-syscalls.sh (emit_weak_aliases): Likewise. * sysdeps/unix/sysv/linux/sys/kdaemon.h: Remove file. * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Remove sys/kdaemon.h. * sysdeps/unix/sysv/linux/syscalls.list (bdflush): Make into compat-only syscall, obsoleted in glibc 2.23. (create_module): Likewise. (get_kernel_syms): Likewise. (query_module): Likewise. (uselib): Likewise. * manual/sysinfo.texi (System Parameters): Do not mention bdflush.
2015-12-10Split large string section; add truncation advicePaul Eggert6-227/+250
* manual/examples/strncat.c: Remove. This example was misleading, as the code would have undefined behavior if "hello" was longer than SIZE. Anyway, the manual shouldn't encourage strncpy+strncat for this sort of thing. * manual/string.texi (Copying Strings and Arrays): Split into three sections Copying Strings and Arrays, Concatenating Strings, and Truncating Strings, as this section was way too long. All cross-referenced changed. Add advice about string-truncation functions. Remove misleading strncat example.
2015-12-10Document best practice for disconnected NSS modules.Carlos O'Donell1-0/+7
NSS modules which can run in disconnected modes should return NSS_STATUS_NOTFOUND and SUCCESS in order to follow best practice for such modules and ensure user applications can have these modules configured without causing problems if the data sources are not connected.
2015-12-04Fix typo in strncat, wcsncat manual entriesPaul Eggert1-4/+6
* manual/string.texi (Copying and Concatenation): Fix typos in sample implementations of strncat and wcsncat, by having them use the old value of the destination length, not the new one.
2015-12-04Consistency about byte vs character in string.texiPaul Eggert1-221/+236
* manual/string.texi (String and Array Utilities): Distinguish more carefully among bytes, multibyte characters, and wide characters. Use "byte" when talking about C 'char', to distinguish it more clearly from multibyte characters. Say "wide character" or "multibyte character" instead of "character", when a wide or multibyte character is intended. Similarly for "multibyte string" versus "string". Define these terms more carefully.
2015-11-24Remove CPU set size checking from affinity functions [BZ #19143]Florian Weimer1-2/+0
With current kernel versions, the check does not reliably detect that unavailable CPUs are requested, for these reasons: (1) The kernel will silently ignore non-allowed CPUs, that is, CPUs which are physically present but disallowed for the thread based on system configuration. (2) Similarly, CPU bits which lack an online CPU (possible CPUs) are ignored. (3) The existing probing code assumes that the CPU mask size is a power of two and at least 1024. Neither has it to be a power of two, nor is the minimum possible value 1024, so the value determined is often too large. This means that the CPU set size check in glibc accepts CPU bits beyond the actual hard system limit. (4) Future kernel versions may not even have a fixed CPU set size. After the removal of the probing code, the kernel still returns EINVAL if no CPU in the requested set remains which can run the thread after the affinity change. Applications which care about the exact affinity mask will have to query it using sched_getaffinity after setting it. Due to the effects described above, this commit does not change this. The new tests supersede tst-getcpu, which is removed. This addresses bug 19164 because the new tests allocate CPU sets dynamically. * nptl/check-cpuset.h: Remove. * nptl/pthread_attr_setaffinity.c (__pthread_attr_setaffinity_new): Remove CPU set size check. * nptl/pthread_setattr_default_np.c (pthread_setattr_default_np): Likewise. * sysdeps/unix/sysv/linux/check-cpuset.h: Remove. * sysdeps/unix/sysv/linux/pthread_setaffinity.c (__kernel_cpumask_size, __determine_cpumask_size): Remove. (__pthread_setaffinity_new): Remove CPU set size check. * sysdeps/unix/sysv/linux/sched_setaffinity.c (__kernel_cpumask_size): Remove. (__sched_setaffinity_new): Remove CPU set size check. * manual/threads.texi (Default Thread Attributes): Remove stale reference to check_cpuset_attr, determine_cpumask_size in comment. * sysdeps/unix/sysv/linux/Makefile [$(subdir) == posix] (tests): Remove tst-getcpu. Add tst-affinity, tst-affinity-pid. [$(subdir) == nptl] (tests): Add tst-thread-affinity-pthread, tst-thread-affinity-pthread2, tst-thread-affinity-sched. * sysdeps/unix/sysv/linux/tst-affinity.c: New file. * sysdeps/unix/sysv/linux/tst-affinity-pid.c: New file. * sysdeps/unix/sysv/linux/tst-skeleton-affinity.c: New skeleton test file. * sysdeps/unix/sysv/linux/tst-thread-affinity-sched.c: New file. * sysdeps/unix/sysv/linux/tst-thread-affinity-pthread.c: New file. * sysdeps/unix/sysv/linux/tst-thread-affinity-pthread2.c: New file. * sysdeps/unix/sysv/linux/tst-thread-skeleton-affinity.c: New skeleton test file. * sysdeps/unix/sysv/linux/tst-getcpu.c: Remove. Superseded by tst-affinity-pid.
2015-10-27Require GCC 4.7 or later to build glibc.Joseph Myers1-2/+2
This patch implements a requirement of GCC 4.7 or later to build glibc. This was discussed in the thread starting at <https://sourceware.org/ml/libc-alpha/2015-08/msg00851.html>. Concerns were expressed by Mike and David. At <https://sourceware.org/ml/libc-alpha/2015-10/msg00453.html> I have provided a 14-patch series showing in outline the cleanups facilitated by this version requirement, as requested by Mike (this patch is the first in that series, with the addition of a NEWS entry). Given the absence of further concerns or alternative proposals for criteria for updates to this version requirement as requested in <https://sourceware.org/ml/libc-alpha/2015-10/msg00065.html>, I am interpreting this as "absence of sustained opposition" under Carlos's definition at <https://sourceware.org/glibc/wiki/Consensus> and proposing this patch for inclusion in glibc. I'd like to remind people testing with 4.6 that if they move to testing with GCC 5 then it will probably be about four years before they need to update the compiler they use to test glibc again. Although on the principles of time-based updates I think a move to requiring binutils 2.23 would be reasonable, I'm not currently aware of any cleanups that would facilitate so am not proposing that at this time (but would expect to propose a move to requiring binutils 2.24 in a year's time, as that brings features such as AVX512 support that should allow some conditionals to be cleaned up). If someone thinks a move to requiring 2.23 would help clean things up for their architecture, please speak up. (And in general, I suspect there are lots of architecture-specific configure tests that could be removed on the basis of current GCC and binutils version requirements, given how I've found architecture-independent tests obsolete on the basis of version requirements going back 20 years.) Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). * configure.ac (libc_cv_compiler_ok): Require GCC 4.7 or later. * configure: Regenerated. * manual/install.texi (Tools for Compilation): Document requirement for GCC 4.7 or later. * INSTALL: Regenerated.
2015-10-20Convert 29 more function definitions to prototype style (multiple parameters ↵Joseph Myers1-2/+1
in one K&R parameter declaration). This automatically-generated patch converts 29 function definitions in glibc (including one in an example in the manual) from old-style K&R to prototype-style. Following my other recent such patches, this one deals with the case of function definitions where one K&R parameter declaration declares multiple parameters, as in: void foo (a, b) int a, *b; { } Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * crypt/crypt.c (_ufc_doit_r): Convert to prototype-style function definition. (_ufc_doit_r): Likewise. * crypt/crypt_util.c (_ufc_copymem): Likewise. (_ufc_output_conversion_r): Likewise. * inet/inet_mkadr.c (__inet_makeaddr): Likewise. * inet/rcmd.c (rcmd_af): Likewise. (rcmd): Likewise. (ruserok_af): Likewise. (ruserok): Likewise. (ruserok2_sa): Likewise. (ruserok_sa): Likewise. (iruserok_af): Likewise. (iruserok): Likewise. (__ivaliduser): Likewise. (__validuser2_sa): Likewise. * inet/rexec.c (rexec_af): Likewise. (rexec): Likewise. * inet/ruserpass.c (ruserpass): Likewise. * locale/programs/xmalloc.c (xcalloc): Likewise. * manual/examples/timeval_subtract.c (timeval_subtract): Likewise. * math/w_drem.c (__drem): Likewise. * math/w_dremf.c (__dremf): Likewise. * math/w_dreml.c (__dreml): Likewise. * misc/daemon.c (daemon): Likewise. * resolv/res_debug.c (p_fqnname): Likewise. * stdlib/div.c (div): Likewise. * string/memcmp.c (memcmp_bytes): Likewise. * sunrpc/pmap_rmt.c (pmap_rmtcall): Likewise. * sunrpc/svc_udp.c (svcudp_bufcreate): Likewise.
2015-10-19timezone: polish grammar a bit in documentationMike Frysinger1-2/+2
Reported-by: ricaljasan@pacific.net
2015-10-17malloc: Rewrite with explicit TLS access using __threadFlorian Weimer1-4/+0
2015-10-17The va_list pointer is unspecified after a call to vfprintf [BZ #18982]Florian Weimer1-14/+10
This adjusts the documentation to the existing implementation.
2015-10-14manual/argp.texi (Specifying Argp Parsers): Fix typo.Namhyung Kim1-1/+1
2015-10-07Fix manual argument order for posix_fallocate64 (Bug 19086).Carlos O'Donell1-1/+1
The argument order for posix_fallocate64 in the manual was wrong, it was listed as [fd, len, offset] when it should have been [fd, offset, len]. Verified io/fcntl.h has the right argument order, and it does. Verified generated PDF.
2015-09-29Files open O_WRONLY not supported in fallocate emulation.Carlos O'Donell1-0/+4
In the posix_fallocate description in the manual we list various drawbacks with the emulation, including the fact that a file opened with O_APPEND fails with EBADF. Similarly a file opened with O_WRONLY fails with EBADF. We must be able to emulate a compare-and-swap via pread/compare/pwrite in order to make the emulation as safe as possible. It is not acceptable to ignore the read failure because it could result in significant data loss across all of the blocks. There is no other way to make this work without a true atomic CAS and SIGBUS handler (which is looking more attractive as a way to remove the race condition). This patch adds O_WRONLY to the manual as another bullet to clarify the limits of the emulation. Manual looks good in PDF.
2015-09-18timezone: add a configure flag to disable program installMike Frysinger1-0/+10
Some distros build+install the timezone tools (zic/zdump/tzselect) outside of glibc and use the upstream package directly. Add a configure flag to glibc so they can disable install of those tools. This allows tests to run & pass regardless of the configure flag. Only the install of them is impacted.
2015-08-21manual: skip build when perl is unavailableMike Frysinger1-0/+3
Do not try to generate the manual when perl is unavailable. This matches the behavior when makeinfo is unavailable. Otherwise the install step fails when trying to generate the libm section since it runs a perl script.
2015-08-20Fix exponents in manual.Ondřej Bílka4-23/+34
* manual/macros.texi: Add twoexp macro. * manual/filesys.texi: Fix exponents. * manual/llio.texi: Likewise. * manual/stdio.texi: Likewise.
2015-08-19PowerPC: Extend Program Priority Register supportGabriel F. T. Gomes1-0/+18
This patch adds extra inline functions to change the Program Priority Register from ISA 2.07. 2015-08-19 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com> * sysdeps/powerpc/sys/platform/ppc.h (__ppc_set_ppr_med_high, __ppc_set_ppr_very_low): New functions. * manual/platform.texi: Add documentation about __ppc_set_ppr_med_high and __ppc_set_ppr_very_low.
2015-06-12Attempting to install glibc configured with --prefix=/usr intoMartin Sebor1-6/+8
a non-standard directory specified by the prefix make variable fails with an error. Since this is an unsupported use case, this change makes make install fail early and with a descriptive error message when either the prefix or the exec_prefix make variable is overridden on the command line.
2015-06-09Start of series of patches with x86_64 vector math functions.Andrew Senkevich1-0/+4
Here is implementation of cos containing SSE, AVX, AVX2 and AVX512 versions according to Vector ABI which had been discussed in <https://groups.google.com/forum/#!topic/x86-64-abi/LmppCfN1rZ4>. Vector math library build and ABI testing enabled by default for x86_64. * sysdeps/x86_64/fpu/Makefile: New file. * sysdeps/x86_64/fpu/Versions: New file. * sysdeps/x86_64/fpu/svml_d_cos_data.S: New file. * sysdeps/x86_64/fpu/svml_d_cos_data.h: New file. * sysdeps/x86_64/fpu/svml_d_cos2_core.S: New file. * sysdeps/x86_64/fpu/svml_d_cos4_core.S: New file. * sysdeps/x86_64/fpu/svml_d_cos4_core_avx.S: New file. * sysdeps/x86_64/fpu/svml_d_cos8_core.S: New file. * sysdeps/x86_64/fpu/svml_d_wrapper_impl.h: New file. * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core.S: New file. * sysdeps/x86_64/fpu/multiarch/svml_d_cos2_core_sse4.S: New file. * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core.S: New file. * sysdeps/x86_64/fpu/multiarch/svml_d_cos4_core_avx2.S: New file. * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core.S: New file. * sysdeps/x86_64/fpu/multiarch/svml_d_cos8_core_avx512.S: New file. * sysdeps/x86_64/fpu/multiarch/Makefile (libmvec-sysdep_routines): Added build of SSE, AVX2 and AVX512 IFUNC versions. * sysdeps/x86/fpu/bits/math-vector.h: Added SIMD declaration for cos. * math/bits/mathcalls.h: Added cos declaration with __MATHCALL_VEC. * sysdeps/x86_64/configure.ac: Options for libmvec build. * sysdeps/x86_64/configure: Regenerated. * sysdeps/x86_64/sysdep.h (cfi_offset_rel_rsp): New macro. * sysdeps/unix/sysv/linux/x86_64/libmvec.abilist: New file. * manual/install.texi (Configuring and compiling): Document --disable-mathvec. * INSTALL: Regenerated. * NEWS: Mention addition of libmvec and x86_64 vector cos.
2015-06-05posix_fallocate: Emulation fixes and documentation [BZ #15661]Florian Weimer1-0/+94
Handle signed integer overflow correctly. Detect and reject O_APPEND. Document drawbacks of emulation. This does not completely address bug 15661, but improves the situation somewhat.
2015-05-20Fix typo in safety annotations in envz_removeSiddhesh Poyarekar1-1/+1
2015-05-19Add envz_remove to the libc manualSiddhesh Poyarekar1-0/+8
I was told that Ma Shimao submitted a patch to add envz_remove to the libc manual, but the patch could not be accepted since he does not have a copyright assignment in place. I have been woefully behind on libc-alpha recently and have not seen the patch or the discussion thread. I have also not read the man page for envz_remove, so Alexandre Oliva asked me if I could write this independently and post a patch. The patch below is the result of the same - I have written it based on the implementation in string/envz.c and Alex told me via email that the function is AS, AC and MT-safe like envz_strip. I assume Alex and Carlos cannot review this since they have been tainted by the original patch (I haven't even tried to look for a link to it since I don't want to be tainted) so someone else will have to review this. If there are no reviewers till the end of the week, I will commit this since I believe there is a chance that there are no other reviewers who haven't read that thread. * manual/string.texi (Envz Functions): Add envz_remove.
2015-03-23Avoid SIGFPE in wordexp [BZ #18100]Florian Weimer1-1/+2
Check for a zero divisor and integer overflow before performing division in arithmetic expansion.
2015-03-12manual: fix XPG basename prototypeYaakov Selkowitz1-1/+1
* manual/string.texi (XPG basename): Fix prototype.
2015-03-06Document test-wrapper-env-only in INSTALL.Roland McGrath1-8/+13
2015-03-06manual: complete example in error message documentationRical Jasan1-6/+12
The manual gives "an example showing how to handle failure to open a file correctly." The example function, open_sesame, uses the newly-introduced strerror function and errno and program_invocation_short_name variables. It fails to specify GNU extensions, however, so attempts to use it in the following way: int main (void) {open_sesame ("badname");} fail during compilation with "error: ‘program_invocation_short_name’ undeclared", indicating the example is incomplete. The presence of "#include"s suggest everything neccesary for the function to work should be present. For completeness, the example is lacking the following line: #define _GNU_SOURCE as the declarations of program_invocation_*name in errno.h are wrapped in an "#ifdef __USE_GNU" conditional. The documentation of the variables is also expanded, adding that their definition lies in errno.h and noting specifically they are GNU extensions.
2015-03-06manual: drop strerror C89 compatibility noteMike Frysinger1-3/+0
Mentioning systems that are old and don't support C89 is probably a waste of time nowadays. Drop the note.
2015-02-17Refine documentation of libm exceptions goals.Joseph Myers1-6/+13
This patch refines the math.texi documentation of the goals for when libm function raise the inexact and underflow exceptions. The previous text was problematic in some cases around the underflow threshold. * Strictly, it would have meant that if the mathematical result of pow was very slightly below DBL_MIN, for example, it was required to raise the underflow exception; although normally a few ulps error would be OK, if that error meant the computed value was slightly above DBL_MIN it would fail the previously described underflow exception goal. * Similarly, strict IEEE semantics would imply that sin (DBL_MIN), in round-to-nearest mode, underflows on before-rounding but not after-rounding architectures, while returning DBL_MIN; the previous wording would have required an underflow exception, so preventing checks for a result with absolute value below DBL_MIN from being sufficient checks to determine whether the exception is required. (Under the previous wording, checks for a result with absolute value <= DBL_MIN wouldn't have been sufficient either, because in FE_TOWARDZERO mode a result of DBL_MIN definitely does not result from an underflowing infinite-precision result.) * The previous wording about rounding infinite-precision values could be taken to mean all exceptions including "inexact" must be consistent with some such value. That would mean that a result of DBL_MIN in FE_UPWARD mode with "inexact" raised must also have "underflow" raised on before-rounding architectures. Again, that would cause problems for computing a result (possibly with spurious "inexact" exceptions) and then using a rounding-mode-independent test for results with absolute value below DBL_MIN to determine whether an underflow exception must be forced in case the underflows from intermediate computations happened to be exact. By refining the documentation, this patch avoids stating goals for accuracy close to the underflow threshold that were stricter than applied anywhere else, and allows the implementation strategy of: compute a result within a few ulps, taking care to avoid underflows in intermediate computations, then force an underflow exception if that result was subnormal. Only fully-defined functions such as fma need to take greater care about the exact underflow threshold (including its dependence on whether the architecture is before-rounding or after-rounding, and on the rounding mode on after-rounding architectures). (If the rounding mode is changed as part of the computation, it's still necessary to ensure that not just intermediate computations, but the final computation of the result to be returned, do not raise underflow if that result is the least normal value and underflow would be inconsistent with the original rounding mode. Since such code can readily discard exceptions as part of saving and restoring the rounding mode - SET_RESTORE_ROUND_NOEX etc. - I don't think that should be a problem in practice.) * manual/math.texi (Errors in Math Functions): Clarify goals regarding inexact and underflow exceptions.
2015-02-16* manual/time.texi (TZ Variable): glibc no longer comes with tzdata.Paul Eggert1-1/+2
Problem reported by J William Piggott.
2015-02-12[BZ #17969]J William Piggott1-2/+2
* manual/time.texi (TZ Variable): The zoneinfo path is /usr/share/zoneinfo.
2015-02-12Document tv_sec is of type time_t:Rüdiger Sonderfeld1-2/+2
The tv_sec is of type time_t in both struct timeval and struct timespec. This matches the implementation and also the relevant standard (checked C11 for timespec and opengroup for timeval).
2015-02-05glibc 2.21 pre-release update.Carlos O'Donell2-2/+12
Update all translations. Update contributions in the manual. Update installation notes with information about newest working tools. Reconfigure using exactly autoconf 2.69. Regenerate INSTALL.
2015-01-02Update copyright dates not handled by scripts/update-copyrights.Joseph Myers1-1/+1
I've updated copyright dates in glibc for 2015. This is the patch for the changes not generated by scripts/update-copyrights and subsequent build / regeneration of generated files. Apart from the files updated last time (of which sotruss.ksh had moved to sotruss.sh during the year) this also updates nptl/version.c (missed from 2006 until October) and sysdeps/unix/sysv/linux/lddlibc4.c (missed since 2009). * NEWS: Update copyright dates. * catgets/gencat.c (print_version): Likewise. * csu/version.c (banner): Likewise. * debug/catchsegv.sh: Likewise. * debug/pcprofiledump.c (print_version): Likewise. * debug/xtrace.sh (do_version): Likewise. * elf/ldconfig.c (print_version): Likewise. * elf/ldd.bash.in: Likewise. * elf/pldd.c (print_version): Likewise. * elf/sotruss.sh: Likewise. * elf/sprof.c (print_version): Likewise. * iconv/iconv_prog.c (print_version): Likewise. * iconv/iconvconfig.c (print_version): Likewise. * locale/programs/locale.c (print_version): Likewise. * locale/programs/localedef.c (print_version): Likewise. * login/programs/pt_chown.c (print_version): Likewise. * malloc/memusage.sh (do_version): Likewise. * malloc/memusagestat.c (print_version): Likewise. * malloc/mtrace.pl: Likewise. * manual/libc.texinfo: Likewise. * nptl/version.c (banner): Likewise. * nscd/nscd.c (print_version): Likewise. * nss/getent.c (print_version): Likewise. * nss/makedb.c (print_version): Likewise. * posix/getconf.c (main): Likewise. * scripts/test-installation.pl: Likewise. * sysdeps/unix/sysv/linux/lddlibc4.c (main): Likewise.
2015-01-02Update copyright dates with scripts/update-copyrights.Joseph Myers47-47/+47
2014-12-22Require bison 2.7 or newer for regenerating intl/plural.yWill Newton1-0/+9
The merge of the latest gettext code introduced changes to the yacc parser source that are incompatible with versions of bison older than 2.7. Add a configure check for the appropriate versions and document the requirement in INSTALL. ChangeLog: 2014-12-22 Will Newton <will.newton@linaro.org> * manual/install.texi: Document that we require bison 2.7 or above. * INSTALL: Regenerate. * configure.ac: Use AC_CHECK_PROG_VER instead of AC_PATH_PROG when checking for bison and check for version 2.7 or above. * configure: Regenerate.