| 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. |