]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - INSTALL
iconv, localedef: avoid floating point rounding differences [BZ #24372]
[thirdparty/glibc.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 0a22aa7d01e6e87b35a93bca7c1656e4196be221..ddb9e9018d1a6e0546216a22ad649b64f96d56e2 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -90,6 +90,22 @@ if 'CFLAGS' is specified it must enable optimization.  For example:
      library will still be usable, but functionality may be lost--for
      example, you can't build a shared libc with old binutils.
 
+'--with-nonshared-cflags=CFLAGS'
+     Use additional compiler flags CFLAGS to build the parts of the
+     library which are always statically linked into applications and
+     libraries even with shared linking (that is, the object files
+     contained in 'lib*_nonshared.a' libraries).  The build process will
+     automatically use the appropriate flags, but this option can be
+     used to set additional flags required for building applications and
+     libraries, to match local policy.  For example, if such a policy
+     requires that all code linked into applications must be built with
+     source fortification,
+     '--with-nonshared-cflags=-Wp,-D_FORTIFY_SOURCE=2' will make sure
+     that the objects in 'libc_nonshared.a' are compiled with this flag
+     (although this will not affect the generated code in this
+     particular case and potentially change debugging information and
+     metadata only).
+
 '--disable-shared'
      Don't build shared libraries even if it is possible.  Not all
      systems support shared libraries; you need ELF support and
@@ -106,6 +122,22 @@ if 'CFLAGS' is specified it must enable optimization.  For example:
      programs and tests are created as dynamic position independent
      executables (PIE) by default.
 
+'--enable-cet'
+     Enable Intel Control-flow Enforcement Technology (CET) support.
+     When the GNU C Library is built with '--enable-cet', the resulting
+     library is protected with indirect branch tracking (IBT) and shadow
+     stack (SHSTK).  When CET is enabled, the GNU C Library is
+     compatible with all existing executables and shared libraries.
+     This feature is currently supported on i386, x86_64 and x32 with
+     GCC 8 and binutils 2.29 or later.  Note that when CET is enabled,
+     the GNU C Library requires CPUs capable of multi-byte NOPs, like
+     x86-64 processors as well as Intel Pentium Pro or newer.
+
+     NOTE: '--enable-cet' has been tested for i686, x86_64 and x32 on
+     non-CET processors.  '--enable-cet' has been tested for x86_64 and
+     x32 on CET SDVs, but Intel CET support hasn't been validated for
+     i686.
+
 '--disable-profile'
      Don't build libraries with profiling information.  You may want to
      use this option if you don't plan to do profiling.
@@ -195,7 +227,10 @@ if 'CFLAGS' is specified it must enable optimization.  For example:
      By default, libnsl is only built as shared library for backward
      compatibility and the NSS modules libnss_compat, libnss_nis and
      libnss_nisplus are not built at all.  Use this option to enable
-     libnsl with all depending NSS modules and header files.
+     libnsl with all depending NSS modules and header files.  For
+     architectures and ABIs that have been added after version 2.28 of
+     the GNU C Library this option is not available, and the libnsl
+     compatibility library is not built.
 
 '--disable-crypt'
      Do not install the passphrase-hashing library 'libcrypt' or the
@@ -280,33 +315,6 @@ You can specify 'stop-on-test-failure=y' when running 'make check' to
 make the test run stop and exit with an error status immediately when a
 failure occurs.
 
-   The GNU C Library pretty printers come with their own set of scripts
-for testing, which run together with the rest of the testsuite through
-'make check'.  These scripts require the following tools to run
-successfully:
-
-   * Python 2.7.6/3.4.3 or later
-
-     Python is required for running the printers' test scripts.
-
-   * PExpect 4.0
-
-     The printer tests drive GDB through test programs and compare its
-     output to the printers'.  PExpect is used to capture the output of
-     GDB, and should be compatible with the Python version in your
-     system.
-
-   * GDB 7.8 or later with support for Python 2.7.6/3.4.3 or later
-
-     GDB itself needs to be configured with Python support in order to
-     use the pretty printers.  Notice that your system having Python
-     available doesn't imply that GDB supports it, nor that your
-     system's Python and GDB's have the same version.
-
-If these tools are absent, the printer tests will report themselves as
-'UNSUPPORTED'.  Notice that some of the printer tests require the GNU C
-Library to be compiled with debugging symbols.
-
    To format the 'GNU C Library Reference Manual' for printing, type
 'make dvi'.  You need a working TeX installation to do this.  The
 distribution builds the on-line formatted version of the manual, as Info
@@ -403,13 +411,33 @@ a pseudoterminal so it can be used by the calling process.  If you are
 using a Linux kernel with the 'devpts' filesystem enabled and mounted at
 '/dev/pts', you don't need this program.
 
-   After installation you might want to configure the timezone and
-locale installation of your system.  The GNU C Library comes with a
-locale database which gets configured with 'localedef'.  For example, to
-set up a German locale with name 'de_DE', simply issue the command
-'localedef -i de_DE -f ISO-8859-1 de_DE'.  To configure all locales that
+   After installation you should configure the timezone and install
+locales for your system.  The time zone configuration ensures that your
+system time matches the time for your current timezone.  The locales
+ensure that the display of information on your system matches the
+expectations of your language and geographic region.
+
+   The GNU C Library is able to use two kinds of localization
+information sources, the first is a locale database named
+'locale-archive' which is generally installed as
+'/usr/lib/locale/locale-archive'.  The locale archive has the benefit of
+taking up less space and being very fast to load, but only if you plan
+to install sixty or more locales.  If you plan to install one or two
+locales you can instead install individual locales into their self-named
+directories e.g. '/usr/lib/locale/en_US.utf8'.  For example to install
+the German locale using the character set for UTF-8 with name 'de_DE'
+into the locale archive issue the command 'localedef -i de_DE -f UTF-8
+de_DE', and to install just the one locale issue the command 'localedef
+--no-archive -i de_DE -f UTF-8 de_DE'.  To configure all locales that
 are supported by the GNU C Library, you can issue from your build
-directory the command 'make localedata/install-locales'.
+directory the command 'make localedata/install-locales' to install all
+locales into the locale archive or 'make
+localedata/install-locale-files' to install all locales as files in the
+default configured locale installation directory (derived from
+'--prefix' or '--localedir').  To install into an alternative system
+root use 'DESTDIR' e.g. 'make localedata/install-locale-files
+DESTDIR=/opt/glibc', but note that this does not change the configured
+prefix.
 
    To configure the locally used timezone, set the 'TZ' environment
 variable.  The script 'tzselect' helps you to select the right value.
@@ -426,27 +454,19 @@ Recommended Tools for Compilation
 We recommend installing the following GNU tools before attempting to
 build the GNU C Library:
 
-   * GNU 'make' 3.79 or newer
+   * GNU 'make' 4.0 or newer
 
-     You need the latest version of GNU 'make'.  Modifying the GNU C
-     Library to work with other 'make' programs would be so difficult
-     that we recommend you port GNU 'make' instead.  *Really.*  We
-     recommend GNU 'make' version 3.79.  All earlier versions have
-     severe bugs or lack features.
+     As of relase time, GNU 'make' 4.2.1 is the newest verified to work
+     to build the GNU C Library.
 
-   * GCC 4.9 or newer
+   * GCC 6.2 or newer
 
-     GCC 4.9 or higher is required.  In general it is recommended to use
+     GCC 6.2 or higher is required.  In general it is recommended to use
      the newest version of the compiler that is known to work for
      building the GNU C Library, as newer compilers usually produce
-     better code.  As of release time, GCC 7.3 is the newest compiler
+     better code.  As of release time, GCC 8.2.1 is the newest compiler
      verified to work to build the GNU C Library.
 
-     For PowerPC 64-bits little-endian (powerpc64le), GCC 6.2 or higher
-     is required.  This compiler version is the first to provide the
-     features required for building the GNU C Library with support for
-     '_Float128'.
-
      For multi-arch support it is recommended to use a GCC which has
      been built with support for GNU indirect functions.  This ensures
      that correct debugging information is generated for functions
@@ -466,7 +486,7 @@ build the GNU C Library:
 
      You must use GNU 'binutils' (as and ld) to build the GNU C Library.
      No other assembler or linker has the necessary functionality at the
-     moment.  As of release time, GNU 'binutils' 2.29.1 is the newest
+     moment.  As of release time, GNU 'binutils' 2.31.1 is the newest
      verified to work to build the GNU C Library.
 
    * GNU 'texinfo' 4.7 or later
@@ -483,25 +503,55 @@ build the GNU C Library:
      'awk' is used in several places to generate files.  Some 'gawk'
      extensions are used, including the 'asorti' function, which was
      introduced in version 3.1.2 of 'gawk'.  As of release time, 'gawk'
-     version 4.2.0 is the newest verified to work to build the GNU C
+     version 4.2.1 is the newest verified to work to build the GNU C
      Library.
 
    * GNU 'bison' 2.7 or later
 
      'bison' is used to generate the 'yacc' parser code in the 'intl'
-     subdirectory.  As of release time, 'bison' version 3.0.4 is the
+     subdirectory.  As of release time, 'bison' version 3.0.5 is the
      newest verified to work to build the GNU C Library.
 
    * Perl 5
 
-     Perl is not required, but it is used if present to test the
-     installation.  We may decide to use it elsewhere in the future.
+     Perl is not required, but if present it is used in some tests and
+     the 'mtrace' program, to build the GNU C Library manual.  As of
+     release time 'perl' version 5.28.1 is the newest verified to work
+     to build the GNU C Library.
 
    * GNU 'sed' 3.02 or newer
 
      'Sed' is used in several places to generate files.  Most scripts
      work with any version of 'sed'.  As of release time, 'sed' version
-     4.4 is the newest verified to work to build the GNU C Library.
+     4.5 is the newest verified to work to build the GNU C Library.
+
+   * Python 3.4 or later
+
+     Python is required to build the GNU C Library.  As of release time,
+     Python 3.7.1 is the newest verified to work for building and
+     testing the GNU C Library.
+
+   * PExpect 4.0
+
+     The pretty printer tests drive GDB through test programs and
+     compare its output to the printers'.  PExpect is used to capture
+     the output of GDB, and should be compatible with the Python version
+     in your system.  As of release time PExpect 4.3 is the newest
+     verified to work to test the pretty printers.
+
+   * GDB 7.8 or later with support for Python 2.7/3.4 or later
+
+     GDB itself needs to be configured with Python support in order to
+     use the pretty printers.  Notice that your system having Python
+     available doesn't imply that GDB supports it, nor that your
+     system's Python and GDB's have the same version.  As of release
+     time GNU 'debugger' 8.2 is the newest verified to work to test the
+     pretty printers.
+
+     Unless Python, PExpect and GDB with Python support are present, the
+     printer tests will report themselves as 'UNSUPPORTED'.  Notice that
+     some of the printer tests require the GNU C Library to be compiled
+     with debugging symbols.
 
 If you change any of the 'configure.ac' files you will also need
 
@@ -511,6 +561,9 @@ and if you change any of the message translation files you will need
 
    * GNU 'gettext' 0.10.36 or later
 
+     As of release time, GNU 'gettext' version 0.19.8.1 is the newest
+     version verified to work to build the GNU C Library.
+
 You may also need these packages if you upgrade your source tree using
 patches, although we try to avoid this.