Opened 3 years ago

Closed 3 years ago

#4415 closed task (fixed)


Reported by: Bruce Dubbs Owned by: Bruce Dubbs
Priority: normal Milestone: 8.4
Component: Book Version: SVN
Severity: normal Keywords:


New minor version.

Major new features:

  • The getcpu wrapper function has been added, which returns the currently used CPU and NUMA node. This function is Linux-specific.
  • A new convenience target has been added for distribution maintainers to build and install all locales as directories with files. The new target is run by issuing the following command in your build tree: 'make localedata/install-locale-files', with an optional DESTDIR to set the install root if you wish to install into a non-default configured location.
  • Optimized generic exp, exp2, log, log2, pow, sinf, cosf, sincosf and tanf.
  • The reallocarray function is now declared under _DEFAULT_SOURCE, not just for _GNU_SOURCE, to match BSD environments.
  • For powercp64le ABI, Transactional Lock Elision is now enabled iff kernel indicates that it will abort the transaction prior to entering the kernel (PPC_FEATURE2_HTM_NOSC on hwcap2). On older kernels the transaction is suspended, and this caused some undefined side-effects issues by aborting transactions manually. Glibc avoided it by abort transactions manually on each syscall, but it lead to performance issues on newer kernels where the HTM state is saved and restore lazily (the state being saved even when the process actually does not use HTM).
  • The functions posix_spawn_file_actions_addchdir_np and posix_spawn_file_actions_addfchdir_np have been added, enabling posix_spawn and posix_spawnp to run the new process in a different directory. These functions are GNU extensions. The function posix_spawn_file_actions_addchdir_np is similar to the Solaris function of the same name.
  • The popen and system do not run atfork handlers anymore (BZ#17490). Although it is a possible POSIX violation, the POSIX rationale in pthread_atfork documentation regarding atfork handlers is to handle inconsistent mutex state after a fork call in a multi-threaded process. In both popen and system there is no direct access to user-defined mutexes.
  • Support for the C-SKY ABIV2 running on Linux has been added. This port requires at least binutils-2.32, gcc-9.0, and linux-4.20. Two ABIs are supported:
    • C-SKY ABIV2 soft-float little-endian
    • C-SKY ABIV2 hard-float little-endian
  • strftime's default formatting of a locale's alternative year (%Ey) has been changed to zero-pad the year to a minimum of two digits, like "%y". This improves the display of Japanese era years during the first nine years of a new era, and is expected to be harmless for all other locales (only Japanese locales regularly have alternative year numbers less than 10). Zero-padding can be overridden with the '_' or '-' flags (which are GNU extensions).
  • As a GNU extension, the '_' and '-' flags can now be applied to "%EY" to control how the year number is formatted; they have the same effect that they would on "%Ey".

Deprecated and removed features, and other changes affecting compatibility:

  • The glibc.tune tunable namespace has been renamed to glibc.cpu and the tunable glibc.tune.cpu has been renamed to
  • The type of the pr_uid and pr_gid members of struct elf_prpsinfo, defined in <sys/procfs.h>, has been corrected to match the type actually used by the Linux kernel. This affects the size and layout of that structure on MicroBlaze, MIPS (n64 ABI only), Nios II and RISC-V.
  • For the MIPS n32 ABI, the type of the pr_sigpend and pr_sighold members of struct elf_prstatus, and the pr_flag member of struct elf_prpsinfo, defined in <sys/procfs.h>, has been corrected to match the type actually used by the Linux kernel. This affects the size and layout of those structures.
  • An archaic GNU extension to scanf, under which '%as', '%aS', and '%a[...]' meant to scan a string and allocate space for it with malloc, is now restricted to programs compiled in C89 or C++98 mode with _GNU_SOURCE defined. This extension conflicts with C99's use of '%a' to scan a hexadecimal floating-point number, which is now available to programs compiled as C99 or C++11 or higher, regardless of _GNU_SOURCE.

POSIX.1-2008 includes the feature of allocating a buffer for string input with malloc, using the modifier letter 'm' instead. Programs using '%as', '%aS', or '%a[...]' with the old GNU meaning should change to '%ms', '%mS', or '%m[...]' respectively. Programs that wish to use the C99 '%a' no longer need to avoid _GNU_SOURCE.

GCC's -Wformat warnings can detect most uses of this extension, as long as all functions that call vscanf, vfscanf, or vsscanf are annotated with attribute ((format (scanf, ...))).

Changes to build and runtime requirements:

  • Python 3.4 or later is required to build the GNU C Library.
  • On most architectures, GCC 5 or later is required to build the GNU C Library. (On powerpc64le, GCC 6.2 or later is still required, as before.)

Older GCC versions and non-GNU compilers are still supported when compiling programs that use the GNU C Library.

Security related changes:

CVE-2018-19591: A file descriptor leak in if_nametoindex can lead to a denial of service due to resource exhaustion when processing getaddrinfo calls with crafted host names. Reported by Guido Vranken.

CVE-2019-6488: On x32, the size_t parameter may be passed in the lower 32 bits of a 64-bit register with with non-zero upper 32 bit. When it happened, accessing the 32-bit size_t value as the full 64-bit register in the assembly string/memory functions would cause a buffer overflow. Reported by H.J. Lu.

CVE-2016-10739: The getaddrinfo function could successfully parse IPv4 addresses with arbitrary trailing characters, potentially leading to data or command injection issues in applications.

Change History (4)

comment:1 by Bruce Dubbs, 3 years ago

Owner: changed from lfs-book to Bruce Dubbs
Status: newassigned

glibc-2.29 is now available. It looks like pythin3 will be required and we man need to add it to Chapter 5.

comment:2 by Xi Ruoyao, 3 years ago

Let me try this... rm -rf my half-completed LFS system :(.

comment:3 by Bruce Dubbs, 3 years ago

Updated at revision 11506, but leaving open to investigate an issue with running th eregression tests.

comment:4 by Bruce Dubbs, 3 years ago

Resolution: fixed
Status: assignedclosed

Now fixed at revision 11507.

Note: See TracTickets for help on using tickets.