NEWS.stable: log cherry-pick [06c2675]->[1138b90] stdlib: support non-GCC __attribute__
[gnulib.git] / ChangeLog
index 46cabf2..f3bbc8c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,737 @@
+2011-02-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       stdlib: support non-GCC __attribute__
+
+       Fix a serious and tricky problem encountered when attempting to
+       add the getloadavg module to Emacs.  Emacs worked fine on RHEL
+       5.5, but it crashed due to memory corruption on Solaris 10 with
+       Sun C 5.11.  Emacs normally ORs 3-bit tags into their low-order
+       bits that are otherwise zero.  This tagging is optional inside
+       Emacs but is preferred and is used when __attribute__ ((__aligned
+       (8))) works, as it does with both recent-enough GCC and with Sun C
+       5.11.  However, Sun C 5.11 is not GCC and does not #define
+       __GNUC__ and __GNUC_MINOR__.
+
+       When I added the getloadavg module to Emacs, it brought in
+       stdlib.in.h, which contained this fragment:
+
+          #ifndef __attribute__
+          # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
+          #  define __attribute__(Spec)   /* empty */
+          # endif
+          #endif
+
+       When files that include <stdlib.h> were compiled with Sun C 5.11,
+       the above code disabled __attribute__ ((__aligned (8))), which
+       caused variables to not be properly aligned, which eventually led
+       to the pointer corruption mentioned above.  (This was a bit hard
+       to diagnose, unfortunately.)
+
+       Several "#define __attribute__(X) /* empty */" code snippets need
+       to be eradicated from Gnulib to work with non-GCC compilers that
+       support __attribute__.  The Autoconf way to do this is to test for
+       each kind of attribute that we want support for, and selectively
+       enable that in source code.
+
+       Fix this problem just for stdlib.h, by adding a test for the
+       __noreturn__ attribute, and change stdlib.in.h to use that test
+       when needed.  This technique can be easily generalized to the
+       other *.in.h files and attributes, and a similar technique can be
+       used for *.h and *.c files.  This patch is enough to solve the
+       problem for Emacs + getloadavg, and I thought I'd publish it for
+       feedback before undertaking further, similar fixes in other
+       modules.
+
+       This patch does not arrange to #define HAVE_ATTRIBUTE_NORETURN
+       because it's not needed for stdlib.h.  It merely substitutes the
+       value directly into stdlib.h.  We may well need to #define it, or
+       similar symbols, for other modules, but it's nice to also have an
+       option to not #define it for applications like Emacs that do not
+       need it.
+
+       * lib/stdlib.in.h (__attribute__): Do not #define.
+       (_GL_ATTRIBUTE_NORETURN): New macro, which in stdlib.h needs to
+       be defined only if the _Exit module is also used.
+       * m4/_Exit.m4 (gl_FUNC__EXIT): Require gl_ATTRIBUTE_NORETURN.
+       * m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Subst
+       HAVE_ATTRIBUTE_NORETURN and default it to 1, its value on GNU
+       platforms.
+       * modules/_Exit (Files): Add m4/attribute.m4.
+       * modules/stdlib (Makefile.am): Substitute HAVE_ATTRIBUTE_NORETURN.
+       * m4/attribute.m4: New file.
+
+2011-02-12  Bruno Haible  <bruno@clisp.org>
+
+       wcsrtombs: Work around bug on native Windows.
+       * m4/wcsrtombs.m4 (gl_WCSRTOMBS_NULL): Test against mingw bug.
+       * lib/wcsrtombs.c (rpl_wcsrtombs): When dest is NULL, pass SIZE_MAX
+       instead of len.
+       * doc/posix-functions/wcsrtombs.texi: Document mingw bug.
+
+2011-02-12  Bruno Haible  <bruno@clisp.org>
+
+       mbsrtowcs: Work around bug on native Windows.
+       * m4/mbsrtowcs.m4 (gl_MBSRTOWCS_WORKS): Require gt_LOCALE_FR. Test
+       against mingw bug.
+       * doc/posix-functions/mbsrtowcs.texi: Document mingw bug.
+
+2011-02-11  Thien-Thi Nguyen  <ttn@gnuvola.org>
+
+       doc: update users.txt
+       * users.txt: Add rcs.
+
+2011-02-10  John W. Eaton  <jwe@gnu.org>
+
+       doc: update users.txt
+       * users.txt: Add octave.
+
+2011-02-10  Jim Meyering  <meyering@redhat.com>
+
+       doc: update users.txt
+       * users.txt: Add iwhd.
+
+2011-02-09  Bruno Haible  <bruno@clisp.org>
+
+       gnulib-tool: Make copyright notice adjustment more robust.
+       * gnulib-tool (func_import): In sed_transform_main_lib_file,
+       sed_transform_build_aux_file, sed_transform_testsrelated_lib_file,
+       allow a line break to occur after "GNU" in "GNU [Lesser] General Public
+       License".
+       Reported by Glenn Morris <rgm@gnu.org> via Paul Eggert.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'towctrans'.
+       * modules/towctrans: New file.
+       * lib/wctype.in.h (towctrans): New declaration.
+       * lib/towctrans.c: New file.
+       * lib/towctrans-impl.h: New file.
+       * m4/towctrans.m4: New file.
+       * m4/wctype_h.m4 (gl_WCTYPE_H): Test whether towctrans is declared.
+       (gl_WCTYPE_H_DEFAULTS): Initialize GNULIB_TOWCTRANS.
+       * modules/wctype-h (Makefile.am): Substitute GNULIB_TOWCTRANS.
+       * tests/test-wctype-h-c++.cc: Test the declaration of towctrans.
+       * doc/posix-functions/towctrans.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wctrans'.
+       * modules/wctrans: New file.
+       * lib/wctype.in.h (wctrans): New declaration.
+       * lib/wctrans.c: New file.
+       * lib/wctrans-impl.h: New file.
+       * m4/wctrans.m4: New file.
+       * m4/wctype_h.m4 (gl_WCTYPE_H): Test whether wctrans is declared.
+       (gl_WCTYPE_H_DEFAULTS): Initialize GNULIB_WCTRANS.
+       * modules/wctype-h (Makefile.am): Substitute GNULIB_WCTRANS.
+       * tests/test-wctype-h-c++.cc: Test the declaration of wctrans.
+       * doc/posix-functions/wctrans.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'iswctype'.
+       * modules/iswctype: New file.
+       * lib/wctype.in.h (iswctype): New declaration.
+       * lib/iswctype.c: New file.
+       * lib/iswctype-impl.h: New file.
+       * m4/iswctype.m4: New file.
+       * m4/wctype_h.m4 (gl_WCTYPE_H): Test whether iswctype is declared.
+       (gl_WCTYPE_H_DEFAULTS): Initialize GNULIB_ISWCTYPE.
+       * modules/wctype-h (Makefile.am): Substitute GNULIB_ISWCTYPE.
+       * tests/test-wctype-h-c++.cc: Test the declaration of iswctype.
+       * doc/posix-functions/iswctype.texi: Mention the new module and the
+       HP-UX 11.00 problem.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wctype'.
+       * modules/wctype: Change to represent the wctype() substitute.
+       * lib/wctype.in.h (wctype): New declaration.
+       * lib/wctype.c: New file.
+       * lib/wctype-impl.h: New file.
+       * m4/wctype.m4: New file.
+       * m4/wctype_h.m4 (gl_WCTYPE_H): Test whether wctype is declared.
+       (gl_WCTYPE_H_DEFAULTS): Initialize GNULIB_WCTYPE.
+       * modules/wctype-h (Makefile.am): Substitute GNULIB_WCTYPE.
+       * tests/test-wctype-h-c++.cc: Test the declaration of wctype.
+       * doc/posix-functions/wctype.texi: Mention the new module and the
+       HP-UX 11.00 problem.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       wctype-h: Ensure wctype_t and wctrans_t are defined.
+       * lib/wctype.in.h (wctype_t, wctrans_t): New type declarations.
+       * m4/wctype_h.m4 (gl_WCTYPE_H): Determine HAVE_WCTYPE_T, HAVE_WCTRANS_T.
+       (gl_WCTYPE_H_DEFAULTS): Initialize HAVE_WCTYPE_T, HAVE_WCTRANS_T.
+       * modules/wctype-h (Makefile.am): Substitute HAVE_WCTYPE_T,
+       HAVE_WCTRANS_T.
+       * tests/test-wctype-h.c: Check that wctype_t and wctrans_t are defined.
+
+2011-02-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       flock: fix license typo
+
+       * lib/flock.c: Fix typo in license.  One of the "Lesser"s was
+       omitted.
+
+2011-02-08  Bruno Haible  <bruno@clisp.org>
+
+       Split large sed scripts, for HP-UX sed.
+       * modules/math (Makefile.am): Split sed scripts around 50 sed commands,
+       to avoid HP-UX limit of 99 commands, in the near future.
+       * modules/stdlib (Makefile.am): Likewise.
+       * modules/unistd (Makefile.am): Likewise.
+       * modules/wchar (Makefile.am): Likewise.
+       Reported by Albert Chin <bug-gnulib@mlists.thewrittenword.com>.
+       Suggestion by Ralf Wildenhues <Ralf.Wildenhues@gmx.de> in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2010-01/msg00216.html>.
+
+2011-02-08  Paul Eggert  <eggert@cs.ucla.edu>
+           Bruno Haible  <bruno@clisp.org>
+
+       stdlib: improve random_r modularization
+       * lib/stdlib.in.h: Encapsulate all the stuff having to do with
+       random_r inside "#if @GNULIB_RANDOM_R@", so that it's clearer that
+       you also need the random_r module to get this material right.
+       * m4/random_r.m4 (gl_FUNC_RANDOM_R): Move check for random.h here ...
+       * m4/stdlib_h.m4 (gl_STDLIB_H): ... from here.
+       (gl_STDLIB_H_DEFAULTS): Default HAVE_RANDOM_H to 1, and AC_SUBST it.
+
+2011-02-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       stdlib: don't depend on stdint
+       * lib/stdlib.in.h: Don't include <stdint.h> merely because
+       GNULIB_POSIXCHECK is defined.  GNULIB_POSIXCHECK seems to
+       be independent of whether stdint.h is needed.
+       * m4/random_r.m4 (gl_FUNC_RANDOM_R): Check for struct random_data
+       here, instead of ...
+       * m4/stdlib_h.m4 (gl_STDLIB_H): ... here.  Applications that need
+       struct random_data should be using the random_r module, not just
+       the stdlib module (which wouldn't make sense: what package needs
+       just struct random_data without also needing random_r?).
+       * modules/stdlib (Depends-on): Remove stdint.
+
+       getloadavg: don't depend on c-strtod, cloexec, fcntl-safer
+       See the thread rooted at
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-02/msg00090.html>.
+       * lib/getloadavg.c: Do not include c-strtod.h, cloexec.h, or fcntl--.h.
+       Include <fcntl.h> only if (defined __linux__ || defined __CYGWIN__
+       || defined SUNOS_5 || (defined LOAD_AVE_TYPE && !  defined
+       __VMS)); previously it was always included (via fcntl--.h).
+       (getloadavg): Do not use c_strtod.  Instead, approximate it by
+       hand; this is good enough for load averages.  Also, do not use
+       set_cloexec_flag; instead, use the O_CLOEXEC and F_DUPFD_CLOEXEC
+       flags directly if available and don't bother otherwise.  (Packages
+       that need the extra reliability should use the modules that define
+       these flags on older platforms that lack them.)
+       * modules/getloadavg (Depends-on): Remove c-strtod, cloexec,
+       fcntl-safer.
+
+2011-02-08  Jim Meyering  <meyering@redhat.com>
+
+       di-set.h, ino-map.h: add multiple-inclusion guard
+       Technically, the guard is required only for ino-map.h, due to its
+       INO_MAP_INSERT_FAILURE definition, but do both for consistency.
+       * lib/di-set.h: Add file-spanning #ifndef _GL_DI_SET_H.
+       * lib/ino-map.h: Likewise.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       iswblank: Ensure declaration on glibc systems.
+       * m4/iswblank.m4 (gl_FUNC_ISWBLANK): Require gl_USE_SYSTEM_EXTENSIONS.
+       * modules/iswblank (Dependencies): Add 'extensions'.
+       * doc/posix-functions/iswblank.texi: Document the glibc problem.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'iswblank'.
+       * lib/wctype.in.h (iswblank): Don't declare if GNULIB_ISWBLANK is 0.
+       * modules/iswblank: New file.
+       * modules/wctype-h (Files): Remove lib/iswblank.c.
+       (Makefile.am): Substitute GNULIB_ISWBLANK.
+       * m4/iswblank.m4: New file, partially extracted from m4/wctype_h.m4.
+       * m4/wctype_h.m4 (gl_WCTYPE_MODULE_INDICATOR): New macro.
+       (gl_WCTYPE_H_DEFAULTS): New macro.
+       (gl_WCTYPE_H): Require it. Remove iswblank related code.
+       * modules/iswblank-tests: New file.
+       * tests/test-iswblank.c: New file, extraced from tests/test-wctype-h.c.
+       * tests/test-wctype-h.c (main): Remove iswblank tests.
+       * tests/test-wctype-h-c++.cc: Guard the signature test of iswblank.
+       * doc/posix-functions/iswblank.texi: Mention module 'iswblank' instead
+       of 'wctype-h'.
+       * NEWS: Mention the change.
+       * modules/mbchar (Depends-on): Add iswblank.
+
+2011-02-08  Bruno Haible  <bruno@clisp.org>
+
+       di-set tests: Refactor.
+       * tests/test-di-set.c: Include di-set.h early. Include macros.h. Drop
+       unnecessary includes.
+       (ASSERT): Remove macro.
+       (main): Make C90 compliant by avoiding variable declaration after
+       statement.
+       * modules/di-set-tests (Files): Add tests/macros.h.
+
+2011-02-08  Bruno Haible  <bruno@clisp.org>
+
+       ino-map tests: Refactor.
+       * tests/test-ino-map.c: Include ino-map.h early. Include macros.h. Drop
+       unnecessary includes.
+       (ASSERT): Remove macro.
+       (main): Make C90 compliant by avoiding variable declaration after
+       statement.
+       * modules/ino-map-tests (Files): Add tests/macros.h.
+
+2011-02-08  Jim Meyering  <meyering@redhat.com>
+
+       di-set: add "const" to a cast
+       * lib/di-set.c (di_set_insert): Cast hash_insert0 argument to
+       "(void const *)", not "(void *)".  Spotted by Bruno Haible.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       Rename module 'wctype' to 'wctype-h'.
+       * modules/wctype-h: Renamed from modules/wctype.
+       * modules/wctype: Simplyfy to a redirection to 'wctype-h'.
+       * modules/wctype-h-tests: Renamed from modules/wctype-tests.
+       (Files, Depends-on, Makefile.am): Update.
+       * modules/wctype-h-c++-tests: Renamed from modules/wctype-c++-tests.
+       (Files, Makefile.am): Update.
+       * tests/test-wctype-h.c: Renamed from tests/test-wctype.c.
+       * tests/test-wctype-h-c++.cc: Renamed from tests/test-wctype-c++.cc.
+       * doc/posix-headers/wctype.texi: Update.
+       * doc/posix-functions/iswalnum.texi: Update.
+       * doc/posix-functions/iswalpha.texi: Update.
+       * doc/posix-functions/iswblank.texi: Update.
+       * doc/posix-functions/iswcntrl.texi: Update.
+       * doc/posix-functions/iswdigit.texi: Update.
+       * doc/posix-functions/iswgraph.texi: Update.
+       * doc/posix-functions/iswlower.texi: Update.
+       * doc/posix-functions/iswprint.texi: Update.
+       * doc/posix-functions/iswpunct.texi: Update.
+       * doc/posix-functions/iswspace.texi: Update.
+       * doc/posix-functions/iswupper.texi: Update.
+       * doc/posix-functions/iswxdigit.texi: Update.
+       * doc/posix-functions/towlower.texi: Update.
+       * doc/posix-functions/towupper.texi: Update.
+       * NEWS: Mention the change.
+       * modules/fnmatch (Dependencies): Add wctype-h, remove wctype.
+       * modules/mbchar (Dependencies): Likewise.
+       * modules/mbswidth (Dependencies): Likewise.
+       * modules/quotearg (Dependencies): Likewise.
+       * modules/regex (Dependencies): Likewise.
+       * modules/wcscasecmp (Dependencies): Likewise.
+       * modules/wcsncasecmp (Dependencies): Likewise.
+       * modules/wcwidth (Dependencies): Likewise.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcswidth'.
+       * modules/wcswidth: New file.
+       * lib/wchar.in.h (wcswidth): New declaration.
+       * lib/wcswidth.c: New file.
+       * lib/wcswidth-impl.h: New file, from libutf8 with modifications.
+       * m4/wcswidth.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcswidth is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSWIDTH, HAVE_WCSWIDTH,
+       REPLACE_WCSWIDTH.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSWIDTH,
+       HAVE_WCSWIDTH, REPLACE_WCSWIDTH.
+       * tests/test-wchar-c++.cc: Test the declaration of wcswidth.
+       * doc/posix-functions/wcswidth.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcstok'.
+       * modules/wcstok: New file.
+       * lib/wchar.in.h (wcstok): New declaration.
+       * lib/wcstok.c: New file.
+       * lib/wcstok-impl.h: New file, from libutf8 with modifications.
+       * m4/wcstok.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcstok is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSTOK, HAVE_WCSTOK.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSTOK, HAVE_WCSTOK.
+       * tests/test-wchar-c++.cc: Test the declaration of wcstok.
+       * doc/posix-functions/wcstok.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsstr'.
+       * modules/wcsstr: New file.
+       * lib/wchar.in.h (wcsstr): New declaration.
+       * lib/wcsstr.c: New file.
+       * lib/wcsstr-impl.h: New file, from libutf8 with modifications.
+       * m4/wcsstr.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsstr is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSSTR, HAVE_WCSSTR.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSSTR, HAVE_WCSSTR.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsstr.
+       * doc/posix-functions/wcsstr.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcspbrk'.
+       * modules/wcspbrk: New file.
+       * lib/wchar.in.h (wcspbrk): New declaration.
+       * lib/wcspbrk.c: New file.
+       * lib/wcspbrk-impl.h: New file, from libutf8 with modifications.
+       * m4/wcspbrk.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcspbrk is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSPBRK, HAVE_WCSPBRK.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSPBRK, HAVE_WCSPBRK.
+       * tests/test-wchar-c++.cc: Test the declaration of wcspbrk.
+       * doc/posix-functions/wcspbrk.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsspn'.
+       * modules/wcsspn: New file.
+       * lib/wchar.in.h (wcsspn): New declaration.
+       * lib/wcsspn.c: New file.
+       * lib/wcsspn-impl.h: New file, from libutf8 with modifications.
+       * m4/wcsspn.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsspn is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSSPN, HAVE_WCSSPN.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSSPN, HAVE_WCSSPN.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsspn.
+       * doc/posix-functions/wcsspn.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcscspn'.
+       * modules/wcscspn: New file.
+       * lib/wchar.in.h (wcscspn): New declaration.
+       * lib/wcscspn.c: New file.
+       * lib/wcscspn-impl.h: New file, from libutf8 with modifications.
+       * m4/wcscspn.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcscspn is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSCSPN, HAVE_WCSCSPN.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSCSPN, HAVE_WCSCSPN.
+       * tests/test-wchar-c++.cc: Test the declaration of wcscspn.
+       * doc/posix-functions/wcscspn.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsrchr'.
+       * modules/wcsrchr: New file.
+       * lib/wchar.in.h (wcsrchr): New declaration.
+       * lib/wcsrchr.c: New file.
+       * lib/wcsrchr-impl.h: New file, from libutf8 with modifications.
+       * m4/wcsrchr.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsrchr is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSRCHR, HAVE_WCSRCHR.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSRCHR, HAVE_WCSRCHR.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsrchr.
+       * doc/posix-functions/wcsrchr.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcschr'.
+       * modules/wcschr: New file.
+       * lib/wchar.in.h (wcschr): New declaration.
+       * lib/wcschr.c: New file.
+       * lib/wcschr-impl.h: New file, from libutf8 with modifications.
+       * m4/wcschr.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcschr is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSCHR, HAVE_WCSCHR.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSCHR, HAVE_WCSCHR.
+       * tests/test-wchar-c++.cc: Test the declaration of wcschr.
+       * doc/posix-functions/wcschr.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsdup'.
+       * modules/wcsdup: New file.
+       * lib/wchar.in.h (wcsdup): New declaration.
+       * lib/wcsdup.c: New file.
+       * lib/wcsdup-impl.h: New file, from libutf8 with modifications.
+       * m4/wcsdup.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsdup is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSDUP, HAVE_WCSDUP.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSDUP, HAVE_WCSDUP.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsdup.
+       * doc/posix-functions/wcsdup.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsxfrm'.
+       * modules/wcsxfrm: New file.
+       * lib/wchar.in.h (wcsxfrm): New declaration.
+       * lib/wcsxfrm.c: New file.
+       * lib/wcsxfrm-impl.h: New file.
+       * m4/wcsxfrm.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsxfrm is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSXFRM, HAVE_WCSXFRM.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSXFRM, HAVE_WCSXFRM.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsxfrm.
+       * doc/posix-functions/wcsxfrm.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcscoll'.
+       * modules/wcscoll: New file.
+       * lib/wchar.in.h (wcscoll): New declaration.
+       * lib/wcscoll.c: New file.
+       * lib/wcscoll-impl.h: New file.
+       * m4/wcscoll.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcscoll is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSCOLL, HAVE_WCSCOLL.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSCOLL, HAVE_WCSCOLL.
+       * tests/test-wchar-c++.cc: Test the declaration of wcscoll.
+       * doc/posix-functions/wcscoll.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsncasecmp'.
+       * modules/wcsncasecmp: New file.
+       * lib/wchar.in.h (wcsncasecmp): New declaration.
+       * lib/wcsncasecmp.c: New file.
+       * lib/wcsncasecmp-impl.h: New file, from libutf8 with modifications.
+       * m4/wcsncasecmp.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsncasecmp is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSNCASECMP, HAVE_WCSNCASECMP.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSNCASECMP,
+       HAVE_WCSNCASECMP.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsncasecmp.
+       * doc/posix-functions/wcsncasecmp.texi: Mention the new module.
+
+2011-02-06  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcscasecmp'.
+       * modules/wcscasecmp: New file.
+       * lib/wchar.in.h (wcscasecmp): New declaration.
+       * lib/wcscasecmp.c: New file.
+       * lib/wcscasecmp-impl.h: New file, from libutf8 with modifications.
+       * m4/wcscasecmp.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcscasecmp is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSCASECMP, HAVE_WCSCASECMP.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSCASECMP,
+       HAVE_WCSCASECMP.
+       * tests/test-wchar-c++.cc: Test the declaration of wcscasecmp.
+       * doc/posix-functions/wcscasecmp.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsncmp'.
+       * modules/wcsncmp: New file.
+       * lib/wchar.in.h (wcsncmp): New declaration.
+       * lib/wcsncmp.c: New file.
+       * lib/wcsncmp-impl.h: New file, from libutf8 with modifications.
+       * m4/wcsncmp.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsncmp is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSNCMP, HAVE_WCSNCMP.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSNCMP, HAVE_WCSNCMP.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsncmp.
+       * doc/posix-functions/wcsncmp.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcscmp'.
+       * modules/wcscmp: New file.
+       * lib/wchar.in.h (wcscmp): New declaration.
+       * lib/wcscmp.c: New file.
+       * lib/wcscmp-impl.h: New file, from libutf8 with modifications.
+       * m4/wcscmp.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcscmp is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSCMP, HAVE_WCSCMP.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSCMP, HAVE_WCSCMP.
+       * tests/test-wchar-c++.cc: Test the declaration of wcscmp.
+       * doc/posix-functions/wcscmp.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsncat'.
+       * modules/wcsncat: New file.
+       * lib/wchar.in.h (wcsncat): New declaration.
+       * lib/wcsncat.c: New file.
+       * lib/wcsncat-impl.h: New file, from libutf8 with modifications.
+       * m4/wcsncat.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsncat is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSNCAT, HAVE_WCSNCAT.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSNCAT, HAVE_WCSNCAT.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsncat.
+       * doc/posix-functions/wcsncat.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcscat'.
+       * modules/wcscat: New file.
+       * lib/wchar.in.h (wcscat): New declaration.
+       * lib/wcscat.c: New file.
+       * lib/wcscat-impl.h: New file, from libutf8 with modifications.
+       * m4/wcscat.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcscat is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSCAT, HAVE_WCSCAT.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSCAT, HAVE_WCSCAT.
+       * tests/test-wchar-c++.cc: Test the declaration of wcscat.
+       * doc/posix-functions/wcscat.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcpncpy'.
+       * modules/wcpncpy: New file.
+       * lib/wchar.in.h (wcpncpy): New declaration.
+       * lib/wcpncpy.c: New file.
+       * lib/wcpncpy-impl.h: New file, from libutf8 with modifications.
+       * m4/wcpncpy.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcpncpy is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCPNCPY, HAVE_WCPNCPY.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCPNCPY, HAVE_WCPNCPY.
+       * tests/test-wchar-c++.cc: Test the declaration of wcpncpy.
+       * doc/posix-functions/wcpncpy.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsncpy'.
+       * modules/wcsncpy: New file.
+       * lib/wchar.in.h (wcsncpy): New declaration.
+       * lib/wcsncpy.c: New file.
+       * lib/wcsncpy-impl.h: New file, from libutf8 with modifications.
+       * m4/wcsncpy.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsncpy is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSNCPY, HAVE_WCSNCPY.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSNCPY, HAVE_WCSNCPY.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsncpy.
+       * doc/posix-functions/wcsncpy.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcpcpy'.
+       * modules/wcpcpy: New file.
+       * lib/wchar.in.h (wcpcpy): New declaration.
+       * lib/wcpcpy.c: New file.
+       * lib/wcpcpy-impl.h: New file, from libutf8 with modifications.
+       * m4/wcpcpy.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcpcpy is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCPCPY, HAVE_WCPCPY.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCPCPY, HAVE_WCPCPY.
+       * tests/test-wchar-c++.cc: Test the declaration of wcpcpy.
+       * doc/posix-functions/wcpcpy.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcscpy'.
+       * modules/wcscpy: New file.
+       * lib/wchar.in.h (wcscpy): New declaration.
+       * lib/wcscpy.c: New file.
+       * lib/wcscpy-impl.h: New file, from libutf8 with modifications.
+       * m4/wcscpy.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcscpy is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSCPY, HAVE_WCSCPY.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSCPY, HAVE_WCSCPY.
+       * tests/test-wchar-c++.cc: Test the declaration of wcscpy.
+       * doc/posix-functions/wcscpy.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcsnlen'.
+       * modules/wcsnlen: New file.
+       * lib/wchar.in.h (wcsnlen): New declaration.
+       * lib/wcsnlen.c: New file.
+       * lib/wcsnlen-impl.h: New file, from libutf8 with modifications.
+       * m4/wcsnlen.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcsnlen is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSNLEN, HAVE_WCSNLEN.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSNLEN, HAVE_WCSNLEN.
+       * tests/test-wchar-c++.cc: Test the declaration of wcsnlen.
+       * doc/posix-functions/wcsnlen.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wcslen'.
+       * modules/wcslen: New file.
+       * lib/wchar.in.h (wcslen): New declaration.
+       * lib/wcslen.c: New file.
+       * lib/wcslen-impl.h: New file, from libutf8 with modifications.
+       * m4/wcslen.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wcslen is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WCSLEN, HAVE_WCSLEN.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WCSLEN, HAVE_WCSLEN.
+       * tests/test-wchar-c++.cc: Test the declaration of wcslen.
+       * doc/posix-functions/wcslen.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wmemset'.
+       * modules/wmemset: New file.
+       * lib/wchar.in.h (wmemset): New declaration.
+       * lib/wmemset.c: New file.
+       * lib/wmemset-impl.h: New file, from libutf8 with modifications.
+       * m4/wmemset.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wmemset is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WMEMSET, HAVE_WMEMSET.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WMEMSET, HAVE_WMEMSET.
+       * tests/test-wchar-c++.cc: Test the declaration of wmemset.
+       * doc/posix-functions/wmemset.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wmemmove'.
+       * modules/wmemmove: New file.
+       * lib/wchar.in.h (wmemmove): New declaration.
+       * lib/wmemmove.c: New file.
+       * lib/wmemmove-impl.h: New file, from libutf8 with modifications.
+       * m4/wmemmove.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wmemmove is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WMEMMOVE, HAVE_WMEMMOVE.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WMEMMOVE,
+       HAVE_WMEMMOVE.
+       * tests/test-wchar-c++.cc: Test the declaration of wmemmove.
+       * doc/posix-functions/wmemmove.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wmemcpy'.
+       * modules/wmemcpy: New file.
+       * lib/wchar.in.h (wmemcpy): New declaration.
+       * lib/wmemcpy.c: New file.
+       * lib/wmemcpy-impl.h: New file, from libutf8 with modifications.
+       * m4/wmemcpy.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wmemcpy is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WMEMCPY, HAVE_WMEMCPY.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WMEMCPY, HAVE_WMEMCPY.
+       * tests/test-wchar-c++.cc: Test the declaration of wmemcpy.
+       * doc/posix-functions/wmemcpy.texi: Mention the new module.
+
+2011-02-05  Bruno Haible  <bruno@clisp.org>
+
+       New module 'wmemcmp'.
+       * modules/wmemcmp: New file.
+       * lib/wchar.in.h (wmemcmp): New declaration.
+       * lib/wmemcmp.c: New file.
+       * lib/wmemcmp-impl.h: New file, from libutf8 with modifications.
+       * m4/wmemcmp.m4: New file.
+       * m4/wchar_h.m4 (gl_WCHAR_H): Test whether wmemcmp is declared.
+       (gl_WCHAR_H_DEFAULTS): Initialize GNULIB_WMEMCMP, HAVE_WMEMCMP.
+       * modules/wchar (Makefile.am): Substitute GNULIB_WMEMCMP, HAVE_WMEMCMP.
+       * tests/test-wchar-c++.cc: Test the declaration of wmemcmp.
+       * doc/posix-functions/wmemcmp.texi: Mention the new module.
+
+2011-02-07  Jim Meyering  <meyering@redhat.com>
+
+       di-set, ino-map: new modules, from coreutils
+       * lib/di-set.c: New file.
+       * lib/di-set.h: Likewise.
+       * lib/ino-map.c: Likewise.
+       * lib/ino-map.h: Likewise.
+       * modules/di-set: Likewise.
+       * modules/di-set-tests: Likewise.
+       * modules/ino-map: Likewise.
+       * modules/ino-map-tests: Likewise.
+       * tests/test-di-set.c: Likewise.
+       * tests/test-ino-map.c: Likewise.
+
+2011-02-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       getloadavg: merge minor changes from Emacs
+
+       * lib/getloadavg.c (getloadavg_initialized): More-accurate comment.
+       (getloadavg): Use memset, not bzero.
+
+       2008-07-25  Chong Yidong  <cyd@stupidchicken.com>
+       * lib/getloadavg.c (nl): Rename to name_list to avoid ncurses.h
+       clash (bug#86).
+
 2010-11-14  Bruno Haible  <bruno@clisp.org>
 
        Allow multiple gnulib generated replacements to coexist.
        indirectly on xalloc.  This change causes the openat substitute
        to fall back on save_cwd when memory is tight, and for save_cwd to
        fail instead of dying when memory is tight, but that's good enough.
+       Problem and initial idea for fix reported by Bastien Roucaries in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-01/msg00170.html>.
 
        * lib/openat-proc.c: Include stdlib.h (for malloc), not
        xalloc.h (for xmalloc).