New glibc

I was surprised when i saw the latest ChangeLog for -current tree. It added the new shinny glibc 2.26 into the core packages, replacing the old glibc 2.25 which was just added in May. The new glibc 2.26 was released on August 2, and it was added 3 days later on August 5. I don't think  there are many other distributions who have used glibc 2.26 in their repo (even BLFS is still using 2.25git). Patrick also added new sqlite, nmap, bind, imagemagick, and dhcp along with the new glibc.

Unfortunately, there has been a report of a breakage of this new glibc and it was the case when you install a new Slackware from current ISO. If you perform an upgrade from previous glibc, you will NOT be affected by this issue. The ChangeLog does mention some deprecated and removed features, and other changes affecting compatibility:
* The synchronization that pthread_spin_unlock performs has been changed to
  now be equivalent to a C11 atomic store with release memory order to the
  spin lock's memory location.  Previously, several (but not all)
  architectures used stronger synchronization (e.g., containing what is
  often called a full barrier).  This change can improve performance, but
  may affect odd fringe uses of spin locks that depend on the previous
  behavior (e.g., using spin locks as atomic variables to try to implement
  Dekker's mutual exclusion algorithm).

* The port to Native Client running on ARMv7-A (--host=arm-nacl) has been
  removed.

* Sun RPC is deprecated.  The rpcgen program, librpcsvc, and Sun RPC headers
  will only be built and installed when the GNU C Library is configured with
  --enable-obsolete-rpc.  This allows alternative RPC implementations, such
  as TIRPC or rpcsvc-proto, to be used.

* The NIS(+) name service modules, libnss_nis, libnss_nisplus, and
  libnss_compat, are deprecated, and will not be built or installed by
  default.

  The NIS(+) support library, libnsl, is also deprecated.  By default, a
  compatibility shared library will be built and installed, but not headers
  or development libraries. Only a few NIS-related programs require this
  library.  (In particular, the GNU C Library has never required programs
  that use 'gethostbyname' to be linked with libnsl.)

  Replacement implementations based on TIRPC, which additionally support
  IPv6, are available from <https://github.com/thkukuk/>.  The configure
  option --enable-obsolete-nsl will cause libnsl's headers, and the NIS(+)
  name service modules, to be built and installed.

* The DNS stub resolver no longer performs EDNS fallback.  If EDNS or DNSSEC
  support is enabled, the configured recursive resolver must support EDNS.
  (Responding to EDNS-enabled queries with responses which are not
  EDNS-enabled is fine, but FORMERR responses are not.)

* res_mkquery and res_nmkquery no longer support the IQUERY opcode.  DNS
  servers have not supported this opcode for a long time.

* The _res_opcodes variable has been removed from libresolv.  It had been
  exported by accident.

*  no longer includes inline versions of any string functions,
  as this kind of optimization is better done by the compiler.  The macros
  __USE_STRING_INLINES and __NO_STRING_INLINES no longer have any effect.

* The nonstandard header  has been removed.  Most programs should
  use  instead.  If you have a specific need for the definition of
  locale_t with no other declarations, please contact
  libc-alpha@sourceware.org and explain.

* The obsolete header  has been removed.

* The obsolete signal constant SIGUNUSED is no longer defined by .

* The obsolete function cfree has been removed.  Applications should use
  free instead.

* The stack_t type no longer has the name struct sigaltstack.  This changes
  the C++ name mangling for interfaces involving this type.

* The ucontext_t type no longer has the name struct ucontext.  This changes
  the C++ name mangling for interfaces involving this type.

* On M68k GNU/Linux and MIPS GNU/Linux, the fpregset_t type no longer has
  the name struct fpregset.  On Nios II GNU/Linux, the mcontext_t type no
  longer has the name struct mcontext.  On SPARC GNU/Linux, the struct
  mc_fq, struct rwindow, struct fpq and struct fq types are no longer
  defined in sys/ucontext.h, the mc_fpu_t type no longer has the name struct
  mc_fpu, the gwindows_t type no longer has the name struct gwindows and the
  fpregset_t type no longer has the name struct fpu.  This changes the C++
  name mangling for interfaces involving those types.

* On S/390 GNU/Linux, the constants defined by  have been
  synced with the kernel:

    - PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS and PTRACE_SETFPREGS
      are not supported on this architecture and have been removed.

    - PTRACE_SINGLEBLOCK, PTRACE_SECCOMP_GET_FILTER, PTRACE_PEEKUSR_AREA,
      PTRACE_POKEUSR_AREA, PTRACE_GET_LAST_BREAK, PTRACE_ENABLE_TE,
      PTRACE_DISABLE_TE and PTRACE_TE_ABORT_RAND have been added.

  Programs that assume the GET/SETREGS ptrace requests are universally
  available will now fail to build, instead of malfunctioning at runtime.
GCC is also known to be broken with glibc 2.26. You can read the issue here. While there are patches already on git master, probably best to wait for GCC 7.2.0 which will be released next week. It should have the fixes included.

As glibc is a core library used by many other applications/libraries, there could be more hidden bugs and it's time for another bug hunting. Go build and test!!!

Popular posts from this blog

Python 3.6.0 in SBo 14.2 repository

NVidia Legacy Unix Driver Update

Security Update: Thunderbird, Seamonkey, libpng, python, samba