Jan 4, 2012

New GNU C Library Version Coming to openSUSE

The GNU C library (glibc) is the basic system library used by almost every program, it comes with the base library (libc), a math library (libm), the thread library (libpthread), support for locales and character conversions and a couple of tools. The latest release - 2.15 - was released Christmas 2011.
I have now updated glibc for openSUSE 12.2 in its development project (Base:System) to version 2.15 and it seems to work on x86, x86-64, PowerPC and even Arm.

The new version 2.15 of glibc brings mainly optimizations and bugfixes.

The main new features of the 2.15 version are:
  • a new program pldd to list loaded objects of a process.
  • nss_db support - without a dependency on berkely db.
  • integration of libm with gcc's -ffinite-math-only option.
Besides updating the upstream version, I made a couple of cleanups of the package itself:
  • The x86-64 package was falsely compiled with gcc's flag -mno-tls-direct-seg-refs - an option only needed for running under 32-bit Xen. This might speedup some threaded applications.
  • The i686 library is not compiled with -mno-tls-direct-seg-refs anymore but a special version is installed in /lib/i686/nosegneg that is compiled with this flag. So, installations using 32-bit Xen will use the nosegneg library and everybody else the normal version. This should speedup some threaded applications when not using Xen.
  • The AMD libm implementation has been removed in favour of glibc's libm implementation. It didn't integrate well with the changes that  went into glibc 2.15.
  • I've reviewed all patches we have in the package and tried to upstream as many as possible - and removed a few that were obsolete. We still have far too many, help is welcome to upstream ;)
Call for testing
I welcome contributions to the package, testing of glibc 2.15 and fixing of any bugs in glibc or the packages using it. I'm especially interested on tests under Xen to check that my optimizations did not break anything.

So far, one package was failing due to changes - unscd - and the upstream author provided quickly a fix. Thanks to Cristian Rodriguez for his tests!

I'm pushing glibc 2.15 now to openSUSE:Factory for the usual review and integration.