]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - INSTALL
build-many-glibcs.py: Add openrisc hard float glibc variant
[thirdparty/glibc.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index bc761ab98bbfc6b7266faa4bcd5c32bbdb5fbbad..c8c524527b9fc17391ec2711273902638d1dc8ab 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -106,21 +106,32 @@ if 'CFLAGS' is specified it must enable optimization.  For example:
      particular case and potentially change debugging information and
      metadata only).
 
+'--with-rtld-early-cflags=CFLAGS'
+     Use additional compiler flags CFLAGS to build the early startup
+     code of the dynamic linker.  These flags can be used to enable
+     early dynamic linker diagnostics to run on CPUs which are not
+     compatible with the rest of the GNU C Library, for example, due to
+     compiler flags which target a later instruction set architecture
+     (ISA).
+
+'--with-timeoutfactor=NUM'
+     Specify an integer NUM to scale the timeout of test programs.  This
+     factor can be changed at run time using 'TIMEOUTFACTOR' environment
+     variable.
+
 '--disable-shared'
      Don't build shared libraries even if it is possible.  Not all
      systems support shared libraries; you need ELF support and
      (currently) the GNU linker.
 
-'--enable-static-pie'
-     Enable static position independent executable (static PIE) support.
-     Static PIE is similar to static executable, but can be loaded at
-     any address without help from a dynamic linker.  All static
-     programs as well as static tests are built as static PIE, except
-     for those marked with no-pie.  The resulting glibc can be used with
-     the GCC option, -static-pie, which is available with GCC 8 or
-     above, to create static PIE. This option also implies that glibc
-     programs and tests are created as dynamic position independent
-     executables (PIE) by default.
+'--disable-default-pie'
+     Don't build glibc programs and the testsuite as position
+     independent executables (PIE). By default, glibc programs and tests
+     are created as position independent executables on targets that
+     support it.  If the toolchain and architecture support it, static
+     executables are built as static PIE and the resulting glibc can be
+     used with the GCC option, -static-pie, which is available with GCC
+     8 or above, to create static PIE.
 
 '--enable-cet'
 '--enable-cet=permissive'
@@ -130,17 +141,13 @@ if 'CFLAGS' is specified it must enable optimization.  For example:
      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.  With '--enable-cet', it is an error to
-     dlopen a non CET enabled shared library in CET enabled application.
-     With '--enable-cet=permissive', CET is disabled when dlopening a
-     non CET enabled shared library in CET enabled application.
-
-     NOTE: '--enable-cet' has been tested for i686, x86_64 and x32 on
-     non-CET processors.  '--enable-cet' has been tested for i686,
-     x86_64 and x32 on CET processors.
+     supported on x86_64 and x32 with GCC 8 and binutils 2.29 or later.
+     With '--enable-cet', it is an error to dlopen a non CET enabled
+     shared library in CET enabled application.  With
+     '--enable-cet=permissive', CET is disabled when dlopening a non CET
+     enabled shared library in CET enabled application.
+
+     NOTE: '--enable-cet' is only supported on x86_64 and x32.
 
 '--enable-memory-tagging'
      Enable memory tagging support if the architecture supports it.
@@ -217,41 +224,9 @@ if 'CFLAGS' is specified it must enable optimization.  For example:
      By default for x86_64, the GNU C Library is built with the vector
      math library.  Use this option to disable the vector math library.
 
-'--enable-tunables'
-     Tunables support allows additional library parameters to be
-     customized at runtime.  This feature is enabled by default.  This
-     option can take the following values:
-
-     'yes'
-          This is the default if no option is passed to configure.  This
-          enables tunables and selects the default frontend (currently
-          'valstring').
-
-     'no'
-          This option disables tunables.
-
-     'valstring'
-          This enables tunables and selects the 'valstring' frontend for
-          tunables.  This frontend allows users to specify tunables as a
-          colon-separated list in a single environment variable
-          'GLIBC_TUNABLES'.
-
-'--disable-crypt'
-     Do not install the passphrase-hashing library 'libcrypt' or the
-     header file 'crypt.h'.  'unistd.h' will still declare the function
-     'crypt'.  Using this option does not change the set of programs
-     that may need to be linked with '-lcrypt'; it only means that the
-     GNU C Library will not provide that library.
-
-     This option is for hackers and distributions experimenting with
-     independently-maintained implementations of libcrypt.  It may
-     become the default in a future release.
-
-'--disable-experimental-malloc'
-     By default, a per-thread cache is enabled in 'malloc'.  While this
-     cache can be disabled on a per-application basis using tunables
-     (set glibc.malloc.tcache_count to zero), this option can be used to
-     remove it from the build completely.
+'--disable-scv'
+     Disable using 'scv' instruction for syscalls.  All syscalls will
+     use 'sc' instead, even if the kernel supports 'scv'.  PowerPC only.
 
 '--build=BUILD-SYSTEM'
 '--host=HOST-SYSTEM'
@@ -286,6 +261,14 @@ if 'CFLAGS' is specified it must enable optimization.  For example:
      the GNU C Library.  The default value refers to the main
      bug-reporting information for the GNU C Library.
 
+'--enable-fortify-source'
+'--enable-fortify-source=LEVEL'
+     Use -D_FORTIFY_SOURCE='LEVEL' to control hardening in the GNU C
+     Library.  If not provided, 'LEVEL' defaults to highest possible
+     value supported by the build compiler.
+
+     Default is to disable fortification.
+
    To build the library and related programs, type 'make'.  This will
 produce a lot of output, some of which may look like errors from 'make'
 but aren't.  Look for error messages from 'make' containing '***'.
@@ -479,15 +462,15 @@ build the GNU C Library:
 
    * GNU 'make' 4.0 or newer
 
-     As of relase time, GNU 'make' 4.3 is the newest verified to work to
-     build the GNU C Library.
+     As of release time, GNU 'make' 4.4.1 is the newest verified to work
+     to build the GNU C Library.
 
    * GCC 6.2 or newer
 
      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 10.2 is the newest compiler
+     better code.  As of release time, GCC 13.2 is the newest compiler
      verified to work to build the GNU C Library.
 
      For PowerPC 64-bits little-endian (powerpc64le), a GCC version with
@@ -503,6 +486,9 @@ build the GNU C Library:
      For s390x architecture builds, GCC 7.1 or higher is needed (See gcc
      Bug 98269).
 
+     For AArch64 architecture builds with mathvec enabled, GCC 10 or
+     higher is needed due to dependency on arm_sve.h.
+
      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
@@ -522,7 +508,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.35.1 is the newest
+     moment.  As of release time, GNU 'binutils' 2.42 is the newest
      verified to work to build the GNU C Library.
 
      For PowerPC 64-bits little-endian (powerpc64le), 'objcopy' is
@@ -538,7 +524,7 @@ build the GNU C Library:
      need this version of the 'texinfo' package.  Earlier versions do
      not understand all the tags used in the document, and the
      installation mechanism for the info files is not present or works
-     differently.  As of release time, 'texinfo' 6.7 is the newest
+     differently.  As of release time, 'texinfo' 7.0.3 is the newest
      verified to work to build the GNU C Library.
 
    * GNU 'awk' 3.1.2, or higher
@@ -546,49 +532,56 @@ 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 5.1 is the newest verified to work to build the GNU C
+     version 5.2.2 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.7.4 is the
+     subdirectory.  As of release time, 'bison' version 3.8.2 is the
      newest verified to work to build the GNU C Library.
 
    * Perl 5
 
      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.32.0 is the newest verified to work
+     release time 'perl' version 5.38.2 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.8 is the newest verified to work to build the GNU C Library.
+     4.9 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.8.6 is the newest verified to work for building and
-     testing the GNU C Library.
+     Python 3.11 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.8 is the newest
+     in your system.  As of release time PExpect 4.8.0 is the newest
      verified to work to test the pretty printers.
 
+   * The Python 'abnf' module.
+
+     This module is optional and used to verify some ABNF grammars in
+     the manual.  Version 2.2.0 has been confirmed to work as expected.
+     A missing 'abnf' module does not reduce the test coverage of the
+     library itself.
+
    * 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' 10.1 is the newest verified to work to test the
+     time GNU 'debugger' 13.2 is the newest verified to work to test the
      pretty printers.
 
      Unless Python, PExpect and GDB with Python support are present, the
@@ -598,13 +591,13 @@ build the GNU C Library:
 
 If you change any of the 'configure.ac' files you will also need
 
-   * GNU 'autoconf' 2.69 (exactly)
+   * GNU 'autoconf' 2.71 (exactly)
 
 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.21 is the newest
+     As of release time, GNU 'gettext' version 0.21.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
@@ -615,15 +608,13 @@ Specific advice for GNU/Linux systems
 
 If you are installing the GNU C Library on GNU/Linux systems, you need
 to have the header files from a 3.2 or newer kernel around for
-reference.  (For the ia64 architecture, you need version 3.2.18 or newer
-because this is the first version with support for the 'accept4' system
-call.)  These headers must be installed using 'make headers_install';
-the headers present in the kernel source directory are not suitable for
-direct use by the GNU C Library.  You do not need to use that kernel,
-just have its headers installed where the GNU C Library can access them,
-referred to here as INSTALL-DIRECTORY.  The easiest way to do this is to
-unpack it in a directory such as '/usr/src/linux-VERSION'.  In that
-directory, run 'make headers_install
+reference.  These headers must be installed using 'make
+headers_install'; the headers present in the kernel source directory are
+not suitable for direct use by the GNU C Library.  You do not need to
+use that kernel, just have its headers installed where the GNU C Library
+can access them, referred to here as INSTALL-DIRECTORY.  The easiest way
+to do this is to unpack it in a directory such as
+'/usr/src/linux-VERSION'.  In that directory, run 'make headers_install
 INSTALL_HDR_PATH=INSTALL-DIRECTORY'.  Finally, configure the GNU C
 Library with the option '--with-headers=INSTALL-DIRECTORY/include'.  Use
 the most recent kernel you can get your hands on.  (If you are
@@ -652,6 +643,9 @@ components of the GNU C Library installation to be in '/lib' and some in
 Library with '--prefix=/usr'.  If you set some other prefix or allow it
 to default to '/usr/local', then all the components are installed there.
 
+   As of release time, Linux version 6.1.5 is the newest stable version
+verified to work to build the GNU C Library.
+
 Reporting Bugs
 ==============