aboutsummaryrefslogtreecommitdiff
path: root/manual
AgeCommit message (Collapse)Author
2015-05-20Fix typo in safety annotations in envz_removeSiddhesh Poyarekar
2015-05-19Add envz_remove to the libc manualSiddhesh Poyarekar
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 Weimer
Check for a zero divisor and integer overflow before performing division in arithmetic expansion.
2015-03-12manual: fix XPG basename prototypeYaakov Selkowitz
* manual/string.texi (XPG basename): Fix prototype.
2015-03-06Document test-wrapper-env-only in INSTALL.Roland McGrath
2015-03-06manual: complete example in error message documentationRical Jasan
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 Frysinger
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 Myers
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 Eggert
Problem reported by J William Piggott.
2015-02-12[BZ #17969]J William Piggott
* manual/time.texi (TZ Variable): The zoneinfo path is /usr/share/zoneinfo.
2015-02-12Document tv_sec is of type time_t:Rüdiger Sonderfeld
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'Donell
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 Myers
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 Myers
2014-12-22Require bison 2.7 or newer for regenerating intl/plural.yWill Newton
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.
2014-12-21manual: Correct guarantee about pointers compared by qsort()Anders Kaseorg
C99, C11, POSIX, and the glibc implementation do guarantee that the pointers passed to the qsort comparison function lie within the array. Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2014-12-15Bump required version of texinfo to 4.7Will Newton
It seems we require texinfo 4.7 for the --plaintext option, so document that and check for the correct version in configure. ChangeLog: 2014-12-15 Will Newton <will.newton@linaro.org> * manual/install.texi: Bump required version of texinfo to 4.7 from 4.5. * INSTALL: Regenerated. * configure.ac: Check for makeinfo version 4.7 and above. * configure: Regenerated.
2014-12-10manual: Remove incorrect claim that qsort() can be stabilizedAnders Kaseorg
Under certain conditions on the size of the array and its items, qsort() may fall back to an in-place quicksort if it cannot allocate memory for a temporary array with malloc(). This algorithm is not a stable sort even if the comparison function is written in the described manner. Fixes #10672. Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2014-12-10Use -Werror by default, add --disable-werror.Joseph Myers
As discussed starting at <https://sourceware.org/ml/libc-alpha/2014-11/msg00323.html>, this patch makes the glibc build use -Werror by default to avoid accidentally adding new warnings to the build. The configure option --disable-werror can be used to disable this. -Wno-error=undef is temporarily used because the build isn't clean regarding -Wundef warnings. The idea is that once the remaining -Wundef warnings have been cleaned up (in at least one configuration), -Wno-error=undef will be removed. I get a clean build and test on x86_64 (GCC 4.9 branch) with this patch. The expectation is that this may well break the build for some other configurations, and people seeing such breakage should make appropriate fixes to fix or suppress the warnings for their configurations. In some cases that may involve using pragmas as the right fix (I think that will be right for the -Wno-inline issue for MIPS I referred to in <https://sourceware.org/ml/libc-alpha/2012-11/msg00798.html>, for example), in some cases -Wno-error in sysdeps makefiles (__restore_rt in MIPS sigaction, for example), in some cases substantive fixes for the warnings. Note that if, with a view to listing all the warnings then fixing them all, you just look for "warning:" in output from building and testing with --disable-werror, you'll see lots of warnings from the linker about functions such as tmpnam. Those warnings can be ignored - only compiler warnings are relevant to -Werror, not linker warnings. * configure.ac (--disable-werror): New configure option. (enable_werror): New AC_SUBST. * configure: Regenerated. * config.make.in (enable-werror): New variable. * Makeconfig [$(enable-werror) = yes] (+gccwarn): Add -Werror -Wno-error=undef. (+gccwarn-c): Do not use -Werror=implicit-function-declaration. * manual/install.texi (Configuring and compiling): Document --disable-werror. * INSTALL: Regenerated. * debug/Makefile (CFLAGS-tst-chk1.c): Add -Wno-error. (CFLAGS-tst-chk2.c): Likewise. (CFLAGS-tst-chk3.c): Likewise. (CFLAGS-tst-chk4.cc): Likewise. (CFLAGS-tst-chk5.cc): Likewise. (CFLAGS-tst-chk6.cc): Likewise. (CFLAGS-tst-lfschk1.c): Likewise. (CFLAGS-tst-lfschk2.c): Likewise. (CFLAGS-tst-lfschk3.c): Likewise. (CFLAGS-tst-lfschk4.cc): Likewise. (CFLAGS-tst-lfschk5.cc): Likewise. (CFLAGS-tst-lfschk6.cc): Likewise.
2014-11-21manual: fix addmntent's MT-Safety race annotationMa Shimiao
for ChangeLog * manual/sysinfo.texi (addmntent): It is actually MT-Safe, because the potential race is on the user-supplied stream.
2014-11-21ctermid: return string literal, document MT-Safety pitfallAlexandre Oliva
for ChangeLog * sysdeps/posix/ctermid.c (ctermid): Return a pointer to a string literal if not passed a buffer. * manual/job.texi (ctermid): Update reasoning, note deviation from posix, suggest mtasurace when not passed a buffer, for future non-preliminary safety notes.
2014-11-21manual: cuserid is mtasurace if not passed a stringAlexandre Oliva
for ChangeLog * manual/users.texi (cuserid): Fix MT-Safety note for the case of not passing it a buffer. Reported by Peng Haitao.
2014-11-21Require check-safety.sh to pass; wish for check that all fns are documentedAlexandre Oliva
for ChangeLog * manual/Makefile ($(objpfx)stamp-summary): Require check-safety.sh to pass. * manual/check-safety.sh: Wish for verification that every @deftypefn and @deftypefun is followed by a @safety remark.
2014-11-18Fix crossreference to nonexistent node BSD HandlerTom de Vries
2014-11-18 Tom de Vries <tom@codesoucery.com> * manual/signal.texi (Primitives Interrupted by Signals): In section, replace BSD Handler xref with BSD Signal Handling.
2014-11-14Remove sigvec.Roland McGrath
2014-11-14Require GCC 4.6 or later to build glibc.Joseph Myers
As discussed in the thread starting at <https://sourceware.org/ml/libc-alpha/2014-10/msg00792.html>, and continuing into November, this patch increases the minimum GCC version for building glibc to 4.6 (there seemed to be no clear consensus for 4.7). In particular, this allows us to use #pragma GCC diagnostic for fine-grained warning control with -Werror (subject to establishing a suitable policy for that use). The documentation has a statement, as requested, about the most recent GCC version tested for building glibc, and I've updated <https://sourceware.org/glibc/wiki/Release> to refer to updating that statement. A NEWS entry is added for this change, although previous such changes didn't get them. Tested for x86_64 (testsuite, and that installed shared libraries are unchanged by this patch). * configure.ac (libc_cv_compiler_ok): Require GCC 4.6 or later. * configure: Regenerated. * manual/install.texi (Tools for Compilation): Document a requirement of GCC 4.6 or later and that GCC 4.9 is the newest compiler verified to work. * INSTALL: Regenerated.
2014-11-10Update minimal required bunutils version to 2.22Andrew Senkevich
2014-11-06manual/llio.texi: Comment on write atomicity.Carlos O'Donell
We add Linux-realted comments about the atomicity of write with respect to file offsets. As of Linux 3.14 the file offset update is atomic. That means that multiple threads calling the write syscall can not possibly get the same file offset. Therefore the writes should not overlap and data should not be lost as is required by POSIX.
2014-10-31Update autoconf version requirement in install.texi.Joseph Myers
I noticed that install.texi was out of date with regard to the actual autoconf version requirement for regenerating configure scripts. This patch updates the documentation. * manual/install.texi (Tools for Compilation): Update autoconf version requirements. * INSTALL: Regenerated.
2014-10-29manual/llio.texi: Add Linux-specific comments for write().Carlos O'Donell
Add Linux-specific comments about the atomicity of write() and the POSIX requirements. 2014-10-29 Carlos O'Donell <carlos@redhat.com> * manual/llio.texi: Add comments discussing why write() may be considered MT-unsafe on Linux.
2014-09-07Update contrib.texiAllan McRae
Add entries for Wilco Dijkstra and Stefan Liebler.
2014-07-29fcntl-linux.h: add new definitions and manual updates for open file ↵Jeff Layton
description locks Open file description locks have been merged into the Linux kernel for v3.15. Add the appropriate command-value definitions and an update to the manual that describes their usage.
2014-07-10manual: Update the locale documentationFlorian Weimer
2014-06-26Update miscellaneous files from upstream sources.Joseph Myers
This patch updates miscellaneous files from their upstream sources: texinfo.tex from Texinfo, config.guess and config.sub from config.git, install-sh from automake and move-if-change from gnulib. Tested x86_64 that installed shared libraries are unchanged by the patch; also looked at the generated libc.pdf manual. * manual/texinfo.tex: Update to version 2014-05-05.10 with trailing whitespace removed. * scripts/config.guess: Update to version 2014-03-23. * scripts/config.sub: Update to version 2014-05-01 * scripts/install-sh: Update to version 2013-12-25.23. * scripts/move-if-change: Update from gnulib.
2014-06-07Remove redundant C locale settings.Joseph Myers
Various glibc build / install / test code has C locale settings that are redundant with LC_ALL=C. LC_ALL takes precedence over LANG, so anywhere that sets LC_ALL=C (explicitly, or through it being in the default environment for running tests) does not need to set LANG=C. LC_ALL=C also takes precedence over LANGUAGE, since 2001-01-02 Ulrich Drepper <drepper@redhat.com> * intl/dcigettext.c (guess_category_value): Rewrite so that LANGUAGE value is ignored if the selected locale is the C locale. * intl/tst-gettext.c: Set locale for above change. * intl/tst-translit.c: Likewise. and so settings of LANGUAGE=C are also redundant when LC_ALL=C is set. One test also had LC_ALL=C in its -ENV setting, although it's part of the default environment used for tests. This patch removes the redundant settings. It removes a suggestion in install.texi of setting LANGUAGE=C LC_ALL=C for "make install"; the Makefile.in target "install" already sets LC_ALL_C so there's no need for the user to set it (and nor should there be any need for the user to set it). If some build machine tool used by "make install" uses a version of libintl predating that 2001 change, and the user has LANGUAGE set, the removal of LANGUAGE=C from the Makefile.in "install" rule could in principle affect the user's installation. However, I don't think we need to be concerned about pre-2001 build tools. Tested x86_64. * Makefile (install): Don't set LANGUAGE. * Makefile.in (install): Likewise. * assert/Makefile (test-assert-ENV): Remove variable. (test-assert-perr-ENV): Likewise. * elf/Makefile (neededtest4-ENV): Likewise. * iconvdata/Makefile ($(inst_gconvdir)/gconv-modules) [$(cross-compiling) = no]: Don't set LANGUAGE. * io/ftwtest-sh (LANG): Remove variable. * libio/Makefile (tst-widetext-ENV): Likewise. * manual/install.texi (Running make install): Don't refer to environment settings for make install. * INSTALL: Regenerated. * nptl/tst-tls6.sh: Don't set LANG. * posix/globtest.sh (LANG): Remove variable. * string/Makefile (tester-ENV): Likewise. (inl-tester-ENV): Likewise. (noinl-tester-ENV): Likewise. * sysdeps/s390/s390-64/Makefile ($(inst_gconvdir)/gconv-modules) [$(cross-compiling) = no]: Don't set LANGUAGE. * timezone/Makefile (build-testdata): Use $(built-program-cmd) without explicit environment settings. localedata/ChangeLog: * tst-fmon.sh: Don't set LANGUAGE. * tst-locale.sh: Likewise.
2014-06-06Don't require test wrappers to preserve environment variables, use more ↵Joseph Myers
consistent environment. One wart in the original support for test wrappers for cross testing, as noted in <https://sourceware.org/ml/libc-alpha/2012-10/msg00722.html>, is the requirement for test wrappers to pass a poorly-defined set of environment variables from the build system to the system running the glibc under test. Although some variables are passed explicitly via $(test-wrapper-env), including LD_* variables that simply can't be passed implicitly because of the side effects they'd have on the build system's dynamic linker, others are passed implicitly, including variables such as GCONV_PATH and LOCPATH that could potentially affect the build system's libc (so effectively relying on any such effects not breaking the wrappers). In addition, the code in cross-test-ssh.sh for preserving environment variables is fragile (it depends on how bash formats a list of exported variables, and could well break for multi-line variable definitions where the contents contain things looking like other variable definitions). This patch moves to explicitly passing environment variables via $(test-wrapper-env). Makefile variables that previously used $(test-wrapper) are split up into -before-env and -after-env parts that can be passed separately to the various .sh files used in testing, so those files can then insert environment settings between the two parts. The common default environment settings in make-test-out are made into a separate makefile variable that can also be passed to scripts, rather than many scripts duplicating those settings (for testing an installed glibc, it is desirable to have the GCONV_PATH setting on just one place, so just that one place needs to support it pointing to an installed sysroot instead of the build tree). The default settings are included in the variables such as $(test-program-prefix), so that if tests do not need any non-default settings they can continue to use single variables rather than the split-up variables. Although this patch cleans up LC_ALL=C settings (that being part of the common defaults), various LANG=C and LANGUAGE=C settings remain. Those are generally unnecessary and I propose a subsequent cleanup to remove them. LC_ALL takes precedence over LANG, and while LANGUAGE takes precedence over LC_ALL, it only does so for settings other than LC_ALL=C. So LC_ALL=C on its own is sufficient to ensure the C locale, and anything that gets LC_ALL=C does not need the other settings. While preparing this patch I noticed some tests with .sh files that appeared to do nothing beyond what the generic makefile support for tests can do (localedata/tst-wctype.sh - the makefiles support -ENV variables and .input files - and localedata/tst-mbswcs.sh - just runs five tests that could be run individually from the makefile). So I propose another subsequent cleanup to move those to using the generic support instead of special .sh files. Tested x86_64 (native) and powerpc32 (cross). * Makeconfig (run-program-env): New variable. (run-program-prefix-before-env): Likewise. (run-program-prefix-after-env): Likewise. (run-program-prefix): Define in terms of new variables. (built-program-cmd-before-env): New variable. (built-program-cmd-after-env): Likewise. (built-program-cmd): Define in terms of new variables. (test-program-prefix-before-env): New variable. (test-program-prefix-after-env): Likewise. (test-program-prefix): Define in terms of new variables. (test-program-cmd-before-env): New variable. (test-program-cmd-after-env): Likewise. (test-program-cmd): Define in terms of new variables. * Rules (make-test-out): Use $(run-program-env). * scripts/cross-test-ssh.sh (env_blacklist): Remove variable. (help): Do not mention environment variables. Mention --timeoutfactor option. (timeoutfactor): New variable. (blacklist_exports): Remove function. (exports): Remove variable. (command): Do not include ${exports}. * manual/install.texi (Configuring and compiling): Do not mention test wrappers preserving environment variables. Mention that last assignment to a variable must take precedence. * INSTALL: Regenerated. * benchtests/Makefile (run-bench): Use $(run-program-env). * catgets/Makefile ($(objpfx)test1.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test2.cat): Do not specify environment variables explicitly. ($(objpfx)de/libc.cat): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)test-gencat.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)sample.SJIS.cat): Do not specify environment variables explicitly. * catgets/test-gencat.sh: Use test_program_cmd_before_env, run_program_env and test_program_cmd_after_env arguments. * elf/Makefile ($(objpfx)tst-pathopt.out): Use $(run-program-env). * elf/tst-pathopt.sh: Use run_program_env argument. * iconvdata/Makefile ($(objpfx)iconv-test.out): Use $(test-wrapper-env) and $(run-program-env). * iconvdata/run-iconv-test.sh: Use test_wrapper_env and run_program_env arguments. * iconvdata/tst-table.sh: Do not set GCONV_PATH explicitly. * intl/Makefile ($(objpfx)tst-gettext.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-gettext2.out): Likewise. * intl/tst-gettext.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * intl/tst-gettext2.sh: Likewise. * intl/tst-gettext4.sh: Do not set environment variables explicitly. * intl/tst-gettext6.sh: Likewise. * intl/tst-translit.sh: Likewise. * malloc/Makefile ($(objpfx)tst-mtrace.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * malloc/tst-mtrace.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * math/Makefile (run-regen-ulps): Use $(run-program-env). * nptl/Makefile ($(objpfx)tst-tls6.out): Use $(run-program-env). * nptl/tst-tls6.sh: Use run_program_env argument. Set LANG=C explicitly with each use of ${test_wrapper_env}. * posix/Makefile ($(objpfx)wordexp-tst.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * posix/tst-getconf.sh: Do not set environment variables explicitly. * posix/wordexp-tst.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * stdio-common/tst-printf.sh: Do not set environment variables explicitly. * stdlib/Makefile ($(objpfx)tst-fmtmsg.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). * stdlib/tst-fmtmsg.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. Split $test calls into $test_pre and $test. * timezone/Makefile (build-testdata): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). localedata/ChangeLog: * Makefile ($(addprefix $(objpfx),$(CTYPE_FILES))): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)sort-test.out): Use $(test-program-prefix-before-env), $(run-program-env) and $(test-program-prefix-after-env). ($(objpfx)tst-fmon.out): Use $(run-program-prefix-before-env), $(run-program-env) and $(run-program-prefix-after-env). ($(objpfx)tst-locale.out): Use $(built-program-cmd-before-env), $(run-program-env) and $(built-program-cmd-after-env). ($(objpfx)tst-trans.out): Use $(run-program-prefix-before-env), $(run-program-env), $(run-program-prefix-after-env), $(test-program-prefix-before-env) and $(test-program-prefix-after-env). ($(objpfx)tst-ctype.out): Use $(test-program-cmd-before-env), $(run-program-env) and $(test-program-cmd-after-env). ($(objpfx)tst-wctype.out): Likewise. ($(objpfx)tst-langinfo.out): Likewise. ($(objpfx)tst-langinfo-static.out): Likewise. * gen-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * sort-test.sh: Use test_program_prefix_before_env, run_program_env and test_program_prefix_after_env arguments. * tst-ctype.sh: Use tst_ctype_before_env, run_program_env and tst_ctype_after_env arguments. * tst-fmon.sh: Use run_program_prefix_before_env, run_program_env and run_program_prefix_after_env arguments. * tst-langinfo.sh: Use tst_langinfo_before_env, run_program_env and tst_langinfo_after_env arguments. * tst-locale.sh: Use localedef_before_env, run_program_env and localedef_after_env arguments. * tst-mbswcs.sh: Do not set environment variables explicitly. * tst-numeric.sh: Likewise. * tst-rpmatch.sh: Likewise. * tst-trans.sh: Use run_program_prefix_before_env, run_program_env, run_program_prefix_after_env, test_program_prefix_before_env and test_program_prefix_after_env arguments. * tst-wctype.sh: Use tst_wctype_before_env, run_program_env and tst_wctype_after_env arguments.
2014-06-05Fix typo in manual.Ondřej Bílka
2014-05-23manual: Update prototypes for alphasort and friendsRasmus Villemoes
The four functions {alpha,version}sort{,64} take parameters of type const struct dirent{,64} **, not const void *. Signed-off-by: Rasmus Villemoes <rv@rasmusvillemoes.dk>
2014-04-30Increase minimum Linux kernel version to 2.6.32.Joseph Myers
This patch increases the minimum Linux kernel version for glibc to 2.6.32, as discussed in the thread starting at <https://sourceware.org/ml/libc-alpha/2014-01/msg00511.html>. This patch just does the minimal change to arch_minimum_kernel settings (and LIBC_LINUX_VERSION, which determines the minimum kernel headers version, as it doesn't make sense for that to be older than the minimum kernel that can be used at runtime). Followups would be expected to do, roughly and not necessarily precisely in this order: * Remove __LINUX_KERNEL_VERSION checks in kernel-features.h files where those checks are always true / always false for kernels 2.6.32 and above. * Otherwise simplify/improve conditionals in those files (for example, where defining once in the main file then undefining in architecture-specific files makes things clearer than having lots of separate definitions of the same macro), possibly fixing in the process cases where a macro should optimally have been defined for a given architecture but wasn't. (In the review in preparation for this version increase I checked what the right conditions should be for all macros in the main kernel-features.h whose definitions there would have been affected by the increase - but I only fixed that subset of the issues found where --enable-kernel=2.6.32 would have caused a kernel feature to be wrongly assumed to be present, not any cases where a feature is not assumed but could be assumed.) * Remove conditionals on __ASSUME_* where they can now be taken to be always-true, and the definitions when the macros are only used in Linux-specific files. * Split more architectures out of the main kernel-features.h (like ex-ports architectures), once various of the architecture conditionals there have been eliminated so the new architecture-specific files are no larger than actually necessary. Tested x86_64. 2014-03-27 Joseph Myers <joseph@codesourcery.com> [BZ #9894] * sysdeps/unix/sysv/linux/configure.ac (LIBC_LINUX_VERSION): Change to 2.6.32. (arch_minimum_kernel): Change all 2.6.16 settings to 2.6.32. * sysdeps/unix/sysv/linux/configure: Regenerated. * sysdeps/unix/sysv/linux/microblaze/configure.ac: Remove file. * sysdeps/unix/sysv/linux/microblaze/configure: Likewise. * sysdeps/unix/sysv/linux/tile/configure.ac: Likewise. * sysdeps/unix/sysv/linux/tile/configure: Likewise. * README: Update reference to required Linux kernel version. * manual/install.texi (Linux): Update reference to required Linux kernel headers version. * INSTALL: Regenerated.
2014-04-28Fix types of stream hook functions in manual.Ondřej Bílka
2014-04-17manual: Sort overview listing by manual order.Carlos O'Donell
In the glibc manual we have a "Roadmap to the manual" section at the end of the "Introduction" chapter. The introductory text says "Here is an overview of the contents of the remaining chapters of this manual.", but then proceeds to list chapters out of order and some chapter are never referenced. This commit reorders the overview to correctly match the manual order. See: https://sourceware.org/ml/libc-alpha/2014-02/msg00823.html
2014-04-17manual/setjmp.texi: Clarify setcontext and signal handlers textWill Newton
Calling setcontext from a signal handler can be done safely so it is sufficient to note that it is not recommended. Also mention in setcontext documentation that the behaviour of setcontext when restoring a context created by a call to a signal handler is unspecified. 2014-04-17 Will Newton <will.newton@linaro.org> * manual/setjmp.texi (System V contexts): Add note that calling setcontext on a context created by a call to a signal handler is undefined. Update text to note that setcontext from a signal handler is possible but not recommended.
2014-04-12Fix qsort argument order in collation exampleAllan McRae
2014-04-08manual/ipc.texi: Fix AC-safety notes.Carlos O'Donell
The function sem_close is AC-unsafe because lll_lock* leaks a lock (aculock) and not because of twalk.
2014-04-03manual: clarify buffer behavior in getline [BZ #5666]David Svoboda
If the user has requested automatic buffer creation, getline may create it and not free things when an error occurs. That means the user is always responsible for calling free() regardless of the return value. The current documentation does not explicitly cover this which leaves it slightly ambiguous to the reader. So clarify things. URL: https://sourceware.org/bugzilla/show_bug.cgi?id=5666
2014-03-14Do not terminate default test runs on test failure.Joseph Myers
This patch is an updated version of <https://sourceware.org/ml/libc-alpha/2014-01/msg00198.html> and <https://sourceware.org/ml/libc-alpha/2014-03/msg00180.html>. Normal practice for software testsuites is that rather than terminating immediately when a test fails, they continue running and report at the end on how many tests passed or failed. The principle behind the glibc testsuite stopping on failure was probably that the expected state is no failures and so any failure indicates a problem such as miscompilation. In practice, while this is fairly close to true for native testing on x86_64 and x86 (kernel bugs and race conditions can still cause intermittent failures), it's less likely to be the case on other platforms, and so people testing glibc run the testsuite with "make -k" and then examine the logs to determine whether the failures are what they expect to fail on that platform, possibly with some automation for the comparison. This patch switches the glibc testsuite to the normal convention of not stopping on failure - unless you use stop-on-test-failure=y, in which case it behaves essentially as it did before (and does not generate overall test summaries on failure). Instead, the summary tests.sum may contain tests that FAILed. At the end of the test run, any FAIL or ERROR lines from tests.sum are printed, and then it exits with error status if there were any such lines. In addition, build failures will also cause the test run to stop - this has the justification that those *do* indicate serious problems that should be promptly fixed and aren't generally hard to fix (but apart from that, avoiding the build stopping on those failures seems harder). Note that unlike the previous patches in this series, this *does* require people with automation around testing glibc to change their processes - either to start using tests.sum / xtests.sum to track failures and compare them with expectations (with or without also using "make -k" and examining "make" logs to identify build failures), or else to use stop-on-test-failure=y and ignore the new tests.sum / xtests.sum mechanism. (If all you check is the exit status from "make check", no changes are needed unless you want to avoid test runs continuing after the first failure.) Tested x86_64. * scripts/evaluate-test.sh: Handle fourth argument to determine whether test run should stop on failure. * Makeconfig (stop-on-test-failure): New variable. (evaluate-test): Pass fourth argument to evaluate-test.sh based on $(stop-on-test-failure). * Makefile (tests): Give a summary of results from testing and exit with failure status if they include an ERROR or FAIL. (xtests): Likewise. * manual/install.texi (Configuring and compiling): Mention stop-on-test-failure=y. * INSTALL: Regenerated.
2014-03-13manual: time: fix typo in IST exampleMike Frysinger
The current description says Tuesday when it meant to say Thursday (since that comes before Friday).
2014-03-13manual/setjmp.texi: Improve clarity of Sys V context docWill Newton
ChangeLog: 2014-03-13 Will Newton <will.newton@linaro.org> * manual/setjmp.texi (System V contexts): Improve clarity and grammar of documentation.
2014-03-06Remove INSTALL_INFO setting in manual/Makefile.Joseph Myers
* manual/Makefile (INSTALL_INFO): Remove variable setting.
2014-03-05Don't include individual test ulps in libm-test-ulps.Joseph Myers
As recently discussed <https://sourceware.org/ml/libc-alpha/2014-02/msg00670.html>, it doesn't seem particularly useful for libm-test-ulps files to contain huge amounts of data on ulps for individual tests; just the global maximum observed ulps for each function, together with the verification of exceptions, errno and special results such as infinities and NaNs for each test, suffices to verify that a function's behavior on the given test inputs is within the expected accuracy. Removing this data reduces source tree churn caused by updates to these files when libm tests are added, and reduces the frequency with which testsuite additions actually need libm-test-ulps changes at all. Accordingly, this patch removes that data, so that individual tests get checked against the global bounds for the given function and only generate an error if those are exceeded. Tested x86_64 (including verifying that if an ulps value is artificially reduced, the tests do indeed fail as they should and "make regen-ulps" generates the expected changes). * math/libm-test.inc (struct ulp_data): Don't refer to ulps for individual tests in comment. (libm-test-ulps.h): Don't refer to test_ulps in #include comment. (prev_max_error): New variable. (prev_real_max_error): Likewise. (prev_imag_max_error): Likewise. (compare_ulp_data): Don't refer to test names in comment. (find_test_ulps): Remove function. (find_function_ulps): Likewise. (find_complex_function_ulps): Likewise. (init_max_error): Take function name as argument. Look up ulps for that function. (print_ulps): Remove function. (print_max_error): Use prev_max_error instead of calling find_function_ulps. (print_complex_max_error): Use prev_real_max_error and prev_imag_max_error instead of calling find_complex_function_ulps. (check_float_internal): Take max_ulp parameter instead of calling find_test_ulps. Don't call print_ulps. (check_float): Update call to check_float_internal. (check_complex): Update calls to check_float_internal. (START): Pass argument to init_max_error. * math/gen-libm-test.pl (%results): Don't include "kind" information. (parse_ulps): Don't handle ulps of individual tests. (print_ulps_file): Likewise. (output_ulps): Likewise. * math/README.libm-test: Update. * manual/libm-err-tab.pl (parse_ulps): Don't handle ulps of individual tests. * sysdeps/aarch64/libm-test-ulps: Remove individual test ulps. * sysdeps/alpha/fpu/libm-test-ulps: Likewise. * sysdeps/arm/libm-test-ulps: Likewise. * sysdeps/i386/fpu/libm-test-ulps: Likewise. * sysdeps/ia64/fpu/libm-test-ulps: Likewise. * sysdeps/m68k/coldfire/fpu/libm-test-ulps: Likewise. * sysdeps/m68k/m680x0/fpu/libm-test-ulps: Likewise. * sysdeps/microblaze/libm-test-ulps: Likewise. * sysdeps/mips/mips32/libm-test-ulps: Likewise. * sysdeps/mips/mips64/libm-test-ulps: Likewise. * sysdeps/powerpc/fpu/libm-test-ulps: Likewise. * sysdeps/powerpc/nofpu/libm-test-ulps: Likewise. * sysdeps/s390/fpu/libm-test-ulps: Likewise. * sysdeps/sh/libm-test-ulps: Likewise. * sysdeps/sparc/fpu/libm-test-ulps: Likewise. * sysdeps/tile/libm-test-ulps: Likewise. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise. * sysdeps/hppa/fpu/libm-test-ulps: Remove individual test ulps.