The file has no inclusion guards, and contains typedefs that
cause errors when included multiple times with older (pre-C11)
compilers such as gcc 4.4.
Save the "#ifdef DOS" content to crypt-private.h even though
it's likely not particularly useful.
(__crypt_r, __crypt): Disable MD5 and DES if FIPS is enabled.
* crypt/md5c-test.c (main): Tolerate disabled MD5.
* sysdeps/unix/sysv/linux/fips-private.h: New file.
* sysdeps/generic/fips-private.h: New file, dummy fallback.
(_ufc_setup_salt_r): Return bool.
* crypt/crypt-entry.c: Include errno.h.
(__crypt_r): Return NULL with EINVAL for bad salt.
* crypt/crypt_util.c (bad_for_salt): New.
(_ufc_setup_salt_r): Check that salt is long enough and within
the specified alphabet.
* crypt/badsalttest.c: New file.
* crypt/Makefile (tests): Add it.
($(objpfx)badsalttest): New.
sha512-crypt, and sha512.
(tests): Add sha256test, sha256c-test, sha512test, and sha512c-test.
(distribute): Add sha256.h and sha512.h.
* crypt/crypt-entry.c (crypt): Recognize the new $5$ and $6$ prefixes
and call the appropriate code.
* crypt/sha256-crypt.c: New file.
* crypt/sha256.c: New file.
* crypt/sha256.h: New file.
* crypt/sha256c-test.c: New file.
* crypt/sha256test.c: New file.
* crypt/sha512-crypt.c: New file.
* crypt/sha512.c: New file.
* crypt/sha512.h: New file.
* crypt/sha512c-test.c: New file.
* crypt/sha512test.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__thread_start):
Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/clone.S (__thread_start):
Likewise.