10.2. GLIBC

In Red Hat Enterprise Linux 7, the glibc libraries (libc, libm, libpthread, NSS plug-ins, and others) are based on the glibc 2.17 release, which includes numerous enhancements and bug fixes relative to the Red Hat Enterprise Linux 6 equivalent.
Notable highlights of the Red Hat Enterprise Linux 7 glibc libraries are the following:
  • Experimental ISO C11 support;
  • New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark, clock_adjtime, name_to_handle_at, open_by_handle_at, syncfs, setns, sendmmsg, process_vm_readv, process_vm_writev;
  • New optimized string functions for AMD64 and Intel 64 architectures using Streaming SIMD Extensions (SSE), Supplemental Streaming SIMD Extensions 3 (SSSE3), Streaming SIMD Extensions 4.2 (SSE4.2), and Advanced Vector Extensions (AVX);
  • New optimized string functions for IBM PowerPC and IBM POWER7;
  • New optimized string functions for IBM S/390 and IBM System z with specifically optimized routines for IBM System z10 and IBM zEnterprise 196;
  • New locales: os_RU, bem_ZA, en_ZA, ff_SN, sw_KE, sw_TZ, lb_LU, wae_CH, yue_HK, lij_IT, mhr_RU, bho_IN, unm_US, es_CU, ta_LK, ayc_PE, doi_IN, ia_FR, mni_IN, nhn_MX, niu_NU, niu_NZ, sat_IN, szl_PL, mag_IN;
  • New encodings: CP770, CP771, CP772, CP773, CP774;
  • New interfaces: scandirat, scandirat64;
  • Checking versions of the FD_SET, FD_CLR, FD_ISSET, poll, and ppoll file descriptors added;
  • Caching of the netgroup database is now supported in the nscd daemon;
  • The new function secure_getenv() allows secure access to the environment, returning NULL if running in a SUID or SGID process. This function replaces the internal function __secure_getenv();
  • The crypt() function now fails if passed salt bytes that violate the specification for those values. On Linux, the crypt() function will consult the /proc/sys/crypto/fips_enabled file to determine if FIPS mode is enabled, and fail on encrypted strings using the Message-Digest algorithm 5 (MD5) or Data Encryption Standard (DES) algorithm when the mode is enabled;
  • The clock_* suite of functions (declared in <time.h>) is now available directly in the main C library. Previously it was necessary to link with -lrt to use these functions. This change has the effect that a single-threaded program that uses a function such as clock_gettime() (and is not linked with -lrt) will no longer implicitly load the pthreads library at runtime and so will not suffer the overheads associated with multi-thread support in other code such as the C++ runtime library;
  • New header <sys/auxv.h> and function getauxval() allow easy access to the AT_* key-value pairs passed from the Linux kernel. The header also defines the HWCAP_* bits associated with the AT_HWCAP key;
  • A new class of installed header has been documented for low-level platform-specific functionality. PowerPC added the first instance with a function to provide time base register access.