This file documents Google's modified version of glibc, known as GRTE
(Google Run Time Environment).  GRTE serves as the common C library for
internal Google applications running on production systems.

While GRTE is nearly identical to stock glibc, it does have a number
of local changes.  These run the gamut from patches that were
submitted but not accepted for trunk glibc, to workarounds for quirks
of Google infrastructure, to extensions that are critical for the
proper functioning of applications.  The ideal, however, is to have no
local changes at all.

GRTE versions are identified by a small integer, which generally
corresponds to a particular glibc version.  GRTE v4 is based on
glibc-2.19, while GRTE v5 is based on glibc-2.27, for instance.

BUILDING GRTE WITH GCC

When using GCC, GRTE v4 and later will build with native
configure/make in the usual way for glibc.  For v4, nscd does not
work, so add --disable-nscd when configuring.

Supported architectures include x86_64 and ppc64le.

Testsuites will likely have some additional failures.

BUILDING GRTE WITH CLANG

GRTE v5 and later can also be built with clang and (optionally) lld.
LLVM support for GNU source code continues to evolve (as of June
2018), so the process is less straightforward, and likely to change
from what is documented here.  There are a number of glibc patches
that make this work, including additional configure options mentioned
below.

The minimum version of clang is 6.0.0.  If lld is to be used for linking,
it needs to be newer than 6.0.0.

Configure:

  CC=path-to-llvm/clang CXX=path-to-llvm/clang++ \
    ../glibc/configure --disable-werror --with-clang --disable-float128 \
      --with-lld --with-default-link --disable-multi-arch --prefix=/something

To build with BFD ld as linker, omit the "--with-lld
--with-default-link".  (Gold has had problems in the past.)

Build:

  make
  make install

Test:

  make check

Testsuite results will show many unexpected failures beyond the
GCC-compiled results; about 390 for x86-64.  These are a combination
of known bugs in clang, and issues with conformance to old standards
predating clang.  Note that the clang build still needs symlinks to
libgcc and libstdc++ in the installed library directory, so that
thread cancellation tests pass.
