# This file defines the minimum symbol version number used by the # system-provided libcrypt, for each CPU and OS where libxcrypt can be # binary backward compatible with it. See also lib/libcrypt.map.in, # build-aux/scripts/compute-symver-floor, and # build-aux/scripts/gen-libcrypt-map. # # Lines in this file that start with '#' are comments; # is not # otherwise significant. Blank lines are ignored. All other lines # must have three or four columns: VERSION, SYSTEM, CPU_FAMILY, # and PREPROCESSOR_CHECK, in that order. # # VERSION is the minimum symbol version to use on hosts where SYSTEM # and CPU_FAMILY match autoconf's $host_os and $host_cpu values, # respectively, when interpreted as (Perl) regexes. There is an implicit # ^ at the beginning of each regex (that is, they must match starting # at the beginning of the string) but there is no implicit $ at the end # (that is, they do not have to match the entire string). Use '.' # to accept any string. # # If there is anything more on the line after the CPU_FAMILY field, # all of it is taken as a preprocessor #if expression which must be # true for this line's version number to be used. The macros defined # in <limits.h> are available to this expression. This mechanism is # for subarchitectures that do not change $host_cpu, e.g. x32 (I wish # they wouldn't do that...) # # The symbol version XCRYPT_2.0 is special; if this file selects that # version as the minimum for some platform, configure will # automatically switch into --disable-obsolete-api mode. This is used # for platforms where either we have not yet implemented binary # backward compatibility with the system-provided libcrypt, or we know # there is no system-provided libcrypt to be compatible with. # # The symbol version ERROR is special; if this file selects that # version as the minimum for some platform, configuration will fail. # This is used for platforms where we know we ought to support # backward binary compatibility and the library shouldn't be allowed # to be used until someone's set this up properly. # # More specific regexes must be sorted below less specific ones, and # empty PREPROCESSOR_CHECK must be sorted below non-empty. If neither # constraint applies, sort entries in descending order of symbol # version within one SYSTEM, and in alphabetical order of CPU_FAMILY # within each symbol version. # # Future cleanup: the ERROR lines for 'gnu*', 'kfreebsd*gnu*', and # 'linux*gnu*' can be removed once GNU libc stops shipping libcrypt. # It will be correct to use XCRYPT_2.0 as the minimum symbol version # for any platform added to glibc after that release. #VERSION SYSTEM CPU_FAMILY PREPROCESSOR_CHECK # GNU Hurd GLIBC_2.2.6 gnu i[3-9]86 ERROR gnu . # FreeBSD kernel with GNU libc GLIBC_2.3 kfreebsd.*gnu x86_64 !(defined __x86_64__ && ULONG_MAX == UINT_MAX) /* not x32 */ GLIBC_2.3 kfreebsd.*gnu i[3-9]86 ERROR kfreebsd.*gnu . # Linux with GNU libc GLIBC_2.36 linux.*gnu loongarch64 __WORDSIZE == 64 && ULONG_MAX != UINT_MAX /* lp64* ABI */ GLIBC_2.35 linux.*gnu or1k GLIBC_2.33 linux.*gnu riscv32 GLIBC_2.32 linux.*gnu arc GLIBC_2.29 linux.*gnu csky GLIBC_2.27 linux.*gnu riscv64 GLIBC_2.21 linux.*gnu nios2 GLIBC_2.18 linux.*gnu microblaze GLIBC_2.17 linux.*gnu aarch64 GLIBC_2.17 linux.*gnu powerpc64le GLIBC_2.16 linux.*gnu x86_64 defined __x86_64__ && ULONG_MAX == UINT_MAX /* x32 */ GLIBC_2.12 linux.*gnu tilegx GLIBC_2.12 linux.*gnu tilepro GLIBC_2.4 linux.*gnu arm GLIBC_2.4 linux.*gnu m68k defined __mcoldfire__ GLIBC_2.3 linux.*gnu powerpc64 GLIBC_2.2.5 linux.*gnu x86_64 defined __x86_64__ && ULONG_MAX != UINT_MAX /* 64 */ GLIBC_2.2 linux.*gnu s390x GLIBC_2.0 linux.*gnu alpha GLIBC_2.0 linux.*gnu e2k GLIBC_2.0 linux.*gnu hppa GLIBC_2.0 linux.*gnu i[3-9]86 GLIBC_2.0 linux.*gnu ia64 GLIBC_2.0 linux.*gnu m68k GLIBC_2.0 linux.*gnu mips GLIBC_2.0 linux.*gnu powerpc GLIBC_2.0 linux.*gnu s390 GLIBC_2.0 linux.*gnu sh GLIBC_2.0 linux.*gnu sparc GLIBC_2.0 linux.*gnu x86_64 ERROR linux.*gnu . # Other systems. XCRYPT_2.0 . .