summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cddl/lib/libnvpair/Makefile6
-rw-r--r--contrib/tcpdump/netdissect.h5
-rw-r--r--crypto/openssl/CHANGES15
-rw-r--r--crypto/openssl/Makefile13
-rw-r--r--crypto/openssl/Makefile.org11
-rw-r--r--crypto/openssl/NEWS4
-rw-r--r--crypto/openssl/README2
-rw-r--r--crypto/openssl/crypto/bio/bio.h2
-rw-r--r--crypto/openssl/crypto/evp/e_aes.c2
-rw-r--r--crypto/openssl/crypto/opensslconf.h2
-rw-r--r--crypto/openssl/crypto/opensslconf.h.in2
-rw-r--r--crypto/openssl/crypto/opensslv.h6
-rw-r--r--crypto/openssl/crypto/pkcs12/p12_kiss.c2
-rw-r--r--crypto/openssl/crypto/threads/mttest.c365
-rwxr-xr-xcrypto/openssl/crypto/threads/pthread2.sh3
-rw-r--r--crypto/openssl/crypto/x509/Makefile2
-rw-r--r--crypto/openssl/crypto/x509/verify_extra_test.c209
-rw-r--r--crypto/openssl/crypto/x509/x509_vfy.c26
-rw-r--r--crypto/openssl/doc/crypto/X509_NAME_get_index_by_NID.pod7
-rw-r--r--crypto/openssl/doc/crypto/X509_STORE_CTX_new.pod13
-rw-r--r--crypto/openssl/doc/crypto/X509_verify_cert.pod3
-rw-r--r--crypto/openssl/ssl/s3_clnt.c17
-rw-r--r--crypto/openssl/ssl/s3_srvr.c2
-rwxr-xr-xetc/rc.d/random8
-rw-r--r--lib/liblzma/config.h3
-rw-r--r--lib/libmd/mdXhl.c2
-rw-r--r--release/doc/en_US.ISO8859-1/relnotes/article.xml6
-rw-r--r--secure/lib/libcrypto/Makefile.inc4
-rw-r--r--secure/lib/libcrypto/man/ASN1_OBJECT_new.32
-rw-r--r--secure/lib/libcrypto/man/ASN1_STRING_length.32
-rw-r--r--secure/lib/libcrypto/man/ASN1_STRING_new.32
-rw-r--r--secure/lib/libcrypto/man/ASN1_STRING_print_ex.32
-rw-r--r--secure/lib/libcrypto/man/ASN1_generate_nconf.32
-rw-r--r--secure/lib/libcrypto/man/BIO_ctrl.32
-rw-r--r--secure/lib/libcrypto/man/BIO_f_base64.32
-rw-r--r--secure/lib/libcrypto/man/BIO_f_buffer.32
-rw-r--r--secure/lib/libcrypto/man/BIO_f_cipher.32
-rw-r--r--secure/lib/libcrypto/man/BIO_f_md.32
-rw-r--r--secure/lib/libcrypto/man/BIO_f_null.32
-rw-r--r--secure/lib/libcrypto/man/BIO_f_ssl.32
-rw-r--r--secure/lib/libcrypto/man/BIO_find_type.32
-rw-r--r--secure/lib/libcrypto/man/BIO_new.32
-rw-r--r--secure/lib/libcrypto/man/BIO_new_CMS.32
-rw-r--r--secure/lib/libcrypto/man/BIO_push.32
-rw-r--r--secure/lib/libcrypto/man/BIO_read.32
-rw-r--r--secure/lib/libcrypto/man/BIO_s_accept.32
-rw-r--r--secure/lib/libcrypto/man/BIO_s_bio.32
-rw-r--r--secure/lib/libcrypto/man/BIO_s_connect.32
-rw-r--r--secure/lib/libcrypto/man/BIO_s_fd.32
-rw-r--r--secure/lib/libcrypto/man/BIO_s_file.32
-rw-r--r--secure/lib/libcrypto/man/BIO_s_mem.32
-rw-r--r--secure/lib/libcrypto/man/BIO_s_null.32
-rw-r--r--secure/lib/libcrypto/man/BIO_s_socket.32
-rw-r--r--secure/lib/libcrypto/man/BIO_set_callback.32
-rw-r--r--secure/lib/libcrypto/man/BIO_should_retry.32
-rw-r--r--secure/lib/libcrypto/man/BN_BLINDING_new.32
-rw-r--r--secure/lib/libcrypto/man/BN_CTX_new.32
-rw-r--r--secure/lib/libcrypto/man/BN_CTX_start.32
-rw-r--r--secure/lib/libcrypto/man/BN_add.32
-rw-r--r--secure/lib/libcrypto/man/BN_add_word.32
-rw-r--r--secure/lib/libcrypto/man/BN_bn2bin.32
-rw-r--r--secure/lib/libcrypto/man/BN_cmp.32
-rw-r--r--secure/lib/libcrypto/man/BN_copy.32
-rw-r--r--secure/lib/libcrypto/man/BN_generate_prime.32
-rw-r--r--secure/lib/libcrypto/man/BN_mod_inverse.32
-rw-r--r--secure/lib/libcrypto/man/BN_mod_mul_montgomery.32
-rw-r--r--secure/lib/libcrypto/man/BN_mod_mul_reciprocal.32
-rw-r--r--secure/lib/libcrypto/man/BN_new.32
-rw-r--r--secure/lib/libcrypto/man/BN_num_bytes.32
-rw-r--r--secure/lib/libcrypto/man/BN_rand.32
-rw-r--r--secure/lib/libcrypto/man/BN_set_bit.32
-rw-r--r--secure/lib/libcrypto/man/BN_swap.32
-rw-r--r--secure/lib/libcrypto/man/BN_zero.32
-rw-r--r--secure/lib/libcrypto/man/CMS_add0_cert.32
-rw-r--r--secure/lib/libcrypto/man/CMS_add1_recipient_cert.32
-rw-r--r--secure/lib/libcrypto/man/CMS_add1_signer.32
-rw-r--r--secure/lib/libcrypto/man/CMS_compress.32
-rw-r--r--secure/lib/libcrypto/man/CMS_decrypt.32
-rw-r--r--secure/lib/libcrypto/man/CMS_encrypt.32
-rw-r--r--secure/lib/libcrypto/man/CMS_final.32
-rw-r--r--secure/lib/libcrypto/man/CMS_get0_RecipientInfos.32
-rw-r--r--secure/lib/libcrypto/man/CMS_get0_SignerInfos.32
-rw-r--r--secure/lib/libcrypto/man/CMS_get0_type.32
-rw-r--r--secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.32
-rw-r--r--secure/lib/libcrypto/man/CMS_sign.32
-rw-r--r--secure/lib/libcrypto/man/CMS_sign_receipt.32
-rw-r--r--secure/lib/libcrypto/man/CMS_uncompress.32
-rw-r--r--secure/lib/libcrypto/man/CMS_verify.32
-rw-r--r--secure/lib/libcrypto/man/CMS_verify_receipt.32
-rw-r--r--secure/lib/libcrypto/man/CONF_modules_free.32
-rw-r--r--secure/lib/libcrypto/man/CONF_modules_load_file.32
-rw-r--r--secure/lib/libcrypto/man/CRYPTO_set_ex_data.32
-rw-r--r--secure/lib/libcrypto/man/DH_generate_key.32
-rw-r--r--secure/lib/libcrypto/man/DH_generate_parameters.32
-rw-r--r--secure/lib/libcrypto/man/DH_get_ex_new_index.32
-rw-r--r--secure/lib/libcrypto/man/DH_new.32
-rw-r--r--secure/lib/libcrypto/man/DH_set_method.32
-rw-r--r--secure/lib/libcrypto/man/DH_size.32
-rw-r--r--secure/lib/libcrypto/man/DSA_SIG_new.32
-rw-r--r--secure/lib/libcrypto/man/DSA_do_sign.32
-rw-r--r--secure/lib/libcrypto/man/DSA_dup_DH.32
-rw-r--r--secure/lib/libcrypto/man/DSA_generate_key.32
-rw-r--r--secure/lib/libcrypto/man/DSA_generate_parameters.32
-rw-r--r--secure/lib/libcrypto/man/DSA_get_ex_new_index.32
-rw-r--r--secure/lib/libcrypto/man/DSA_new.32
-rw-r--r--secure/lib/libcrypto/man/DSA_set_method.32
-rw-r--r--secure/lib/libcrypto/man/DSA_sign.32
-rw-r--r--secure/lib/libcrypto/man/DSA_size.32
-rw-r--r--secure/lib/libcrypto/man/ERR_GET_LIB.32
-rw-r--r--secure/lib/libcrypto/man/ERR_clear_error.32
-rw-r--r--secure/lib/libcrypto/man/ERR_error_string.32
-rw-r--r--secure/lib/libcrypto/man/ERR_get_error.32
-rw-r--r--secure/lib/libcrypto/man/ERR_load_crypto_strings.32
-rw-r--r--secure/lib/libcrypto/man/ERR_load_strings.32
-rw-r--r--secure/lib/libcrypto/man/ERR_print_errors.32
-rw-r--r--secure/lib/libcrypto/man/ERR_put_error.32
-rw-r--r--secure/lib/libcrypto/man/ERR_remove_state.32
-rw-r--r--secure/lib/libcrypto/man/ERR_set_mark.32
-rw-r--r--secure/lib/libcrypto/man/EVP_BytesToKey.32
-rw-r--r--secure/lib/libcrypto/man/EVP_DigestInit.32
-rw-r--r--secure/lib/libcrypto/man/EVP_DigestSignInit.32
-rw-r--r--secure/lib/libcrypto/man/EVP_DigestVerifyInit.32
-rw-r--r--secure/lib/libcrypto/man/EVP_EncryptInit.32
-rw-r--r--secure/lib/libcrypto/man/EVP_OpenInit.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_CTX_new.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_cmp.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_decrypt.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_derive.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_encrypt.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_keygen.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_new.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_print_private.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_sign.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_verify.32
-rw-r--r--secure/lib/libcrypto/man/EVP_PKEY_verify_recover.32
-rw-r--r--secure/lib/libcrypto/man/EVP_SealInit.32
-rw-r--r--secure/lib/libcrypto/man/EVP_SignInit.32
-rw-r--r--secure/lib/libcrypto/man/EVP_VerifyInit.32
-rw-r--r--secure/lib/libcrypto/man/OBJ_nid2obj.32
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_Applink.32
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.32
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_config.32
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_ia32cap.32
-rw-r--r--secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.32
-rw-r--r--secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.32
-rw-r--r--secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.32
-rw-r--r--secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.32
-rw-r--r--secure/lib/libcrypto/man/PKCS12_create.32
-rw-r--r--secure/lib/libcrypto/man/PKCS12_parse.32
-rw-r--r--secure/lib/libcrypto/man/PKCS7_decrypt.32
-rw-r--r--secure/lib/libcrypto/man/PKCS7_encrypt.32
-rw-r--r--secure/lib/libcrypto/man/PKCS7_sign.32
-rw-r--r--secure/lib/libcrypto/man/PKCS7_sign_add_signer.32
-rw-r--r--secure/lib/libcrypto/man/PKCS7_verify.32
-rw-r--r--secure/lib/libcrypto/man/RAND_add.32
-rw-r--r--secure/lib/libcrypto/man/RAND_bytes.32
-rw-r--r--secure/lib/libcrypto/man/RAND_cleanup.32
-rw-r--r--secure/lib/libcrypto/man/RAND_egd.32
-rw-r--r--secure/lib/libcrypto/man/RAND_load_file.32
-rw-r--r--secure/lib/libcrypto/man/RAND_set_rand_method.32
-rw-r--r--secure/lib/libcrypto/man/RSA_blinding_on.32
-rw-r--r--secure/lib/libcrypto/man/RSA_check_key.32
-rw-r--r--secure/lib/libcrypto/man/RSA_generate_key.32
-rw-r--r--secure/lib/libcrypto/man/RSA_get_ex_new_index.32
-rw-r--r--secure/lib/libcrypto/man/RSA_new.32
-rw-r--r--secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.32
-rw-r--r--secure/lib/libcrypto/man/RSA_print.32
-rw-r--r--secure/lib/libcrypto/man/RSA_private_encrypt.32
-rw-r--r--secure/lib/libcrypto/man/RSA_public_encrypt.32
-rw-r--r--secure/lib/libcrypto/man/RSA_set_method.32
-rw-r--r--secure/lib/libcrypto/man/RSA_sign.32
-rw-r--r--secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.32
-rw-r--r--secure/lib/libcrypto/man/RSA_size.32
-rw-r--r--secure/lib/libcrypto/man/SMIME_read_CMS.32
-rw-r--r--secure/lib/libcrypto/man/SMIME_read_PKCS7.32
-rw-r--r--secure/lib/libcrypto/man/SMIME_write_CMS.32
-rw-r--r--secure/lib/libcrypto/man/SMIME_write_PKCS7.32
-rw-r--r--secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.32
-rw-r--r--secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.32
-rw-r--r--secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.39
-rw-r--r--secure/lib/libcrypto/man/X509_NAME_print_ex.32
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_CTX_get_error.32
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.32
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_CTX_new.315
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.32
-rw-r--r--secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.32
-rw-r--r--secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.32
-rw-r--r--secure/lib/libcrypto/man/X509_new.32
-rw-r--r--secure/lib/libcrypto/man/X509_verify_cert.35
-rw-r--r--secure/lib/libcrypto/man/bio.32
-rw-r--r--secure/lib/libcrypto/man/blowfish.32
-rw-r--r--secure/lib/libcrypto/man/bn.32
-rw-r--r--secure/lib/libcrypto/man/bn_internal.32
-rw-r--r--secure/lib/libcrypto/man/buffer.32
-rw-r--r--secure/lib/libcrypto/man/crypto.32
-rw-r--r--secure/lib/libcrypto/man/d2i_ASN1_OBJECT.32
-rw-r--r--secure/lib/libcrypto/man/d2i_CMS_ContentInfo.32
-rw-r--r--secure/lib/libcrypto/man/d2i_DHparams.32
-rw-r--r--secure/lib/libcrypto/man/d2i_DSAPublicKey.32
-rw-r--r--secure/lib/libcrypto/man/d2i_ECPrivateKey.32
-rw-r--r--secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.32
-rw-r--r--secure/lib/libcrypto/man/d2i_RSAPublicKey.32
-rw-r--r--secure/lib/libcrypto/man/d2i_X509.32
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_ALGOR.32
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_CRL.32
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_NAME.32
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_REQ.32
-rw-r--r--secure/lib/libcrypto/man/d2i_X509_SIG.32
-rw-r--r--secure/lib/libcrypto/man/des.32
-rw-r--r--secure/lib/libcrypto/man/dh.32
-rw-r--r--secure/lib/libcrypto/man/dsa.32
-rw-r--r--secure/lib/libcrypto/man/ecdsa.32
-rw-r--r--secure/lib/libcrypto/man/engine.32
-rw-r--r--secure/lib/libcrypto/man/err.32
-rw-r--r--secure/lib/libcrypto/man/evp.32
-rw-r--r--secure/lib/libcrypto/man/hmac.32
-rw-r--r--secure/lib/libcrypto/man/i2d_CMS_bio_stream.32
-rw-r--r--secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.32
-rw-r--r--secure/lib/libcrypto/man/lh_stats.32
-rw-r--r--secure/lib/libcrypto/man/lhash.32
-rw-r--r--secure/lib/libcrypto/man/md5.32
-rw-r--r--secure/lib/libcrypto/man/mdc2.32
-rw-r--r--secure/lib/libcrypto/man/pem.32
-rw-r--r--secure/lib/libcrypto/man/rand.32
-rw-r--r--secure/lib/libcrypto/man/rc4.32
-rw-r--r--secure/lib/libcrypto/man/ripemd.32
-rw-r--r--secure/lib/libcrypto/man/rsa.32
-rw-r--r--secure/lib/libcrypto/man/sha.32
-rw-r--r--secure/lib/libcrypto/man/threads.32
-rw-r--r--secure/lib/libcrypto/man/ui.32
-rw-r--r--secure/lib/libcrypto/man/ui_compat.32
-rw-r--r--secure/lib/libcrypto/man/x509.32
-rw-r--r--secure/lib/libssl/man/SSL_CIPHER_get_name.32
-rw-r--r--secure/lib/libssl/man/SSL_COMP_add_compression_method.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_add_session.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_ctrl.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_flush_sessions.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_free.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_get_ex_new_index.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_get_verify_mode.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_load_verify_locations.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_new.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_sess_number.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_sessions.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_cert_store.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_cipher_list.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_client_CA_list.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_generate_session_id.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_info_callback.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_max_cert_list.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_mode.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_msg_callback.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_options.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_read_ahead.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_session_id_context.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_ssl_version.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_timeout.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_set_verify.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_use_certificate.32
-rw-r--r--secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.32
-rw-r--r--secure/lib/libssl/man/SSL_SESSION_free.32
-rw-r--r--secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.32
-rw-r--r--secure/lib/libssl/man/SSL_SESSION_get_time.32
-rw-r--r--secure/lib/libssl/man/SSL_accept.32
-rw-r--r--secure/lib/libssl/man/SSL_alert_type_string.32
-rw-r--r--secure/lib/libssl/man/SSL_clear.32
-rw-r--r--secure/lib/libssl/man/SSL_connect.32
-rw-r--r--secure/lib/libssl/man/SSL_do_handshake.32
-rw-r--r--secure/lib/libssl/man/SSL_free.32
-rw-r--r--secure/lib/libssl/man/SSL_get_SSL_CTX.32
-rw-r--r--secure/lib/libssl/man/SSL_get_ciphers.32
-rw-r--r--secure/lib/libssl/man/SSL_get_client_CA_list.32
-rw-r--r--secure/lib/libssl/man/SSL_get_current_cipher.32
-rw-r--r--secure/lib/libssl/man/SSL_get_default_timeout.32
-rw-r--r--secure/lib/libssl/man/SSL_get_error.32
-rw-r--r--secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.32
-rw-r--r--secure/lib/libssl/man/SSL_get_ex_new_index.32
-rw-r--r--secure/lib/libssl/man/SSL_get_fd.32
-rw-r--r--secure/lib/libssl/man/SSL_get_peer_cert_chain.32
-rw-r--r--secure/lib/libssl/man/SSL_get_peer_certificate.32
-rw-r--r--secure/lib/libssl/man/SSL_get_psk_identity.32
-rw-r--r--secure/lib/libssl/man/SSL_get_rbio.32
-rw-r--r--secure/lib/libssl/man/SSL_get_session.32
-rw-r--r--secure/lib/libssl/man/SSL_get_verify_result.32
-rw-r--r--secure/lib/libssl/man/SSL_get_version.32
-rw-r--r--secure/lib/libssl/man/SSL_library_init.32
-rw-r--r--secure/lib/libssl/man/SSL_load_client_CA_file.32
-rw-r--r--secure/lib/libssl/man/SSL_new.32
-rw-r--r--secure/lib/libssl/man/SSL_pending.32
-rw-r--r--secure/lib/libssl/man/SSL_read.32
-rw-r--r--secure/lib/libssl/man/SSL_rstate_string.32
-rw-r--r--secure/lib/libssl/man/SSL_session_reused.32
-rw-r--r--secure/lib/libssl/man/SSL_set_bio.32
-rw-r--r--secure/lib/libssl/man/SSL_set_connect_state.32
-rw-r--r--secure/lib/libssl/man/SSL_set_fd.32
-rw-r--r--secure/lib/libssl/man/SSL_set_session.32
-rw-r--r--secure/lib/libssl/man/SSL_set_shutdown.32
-rw-r--r--secure/lib/libssl/man/SSL_set_verify_result.32
-rw-r--r--secure/lib/libssl/man/SSL_shutdown.32
-rw-r--r--secure/lib/libssl/man/SSL_state_string.32
-rw-r--r--secure/lib/libssl/man/SSL_want.32
-rw-r--r--secure/lib/libssl/man/SSL_write.32
-rw-r--r--secure/lib/libssl/man/d2i_SSL_SESSION.32
-rw-r--r--secure/lib/libssl/man/ssl.32
-rw-r--r--secure/usr.bin/openssl/man/CA.pl.12
-rw-r--r--secure/usr.bin/openssl/man/asn1parse.12
-rw-r--r--secure/usr.bin/openssl/man/c_rehash.12
-rw-r--r--secure/usr.bin/openssl/man/ca.12
-rw-r--r--secure/usr.bin/openssl/man/ciphers.12
-rw-r--r--secure/usr.bin/openssl/man/cms.12
-rw-r--r--secure/usr.bin/openssl/man/crl.12
-rw-r--r--secure/usr.bin/openssl/man/crl2pkcs7.12
-rw-r--r--secure/usr.bin/openssl/man/dgst.12
-rw-r--r--secure/usr.bin/openssl/man/dhparam.12
-rw-r--r--secure/usr.bin/openssl/man/dsa.12
-rw-r--r--secure/usr.bin/openssl/man/dsaparam.12
-rw-r--r--secure/usr.bin/openssl/man/ec.12
-rw-r--r--secure/usr.bin/openssl/man/ecparam.12
-rw-r--r--secure/usr.bin/openssl/man/enc.12
-rw-r--r--secure/usr.bin/openssl/man/errstr.12
-rw-r--r--secure/usr.bin/openssl/man/gendsa.12
-rw-r--r--secure/usr.bin/openssl/man/genpkey.12
-rw-r--r--secure/usr.bin/openssl/man/genrsa.12
-rw-r--r--secure/usr.bin/openssl/man/nseq.12
-rw-r--r--secure/usr.bin/openssl/man/ocsp.12
-rw-r--r--secure/usr.bin/openssl/man/openssl.12
-rw-r--r--secure/usr.bin/openssl/man/passwd.12
-rw-r--r--secure/usr.bin/openssl/man/pkcs12.12
-rw-r--r--secure/usr.bin/openssl/man/pkcs7.12
-rw-r--r--secure/usr.bin/openssl/man/pkcs8.12
-rw-r--r--secure/usr.bin/openssl/man/pkey.12
-rw-r--r--secure/usr.bin/openssl/man/pkeyparam.12
-rw-r--r--secure/usr.bin/openssl/man/pkeyutl.12
-rw-r--r--secure/usr.bin/openssl/man/rand.12
-rw-r--r--secure/usr.bin/openssl/man/req.12
-rw-r--r--secure/usr.bin/openssl/man/rsa.12
-rw-r--r--secure/usr.bin/openssl/man/rsautl.12
-rw-r--r--secure/usr.bin/openssl/man/s_client.12
-rw-r--r--secure/usr.bin/openssl/man/s_server.12
-rw-r--r--secure/usr.bin/openssl/man/s_time.12
-rw-r--r--secure/usr.bin/openssl/man/sess_id.12
-rw-r--r--secure/usr.bin/openssl/man/smime.12
-rw-r--r--secure/usr.bin/openssl/man/speed.12
-rw-r--r--secure/usr.bin/openssl/man/spkac.12
-rw-r--r--secure/usr.bin/openssl/man/ts.12
-rw-r--r--secure/usr.bin/openssl/man/tsget.12
-rw-r--r--secure/usr.bin/openssl/man/verify.12
-rw-r--r--secure/usr.bin/openssl/man/version.12
-rw-r--r--secure/usr.bin/openssl/man/x509.12
-rw-r--r--secure/usr.bin/openssl/man/x509v3_config.12
-rw-r--r--share/man/man9/crypto.954
-rw-r--r--share/mk/bsd.man.mk2
-rw-r--r--sys/amd64/amd64/fpu.c12
-rw-r--r--sys/arm64/arm64/identcpu.c58
-rw-r--r--sys/arm64/arm64/locore.S42
-rw-r--r--sys/arm64/arm64/machdep.c15
-rw-r--r--sys/arm64/arm64/mp_machdep.c433
-rw-r--r--sys/arm64/arm64/swtch.S19
-rw-r--r--sys/arm64/arm64/trap.c8
-rw-r--r--sys/arm64/conf/GENERIC1
-rw-r--r--sys/arm64/include/cpu.h37
-rw-r--r--sys/arm64/include/pcb.h2
-rw-r--r--sys/arm64/include/pcpu.h5
-rw-r--r--sys/arm64/include/pte.h4
-rw-r--r--sys/arm64/include/smp.h56
-rw-r--r--sys/arm64/include/ucontext.h26
-rw-r--r--sys/cddl/contrib/opensolaris/common/nvpair/opensolaris_fnvpair.c (renamed from sys/cddl/contrib/opensolaris/common/nvpair/fnvpair.c)0
-rw-r--r--sys/cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair.c (renamed from sys/cddl/contrib/opensolaris/common/nvpair/nvpair.c)0
-rw-r--r--sys/cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair_alloc_fixed.c (renamed from sys/cddl/contrib/opensolaris/common/nvpair/nvpair_alloc_fixed.c)0
-rw-r--r--sys/compat/cloudabi/cloudabi_clock.c47
-rw-r--r--sys/compat/cloudabi/cloudabi_fd.c156
-rw-r--r--sys/compat/cloudabi/cloudabi_file.c155
-rw-r--r--sys/compat/cloudabi/cloudabi_futex.c47
-rw-r--r--sys/compat/cloudabi/cloudabi_mem.c89
-rw-r--r--sys/compat/cloudabi/cloudabi_proc.c65
-rw-r--r--sys/compat/cloudabi/cloudabi_proto.h34
-rw-r--r--sys/compat/cloudabi/cloudabi_random.c38
-rw-r--r--sys/compat/cloudabi/cloudabi_sock.c83
-rw-r--r--sys/compat/cloudabi/cloudabi_syscalldefs.h40
-rw-r--r--sys/compat/cloudabi/cloudabi_thread.c47
-rw-r--r--sys/compat/cloudabi64/Makefile12
-rw-r--r--sys/compat/cloudabi64/cloudabi64_fd.c66
-rw-r--r--sys/compat/cloudabi64/cloudabi64_poll.c38
-rw-r--r--sys/compat/cloudabi64/cloudabi64_proto.h453
-rw-r--r--sys/compat/cloudabi64/cloudabi64_sock.c48
-rw-r--r--sys/compat/cloudabi64/cloudabi64_syscall.h66
-rw-r--r--sys/compat/cloudabi64/cloudabi64_syscalldefs.h45
-rw-r--r--sys/compat/cloudabi64/cloudabi64_syscalls.c67
-rw-r--r--sys/compat/cloudabi64/cloudabi64_sysent.c75
-rw-r--r--sys/compat/cloudabi64/cloudabi64_systrace_args.c1678
-rw-r--r--sys/compat/cloudabi64/cloudabi64_thread.c48
-rw-r--r--sys/compat/cloudabi64/syscalls.conf15
-rw-r--r--sys/compat/cloudabi64/syscalls.master212
-rw-r--r--sys/conf/files21
-rw-r--r--sys/conf/files.arm1
-rw-r--r--sys/conf/files.arm641
-rw-r--r--sys/conf/options1
-rw-r--r--sys/contrib/cloudabi/syscalldefs_md.h255
-rw-r--r--sys/contrib/cloudabi/syscalldefs_mi.h457
-rw-r--r--sys/crypto/aesni/aesni.c124
-rw-r--r--sys/crypto/aesni/aesni.h1
-rw-r--r--sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c2
-rw-r--r--sys/i386/isa/npx.c12
-rw-r--r--sys/kern/kern_descrip.c52
-rw-r--r--sys/kern/kern_exit.c13
-rw-r--r--sys/kern/kern_tc.c138
-rw-r--r--sys/kern/makesyscalls.sh6
-rw-r--r--sys/kern/sys_generic.c11
-rw-r--r--sys/kern/vfs_lookup.c116
-rw-r--r--sys/libkern/arm/aeabi_unwind.c3
-rw-r--r--sys/libkern/arm/divsi3.S8
-rw-r--r--sys/libkern/arm/ldivmod.S5
-rw-r--r--sys/libkern/arm/ldivmod_helper.c4
-rw-r--r--sys/libkern/arm/memclr.S40
-rw-r--r--sys/libkern/arm/memcpy.S5
-rw-r--r--sys/libkern/arm/memset.S5
-rw-r--r--sys/modules/zfs/Makefile6
-rw-r--r--sys/netinet/ip_input.c3
-rw-r--r--sys/netipsec/xform_ah.c35
-rw-r--r--sys/netipsec/xform_esp.c137
-rw-r--r--sys/opencrypto/cryptodev.h79
-rw-r--r--sys/opencrypto/xform.c62
-rw-r--r--sys/sys/bus_dma.h8
-rw-r--r--sys/sys/cpuset.h1
-rw-r--r--sys/sys/filedesc.h6
-rw-r--r--sys/sys/seq.h45
-rw-r--r--sys/sys/syscallsubr.h1
-rw-r--r--usr.sbin/pw/pw.c1
-rw-r--r--usr.sbin/pw/pw_group.c2
-rw-r--r--usr.sbin/pw/pwupd.h1
-rwxr-xr-xusr.sbin/pw/tests/pw_useradd.sh10
446 files changed, 6471 insertions, 1044 deletions
diff --git a/cddl/lib/libnvpair/Makefile b/cddl/lib/libnvpair/Makefile
index 6b6f51d..98bdb47 100644
--- a/cddl/lib/libnvpair/Makefile
+++ b/cddl/lib/libnvpair/Makefile
@@ -7,10 +7,10 @@ LIB= nvpair
SRCS= libnvpair.c \
nvpair_alloc_system.c \
- nvpair_alloc_fixed.c \
- nvpair.c \
nvpair_json.c \
- fnvpair.c
+ opensolaris_fnvpair.c \
+ opensolaris_nvpair.c \
+ opensolaris_nvpair_alloc_fixed.c
WARNS?= 0
CFLAGS+= -I${.CURDIR}/../../../cddl/compat/opensolaris/include
diff --git a/contrib/tcpdump/netdissect.h b/contrib/tcpdump/netdissect.h
index bc120c3..0cd7c12 100644
--- a/contrib/tcpdump/netdissect.h
+++ b/contrib/tcpdump/netdissect.h
@@ -270,8 +270,11 @@ struct netdissect_options {
*
* http://www.kb.cert.org/vuls/id/162289
*/
+
+#define IS_NOT_NEGATIVE(x) (((x) > 0) || ((x) == 0))
+
#define ND_TTEST2(var, l) \
- ((l) >= 0 && \
+ (IS_NOT_NEGATIVE(l) && \
((uintptr_t)ndo->ndo_snapend - (l) <= (uintptr_t)ndo->ndo_snapend && \
(uintptr_t)&(var) <= (uintptr_t)ndo->ndo_snapend - (l)))
diff --git a/crypto/openssl/CHANGES b/crypto/openssl/CHANGES
index 759b2a7..2e888f7 100644
--- a/crypto/openssl/CHANGES
+++ b/crypto/openssl/CHANGES
@@ -2,6 +2,21 @@
OpenSSL CHANGES
_______________
+ Changes between 1.0.1o and 1.0.1p [9 Jul 2015]
+
+ *) Alternate chains certificate forgery
+
+ During certificate verfification, OpenSSL will attempt to find an
+ alternative certificate chain if the first attempt to build such a chain
+ fails. An error in the implementation of this logic can mean that an
+ attacker could cause certain checks on untrusted certificates to be
+ bypassed, such as the CA flag, enabling them to use a valid leaf
+ certificate to act as a CA and "issue" an invalid certificate.
+
+ This issue was reported to OpenSSL by Adam Langley/David Benjamin
+ (Google/BoringSSL).
+ [Matt Caswell]
+
Changes between 1.0.1n and 1.0.1o [12 Jun 2015]
*) Fix HMAC ABI incompatibility. The previous version introduced an ABI
diff --git a/crypto/openssl/Makefile b/crypto/openssl/Makefile
index 0b3badb..cd1c08c 100644
--- a/crypto/openssl/Makefile
+++ b/crypto/openssl/Makefile
@@ -4,7 +4,7 @@
## Makefile for OpenSSL
##
-VERSION=1.0.1o
+VERSION=1.0.1p
MAJOR=1
MINOR=0.1
SHLIB_VERSION_NUMBER=1.0.0
@@ -270,6 +270,7 @@ reflect:
@[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
sub_all: build_all
+
build_all: build_libs build_apps build_tests build_tools
build_libs: build_libcrypto build_libssl openssl.pc
@@ -279,15 +280,15 @@ build_libssl: build_ssl libssl.pc
build_crypto:
@dir=crypto; target=all; $(BUILD_ONE_CMD)
-build_ssl:
+build_ssl: build_crypto
@dir=ssl; target=all; $(BUILD_ONE_CMD)
-build_engines:
+build_engines: build_crypto
@dir=engines; target=all; $(BUILD_ONE_CMD)
-build_apps:
+build_apps: build_libs
@dir=apps; target=all; $(BUILD_ONE_CMD)
-build_tests:
+build_tests: build_libs
@dir=test; target=all; $(BUILD_ONE_CMD)
-build_tools:
+build_tools: build_libs
@dir=tools; target=all; $(BUILD_ONE_CMD)
all_testapps: build_libs build_testapps
diff --git a/crypto/openssl/Makefile.org b/crypto/openssl/Makefile.org
index 89e8062..742431d 100644
--- a/crypto/openssl/Makefile.org
+++ b/crypto/openssl/Makefile.org
@@ -268,6 +268,7 @@ reflect:
@[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
sub_all: build_all
+
build_all: build_libs build_apps build_tests build_tools
build_libs: build_libcrypto build_libssl openssl.pc
@@ -277,15 +278,15 @@ build_libssl: build_ssl libssl.pc
build_crypto:
@dir=crypto; target=all; $(BUILD_ONE_CMD)
-build_ssl:
+build_ssl: build_crypto
@dir=ssl; target=all; $(BUILD_ONE_CMD)
-build_engines:
+build_engines: build_crypto
@dir=engines; target=all; $(BUILD_ONE_CMD)
-build_apps:
+build_apps: build_libs
@dir=apps; target=all; $(BUILD_ONE_CMD)
-build_tests:
+build_tests: build_libs
@dir=test; target=all; $(BUILD_ONE_CMD)
-build_tools:
+build_tools: build_libs
@dir=tools; target=all; $(BUILD_ONE_CMD)
all_testapps: build_libs build_testapps
diff --git a/crypto/openssl/NEWS b/crypto/openssl/NEWS
index fb69ad3..5e76d3f 100644
--- a/crypto/openssl/NEWS
+++ b/crypto/openssl/NEWS
@@ -5,6 +5,10 @@
This file gives a brief overview of the major changes between each OpenSSL
release. For more details please read the CHANGES file.
+ Major changes between OpenSSL 1.0.1o and OpenSSL 1.0.1p [9 Jul 2015]
+
+ o Alternate chains certificate forgery (CVE-2015-1793)
+
Major changes between OpenSSL 1.0.1n and OpenSSL 1.0.1o [12 Jun 2015]
o Fix HMAC ABI incompatibility
diff --git a/crypto/openssl/README b/crypto/openssl/README
index bf3b715..bf03f30 100644
--- a/crypto/openssl/README
+++ b/crypto/openssl/README
@@ -1,5 +1,5 @@
- OpenSSL 1.0.1o 12 Jun 2015
+ OpenSSL 1.0.1p 9 Jul 2015
Copyright (c) 1998-2011 The OpenSSL Project
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
diff --git a/crypto/openssl/crypto/bio/bio.h b/crypto/openssl/crypto/bio/bio.h
index be9cd0e..d583cc1 100644
--- a/crypto/openssl/crypto/bio/bio.h
+++ b/crypto/openssl/crypto/bio/bio.h
@@ -290,7 +290,7 @@ void BIO_clear_flags(BIO *b, int flags);
* BIO_CB_RETURN flag indicates if it is after the call
*/
# define BIO_CB_RETURN 0x80
-# define BIO_CB_return(a) ((a)|BIO_CB_RETURN))
+# define BIO_CB_return(a) ((a)|BIO_CB_RETURN)
# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN))
# define BIO_cb_post(a) ((a)&BIO_CB_RETURN)
diff --git a/crypto/openssl/crypto/evp/e_aes.c b/crypto/openssl/crypto/evp/e_aes.c
index 1ede7bd..a4327fc 100644
--- a/crypto/openssl/crypto/evp/e_aes.c
+++ b/crypto/openssl/crypto/evp/e_aes.c
@@ -1146,7 +1146,7 @@ static int aes_ccm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr)
case EVP_CTRL_CCM_SET_TAG:
if ((arg & 1) || arg < 4 || arg > 16)
return 0;
- if ((c->encrypt && ptr) || (!c->encrypt && !ptr))
+ if (c->encrypt && ptr)
return 0;
if (ptr) {
cctx->tag_set = 1;
diff --git a/crypto/openssl/crypto/opensslconf.h b/crypto/openssl/crypto/opensslconf.h
index 7513d14..4a6e276 100644
--- a/crypto/openssl/crypto/opensslconf.h
+++ b/crypto/openssl/crypto/opensslconf.h
@@ -185,7 +185,7 @@ extern "C" {
#endif
#if defined(DES_RISC1) && defined(DES_RISC2)
-YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
+#error YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
#endif
/* Unroll the inner loop, this sometimes helps, sometimes hinders.
diff --git a/crypto/openssl/crypto/opensslconf.h.in b/crypto/openssl/crypto/opensslconf.h.in
index 97e3745..814309b 100644
--- a/crypto/openssl/crypto/opensslconf.h.in
+++ b/crypto/openssl/crypto/opensslconf.h.in
@@ -101,7 +101,7 @@
#endif
#if defined(DES_RISC1) && defined(DES_RISC2)
-YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
+#error YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
#endif
/* Unroll the inner loop, this sometimes helps, sometimes hinders.
diff --git a/crypto/openssl/crypto/opensslv.h b/crypto/openssl/crypto/opensslv.h
index bc91a6c..b02adfa 100644
--- a/crypto/openssl/crypto/opensslv.h
+++ b/crypto/openssl/crypto/opensslv.h
@@ -30,11 +30,11 @@ extern "C" {
* (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
* major minor fix final patch/beta)
*/
-# define OPENSSL_VERSION_NUMBER 0x100010ffL
+# define OPENSSL_VERSION_NUMBER 0x1000110fL
# ifdef OPENSSL_FIPS
-# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1o-fips 12 Jun 2015"
+# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1p-fips 9 Jul 2015"
# else
-# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1o-freebsd 12 Jun 2015"
+# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.1p-freebsd 9 Jul 2015"
# endif
# define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT
diff --git a/crypto/openssl/crypto/pkcs12/p12_kiss.c b/crypto/openssl/crypto/pkcs12/p12_kiss.c
index ee476c3..9aa3c90 100644
--- a/crypto/openssl/crypto/pkcs12/p12_kiss.c
+++ b/crypto/openssl/crypto/pkcs12/p12_kiss.c
@@ -135,10 +135,12 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
while ((x = sk_X509_pop(ocerts))) {
if (pkey && *pkey && cert && !*cert) {
+ ERR_set_mark();
if (X509_check_private_key(x, *pkey)) {
*cert = x;
x = NULL;
}
+ ERR_pop_to_mark();
}
if (ca && x) {
diff --git a/crypto/openssl/crypto/threads/mttest.c b/crypto/openssl/crypto/threads/mttest.c
index 8f67db6..dbff4a6 100644
--- a/crypto/openssl/crypto/threads/mttest.c
+++ b/crypto/openssl/crypto/threads/mttest.c
@@ -56,7 +56,6 @@
* [including the GNU Public Licence.]
*/
-#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
@@ -86,17 +85,11 @@
#include <openssl/lhash.h>
#include <openssl/crypto.h>
#include <openssl/buffer.h>
-#include "../../e_os.h"
#include <openssl/x509.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/rand.h>
-#ifdef OPENSSL_NO_FP_API
-# define APPS_WIN16
-# include "../buffer/bss_file.c"
-#endif
-
#ifdef OPENSSL_SYS_NETWARE
# define TEST_SERVER_CERT "/openssl/apps/server.pem"
# define TEST_CLIENT_CERT "/openssl/apps/client.pem"
@@ -107,23 +100,23 @@
#define MAX_THREAD_NUMBER 100
-int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *xs);
+int verify_callback(int ok, X509_STORE_CTX *xs);
void thread_setup(void);
void thread_cleanup(void);
void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx);
-void irix_locking_callback(int mode, int type, char *file, int line);
-void solaris_locking_callback(int mode, int type, char *file, int line);
-void win32_locking_callback(int mode, int type, char *file, int line);
-void pthreads_locking_callback(int mode, int type, char *file, int line);
-void netware_locking_callback(int mode, int type, char *file, int line);
+void irix_locking_callback(int mode, int type, const char *file, int line);
+void solaris_locking_callback(int mode, int type, const char *file, int line);
+void win32_locking_callback(int mode, int type, const char *file, int line);
+void pthreads_locking_callback(int mode, int type, const char *file, int line);
+void netware_locking_callback(int mode, int type, const char *file, int line);
void beos_locking_callback(int mode, int type, const char *file, int line);
-unsigned long irix_thread_id(void);
-unsigned long solaris_thread_id(void);
-unsigned long pthreads_thread_id(void);
-unsigned long netware_thread_id(void);
-unsigned long beos_thread_id(void);
+void irix_thread_id(CRYPTO_THREADID *tid);
+void solaris_thread_id(CRYPTO_THREADID *tid);
+void pthreads_thread_id(CRYPTO_THREADID *tid);
+void netware_thread_id(CRYPTO_THREADID *tid);
+void beos_thread_id(CRYPTO_THREADID *tid);
#if defined(OPENSSL_SYS_NETWARE)
static MPKMutex *lock_cs;
@@ -149,39 +142,39 @@ static const char rnd_seed[] =
"string to make the random number generator think it has entropy";
int doit(char *ctx[4]);
-static void print_stats(FILE *fp, SSL_CTX *ctx)
+static void print_stats(BIO *bio, SSL_CTX *ctx)
{
- fprintf(fp, "%4ld items in the session cache\n",
- SSL_CTX_sess_number(ctx));
- fprintf(fp, "%4d client connects (SSL_connect())\n",
- SSL_CTX_sess_connect(ctx));
- fprintf(fp, "%4d client connects that finished\n",
- SSL_CTX_sess_connect_good(ctx));
- fprintf(fp, "%4d server connects (SSL_accept())\n",
- SSL_CTX_sess_accept(ctx));
- fprintf(fp, "%4d server connects that finished\n",
- SSL_CTX_sess_accept_good(ctx));
- fprintf(fp, "%4d session cache hits\n", SSL_CTX_sess_hits(ctx));
- fprintf(fp, "%4d session cache misses\n", SSL_CTX_sess_misses(ctx));
- fprintf(fp, "%4d session cache timeouts\n", SSL_CTX_sess_timeouts(ctx));
+ BIO_printf(bio, "%4ld items in the session cache\n",
+ SSL_CTX_sess_number(ctx));
+ BIO_printf(bio, "%4d client connects (SSL_connect())\n",
+ SSL_CTX_sess_connect(ctx));
+ BIO_printf(bio, "%4d client connects that finished\n",
+ SSL_CTX_sess_connect_good(ctx));
+ BIO_printf(bio, "%4d server connects (SSL_accept())\n",
+ SSL_CTX_sess_accept(ctx));
+ BIO_printf(bio, "%4d server connects that finished\n",
+ SSL_CTX_sess_accept_good(ctx));
+ BIO_printf(bio, "%4d session cache hits\n", SSL_CTX_sess_hits(ctx));
+ BIO_printf(bio, "%4d session cache misses\n", SSL_CTX_sess_misses(ctx));
+ BIO_printf(bio, "%4d session cache timeouts\n", SSL_CTX_sess_timeouts(ctx));
}
static void sv_usage(void)
{
- fprintf(stderr, "usage: ssltest [args ...]\n");
- fprintf(stderr, "\n");
- fprintf(stderr, " -server_auth - check server certificate\n");
- fprintf(stderr, " -client_auth - do client authentication\n");
- fprintf(stderr, " -v - more output\n");
- fprintf(stderr, " -CApath arg - PEM format directory of CA's\n");
- fprintf(stderr, " -CAfile arg - PEM format file of CA's\n");
- fprintf(stderr, " -threads arg - number of threads\n");
- fprintf(stderr, " -loops arg - number of 'connections', per thread\n");
- fprintf(stderr, " -reconnect - reuse session-id's\n");
- fprintf(stderr, " -stats - server session-id cache stats\n");
- fprintf(stderr, " -cert arg - server certificate/key\n");
- fprintf(stderr, " -ccert arg - client certificate/key\n");
- fprintf(stderr, " -ssl3 - just SSLv3n\n");
+ BIO_printf(bio_err, "usage: ssltest [args ...]\n");
+ BIO_printf(bio_err, "\n");
+ BIO_printf(bio_err, " -server_auth - check server certificate\n");
+ BIO_printf(bio_err, " -client_auth - do client authentication\n");
+ BIO_printf(bio_err, " -v - more output\n");
+ BIO_printf(bio_err, " -CApath arg - PEM format directory of CA's\n");
+ BIO_printf(bio_err, " -CAfile arg - PEM format file of CA's\n");
+ BIO_printf(bio_err, " -threads arg - number of threads\n");
+ BIO_printf(bio_err, " -loops arg - number of 'connections', per thread\n");
+ BIO_printf(bio_err, " -reconnect - reuse session-id's\n");
+ BIO_printf(bio_err, " -stats - server session-id cache stats\n");
+ BIO_printf(bio_err, " -cert arg - server certificate/key\n");
+ BIO_printf(bio_err, " -ccert arg - client certificate/key\n");
+ BIO_printf(bio_err, " -ssl3 - just SSLv3n\n");
}
int main(int argc, char *argv[])
@@ -195,14 +188,14 @@ int main(int argc, char *argv[])
SSL_CTX *c_ctx = NULL;
char *scert = TEST_SERVER_CERT;
char *ccert = TEST_CLIENT_CERT;
- SSL_METHOD *ssl_method = SSLv23_method();
+ const SSL_METHOD *ssl_method = SSLv23_method();
RAND_seed(rnd_seed, sizeof rnd_seed);
if (bio_err == NULL)
- bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
+ bio_err = BIO_new_fd(2, BIO_NOCLOSE);
if (bio_stdout == NULL)
- bio_stdout = BIO_new_fp(stdout, BIO_NOCLOSE);
+ bio_stdout = BIO_new_fd(1, BIO_NOCLOSE);
argc--;
argv++;
@@ -250,7 +243,7 @@ int main(int argc, char *argv[])
if (number_of_loops == 0)
number_of_loops = 1;
} else {
- fprintf(stderr, "unknown option %s\n", *argv);
+ BIO_printf(bio_err, "unknown option %s\n", *argv);
badop = 1;
break;
}
@@ -284,9 +277,12 @@ int main(int argc, char *argv[])
SSL_SESS_CACHE_SERVER);
if (!SSL_CTX_use_certificate_file(s_ctx, scert, SSL_FILETYPE_PEM)) {
+ BIO_printf(bio_err, "SSL_CTX_use_certificate_file (%s)\n", scert);
ERR_print_errors(bio_err);
+ goto end;
} else
if (!SSL_CTX_use_RSAPrivateKey_file(s_ctx, scert, SSL_FILETYPE_PEM)) {
+ BIO_printf(bio_err, "SSL_CTX_use_RSAPrivateKey_file (%s)\n", scert);
ERR_print_errors(bio_err);
goto end;
}
@@ -300,19 +296,19 @@ int main(int argc, char *argv[])
(!SSL_CTX_set_default_verify_paths(s_ctx)) ||
(!SSL_CTX_load_verify_locations(c_ctx, CAfile, CApath)) ||
(!SSL_CTX_set_default_verify_paths(c_ctx))) {
- fprintf(stderr, "SSL_load_verify_locations\n");
+ BIO_printf(bio_err, "SSL_load_verify_locations\n");
ERR_print_errors(bio_err);
goto end;
}
if (client_auth) {
- fprintf(stderr, "client authentication\n");
+ BIO_printf(bio_err, "client authentication\n");
SSL_CTX_set_verify(s_ctx,
SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT,
verify_callback);
}
if (server_auth) {
- fprintf(stderr, "server authentication\n");
+ BIO_printf(bio_err, "server authentication\n");
SSL_CTX_set_verify(c_ctx, SSL_VERIFY_PEER, verify_callback);
}
@@ -322,24 +318,24 @@ int main(int argc, char *argv[])
end:
if (c_ctx != NULL) {
- fprintf(stderr, "Client SSL_CTX stats then free it\n");
- print_stats(stderr, c_ctx);
+ BIO_printf(bio_err, "Client SSL_CTX stats then free it\n");
+ print_stats(bio_err, c_ctx);
SSL_CTX_free(c_ctx);
}
if (s_ctx != NULL) {
- fprintf(stderr, "Server SSL_CTX stats then free it\n");
- print_stats(stderr, s_ctx);
+ BIO_printf(bio_err, "Server SSL_CTX stats then free it\n");
+ print_stats(bio_err, s_ctx);
if (cache_stats) {
- fprintf(stderr, "-----\n");
- lh_stats(SSL_CTX_sessions(s_ctx), stderr);
- fprintf(stderr, "-----\n");
- /*- lh_node_stats(SSL_CTX_sessions(s_ctx),stderr);
- fprintf(stderr,"-----\n"); */
- lh_node_usage_stats(SSL_CTX_sessions(s_ctx), stderr);
- fprintf(stderr, "-----\n");
+ BIO_printf(bio_err, "-----\n");
+ lh_SSL_SESSION_stats_bio(SSL_CTX_sessions(s_ctx), bio_err);
+ BIO_printf(bio_err, "-----\n");
+ /*- lh_SSL_SESSION_node_stats_bio(SSL_CTX_sessions(s_ctx),bio_err);
+ BIO_printf(bio_err,"-----\n"); */
+ lh_SSL_SESSION_node_usage_stats_bio(SSL_CTX_sessions(s_ctx), bio_err);
+ BIO_printf(bio_err, "-----\n");
}
SSL_CTX_free(s_ctx);
- fprintf(stderr, "done free\n");
+ BIO_printf(bio_err, "done free\n");
}
exit(ret);
return (0);
@@ -355,6 +351,7 @@ int ndoit(SSL_CTX *ssl_ctx[2])
int i;
int ret;
char *ctx[4];
+ CRYPTO_THREADID thread_id;
ctx[0] = (char *)ssl_ctx[0];
ctx[1] = (char *)ssl_ctx[1];
@@ -367,22 +364,24 @@ int ndoit(SSL_CTX *ssl_ctx[2])
ctx[3] = NULL;
}
- fprintf(stdout, "started thread %lu\n", CRYPTO_thread_id());
+ CRYPTO_THREADID_current(&thread_id);
+ BIO_printf(bio_stdout, "started thread %lu\n",
+ CRYPTO_THREADID_hash(&thread_id));
for (i = 0; i < number_of_loops; i++) {
-/*- fprintf(stderr,"%4d %2d ctx->ref (%3d,%3d)\n",
- CRYPTO_thread_id(),i,
- ssl_ctx[0]->references,
- ssl_ctx[1]->references); */
+/*- BIO_printf(bio_err,"%4d %2d ctx->ref (%3d,%3d)\n",
+ CRYPTO_THREADID_hash(&thread_id),i,
+ ssl_ctx[0]->references,
+ ssl_ctx[1]->references); */
/* pthread_delay_np(&tm); */
ret = doit(ctx);
if (ret != 0) {
- fprintf(stdout, "error[%d] %lu - %d\n",
- i, CRYPTO_thread_id(), ret);
+ BIO_printf(bio_stdout, "error[%d] %lu - %d\n",
+ i, CRYPTO_THREADID_hash(&thread_id), ret);
return (ret);
}
}
- fprintf(stdout, "DONE %lu\n", CRYPTO_thread_id());
+ BIO_printf(bio_stdout, "DONE %lu\n", CRYPTO_THREADID_hash(&thread_id));
if (reconnect) {
SSL_free((SSL *)ctx[2]);
SSL_free((SSL *)ctx[3]);
@@ -467,26 +466,26 @@ int doit(char *ctx[4])
if (do_server && verbose) {
if (SSL_in_init(s_ssl))
- printf("server waiting in SSL_accept - %s\n",
- SSL_state_string_long(s_ssl));
+ BIO_printf(bio_stdout, "server waiting in SSL_accept - %s\n",
+ SSL_state_string_long(s_ssl));
else if (s_write)
- printf("server:SSL_write()\n");
+ BIO_printf(bio_stdout, "server:SSL_write()\n");
else
- printf("server:SSL_read()\n");
+ BIO_printf(bio_stdout, "server:SSL_read()\n");
}
if (do_client && verbose) {
if (SSL_in_init(c_ssl))
- printf("client waiting in SSL_connect - %s\n",
- SSL_state_string_long(c_ssl));
+ BIO_printf(bio_stdout, "client waiting in SSL_connect - %s\n",
+ SSL_state_string_long(c_ssl));
else if (c_write)
- printf("client:SSL_write()\n");
+ BIO_printf(bio_stdout, "client:SSL_write()\n");
else
- printf("client:SSL_read()\n");
+ BIO_printf(bio_stdout, "client:SSL_read()\n");
}
if (!do_client && !do_server) {
- fprintf(stdout, "ERROR IN STARTUP\n");
+ BIO_printf(bio_stdout, "ERROR IN STARTUP\n");
break;
}
if (do_client && !(done & C_DONE)) {
@@ -501,12 +500,12 @@ int doit(char *ctx[4])
if (BIO_should_write(c_bio))
c_w = 1;
} else {
- fprintf(stderr, "ERROR in CLIENT\n");
+ BIO_printf(bio_err, "ERROR in CLIENT\n");
ERR_print_errors_fp(stderr);
return (1);
}
} else if (i == 0) {
- fprintf(stderr, "SSL CLIENT STARTUP FAILED\n");
+ BIO_printf(bio_err, "SSL CLIENT STARTUP FAILED\n");
return (1);
} else {
/* ok */
@@ -523,19 +522,19 @@ int doit(char *ctx[4])
if (BIO_should_write(c_bio))
c_w = 1;
} else {
- fprintf(stderr, "ERROR in CLIENT\n");
+ BIO_printf(bio_err, "ERROR in CLIENT\n");
ERR_print_errors_fp(stderr);
return (1);
}
} else if (i == 0) {
- fprintf(stderr, "SSL CLIENT STARTUP FAILED\n");
+ BIO_printf(bio_err, "SSL CLIENT STARTUP FAILED\n");
return (1);
} else {
done |= C_DONE;
#ifdef undef
- fprintf(stdout, "CLIENT:from server:");
- fwrite(cbuf, 1, i, stdout);
- fflush(stdout);
+ BIO_printf(bio_stdout, "CLIENT:from server:");
+ BIO_write(bio_stdout, cbuf, i);
+ BIO_flush(bio_stdout);
#endif
}
}
@@ -553,20 +552,20 @@ int doit(char *ctx[4])
if (BIO_should_write(s_bio))
s_w = 1;
} else {
- fprintf(stderr, "ERROR in SERVER\n");
+ BIO_printf(bio_err, "ERROR in SERVER\n");
ERR_print_errors_fp(stderr);
return (1);
}
} else if (i == 0) {
- fprintf(stderr, "SSL SERVER STARTUP FAILED\n");
+ BIO_printf(bio_err, "SSL SERVER STARTUP FAILED\n");
return (1);
} else {
s_write = 1;
s_w = 1;
#ifdef undef
- fprintf(stdout, "SERVER:from client:");
- fwrite(sbuf, 1, i, stdout);
- fflush(stdout);
+ BIO_printf(bio_stdout, "SERVER:from client:");
+ BIO_write(bio_stdout, sbuf, i);
+ BIO_flush(bio_stdout);
#endif
}
} else {
@@ -580,12 +579,12 @@ int doit(char *ctx[4])
if (BIO_should_write(s_bio))
s_w = 1;
} else {
- fprintf(stderr, "ERROR in SERVER\n");
+ BIO_printf(bio_err, "ERROR in SERVER\n");
ERR_print_errors_fp(stderr);
return (1);
}
} else if (i == 0) {
- fprintf(stderr, "SSL SERVER STARTUP FAILED\n");
+ BIO_printf(bio_err, "SSL SERVER STARTUP FAILED\n");
return (1);
} else {
s_write = 0;
@@ -606,7 +605,7 @@ int doit(char *ctx[4])
SSL_set_shutdown(s_ssl, SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN);
#ifdef undef
- fprintf(stdout, "DONE\n");
+ BIO_printf(bio_stdout, "DONE\n");
#endif
err:
/*
@@ -640,7 +639,7 @@ int doit(char *ctx[4])
return (0);
}
-int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
+int verify_callback(int ok, X509_STORE_CTX *ctx)
{
char *s, buf[256];
@@ -649,9 +648,9 @@ int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
buf, 256);
if (s != NULL) {
if (ok)
- fprintf(stderr, "depth=%d %s\n", ctx->error_depth, buf);
+ BIO_printf(bio_err, "depth=%d %s\n", ctx->error_depth, buf);
else
- fprintf(stderr, "depth=%d error=%d %s\n",
+ BIO_printf(bio_err, "depth=%d error=%d %s\n",
ctx->error_depth, ctx->error, buf);
}
}
@@ -688,7 +687,7 @@ void thread_cleanup(void)
OPENSSL_free(lock_cs);
}
-void win32_locking_callback(int mode, int type, char *file, int line)
+void win32_locking_callback(int mode, int type, const char *file, int line)
{
if (mode & CRYPTO_LOCK) {
WaitForSingleObject(lock_cs[type], INFINITE);
@@ -717,7 +716,7 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
(void *)ssl_ctx, 0L, &(thread_id[i]));
}
- printf("reaping\n");
+ BIO_printf(bio_stdout, "reaping\n");
for (i = 0; i < thread_number; i += 50) {
int j;
@@ -727,7 +726,7 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
(CONST HANDLE *) & (thread_handle[i]),
TRUE, INFINITE)
== WAIT_FAILED) {
- fprintf(stderr, "WaitForMultipleObjects failed:%d\n",
+ BIO_printf(bio_err, "WaitForMultipleObjects failed:%d\n",
GetLastError());
exit(1);
}
@@ -743,7 +742,7 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
ret = (ret + end.wSecond - start.wSecond);
ret += (end.wMilliseconds - start.wMilliseconds) / 1000.0;
- printf("win32 threads done - %.3f seconds\n", ret);
+ BIO_printf(bio_stdout, "win32 threads done - %.3f seconds\n", ret);
}
#endif /* OPENSSL_SYS_WIN32 */
@@ -768,8 +767,8 @@ void thread_setup(void)
mutex_init(&(lock_cs[i]), USYNC_THREAD, NULL);
}
- CRYPTO_set_id_callback((unsigned long (*)())solaris_thread_id);
- CRYPTO_set_locking_callback((void (*)())solaris_locking_callback);
+ CRYPTO_set_id_callback(solaris_thread_id);
+ CRYPTO_set_locking_callback(solaris_locking_callback);
}
void thread_cleanup(void)
@@ -778,34 +777,34 @@ void thread_cleanup(void)
CRYPTO_set_locking_callback(NULL);
- fprintf(stderr, "cleanup\n");
+ BIO_printf(bio_err, "cleanup\n");
for (i = 0; i < CRYPTO_num_locks(); i++) {
/* rwlock_destroy(&(lock_cs[i])); */
mutex_destroy(&(lock_cs[i]));
- fprintf(stderr, "%8ld:%s\n", lock_count[i], CRYPTO_get_lock_name(i));
+ BIO_printf(bio_err, "%8ld:%s\n", lock_count[i], CRYPTO_get_lock_name(i));
}
OPENSSL_free(lock_cs);
OPENSSL_free(lock_count);
- fprintf(stderr, "done cleanup\n");
+ BIO_printf(bio_err, "done cleanup\n");
}
-void solaris_locking_callback(int mode, int type, char *file, int line)
+void solaris_locking_callback(int mode, int type, const char *file, int line)
{
# ifdef undef
- fprintf(stderr, "thread=%4d mode=%s lock=%s %s:%d\n",
- CRYPTO_thread_id(),
- (mode & CRYPTO_LOCK) ? "l" : "u",
- (type & CRYPTO_READ) ? "r" : "w", file, line);
+ BIO_printf(bio_err, "thread=%4d mode=%s lock=%s %s:%d\n",
+ CRYPTO_thread_id(),
+ (mode & CRYPTO_LOCK) ? "l" : "u",
+ (type & CRYPTO_READ) ? "r" : "w", file, line);
# endif
/*-
if (CRYPTO_LOCK_SSL_CERT == type)
- fprintf(stderr,"(t,m,f,l) %ld %d %s %d\n",
- CRYPTO_thread_id(),
- mode,file,line);
+ BIO_printf(bio_err,"(t,m,f,l) %ld %d %s %d\n",
+ CRYPTO_thread_id(),
+ mode,file,line);
*/
if (mode & CRYPTO_LOCK) {
/*-
@@ -837,21 +836,22 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
(void *(*)())ndoit, (void *)ssl_ctx, 0L, &(thread_ctx[i]));
}
- printf("reaping\n");
+ BIO_printf(bio_stdout, "reaping\n");
for (i = 0; i < thread_number; i++) {
thr_join(thread_ctx[i], NULL, NULL);
}
- printf("solaris threads done (%d,%d)\n",
- s_ctx->references, c_ctx->references);
+#if 0 /* We can't currently find out the reference amount */
+ BIO_printf(bio_stdout, "solaris threads done (%d,%d)\n",
+ s_ctx->references, c_ctx->references);
+#else
+ BIO_printf(bio_stdout, "solaris threads done\n");
+#endif
}
-unsigned long solaris_thread_id(void)
+void solaris_thread_id(CRYPTO_THREADID *tid)
{
- unsigned long ret;
-
- ret = (unsigned long)thr_self();
- return (ret);
+ CRYPTO_THREADID_set_numeric((unsigned long)thr_self());
}
#endif /* SOLARIS */
@@ -880,8 +880,8 @@ void thread_setup(void)
lock_cs[i] = usnewsema(arena, 1);
}
- CRYPTO_set_id_callback((unsigned long (*)())irix_thread_id);
- CRYPTO_set_locking_callback((void (*)())irix_locking_callback);
+ CRYPTO_set_id_callback(irix_thread_id);
+ CRYPTO_set_locking_callback(irix_locking_callback);
}
void thread_cleanup(void)
@@ -899,13 +899,13 @@ void thread_cleanup(void)
OPENSSL_free(lock_cs);
}
-void irix_locking_callback(int mode, int type, char *file, int line)
+void irix_locking_callback(int mode, int type, const char *file, int line)
{
if (mode & CRYPTO_LOCK) {
- printf("lock %d\n", type);
+ BIO_printf(bio_stdout, "lock %d\n", type);
uspsema(lock_cs[type]);
} else {
- printf("unlock %d\n", type);
+ BIO_printf(bio_stdout, "unlock %d\n", type);
usvsema(lock_cs[type]);
}
}
@@ -924,21 +924,22 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
PR_SADDR | PR_SFDS, (void *)ssl_ctx);
}
- printf("reaping\n");
+ BIO_printf(bio_stdout, "reaping\n");
for (i = 0; i < thread_number; i++) {
wait(NULL);
}
- printf("irix threads done (%d,%d)\n",
- s_ctx->references, c_ctx->references);
+#if 0 /* We can't currently find out the reference amount */
+ BIO_printf(bio_stdout, "irix threads done (%d,%d)\n",
+ s_ctx->references, c_ctx->references);
+#else
+ BIO_printf(bio_stdout, "irix threads done\n");
+#endif
}
unsigned long irix_thread_id(void)
{
- unsigned long ret;
-
- ret = (unsigned long)getpid();
- return (ret);
+ CRYPTO_THREADID_set_numeric((unsigned long)getpid());
}
#endif /* IRIX */
@@ -958,8 +959,8 @@ void thread_setup(void)
pthread_mutex_init(&(lock_cs[i]), NULL);
}
- CRYPTO_set_id_callback((unsigned long (*)())pthreads_thread_id);
- CRYPTO_set_locking_callback((void (*)())pthreads_locking_callback);
+ CRYPTO_THREADID_set_callback(pthreads_thread_id);
+ CRYPTO_set_locking_callback(pthreads_locking_callback);
}
void thread_cleanup(void)
@@ -967,30 +968,30 @@ void thread_cleanup(void)
int i;
CRYPTO_set_locking_callback(NULL);
- fprintf(stderr, "cleanup\n");
+ BIO_printf(bio_err, "cleanup\n");
for (i = 0; i < CRYPTO_num_locks(); i++) {
pthread_mutex_destroy(&(lock_cs[i]));
- fprintf(stderr, "%8ld:%s\n", lock_count[i], CRYPTO_get_lock_name(i));
+ BIO_printf(bio_err, "%8ld:%s\n", lock_count[i], CRYPTO_get_lock_name(i));
}
OPENSSL_free(lock_cs);
OPENSSL_free(lock_count);
- fprintf(stderr, "done cleanup\n");
+ BIO_printf(bio_err, "done cleanup\n");
}
-void pthreads_locking_callback(int mode, int type, char *file, int line)
+void pthreads_locking_callback(int mode, int type, const char *file, int line)
{
# ifdef undef
- fprintf(stderr, "thread=%4d mode=%s lock=%s %s:%d\n",
- CRYPTO_thread_id(),
- (mode & CRYPTO_LOCK) ? "l" : "u",
- (type & CRYPTO_READ) ? "r" : "w", file, line);
+ BIO_printf(bio_err, "thread=%4d mode=%s lock=%s %s:%d\n",
+ CRYPTO_thread_id(),
+ (mode & CRYPTO_LOCK) ? "l" : "u",
+ (type & CRYPTO_READ) ? "r" : "w", file, line);
# endif
/*-
if (CRYPTO_LOCK_SSL_CERT == type)
- fprintf(stderr,"(t,m,f,l) %ld %d %s %d\n",
- CRYPTO_thread_id(),
- mode,file,line);
+ BIO_printf(bio_err,"(t,m,f,l) %ld %d %s %d\n",
+ CRYPTO_thread_id(),
+ mode,file,line);
*/
if (mode & CRYPTO_LOCK) {
pthread_mutex_lock(&(lock_cs[type]));
@@ -1017,21 +1018,22 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
(void *(*)())ndoit, (void *)ssl_ctx);
}
- printf("reaping\n");
+ BIO_printf(bio_stdout, "reaping\n");
for (i = 0; i < thread_number; i++) {
pthread_join(thread_ctx[i], NULL);
}
- printf("pthreads threads done (%d,%d)\n",
- s_ctx->references, c_ctx->references);
+#if 0 /* We can't currently find out the reference amount */
+ BIO_printf(bio_stdout, "pthreads threads done (%d,%d)\n",
+ s_ctx->references, c_ctx->references);
+#else
+ BIO_printf(bio_stdout, "pthreads threads done\n");
+#endif
}
-unsigned long pthreads_thread_id(void)
+void pthreads_thread_id(CRYPTO_THREADID *tid)
{
- unsigned long ret;
-
- ret = (unsigned long)pthread_self();
- return (ret);
+ CRYPTO_THREADID_set_numeric(tid, (unsigned long)pthread_self());
}
#endif /* PTHREADS */
@@ -1051,8 +1053,8 @@ void thread_setup(void)
ThreadSem = MPKSemaphoreAlloc("OpenSSL mttest semaphore", 0);
- CRYPTO_set_id_callback((unsigned long (*)())netware_thread_id);
- CRYPTO_set_locking_callback((void (*)())netware_locking_callback);
+ CRYPTO_set_id_callback(netware_thread_id);
+ CRYPTO_set_locking_callback(netware_locking_callback);
}
void thread_cleanup(void)
@@ -1061,21 +1063,21 @@ void thread_cleanup(void)
CRYPTO_set_locking_callback(NULL);
- fprintf(stdout, "thread_cleanup\n");
+ BIO_printf(bio_stdout, "thread_cleanup\n");
for (i = 0; i < CRYPTO_num_locks(); i++) {
MPKMutexFree(lock_cs[i]);
- fprintf(stdout, "%8ld:%s\n", lock_count[i], CRYPTO_get_lock_name(i));
+ BIO_printf(bio_stdout, "%8ld:%s\n", lock_count[i], CRYPTO_get_lock_name(i));
}
OPENSSL_free(lock_cs);
OPENSSL_free(lock_count);
MPKSemaphoreFree(ThreadSem);
- fprintf(stdout, "done cleanup\n");
+ BIO_printf(bio_stdout, "done cleanup\n");
}
-void netware_locking_callback(int mode, int type, char *file, int line)
+void netware_locking_callback(int mode, int type, const char *file, int line)
{
if (mode & CRYPTO_LOCK) {
MPKMutexLock(lock_cs[type]);
@@ -1097,22 +1099,23 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
ThreadSwitchWithDelay();
}
- printf("reaping\n");
+ BIO_printf(bio_stdout, "reaping\n");
/* loop until all threads have signaled the semaphore */
for (i = 0; i < thread_number; i++) {
MPKSemaphoreWait(ThreadSem);
}
- printf("netware threads done (%d,%d)\n",
- s_ctx->references, c_ctx->references);
+#if 0 /* We can't currently find out the reference amount */
+ BIO_printf(bio_stdout, "netware threads done (%d,%d)\n",
+ s_ctx->references, c_ctx->references);
+#else
+ BIO_printf(bio_stdout, "netware threads done\n");
+#endif
}
unsigned long netware_thread_id(void)
{
- unsigned long ret;
-
- ret = (unsigned long)GetThreadID();
- return (ret);
+ CRYPTO_THREADID_set_numeric((unsigned long)GetThreadID());
}
#endif /* NETWARE */
@@ -1144,24 +1147,24 @@ void thread_cleanup(void)
int i;
CRYPTO_set_locking_callback(NULL);
- fprintf(stderr, "cleanup\n");
+ BIO_printf(bio_err, "cleanup\n");
for (i = 0; i < CRYPTO_num_locks(); i++) {
delete lock_cs[i];
- fprintf(stderr, "%8ld:%s\n", lock_count[i], CRYPTO_get_lock_name(i));
+ BIO_printf(bio_err, "%8ld:%s\n", lock_count[i], CRYPTO_get_lock_name(i));
}
OPENSSL_free(lock_cs);
OPENSSL_free(lock_count);
- fprintf(stderr, "done cleanup\n");
+ BIO_printf(bio_err, "done cleanup\n");
}
void beos_locking_callback(int mode, int type, const char *file, int line)
{
# if 0
- fprintf(stderr, "thread=%4d mode=%s lock=%s %s:%d\n",
- CRYPTO_thread_id(),
- (mode & CRYPTO_LOCK) ? "l" : "u",
- (type & CRYPTO_READ) ? "r" : "w", file, line);
+ BIO_printf(bio_err, "thread=%4d mode=%s lock=%s %s:%d\n",
+ CRYPTO_thread_id(),
+ (mode & CRYPTO_LOCK) ? "l" : "u",
+ (type & CRYPTO_READ) ? "r" : "w", file, line);
# endif
if (mode & CRYPTO_LOCK) {
lock_cs[type]->Lock();
@@ -1187,14 +1190,14 @@ void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
resume_thread(thread_ctx[i]);
}
- printf("waiting...\n");
+ BIO_printf(bio_stdout, "waiting...\n");
for (i = 0; i < thread_number; i++) {
status_t result;
wait_for_thread(thread_ctx[i], &result);
}
- printf("beos threads done (%d,%d)\n",
- s_ctx->references, c_ctx->references);
+ BIO_printf(bio_stdout, "beos threads done (%d,%d)\n",
+ s_ctx->references, c_ctx->references);
}
unsigned long beos_thread_id(void)
diff --git a/crypto/openssl/crypto/threads/pthread2.sh b/crypto/openssl/crypto/threads/pthread2.sh
index 41264c6..ec945c4 100755
--- a/crypto/openssl/crypto/threads/pthread2.sh
+++ b/crypto/openssl/crypto/threads/pthread2.sh
@@ -3,5 +3,4 @@
# build using pthreads where it's already built into the system
#
/bin/rm -f mttest
-gcc -DPTHREADS -I../../include -g mttest.c -o mttest -L../.. -lssl -lcrypto -lpthread
-
+gcc -DPTHREADS -I../../include -g mttest.c -o mttest -L../.. -lssl -lcrypto -lpthread -ldl
diff --git a/crypto/openssl/crypto/x509/Makefile b/crypto/openssl/crypto/x509/Makefile
index af3c255..aac3ece 100644
--- a/crypto/openssl/crypto/x509/Makefile
+++ b/crypto/openssl/crypto/x509/Makefile
@@ -13,7 +13,7 @@ AR= ar r
CFLAGS= $(INCLUDES) $(CFLAG)
GENERAL=Makefile README
-TEST=
+TEST=verify_extra_test.c
APPS=
LIB=$(TOP)/libcrypto.a
diff --git a/crypto/openssl/crypto/x509/verify_extra_test.c b/crypto/openssl/crypto/x509/verify_extra_test.c
new file mode 100644
index 0000000..a1e41f2
--- /dev/null
+++ b/crypto/openssl/crypto/x509/verify_extra_test.c
@@ -0,0 +1,209 @@
+/*
+ * Written by Matt Caswell for the OpenSSL project.
+ */
+/* ====================================================================
+ * Copyright (c) 1998-2015 The OpenSSL Project. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgment:
+ * "This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ * nor may "OpenSSL" appear in their names without prior written
+ * permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * "This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com). This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+#include <stdio.h>
+#include <openssl/crypto.h>
+#include <openssl/bio.h>
+#include <openssl/x509.h>
+#include <openssl/pem.h>
+#include <openssl/err.h>
+
+static STACK_OF(X509) *load_certs_from_file(const char *filename)
+{
+ STACK_OF(X509) *certs;
+ BIO *bio;
+ X509 *x;
+
+ bio = BIO_new_file(filename, "r");
+
+ if (bio == NULL) {
+ return NULL;
+ }
+
+ certs = sk_X509_new_null();
+ if (certs == NULL) {
+ BIO_free(bio);
+ return NULL;
+ }
+
+ ERR_set_mark();
+ do {
+ x = PEM_read_bio_X509(bio, NULL, 0, NULL);
+ if (x != NULL && !sk_X509_push(certs, x)) {
+ sk_X509_pop_free(certs, X509_free);
+ BIO_free(bio);
+ return NULL;
+ } else if (x == NULL) {
+ /*
+ * We probably just ran out of certs, so ignore any errors
+ * generated
+ */
+ ERR_pop_to_mark();
+ }
+ } while (x != NULL);
+
+ BIO_free(bio);
+
+ return certs;
+}
+
+/*
+ * Test for CVE-2015-1793 (Alternate Chains Certificate Forgery)
+ *
+ * Chain is as follows:
+ *
+ * rootCA (self-signed)
+ * |
+ * interCA
+ * |
+ * subinterCA subinterCA (self-signed)
+ * | |
+ * leaf ------------------
+ * |
+ * bad
+ *
+ * rootCA, interCA, subinterCA, subinterCA (ss) all have CA=TRUE
+ * leaf and bad have CA=FALSE
+ *
+ * subinterCA and subinterCA (ss) have the same subject name and keys
+ *
+ * interCA (but not rootCA) and subinterCA (ss) are in the trusted store
+ * (roots.pem)
+ * leaf and subinterCA are in the untrusted list (untrusted.pem)
+ * bad is the certificate being verified (bad.pem)
+ *
+ * Versions vulnerable to CVE-2015-1793 will fail to detect that leaf has
+ * CA=FALSE, and will therefore incorrectly verify bad
+ *
+ */
+static int test_alt_chains_cert_forgery(void)
+{
+ int ret = 0;
+ int i;
+ X509 *x = NULL;
+ STACK_OF(X509) *untrusted = NULL;
+ BIO *bio = NULL;
+ X509_STORE_CTX *sctx = NULL;
+ X509_STORE *store = NULL;
+ X509_LOOKUP *lookup = NULL;
+
+ store = X509_STORE_new();
+ if (store == NULL)
+ goto err;
+
+ lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file());
+ if (lookup == NULL)
+ goto err;
+ if(!X509_LOOKUP_load_file(lookup, "certs/roots.pem", X509_FILETYPE_PEM))
+ goto err;
+
+ untrusted = load_certs_from_file("certs/untrusted.pem");
+
+ if ((bio = BIO_new_file("certs/bad.pem", "r")) == NULL)
+ goto err;
+
+ if((x = PEM_read_bio_X509(bio, NULL, 0, NULL)) == NULL)
+ goto err;
+
+ sctx = X509_STORE_CTX_new();
+ if (sctx == NULL)
+ goto err;
+
+ if (!X509_STORE_CTX_init(sctx, store, x, untrusted))
+ goto err;
+
+ i = X509_verify_cert(sctx);
+
+ if(i == 0 && X509_STORE_CTX_get_error(sctx)
+ == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT) {
+ /* This is the result we were expecting: Test passed */
+ ret = 1;
+ }
+ err:
+ X509_STORE_CTX_free(sctx);
+ X509_free(x);
+ BIO_free(bio);
+ sk_X509_pop_free(untrusted, X509_free);
+ X509_STORE_free(store);
+ if (ret != 1)
+ ERR_print_errors_fp(stderr);
+ return ret;
+}
+
+int main(void)
+{
+ CRYPTO_malloc_debug_init();
+ CRYPTO_set_mem_debug_options(V_CRYPTO_MDEBUG_ALL);
+ CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
+
+ ERR_load_crypto_strings();
+ OpenSSL_add_all_digests();
+
+ if (!test_alt_chains_cert_forgery()) {
+ fprintf(stderr, "Test alt chains cert forgery failed\n");
+ return 1;
+ }
+
+ EVP_cleanup();
+ CRYPTO_cleanup_all_ex_data();
+ ERR_remove_thread_state(NULL);
+ ERR_free_strings();
+ CRYPTO_mem_leaks_fp(stderr);
+
+ printf("PASS\n");
+ return 0;
+}
diff --git a/crypto/openssl/crypto/x509/x509_vfy.c b/crypto/openssl/crypto/x509/x509_vfy.c
index 16db4c0..7009ae6 100644
--- a/crypto/openssl/crypto/x509/x509_vfy.c
+++ b/crypto/openssl/crypto/x509/x509_vfy.c
@@ -162,6 +162,14 @@ int X509_verify_cert(X509_STORE_CTX *ctx)
X509err(X509_F_X509_VERIFY_CERT, X509_R_NO_CERT_SET_FOR_US_TO_VERIFY);
return -1;
}
+ if (ctx->chain != NULL) {
+ /*
+ * This X509_STORE_CTX has already been used to verify a cert. We
+ * cannot do another one.
+ */
+ X509err(X509_F_X509_VERIFY_CERT, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
+ return -1;
+ }
cb = ctx->verify_cb;
@@ -169,15 +177,13 @@ int X509_verify_cert(X509_STORE_CTX *ctx)
* first we make sure the chain we are going to build is present and that
* the first entry is in place
*/
- if (ctx->chain == NULL) {
- if (((ctx->chain = sk_X509_new_null()) == NULL) ||
- (!sk_X509_push(ctx->chain, ctx->cert))) {
- X509err(X509_F_X509_VERIFY_CERT, ERR_R_MALLOC_FAILURE);
- goto end;
- }
- CRYPTO_add(&ctx->cert->references, 1, CRYPTO_LOCK_X509);
- ctx->last_untrusted = 1;
+ if (((ctx->chain = sk_X509_new_null()) == NULL) ||
+ (!sk_X509_push(ctx->chain, ctx->cert))) {
+ X509err(X509_F_X509_VERIFY_CERT, ERR_R_MALLOC_FAILURE);
+ goto end;
}
+ CRYPTO_add(&ctx->cert->references, 1, CRYPTO_LOCK_X509);
+ ctx->last_untrusted = 1;
/* We use a temporary STACK so we can chop and hack at it */
if (ctx->untrusted != NULL
@@ -306,7 +312,7 @@ int X509_verify_cert(X509_STORE_CTX *ctx)
* if the user hasn't switched off alternate chain checking
*/
retry = 0;
- if (j == ctx->last_untrusted &&
+ if (num == ctx->last_untrusted &&
!(ctx->param->flags & X509_V_FLAG_NO_ALT_CHAINS)) {
while (j-- > 1) {
xtmp2 = sk_X509_value(ctx->chain, j - 1);
@@ -328,8 +334,8 @@ int X509_verify_cert(X509_STORE_CTX *ctx)
xtmp = sk_X509_pop(ctx->chain);
X509_free(xtmp);
num--;
- ctx->last_untrusted--;
}
+ ctx->last_untrusted = sk_X509_num(ctx->chain);
retry = 1;
break;
}
diff --git a/crypto/openssl/doc/crypto/X509_NAME_get_index_by_NID.pod b/crypto/openssl/doc/crypto/X509_NAME_get_index_by_NID.pod
index c8a8128..109f561 100644
--- a/crypto/openssl/doc/crypto/X509_NAME_get_index_by_NID.pod
+++ b/crypto/openssl/doc/crypto/X509_NAME_get_index_by_NID.pod
@@ -29,6 +29,7 @@ and issuer names.
X509_NAME_get_index_by_NID() and X509_NAME_get_index_by_OBJ() retrieve
the next index matching B<nid> or B<obj> after B<lastpos>. B<lastpos>
should initially be set to -1. If there are no more entries -1 is returned.
+If B<nid> is invalid (doesn't correspond to a valid OID) then -2 is returned.
X509_NAME_entry_count() returns the total number of entries in B<name>.
@@ -63,6 +64,10 @@ The list of all relevant B<NID_*> and B<OBJ_* codes> can be found in
the source code header files E<lt>openssl/obj_mac.hE<gt> and/or
E<lt>openssl/objects.hE<gt>.
+Applications which could pass invalid NIDs to X509_NAME_get_index_by_NID()
+should check for the return value of -2. Alternatively the NID validity
+can be determined first by checking OBJ_nid2obj(nid) is not NULL.
+
=head1 EXAMPLES
Process all entries:
@@ -95,6 +100,8 @@ Process all commonName entries:
X509_NAME_get_index_by_NID() and X509_NAME_get_index_by_OBJ()
return the index of the next matching entry or -1 if not found.
+X509_NAME_get_index_by_NID() can also return -2 if the supplied
+NID is invalid.
X509_NAME_entry_count() returns the total number of entries.
diff --git a/crypto/openssl/doc/crypto/X509_STORE_CTX_new.pod b/crypto/openssl/doc/crypto/X509_STORE_CTX_new.pod
index b17888f..eb38b0a 100644
--- a/crypto/openssl/doc/crypto/X509_STORE_CTX_new.pod
+++ b/crypto/openssl/doc/crypto/X509_STORE_CTX_new.pod
@@ -39,10 +39,15 @@ X509_STORE_CTX_free() completely frees up B<ctx>. After this call B<ctx>
is no longer valid.
X509_STORE_CTX_init() sets up B<ctx> for a subsequent verification operation.
-The trusted certificate store is set to B<store>, the end entity certificate
-to be verified is set to B<x509> and a set of additional certificates (which
-will be untrusted but may be used to build the chain) in B<chain>. Any or
-all of the B<store>, B<x509> and B<chain> parameters can be B<NULL>.
+It must be called before each call to X509_verify_cert(), i.e. a B<ctx> is only
+good for one call to X509_verify_cert(); if you want to verify a second
+certificate with the same B<ctx> then you must call X509_XTORE_CTX_cleanup()
+and then X509_STORE_CTX_init() again before the second call to
+X509_verify_cert(). The trusted certificate store is set to B<store>, the end
+entity certificate to be verified is set to B<x509> and a set of additional
+certificates (which will be untrusted but may be used to build the chain) in
+B<chain>. Any or all of the B<store>, B<x509> and B<chain> parameters can be
+B<NULL>.
X509_STORE_CTX_trusted_stack() sets the set of trusted certificates of B<ctx>
to B<sk>. This is an alternative way of specifying trusted certificates
diff --git a/crypto/openssl/doc/crypto/X509_verify_cert.pod b/crypto/openssl/doc/crypto/X509_verify_cert.pod
index 5253bdc..a22e441 100644
--- a/crypto/openssl/doc/crypto/X509_verify_cert.pod
+++ b/crypto/openssl/doc/crypto/X509_verify_cert.pod
@@ -32,7 +32,8 @@ OpenSSL internally for certificate validation, in both the S/MIME and
SSL/TLS code.
The negative return value from X509_verify_cert() can only occur if no
-certificate is set in B<ctx> (due to a programming error) or if a retry
+certificate is set in B<ctx> (due to a programming error); if X509_verify_cert()
+twice without reinitialising B<ctx> in between; or if a retry
operation is requested during internal lookups (which never happens with
standard lookup methods). It is however recommended that application check
for <= 0 return value on error.
diff --git a/crypto/openssl/ssl/s3_clnt.c b/crypto/openssl/ssl/s3_clnt.c
index 0879a0f..35ad121 100644
--- a/crypto/openssl/ssl/s3_clnt.c
+++ b/crypto/openssl/ssl/s3_clnt.c
@@ -1381,8 +1381,6 @@ int ssl3_get_key_exchange(SSL *s)
#ifndef OPENSSL_NO_PSK
if (alg_k & SSL_kPSK) {
- char tmp_id_hint[PSK_MAX_IDENTITY_LEN + 1];
-
param_len = 2;
if (param_len > n) {
SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, SSL_R_LENGTH_TOO_SHORT);
@@ -1408,17 +1406,8 @@ int ssl3_get_key_exchange(SSL *s)
}
param_len += i;
- /*
- * If received PSK identity hint contains NULL characters, the hint
- * is truncated from the first NULL. p may not be ending with NULL,
- * so create a NULL-terminated string.
- */
- memcpy(tmp_id_hint, p, i);
- memset(tmp_id_hint + i, 0, PSK_MAX_IDENTITY_LEN + 1 - i);
- if (s->ctx->psk_identity_hint != NULL)
- OPENSSL_free(s->ctx->psk_identity_hint);
- s->ctx->psk_identity_hint = BUF_strdup(tmp_id_hint);
- if (s->ctx->psk_identity_hint == NULL) {
+ s->session->psk_identity_hint = BUF_strndup((char *)p, i);
+ if (s->session->psk_identity_hint == NULL) {
al = SSL_AD_HANDSHAKE_FAILURE;
SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, ERR_R_MALLOC_FAILURE);
goto f_err;
@@ -2951,7 +2940,7 @@ int ssl3_send_client_key_exchange(SSL *s)
}
memset(identity, 0, sizeof(identity));
- psk_len = s->psk_client_callback(s, s->ctx->psk_identity_hint,
+ psk_len = s->psk_client_callback(s, s->session->psk_identity_hint,
identity, sizeof(identity) - 1,
psk_or_pre_ms,
sizeof(psk_or_pre_ms));
diff --git a/crypto/openssl/ssl/s3_srvr.c b/crypto/openssl/ssl/s3_srvr.c
index 9aa3292..3a5f71d 100644
--- a/crypto/openssl/ssl/s3_srvr.c
+++ b/crypto/openssl/ssl/s3_srvr.c
@@ -2792,7 +2792,7 @@ int ssl3_get_client_key_exchange(SSL *s)
if (s->session->psk_identity != NULL)
OPENSSL_free(s->session->psk_identity);
- s->session->psk_identity = BUF_strdup((char *)p);
+ s->session->psk_identity = BUF_strndup((char *)p, i);
if (s->session->psk_identity == NULL) {
SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, ERR_R_MALLOC_FAILURE);
goto psk_err;
diff --git a/etc/rc.d/random b/etc/rc.d/random
index 13490a9..ddd37e1 100755
--- a/etc/rc.d/random
+++ b/etc/rc.d/random
@@ -67,7 +67,7 @@ random_start()
esac
case ${entropy_file:=/entropy} in
- [Nn][Oo] | '')
+ [Nn][Oo])
;;
*)
feed_dev_random "${entropy_file}" /var/db/entropy-file
@@ -76,7 +76,7 @@ random_start()
esac
case ${entropy_boot_file:=/boot/entropy} in
- [Nn][Oo] | '')
+ [Nn][Oo])
;;
*)
save_dev_random "${entropy_boot_file}"
@@ -92,7 +92,7 @@ random_stop()
# can be reseeded
#
case ${entropy_file:=/entropy} in
- [Nn][Oo] | '')
+ [Nn][Oo])
;;
*)
echo -n 'Writing entropy file:'
@@ -124,7 +124,7 @@ random_stop()
;;
esac
case ${entropy_boot_file:=/boot/entropy} in
- [Nn][Oo] | '')
+ [Nn][Oo])
;;
*)
echo -n 'Writing early boot entropy file:'
diff --git a/lib/liblzma/config.h b/lib/liblzma/config.h
index 1d0f0bc..7dfc089 100644
--- a/lib/liblzma/config.h
+++ b/lib/liblzma/config.h
@@ -150,7 +150,8 @@
#define HAVE_ICONV 1
/* Define to 1 if you have the <immintrin.h> header file. */
-#if defined(__FreeBSD__) && defined(__amd64__)
+/* FreeBSD - only with clang because the base gcc does not support it */
+#if defined(__clang__) && defined(__FreeBSD__) && defined(__amd64__)
#define HAVE_IMMINTRIN_H 1
#endif
diff --git a/lib/libmd/mdXhl.c b/lib/libmd/mdXhl.c
index 62be235..f2e918f 100644
--- a/lib/libmd/mdXhl.c
+++ b/lib/libmd/mdXhl.c
@@ -49,7 +49,7 @@ MDXFile(const char *filename, char *buf)
char *
MDXFileChunk(const char *filename, char *buf, off_t ofs, off_t len)
{
- unsigned char buffer[BUFSIZ];
+ unsigned char buffer[16*1024];
MDX_CTX ctx;
struct stat stbuf;
int f, i, e;
diff --git a/release/doc/en_US.ISO8859-1/relnotes/article.xml b/release/doc/en_US.ISO8859-1/relnotes/article.xml
index e6e5433..6e56ac0 100644
--- a/release/doc/en_US.ISO8859-1/relnotes/article.xml
+++ b/release/doc/en_US.ISO8859-1/relnotes/article.xml
@@ -468,9 +468,6 @@
<para revision="284254"><application>bmake</application> has
been updated to version 20150606.</para>
- <para revision="284329"><application>OpenSSL</application> has
- been updated to version 1.0.1o.</para>
-
<para revision="283092">The &man.acpi.4; subsystem has been
updated to version 20150515.</para>
@@ -492,6 +489,9 @@
old behavior, set the m4 option
<literal>confUSE_COMPRESSED_IPV6_ADDRESSES</literal> or the cf
option <literal>UseCompressedIPv6Addresses</literal>.</para>
+
+ <para revision="285329"><application>OpenSSL</application> has
+ been updated to version 1.0.1p.</para>
</sect2>
<sect2 xml:id="userland-installer">
diff --git a/secure/lib/libcrypto/Makefile.inc b/secure/lib/libcrypto/Makefile.inc
index dcbbcc8..8b47ad2 100644
--- a/secure/lib/libcrypto/Makefile.inc
+++ b/secure/lib/libcrypto/Makefile.inc
@@ -3,8 +3,8 @@
.include <bsd.own.mk>
# OpenSSL version used for manual page generation
-OPENSSL_VER= 1.0.1o
-OPENSSL_DATE= 2015-06-12
+OPENSSL_VER= 1.0.1p
+OPENSSL_DATE= 2015-07-09
LCRYPTO_SRC= ${.CURDIR}/../../../crypto/openssl
LCRYPTO_DOC= ${.CURDIR}/../../../crypto/openssl/doc
diff --git a/secure/lib/libcrypto/man/ASN1_OBJECT_new.3 b/secure/lib/libcrypto/man/ASN1_OBJECT_new.3
index 58e68f6..927b28b 100644
--- a/secure/lib/libcrypto/man/ASN1_OBJECT_new.3
+++ b/secure/lib/libcrypto/man/ASN1_OBJECT_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_OBJECT_new 3"
-.TH ASN1_OBJECT_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ASN1_OBJECT_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ASN1_STRING_length.3 b/secure/lib/libcrypto/man/ASN1_STRING_length.3
index 9b49af2..dd9bc74 100644
--- a/secure/lib/libcrypto/man/ASN1_STRING_length.3
+++ b/secure/lib/libcrypto/man/ASN1_STRING_length.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_STRING_length 3"
-.TH ASN1_STRING_length 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ASN1_STRING_length 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ASN1_STRING_new.3 b/secure/lib/libcrypto/man/ASN1_STRING_new.3
index d3ded18..52203a3 100644
--- a/secure/lib/libcrypto/man/ASN1_STRING_new.3
+++ b/secure/lib/libcrypto/man/ASN1_STRING_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_STRING_new 3"
-.TH ASN1_STRING_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ASN1_STRING_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 b/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3
index 97b50b8..b5e0c23 100644
--- a/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3
+++ b/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_STRING_print_ex 3"
-.TH ASN1_STRING_print_ex 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ASN1_STRING_print_ex 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ASN1_generate_nconf.3 b/secure/lib/libcrypto/man/ASN1_generate_nconf.3
index 486ed31..af892e2 100644
--- a/secure/lib/libcrypto/man/ASN1_generate_nconf.3
+++ b/secure/lib/libcrypto/man/ASN1_generate_nconf.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1_generate_nconf 3"
-.TH ASN1_generate_nconf 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ASN1_generate_nconf 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_ctrl.3 b/secure/lib/libcrypto/man/BIO_ctrl.3
index bed4344..b191ed2 100644
--- a/secure/lib/libcrypto/man/BIO_ctrl.3
+++ b/secure/lib/libcrypto/man/BIO_ctrl.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_ctrl 3"
-.TH BIO_ctrl 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_ctrl 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_base64.3 b/secure/lib/libcrypto/man/BIO_f_base64.3
index 36d8df6..db4a753 100644
--- a/secure/lib/libcrypto/man/BIO_f_base64.3
+++ b/secure/lib/libcrypto/man/BIO_f_base64.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_base64 3"
-.TH BIO_f_base64 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_f_base64 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_buffer.3 b/secure/lib/libcrypto/man/BIO_f_buffer.3
index be271bb..8a7e7a2 100644
--- a/secure/lib/libcrypto/man/BIO_f_buffer.3
+++ b/secure/lib/libcrypto/man/BIO_f_buffer.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_buffer 3"
-.TH BIO_f_buffer 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_f_buffer 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_cipher.3 b/secure/lib/libcrypto/man/BIO_f_cipher.3
index 796141b..f751a5c 100644
--- a/secure/lib/libcrypto/man/BIO_f_cipher.3
+++ b/secure/lib/libcrypto/man/BIO_f_cipher.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_cipher 3"
-.TH BIO_f_cipher 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_f_cipher 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_md.3 b/secure/lib/libcrypto/man/BIO_f_md.3
index 9990104..0217508 100644
--- a/secure/lib/libcrypto/man/BIO_f_md.3
+++ b/secure/lib/libcrypto/man/BIO_f_md.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_md 3"
-.TH BIO_f_md 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_f_md 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_null.3 b/secure/lib/libcrypto/man/BIO_f_null.3
index fa5878a..9b4f647 100644
--- a/secure/lib/libcrypto/man/BIO_f_null.3
+++ b/secure/lib/libcrypto/man/BIO_f_null.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_null 3"
-.TH BIO_f_null 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_f_null 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_f_ssl.3 b/secure/lib/libcrypto/man/BIO_f_ssl.3
index a5527e4..8ccb59a 100644
--- a/secure/lib/libcrypto/man/BIO_f_ssl.3
+++ b/secure/lib/libcrypto/man/BIO_f_ssl.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_f_ssl 3"
-.TH BIO_f_ssl 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_f_ssl 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_find_type.3 b/secure/lib/libcrypto/man/BIO_find_type.3
index 8babdc1..3fdfa1e 100644
--- a/secure/lib/libcrypto/man/BIO_find_type.3
+++ b/secure/lib/libcrypto/man/BIO_find_type.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_find_type 3"
-.TH BIO_find_type 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_find_type 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_new.3 b/secure/lib/libcrypto/man/BIO_new.3
index 20770ce..b51eb3c 100644
--- a/secure/lib/libcrypto/man/BIO_new.3
+++ b/secure/lib/libcrypto/man/BIO_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_new 3"
-.TH BIO_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_new_CMS.3 b/secure/lib/libcrypto/man/BIO_new_CMS.3
index e031998..87fb129 100644
--- a/secure/lib/libcrypto/man/BIO_new_CMS.3
+++ b/secure/lib/libcrypto/man/BIO_new_CMS.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_new_CMS 3"
-.TH BIO_new_CMS 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_new_CMS 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_push.3 b/secure/lib/libcrypto/man/BIO_push.3
index d3cc8ca..3a45766 100644
--- a/secure/lib/libcrypto/man/BIO_push.3
+++ b/secure/lib/libcrypto/man/BIO_push.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_push 3"
-.TH BIO_push 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_push 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_read.3 b/secure/lib/libcrypto/man/BIO_read.3
index 99c3790..495d84e 100644
--- a/secure/lib/libcrypto/man/BIO_read.3
+++ b/secure/lib/libcrypto/man/BIO_read.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_read 3"
-.TH BIO_read 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_read 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_accept.3 b/secure/lib/libcrypto/man/BIO_s_accept.3
index a3bfd5c..eddc678 100644
--- a/secure/lib/libcrypto/man/BIO_s_accept.3
+++ b/secure/lib/libcrypto/man/BIO_s_accept.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_accept 3"
-.TH BIO_s_accept 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_s_accept 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_bio.3 b/secure/lib/libcrypto/man/BIO_s_bio.3
index fb2ded4..98692ac 100644
--- a/secure/lib/libcrypto/man/BIO_s_bio.3
+++ b/secure/lib/libcrypto/man/BIO_s_bio.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_bio 3"
-.TH BIO_s_bio 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_s_bio 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_connect.3 b/secure/lib/libcrypto/man/BIO_s_connect.3
index 85fdf02..e3482df 100644
--- a/secure/lib/libcrypto/man/BIO_s_connect.3
+++ b/secure/lib/libcrypto/man/BIO_s_connect.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_connect 3"
-.TH BIO_s_connect 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_s_connect 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_fd.3 b/secure/lib/libcrypto/man/BIO_s_fd.3
index 8e880b1..06a20a8 100644
--- a/secure/lib/libcrypto/man/BIO_s_fd.3
+++ b/secure/lib/libcrypto/man/BIO_s_fd.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_fd 3"
-.TH BIO_s_fd 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_s_fd 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_file.3 b/secure/lib/libcrypto/man/BIO_s_file.3
index 7b56f84..b14c86f 100644
--- a/secure/lib/libcrypto/man/BIO_s_file.3
+++ b/secure/lib/libcrypto/man/BIO_s_file.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_file 3"
-.TH BIO_s_file 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_s_file 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_mem.3 b/secure/lib/libcrypto/man/BIO_s_mem.3
index ecfba6a..ec74f15 100644
--- a/secure/lib/libcrypto/man/BIO_s_mem.3
+++ b/secure/lib/libcrypto/man/BIO_s_mem.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_mem 3"
-.TH BIO_s_mem 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_s_mem 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_null.3 b/secure/lib/libcrypto/man/BIO_s_null.3
index 4ed55fc..077723e 100644
--- a/secure/lib/libcrypto/man/BIO_s_null.3
+++ b/secure/lib/libcrypto/man/BIO_s_null.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_null 3"
-.TH BIO_s_null 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_s_null 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_s_socket.3 b/secure/lib/libcrypto/man/BIO_s_socket.3
index 58329e9..0afadac 100644
--- a/secure/lib/libcrypto/man/BIO_s_socket.3
+++ b/secure/lib/libcrypto/man/BIO_s_socket.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_s_socket 3"
-.TH BIO_s_socket 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_s_socket 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_set_callback.3 b/secure/lib/libcrypto/man/BIO_set_callback.3
index ae4841c..b355f65 100644
--- a/secure/lib/libcrypto/man/BIO_set_callback.3
+++ b/secure/lib/libcrypto/man/BIO_set_callback.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_set_callback 3"
-.TH BIO_set_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_set_callback 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BIO_should_retry.3 b/secure/lib/libcrypto/man/BIO_should_retry.3
index db1b796..980952a 100644
--- a/secure/lib/libcrypto/man/BIO_should_retry.3
+++ b/secure/lib/libcrypto/man/BIO_should_retry.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BIO_should_retry 3"
-.TH BIO_should_retry 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BIO_should_retry 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_BLINDING_new.3 b/secure/lib/libcrypto/man/BN_BLINDING_new.3
index c26736b..3266d01 100644
--- a/secure/lib/libcrypto/man/BN_BLINDING_new.3
+++ b/secure/lib/libcrypto/man/BN_BLINDING_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_BLINDING_new 3"
-.TH BN_BLINDING_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_BLINDING_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_CTX_new.3 b/secure/lib/libcrypto/man/BN_CTX_new.3
index 5676c1e..340197f 100644
--- a/secure/lib/libcrypto/man/BN_CTX_new.3
+++ b/secure/lib/libcrypto/man/BN_CTX_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_CTX_new 3"
-.TH BN_CTX_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_CTX_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_CTX_start.3 b/secure/lib/libcrypto/man/BN_CTX_start.3
index fe638ca..60f0c50 100644
--- a/secure/lib/libcrypto/man/BN_CTX_start.3
+++ b/secure/lib/libcrypto/man/BN_CTX_start.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_CTX_start 3"
-.TH BN_CTX_start 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_CTX_start 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_add.3 b/secure/lib/libcrypto/man/BN_add.3
index 4e58a6b..5689dc6 100644
--- a/secure/lib/libcrypto/man/BN_add.3
+++ b/secure/lib/libcrypto/man/BN_add.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_add 3"
-.TH BN_add 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_add 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_add_word.3 b/secure/lib/libcrypto/man/BN_add_word.3
index 0869c2c..f42d70e 100644
--- a/secure/lib/libcrypto/man/BN_add_word.3
+++ b/secure/lib/libcrypto/man/BN_add_word.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_add_word 3"
-.TH BN_add_word 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_add_word 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_bn2bin.3 b/secure/lib/libcrypto/man/BN_bn2bin.3
index 39849b5..3f7f574 100644
--- a/secure/lib/libcrypto/man/BN_bn2bin.3
+++ b/secure/lib/libcrypto/man/BN_bn2bin.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_bn2bin 3"
-.TH BN_bn2bin 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_bn2bin 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_cmp.3 b/secure/lib/libcrypto/man/BN_cmp.3
index c554e6a..57d3ae9 100644
--- a/secure/lib/libcrypto/man/BN_cmp.3
+++ b/secure/lib/libcrypto/man/BN_cmp.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_cmp 3"
-.TH BN_cmp 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_cmp 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_copy.3 b/secure/lib/libcrypto/man/BN_copy.3
index 2ab659c..a671762 100644
--- a/secure/lib/libcrypto/man/BN_copy.3
+++ b/secure/lib/libcrypto/man/BN_copy.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_copy 3"
-.TH BN_copy 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_copy 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_generate_prime.3 b/secure/lib/libcrypto/man/BN_generate_prime.3
index 074db2b..dd69285 100644
--- a/secure/lib/libcrypto/man/BN_generate_prime.3
+++ b/secure/lib/libcrypto/man/BN_generate_prime.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_generate_prime 3"
-.TH BN_generate_prime 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_generate_prime 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_mod_inverse.3 b/secure/lib/libcrypto/man/BN_mod_inverse.3
index d28a92f..47e4a73 100644
--- a/secure/lib/libcrypto/man/BN_mod_inverse.3
+++ b/secure/lib/libcrypto/man/BN_mod_inverse.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_mod_inverse 3"
-.TH BN_mod_inverse 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_mod_inverse 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 b/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3
index 8429a29..5319570 100644
--- a/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3
+++ b/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_mod_mul_montgomery 3"
-.TH BN_mod_mul_montgomery 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_mod_mul_montgomery 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 b/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3
index 29bd3a6..1589115 100644
--- a/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3
+++ b/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_mod_mul_reciprocal 3"
-.TH BN_mod_mul_reciprocal 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_mod_mul_reciprocal 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_new.3 b/secure/lib/libcrypto/man/BN_new.3
index 124f638..b150cda 100644
--- a/secure/lib/libcrypto/man/BN_new.3
+++ b/secure/lib/libcrypto/man/BN_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_new 3"
-.TH BN_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_num_bytes.3 b/secure/lib/libcrypto/man/BN_num_bytes.3
index 1da3a24..ce7487a 100644
--- a/secure/lib/libcrypto/man/BN_num_bytes.3
+++ b/secure/lib/libcrypto/man/BN_num_bytes.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_num_bytes 3"
-.TH BN_num_bytes 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_num_bytes 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_rand.3 b/secure/lib/libcrypto/man/BN_rand.3
index 3748b95..8297eac 100644
--- a/secure/lib/libcrypto/man/BN_rand.3
+++ b/secure/lib/libcrypto/man/BN_rand.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_rand 3"
-.TH BN_rand 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_rand 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_set_bit.3 b/secure/lib/libcrypto/man/BN_set_bit.3
index 38fad2e..7e20ebe 100644
--- a/secure/lib/libcrypto/man/BN_set_bit.3
+++ b/secure/lib/libcrypto/man/BN_set_bit.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_set_bit 3"
-.TH BN_set_bit 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_set_bit 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_swap.3 b/secure/lib/libcrypto/man/BN_swap.3
index 0416b1d..d4a4511 100644
--- a/secure/lib/libcrypto/man/BN_swap.3
+++ b/secure/lib/libcrypto/man/BN_swap.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_swap 3"
-.TH BN_swap 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_swap 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/BN_zero.3 b/secure/lib/libcrypto/man/BN_zero.3
index 4dfa809..ab6e8ea 100644
--- a/secure/lib/libcrypto/man/BN_zero.3
+++ b/secure/lib/libcrypto/man/BN_zero.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "BN_zero 3"
-.TH BN_zero 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH BN_zero 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_add0_cert.3 b/secure/lib/libcrypto/man/CMS_add0_cert.3
index 60d0bfe..1553be8 100644
--- a/secure/lib/libcrypto/man/CMS_add0_cert.3
+++ b/secure/lib/libcrypto/man/CMS_add0_cert.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_add0_cert 3"
-.TH CMS_add0_cert 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_add0_cert 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3 b/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3
index 01ba868..505f4ec 100644
--- a/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3
+++ b/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_add1_recipient_cert 3"
-.TH CMS_add1_recipient_cert 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_add1_recipient_cert 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_add1_signer.3 b/secure/lib/libcrypto/man/CMS_add1_signer.3
index 51bfd69..ddaecfc 100644
--- a/secure/lib/libcrypto/man/CMS_add1_signer.3
+++ b/secure/lib/libcrypto/man/CMS_add1_signer.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_add1_signer 3"
-.TH CMS_add1_signer 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_add1_signer 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_compress.3 b/secure/lib/libcrypto/man/CMS_compress.3
index 1b51fcf..ecd4611 100644
--- a/secure/lib/libcrypto/man/CMS_compress.3
+++ b/secure/lib/libcrypto/man/CMS_compress.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_compress 3"
-.TH CMS_compress 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_compress 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_decrypt.3 b/secure/lib/libcrypto/man/CMS_decrypt.3
index f7b269c..fd3fa72 100644
--- a/secure/lib/libcrypto/man/CMS_decrypt.3
+++ b/secure/lib/libcrypto/man/CMS_decrypt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_decrypt 3"
-.TH CMS_decrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_decrypt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_encrypt.3 b/secure/lib/libcrypto/man/CMS_encrypt.3
index d19486f..32398ae 100644
--- a/secure/lib/libcrypto/man/CMS_encrypt.3
+++ b/secure/lib/libcrypto/man/CMS_encrypt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_encrypt 3"
-.TH CMS_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_encrypt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_final.3 b/secure/lib/libcrypto/man/CMS_final.3
index a329e6b..cd043ae 100644
--- a/secure/lib/libcrypto/man/CMS_final.3
+++ b/secure/lib/libcrypto/man/CMS_final.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_final 3"
-.TH CMS_final 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_final 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3 b/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3
index bc6639e..ff2cb31 100644
--- a/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3
+++ b/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_get0_RecipientInfos 3"
-.TH CMS_get0_RecipientInfos 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_get0_RecipientInfos 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3 b/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3
index 1aa3218..2b9265f 100644
--- a/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3
+++ b/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_get0_SignerInfos 3"
-.TH CMS_get0_SignerInfos 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_get0_SignerInfos 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_get0_type.3 b/secure/lib/libcrypto/man/CMS_get0_type.3
index 23cb6d4..a977393 100644
--- a/secure/lib/libcrypto/man/CMS_get0_type.3
+++ b/secure/lib/libcrypto/man/CMS_get0_type.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_get0_type 3"
-.TH CMS_get0_type 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_get0_type 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3 b/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3
index 6a08414..52ffa53 100644
--- a/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3
+++ b/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_get1_ReceiptRequest 3"
-.TH CMS_get1_ReceiptRequest 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_get1_ReceiptRequest 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_sign.3 b/secure/lib/libcrypto/man/CMS_sign.3
index 2436e08..1b1fdfe 100644
--- a/secure/lib/libcrypto/man/CMS_sign.3
+++ b/secure/lib/libcrypto/man/CMS_sign.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_sign 3"
-.TH CMS_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_sign 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_sign_receipt.3 b/secure/lib/libcrypto/man/CMS_sign_receipt.3
index d97d577..98372e0 100644
--- a/secure/lib/libcrypto/man/CMS_sign_receipt.3
+++ b/secure/lib/libcrypto/man/CMS_sign_receipt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_sign_receipt 3"
-.TH CMS_sign_receipt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_sign_receipt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_uncompress.3 b/secure/lib/libcrypto/man/CMS_uncompress.3
index dad7e26..5fd9e70 100644
--- a/secure/lib/libcrypto/man/CMS_uncompress.3
+++ b/secure/lib/libcrypto/man/CMS_uncompress.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_uncompress 3"
-.TH CMS_uncompress 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_uncompress 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_verify.3 b/secure/lib/libcrypto/man/CMS_verify.3
index 7753053..088ee45 100644
--- a/secure/lib/libcrypto/man/CMS_verify.3
+++ b/secure/lib/libcrypto/man/CMS_verify.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_verify 3"
-.TH CMS_verify 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_verify 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CMS_verify_receipt.3 b/secure/lib/libcrypto/man/CMS_verify_receipt.3
index a324820..d618959 100644
--- a/secure/lib/libcrypto/man/CMS_verify_receipt.3
+++ b/secure/lib/libcrypto/man/CMS_verify_receipt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS_verify_receipt 3"
-.TH CMS_verify_receipt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS_verify_receipt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CONF_modules_free.3 b/secure/lib/libcrypto/man/CONF_modules_free.3
index 139a8f8..5e99d8e 100644
--- a/secure/lib/libcrypto/man/CONF_modules_free.3
+++ b/secure/lib/libcrypto/man/CONF_modules_free.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CONF_modules_free 3"
-.TH CONF_modules_free 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CONF_modules_free 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CONF_modules_load_file.3 b/secure/lib/libcrypto/man/CONF_modules_load_file.3
index 2180371..222d832 100644
--- a/secure/lib/libcrypto/man/CONF_modules_load_file.3
+++ b/secure/lib/libcrypto/man/CONF_modules_load_file.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CONF_modules_load_file 3"
-.TH CONF_modules_load_file 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CONF_modules_load_file 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3 b/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3
index f7fc5ef..1abdb16 100644
--- a/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3
+++ b/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CRYPTO_set_ex_data 3"
-.TH CRYPTO_set_ex_data 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CRYPTO_set_ex_data 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_generate_key.3 b/secure/lib/libcrypto/man/DH_generate_key.3
index 9699d0c..dd63e80 100644
--- a/secure/lib/libcrypto/man/DH_generate_key.3
+++ b/secure/lib/libcrypto/man/DH_generate_key.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_generate_key 3"
-.TH DH_generate_key 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DH_generate_key 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_generate_parameters.3 b/secure/lib/libcrypto/man/DH_generate_parameters.3
index d36c64a..d217bb0 100644
--- a/secure/lib/libcrypto/man/DH_generate_parameters.3
+++ b/secure/lib/libcrypto/man/DH_generate_parameters.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_generate_parameters 3"
-.TH DH_generate_parameters 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DH_generate_parameters 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_get_ex_new_index.3 b/secure/lib/libcrypto/man/DH_get_ex_new_index.3
index 79727c3..e145ff3 100644
--- a/secure/lib/libcrypto/man/DH_get_ex_new_index.3
+++ b/secure/lib/libcrypto/man/DH_get_ex_new_index.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_get_ex_new_index 3"
-.TH DH_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DH_get_ex_new_index 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_new.3 b/secure/lib/libcrypto/man/DH_new.3
index 4c57bb5..ba35c41 100644
--- a/secure/lib/libcrypto/man/DH_new.3
+++ b/secure/lib/libcrypto/man/DH_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_new 3"
-.TH DH_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DH_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_set_method.3 b/secure/lib/libcrypto/man/DH_set_method.3
index 60eeec2..327ad6b 100644
--- a/secure/lib/libcrypto/man/DH_set_method.3
+++ b/secure/lib/libcrypto/man/DH_set_method.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_set_method 3"
-.TH DH_set_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DH_set_method 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DH_size.3 b/secure/lib/libcrypto/man/DH_size.3
index 1ee2f04..610af44 100644
--- a/secure/lib/libcrypto/man/DH_size.3
+++ b/secure/lib/libcrypto/man/DH_size.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DH_size 3"
-.TH DH_size 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DH_size 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_SIG_new.3 b/secure/lib/libcrypto/man/DSA_SIG_new.3
index 598ddcb..707f760 100644
--- a/secure/lib/libcrypto/man/DSA_SIG_new.3
+++ b/secure/lib/libcrypto/man/DSA_SIG_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_SIG_new 3"
-.TH DSA_SIG_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_SIG_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_do_sign.3 b/secure/lib/libcrypto/man/DSA_do_sign.3
index 504e25c..bf54098 100644
--- a/secure/lib/libcrypto/man/DSA_do_sign.3
+++ b/secure/lib/libcrypto/man/DSA_do_sign.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_do_sign 3"
-.TH DSA_do_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_do_sign 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_dup_DH.3 b/secure/lib/libcrypto/man/DSA_dup_DH.3
index 053d61f..bce717f 100644
--- a/secure/lib/libcrypto/man/DSA_dup_DH.3
+++ b/secure/lib/libcrypto/man/DSA_dup_DH.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_dup_DH 3"
-.TH DSA_dup_DH 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_dup_DH 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_generate_key.3 b/secure/lib/libcrypto/man/DSA_generate_key.3
index b8f8afb..9e2ac1c 100644
--- a/secure/lib/libcrypto/man/DSA_generate_key.3
+++ b/secure/lib/libcrypto/man/DSA_generate_key.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_generate_key 3"
-.TH DSA_generate_key 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_generate_key 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_generate_parameters.3 b/secure/lib/libcrypto/man/DSA_generate_parameters.3
index d90a954..6ffe950 100644
--- a/secure/lib/libcrypto/man/DSA_generate_parameters.3
+++ b/secure/lib/libcrypto/man/DSA_generate_parameters.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_generate_parameters 3"
-.TH DSA_generate_parameters 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_generate_parameters 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_get_ex_new_index.3 b/secure/lib/libcrypto/man/DSA_get_ex_new_index.3
index 13ebc02..69cc05d 100644
--- a/secure/lib/libcrypto/man/DSA_get_ex_new_index.3
+++ b/secure/lib/libcrypto/man/DSA_get_ex_new_index.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_get_ex_new_index 3"
-.TH DSA_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_get_ex_new_index 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_new.3 b/secure/lib/libcrypto/man/DSA_new.3
index 06f74c7..9d91fb2 100644
--- a/secure/lib/libcrypto/man/DSA_new.3
+++ b/secure/lib/libcrypto/man/DSA_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_new 3"
-.TH DSA_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_set_method.3 b/secure/lib/libcrypto/man/DSA_set_method.3
index fedd0a6..706ecf1 100644
--- a/secure/lib/libcrypto/man/DSA_set_method.3
+++ b/secure/lib/libcrypto/man/DSA_set_method.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_set_method 3"
-.TH DSA_set_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_set_method 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_sign.3 b/secure/lib/libcrypto/man/DSA_sign.3
index 7ca08c9..636dc2e 100644
--- a/secure/lib/libcrypto/man/DSA_sign.3
+++ b/secure/lib/libcrypto/man/DSA_sign.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_sign 3"
-.TH DSA_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_sign 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/DSA_size.3 b/secure/lib/libcrypto/man/DSA_size.3
index aed21f7..485cc77 100644
--- a/secure/lib/libcrypto/man/DSA_size.3
+++ b/secure/lib/libcrypto/man/DSA_size.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA_size 3"
-.TH DSA_size 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA_size 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_GET_LIB.3 b/secure/lib/libcrypto/man/ERR_GET_LIB.3
index fdac146..9b5ac95 100644
--- a/secure/lib/libcrypto/man/ERR_GET_LIB.3
+++ b/secure/lib/libcrypto/man/ERR_GET_LIB.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_GET_LIB 3"
-.TH ERR_GET_LIB 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_GET_LIB 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_clear_error.3 b/secure/lib/libcrypto/man/ERR_clear_error.3
index 85435a6..914086d 100644
--- a/secure/lib/libcrypto/man/ERR_clear_error.3
+++ b/secure/lib/libcrypto/man/ERR_clear_error.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_clear_error 3"
-.TH ERR_clear_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_clear_error 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_error_string.3 b/secure/lib/libcrypto/man/ERR_error_string.3
index 9c0588a..2899929 100644
--- a/secure/lib/libcrypto/man/ERR_error_string.3
+++ b/secure/lib/libcrypto/man/ERR_error_string.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_error_string 3"
-.TH ERR_error_string 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_error_string 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_get_error.3 b/secure/lib/libcrypto/man/ERR_get_error.3
index 75170e0..f6f85d7 100644
--- a/secure/lib/libcrypto/man/ERR_get_error.3
+++ b/secure/lib/libcrypto/man/ERR_get_error.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_get_error 3"
-.TH ERR_get_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_get_error 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_load_crypto_strings.3 b/secure/lib/libcrypto/man/ERR_load_crypto_strings.3
index dbcb632..4918d0c 100644
--- a/secure/lib/libcrypto/man/ERR_load_crypto_strings.3
+++ b/secure/lib/libcrypto/man/ERR_load_crypto_strings.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_load_crypto_strings 3"
-.TH ERR_load_crypto_strings 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_load_crypto_strings 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_load_strings.3 b/secure/lib/libcrypto/man/ERR_load_strings.3
index 1b2eb3c..08af931 100644
--- a/secure/lib/libcrypto/man/ERR_load_strings.3
+++ b/secure/lib/libcrypto/man/ERR_load_strings.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_load_strings 3"
-.TH ERR_load_strings 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_load_strings 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_print_errors.3 b/secure/lib/libcrypto/man/ERR_print_errors.3
index 193457b..d54345a 100644
--- a/secure/lib/libcrypto/man/ERR_print_errors.3
+++ b/secure/lib/libcrypto/man/ERR_print_errors.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_print_errors 3"
-.TH ERR_print_errors 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_print_errors 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_put_error.3 b/secure/lib/libcrypto/man/ERR_put_error.3
index cd84abf..37cc32f 100644
--- a/secure/lib/libcrypto/man/ERR_put_error.3
+++ b/secure/lib/libcrypto/man/ERR_put_error.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_put_error 3"
-.TH ERR_put_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_put_error 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_remove_state.3 b/secure/lib/libcrypto/man/ERR_remove_state.3
index 8ba7e8f..a0ece2b 100644
--- a/secure/lib/libcrypto/man/ERR_remove_state.3
+++ b/secure/lib/libcrypto/man/ERR_remove_state.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_remove_state 3"
-.TH ERR_remove_state 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_remove_state 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ERR_set_mark.3 b/secure/lib/libcrypto/man/ERR_set_mark.3
index 7463b6d..fada986 100644
--- a/secure/lib/libcrypto/man/ERR_set_mark.3
+++ b/secure/lib/libcrypto/man/ERR_set_mark.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERR_set_mark 3"
-.TH ERR_set_mark 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERR_set_mark 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_BytesToKey.3 b/secure/lib/libcrypto/man/EVP_BytesToKey.3
index 4347d14..20c608f 100644
--- a/secure/lib/libcrypto/man/EVP_BytesToKey.3
+++ b/secure/lib/libcrypto/man/EVP_BytesToKey.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_BytesToKey 3"
-.TH EVP_BytesToKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_BytesToKey 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_DigestInit.3 b/secure/lib/libcrypto/man/EVP_DigestInit.3
index 504a333..5df74cb 100644
--- a/secure/lib/libcrypto/man/EVP_DigestInit.3
+++ b/secure/lib/libcrypto/man/EVP_DigestInit.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_DigestInit 3"
-.TH EVP_DigestInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_DigestInit 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_DigestSignInit.3 b/secure/lib/libcrypto/man/EVP_DigestSignInit.3
index f1343f4..4cf71d5 100644
--- a/secure/lib/libcrypto/man/EVP_DigestSignInit.3
+++ b/secure/lib/libcrypto/man/EVP_DigestSignInit.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_DigestSignInit 3"
-.TH EVP_DigestSignInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_DigestSignInit 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3 b/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3
index bd21874..dfae90f 100644
--- a/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3
+++ b/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_DigestVerifyInit 3"
-.TH EVP_DigestVerifyInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_DigestVerifyInit 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_EncryptInit.3 b/secure/lib/libcrypto/man/EVP_EncryptInit.3
index 9fd9b0a..e8826f5 100644
--- a/secure/lib/libcrypto/man/EVP_EncryptInit.3
+++ b/secure/lib/libcrypto/man/EVP_EncryptInit.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_EncryptInit 3"
-.TH EVP_EncryptInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_EncryptInit 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_OpenInit.3 b/secure/lib/libcrypto/man/EVP_OpenInit.3
index 52131a8..1e2695e 100644
--- a/secure/lib/libcrypto/man/EVP_OpenInit.3
+++ b/secure/lib/libcrypto/man/EVP_OpenInit.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_OpenInit 3"
-.TH EVP_OpenInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_OpenInit 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 b/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
index e5adbc4..aaf6c8e 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_CTX_ctrl 3"
-.TH EVP_PKEY_CTX_ctrl 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_CTX_ctrl 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3 b/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3
index 195eb9c..639ed76 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_CTX_new 3"
-.TH EVP_PKEY_CTX_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_CTX_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_cmp.3 b/secure/lib/libcrypto/man/EVP_PKEY_cmp.3
index e682a2f..958a3d8 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_cmp.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_cmp.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_cmp 3"
-.TH EVP_PKEY_cmp 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_cmp 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3 b/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3
index 2f0417e..bf3d420 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_decrypt 3"
-.TH EVP_PKEY_decrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_decrypt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_derive.3 b/secure/lib/libcrypto/man/EVP_PKEY_derive.3
index 5cf79de..68ddbbb 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_derive.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_derive.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_derive 3"
-.TH EVP_PKEY_derive 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_derive 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3 b/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3
index 68147e7..be44f10 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_encrypt 3"
-.TH EVP_PKEY_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_encrypt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3 b/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3
index e031952..33be108 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_get_default_digest 3"
-.TH EVP_PKEY_get_default_digest 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_get_default_digest 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_keygen.3 b/secure/lib/libcrypto/man/EVP_PKEY_keygen.3
index f526733..1c4daf9 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_keygen.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_keygen.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_keygen 3"
-.TH EVP_PKEY_keygen 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_keygen 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_new.3 b/secure/lib/libcrypto/man/EVP_PKEY_new.3
index 2a3f66b3..ab0c7d9 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_new.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_new 3"
-.TH EVP_PKEY_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_print_private.3 b/secure/lib/libcrypto/man/EVP_PKEY_print_private.3
index 5ca0af9..4adde36 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_print_private.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_print_private.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_print_private 3"
-.TH EVP_PKEY_print_private 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_print_private 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 b/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3
index b0edc22..890d124 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_set1_RSA 3"
-.TH EVP_PKEY_set1_RSA 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_set1_RSA 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_sign.3 b/secure/lib/libcrypto/man/EVP_PKEY_sign.3
index 8244cab..d3611e0 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_sign.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_sign.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_sign 3"
-.TH EVP_PKEY_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_sign 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_verify.3 b/secure/lib/libcrypto/man/EVP_PKEY_verify.3
index e0ec309..09c8d6a 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_verify.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_verify.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_verify 3"
-.TH EVP_PKEY_verify 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_verify 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 b/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3
index 8ff8081..940d0a2 100644
--- a/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3
+++ b/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_PKEY_verify_recover 3"
-.TH EVP_PKEY_verify_recover 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_PKEY_verify_recover 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_SealInit.3 b/secure/lib/libcrypto/man/EVP_SealInit.3
index c8e68ef..e57d788 100644
--- a/secure/lib/libcrypto/man/EVP_SealInit.3
+++ b/secure/lib/libcrypto/man/EVP_SealInit.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_SealInit 3"
-.TH EVP_SealInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_SealInit 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_SignInit.3 b/secure/lib/libcrypto/man/EVP_SignInit.3
index 767a298..7aed114 100644
--- a/secure/lib/libcrypto/man/EVP_SignInit.3
+++ b/secure/lib/libcrypto/man/EVP_SignInit.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_SignInit 3"
-.TH EVP_SignInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_SignInit 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/EVP_VerifyInit.3 b/secure/lib/libcrypto/man/EVP_VerifyInit.3
index a7aee83..b9ce446 100644
--- a/secure/lib/libcrypto/man/EVP_VerifyInit.3
+++ b/secure/lib/libcrypto/man/EVP_VerifyInit.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EVP_VerifyInit 3"
-.TH EVP_VerifyInit 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EVP_VerifyInit 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OBJ_nid2obj.3 b/secure/lib/libcrypto/man/OBJ_nid2obj.3
index 5d6e94b..31fe94d 100644
--- a/secure/lib/libcrypto/man/OBJ_nid2obj.3
+++ b/secure/lib/libcrypto/man/OBJ_nid2obj.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OBJ_nid2obj 3"
-.TH OBJ_nid2obj 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH OBJ_nid2obj 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_Applink.3 b/secure/lib/libcrypto/man/OPENSSL_Applink.3
index 1df9211..78f7f38 100644
--- a/secure/lib/libcrypto/man/OPENSSL_Applink.3
+++ b/secure/lib/libcrypto/man/OPENSSL_Applink.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_Applink 3"
-.TH OPENSSL_Applink 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH OPENSSL_Applink 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 b/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3
index 286a252..7db1044 100644
--- a/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3
+++ b/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_VERSION_NUMBER 3"
-.TH OPENSSL_VERSION_NUMBER 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH OPENSSL_VERSION_NUMBER 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_config.3 b/secure/lib/libcrypto/man/OPENSSL_config.3
index 4607b68..f34f3e8 100644
--- a/secure/lib/libcrypto/man/OPENSSL_config.3
+++ b/secure/lib/libcrypto/man/OPENSSL_config.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_config 3"
-.TH OPENSSL_config 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH OPENSSL_config 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_ia32cap.3 b/secure/lib/libcrypto/man/OPENSSL_ia32cap.3
index 48ae666..0e8972d 100644
--- a/secure/lib/libcrypto/man/OPENSSL_ia32cap.3
+++ b/secure/lib/libcrypto/man/OPENSSL_ia32cap.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_ia32cap 3"
-.TH OPENSSL_ia32cap 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH OPENSSL_ia32cap 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 b/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3
index de81330..fa0a058 100644
--- a/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3
+++ b/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL_load_builtin_modules 3"
-.TH OPENSSL_load_builtin_modules 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH OPENSSL_load_builtin_modules 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 b/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3
index 2572458..9e88ee9 100644
--- a/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3
+++ b/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OpenSSL_add_all_algorithms 3"
-.TH OpenSSL_add_all_algorithms 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH OpenSSL_add_all_algorithms 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3 b/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3
index 27a8f54..abc2345 100644
--- a/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3
+++ b/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PEM_write_bio_CMS_stream 3"
-.TH PEM_write_bio_CMS_stream 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PEM_write_bio_CMS_stream 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 b/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3
index 1ed5b5c..f186dba 100644
--- a/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3
+++ b/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PEM_write_bio_PKCS7_stream 3"
-.TH PEM_write_bio_PKCS7_stream 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PEM_write_bio_PKCS7_stream 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS12_create.3 b/secure/lib/libcrypto/man/PKCS12_create.3
index 56e630b..5b45b6e 100644
--- a/secure/lib/libcrypto/man/PKCS12_create.3
+++ b/secure/lib/libcrypto/man/PKCS12_create.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS12_create 3"
-.TH PKCS12_create 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS12_create 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS12_parse.3 b/secure/lib/libcrypto/man/PKCS12_parse.3
index f3d8afb..4ce2f26 100644
--- a/secure/lib/libcrypto/man/PKCS12_parse.3
+++ b/secure/lib/libcrypto/man/PKCS12_parse.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS12_parse 3"
-.TH PKCS12_parse 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS12_parse 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_decrypt.3 b/secure/lib/libcrypto/man/PKCS7_decrypt.3
index f7ad34e..479feb3 100644
--- a/secure/lib/libcrypto/man/PKCS7_decrypt.3
+++ b/secure/lib/libcrypto/man/PKCS7_decrypt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_decrypt 3"
-.TH PKCS7_decrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS7_decrypt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_encrypt.3 b/secure/lib/libcrypto/man/PKCS7_encrypt.3
index 2514a44..24b0089 100644
--- a/secure/lib/libcrypto/man/PKCS7_encrypt.3
+++ b/secure/lib/libcrypto/man/PKCS7_encrypt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_encrypt 3"
-.TH PKCS7_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS7_encrypt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_sign.3 b/secure/lib/libcrypto/man/PKCS7_sign.3
index 9ed3d28..4a2b7ce 100644
--- a/secure/lib/libcrypto/man/PKCS7_sign.3
+++ b/secure/lib/libcrypto/man/PKCS7_sign.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_sign 3"
-.TH PKCS7_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS7_sign 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3 b/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3
index f566b9e..80205d5 100644
--- a/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3
+++ b/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_sign_add_signer 3"
-.TH PKCS7_sign_add_signer 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS7_sign_add_signer 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/PKCS7_verify.3 b/secure/lib/libcrypto/man/PKCS7_verify.3
index 0cf3476..1bb8146 100644
--- a/secure/lib/libcrypto/man/PKCS7_verify.3
+++ b/secure/lib/libcrypto/man/PKCS7_verify.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7_verify 3"
-.TH PKCS7_verify 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS7_verify 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_add.3 b/secure/lib/libcrypto/man/RAND_add.3
index 154c415..21c5869 100644
--- a/secure/lib/libcrypto/man/RAND_add.3
+++ b/secure/lib/libcrypto/man/RAND_add.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_add 3"
-.TH RAND_add 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RAND_add 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_bytes.3 b/secure/lib/libcrypto/man/RAND_bytes.3
index 11f7f0a..de043c1 100644
--- a/secure/lib/libcrypto/man/RAND_bytes.3
+++ b/secure/lib/libcrypto/man/RAND_bytes.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_bytes 3"
-.TH RAND_bytes 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RAND_bytes 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_cleanup.3 b/secure/lib/libcrypto/man/RAND_cleanup.3
index 2c9605c..d562b9d 100644
--- a/secure/lib/libcrypto/man/RAND_cleanup.3
+++ b/secure/lib/libcrypto/man/RAND_cleanup.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_cleanup 3"
-.TH RAND_cleanup 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RAND_cleanup 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_egd.3 b/secure/lib/libcrypto/man/RAND_egd.3
index 1ad9659..b6e027c 100644
--- a/secure/lib/libcrypto/man/RAND_egd.3
+++ b/secure/lib/libcrypto/man/RAND_egd.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_egd 3"
-.TH RAND_egd 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RAND_egd 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_load_file.3 b/secure/lib/libcrypto/man/RAND_load_file.3
index 72684da..6d55b96 100644
--- a/secure/lib/libcrypto/man/RAND_load_file.3
+++ b/secure/lib/libcrypto/man/RAND_load_file.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_load_file 3"
-.TH RAND_load_file 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RAND_load_file 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RAND_set_rand_method.3 b/secure/lib/libcrypto/man/RAND_set_rand_method.3
index 833704d..df6118b 100644
--- a/secure/lib/libcrypto/man/RAND_set_rand_method.3
+++ b/secure/lib/libcrypto/man/RAND_set_rand_method.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND_set_rand_method 3"
-.TH RAND_set_rand_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RAND_set_rand_method 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_blinding_on.3 b/secure/lib/libcrypto/man/RSA_blinding_on.3
index 596073e..3d65308 100644
--- a/secure/lib/libcrypto/man/RSA_blinding_on.3
+++ b/secure/lib/libcrypto/man/RSA_blinding_on.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_blinding_on 3"
-.TH RSA_blinding_on 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_blinding_on 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_check_key.3 b/secure/lib/libcrypto/man/RSA_check_key.3
index f18ef96..2e36c74 100644
--- a/secure/lib/libcrypto/man/RSA_check_key.3
+++ b/secure/lib/libcrypto/man/RSA_check_key.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_check_key 3"
-.TH RSA_check_key 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_check_key 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_generate_key.3 b/secure/lib/libcrypto/man/RSA_generate_key.3
index 1150ba2..0425128 100644
--- a/secure/lib/libcrypto/man/RSA_generate_key.3
+++ b/secure/lib/libcrypto/man/RSA_generate_key.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_generate_key 3"
-.TH RSA_generate_key 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_generate_key 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_get_ex_new_index.3 b/secure/lib/libcrypto/man/RSA_get_ex_new_index.3
index a670327..954791d 100644
--- a/secure/lib/libcrypto/man/RSA_get_ex_new_index.3
+++ b/secure/lib/libcrypto/man/RSA_get_ex_new_index.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_get_ex_new_index 3"
-.TH RSA_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_get_ex_new_index 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_new.3 b/secure/lib/libcrypto/man/RSA_new.3
index 369d485..550f94c 100644
--- a/secure/lib/libcrypto/man/RSA_new.3
+++ b/secure/lib/libcrypto/man/RSA_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_new 3"
-.TH RSA_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 b/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3
index 1dd2e33..c273008 100644
--- a/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3
+++ b/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_padding_add_PKCS1_type_1 3"
-.TH RSA_padding_add_PKCS1_type_1 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_padding_add_PKCS1_type_1 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_print.3 b/secure/lib/libcrypto/man/RSA_print.3
index 102df9b..d6a198c 100644
--- a/secure/lib/libcrypto/man/RSA_print.3
+++ b/secure/lib/libcrypto/man/RSA_print.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_print 3"
-.TH RSA_print 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_print 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_private_encrypt.3 b/secure/lib/libcrypto/man/RSA_private_encrypt.3
index 29eaba8..f2f2989 100644
--- a/secure/lib/libcrypto/man/RSA_private_encrypt.3
+++ b/secure/lib/libcrypto/man/RSA_private_encrypt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_private_encrypt 3"
-.TH RSA_private_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_private_encrypt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_public_encrypt.3 b/secure/lib/libcrypto/man/RSA_public_encrypt.3
index e67ae35a..864ecd5 100644
--- a/secure/lib/libcrypto/man/RSA_public_encrypt.3
+++ b/secure/lib/libcrypto/man/RSA_public_encrypt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_public_encrypt 3"
-.TH RSA_public_encrypt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_public_encrypt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_set_method.3 b/secure/lib/libcrypto/man/RSA_set_method.3
index 4729751..c2e11c4 100644
--- a/secure/lib/libcrypto/man/RSA_set_method.3
+++ b/secure/lib/libcrypto/man/RSA_set_method.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_set_method 3"
-.TH RSA_set_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_set_method 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_sign.3 b/secure/lib/libcrypto/man/RSA_sign.3
index 0b1958a..2f0c11a 100644
--- a/secure/lib/libcrypto/man/RSA_sign.3
+++ b/secure/lib/libcrypto/man/RSA_sign.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_sign 3"
-.TH RSA_sign 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_sign 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 b/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3
index 6edefc6..d175c0f 100644
--- a/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3
+++ b/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_sign_ASN1_OCTET_STRING 3"
-.TH RSA_sign_ASN1_OCTET_STRING 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_sign_ASN1_OCTET_STRING 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/RSA_size.3 b/secure/lib/libcrypto/man/RSA_size.3
index 7818195..6085268 100644
--- a/secure/lib/libcrypto/man/RSA_size.3
+++ b/secure/lib/libcrypto/man/RSA_size.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA_size 3"
-.TH RSA_size 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA_size 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/SMIME_read_CMS.3 b/secure/lib/libcrypto/man/SMIME_read_CMS.3
index 52a8d11..fa5c996 100644
--- a/secure/lib/libcrypto/man/SMIME_read_CMS.3
+++ b/secure/lib/libcrypto/man/SMIME_read_CMS.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME_read_CMS 3"
-.TH SMIME_read_CMS 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SMIME_read_CMS 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/SMIME_read_PKCS7.3 b/secure/lib/libcrypto/man/SMIME_read_PKCS7.3
index b4a4f10..420a504 100644
--- a/secure/lib/libcrypto/man/SMIME_read_PKCS7.3
+++ b/secure/lib/libcrypto/man/SMIME_read_PKCS7.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME_read_PKCS7 3"
-.TH SMIME_read_PKCS7 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SMIME_read_PKCS7 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/SMIME_write_CMS.3 b/secure/lib/libcrypto/man/SMIME_write_CMS.3
index c09066f..da2c50d 100644
--- a/secure/lib/libcrypto/man/SMIME_write_CMS.3
+++ b/secure/lib/libcrypto/man/SMIME_write_CMS.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME_write_CMS 3"
-.TH SMIME_write_CMS 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SMIME_write_CMS 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/SMIME_write_PKCS7.3 b/secure/lib/libcrypto/man/SMIME_write_PKCS7.3
index 3eb753e..20b0716 100644
--- a/secure/lib/libcrypto/man/SMIME_write_PKCS7.3
+++ b/secure/lib/libcrypto/man/SMIME_write_PKCS7.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME_write_PKCS7 3"
-.TH SMIME_write_PKCS7 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SMIME_write_PKCS7 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 b/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3
index cfbc283..6ebeaf2 100644
--- a/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3
+++ b/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_NAME_ENTRY_get_object 3"
-.TH X509_NAME_ENTRY_get_object 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_NAME_ENTRY_get_object 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 b/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3
index 394138b..208b598 100644
--- a/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3
+++ b/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_NAME_add_entry_by_txt 3"
-.TH X509_NAME_add_entry_by_txt 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_NAME_add_entry_by_txt 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 b/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3
index 5c10c9f..5c598f8 100644
--- a/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3
+++ b/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_NAME_get_index_by_NID 3"
-.TH X509_NAME_get_index_by_NID 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_NAME_get_index_by_NID 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -166,6 +166,7 @@ and issuer names.
\&\fIX509_NAME_get_index_by_NID()\fR and \fIX509_NAME_get_index_by_OBJ()\fR retrieve
the next index matching \fBnid\fR or \fBobj\fR after \fBlastpos\fR. \fBlastpos\fR
should initially be set to \-1. If there are no more entries \-1 is returned.
+If \fBnid\fR is invalid (doesn't correspond to a valid \s-1OID\s0) then \-2 is returned.
.PP
\&\fIX509_NAME_entry_count()\fR returns the total number of entries in \fBname\fR.
.PP
@@ -198,6 +199,10 @@ various \fBX509_NAME_ENTRY\fR utility functions on the result.
The list of all relevant \fBNID_*\fR and \fBOBJ_* codes\fR can be found in
the source code header files <openssl/obj_mac.h> and/or
<openssl/objects.h>.
+.PP
+Applications which could pass invalid NIDs to \fIX509_NAME_get_index_by_NID()\fR
+should check for the return value of \-2. Alternatively the \s-1NID\s0 validity
+can be determined first by checking OBJ_nid2obj(nid) is not \s-1NULL.\s0
.SH "EXAMPLES"
.IX Header "EXAMPLES"
Process all entries:
@@ -233,6 +238,8 @@ Process all commonName entries:
.IX Header "RETURN VALUES"
\&\fIX509_NAME_get_index_by_NID()\fR and \fIX509_NAME_get_index_by_OBJ()\fR
return the index of the next matching entry or \-1 if not found.
+\&\fIX509_NAME_get_index_by_NID()\fR can also return \-2 if the supplied
+\&\s-1NID\s0 is invalid.
.PP
\&\fIX509_NAME_entry_count()\fR returns the total number of entries.
.PP
diff --git a/secure/lib/libcrypto/man/X509_NAME_print_ex.3 b/secure/lib/libcrypto/man/X509_NAME_print_ex.3
index 596d213..10fdfb6 100644
--- a/secure/lib/libcrypto/man/X509_NAME_print_ex.3
+++ b/secure/lib/libcrypto/man/X509_NAME_print_ex.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_NAME_print_ex 3"
-.TH X509_NAME_print_ex 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_NAME_print_ex 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3 b/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3
index 1fb0090..cd437af 100644
--- a/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3
+++ b/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_CTX_get_error 3"
-.TH X509_STORE_CTX_get_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_STORE_CTX_get_error 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3 b/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3
index f1603c9..dbfc8f6 100644
--- a/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3
+++ b/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_CTX_get_ex_new_index 3"
-.TH X509_STORE_CTX_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_STORE_CTX_get_ex_new_index 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_new.3 b/secure/lib/libcrypto/man/X509_STORE_CTX_new.3
index fea612b..25cedf2 100644
--- a/secure/lib/libcrypto/man/X509_STORE_CTX_new.3
+++ b/secure/lib/libcrypto/man/X509_STORE_CTX_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_CTX_new 3"
-.TH X509_STORE_CTX_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_STORE_CTX_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -176,10 +176,15 @@ The context can then be reused with an new call to \fIX509_STORE_CTX_init()\fR.
is no longer valid.
.PP
\&\fIX509_STORE_CTX_init()\fR sets up \fBctx\fR for a subsequent verification operation.
-The trusted certificate store is set to \fBstore\fR, the end entity certificate
-to be verified is set to \fBx509\fR and a set of additional certificates (which
-will be untrusted but may be used to build the chain) in \fBchain\fR. Any or
-all of the \fBstore\fR, \fBx509\fR and \fBchain\fR parameters can be \fB\s-1NULL\s0\fR.
+It must be called before each call to \fIX509_verify_cert()\fR, i.e. a \fBctx\fR is only
+good for one call to \fIX509_verify_cert()\fR; if you want to verify a second
+certificate with the same \fBctx\fR then you must call \fIX509_XTORE_CTX_cleanup()\fR
+and then \fIX509_STORE_CTX_init()\fR again before the second call to
+\&\fIX509_verify_cert()\fR. The trusted certificate store is set to \fBstore\fR, the end
+entity certificate to be verified is set to \fBx509\fR and a set of additional
+certificates (which will be untrusted but may be used to build the chain) in
+\&\fBchain\fR. Any or all of the \fBstore\fR, \fBx509\fR and \fBchain\fR parameters can be
+\&\fB\s-1NULL\s0\fR.
.PP
\&\fIX509_STORE_CTX_trusted_stack()\fR sets the set of trusted certificates of \fBctx\fR
to \fBsk\fR. This is an alternative way of specifying trusted certificates
diff --git a/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3 b/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3
index 3c49c71..54e9db6 100644
--- a/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3
+++ b/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_CTX_set_verify_cb 3"
-.TH X509_STORE_CTX_set_verify_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_STORE_CTX_set_verify_cb 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3 b/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3
index 6a3e736..9586a18 100644
--- a/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3
+++ b/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_STORE_set_verify_cb_func 3"
-.TH X509_STORE_set_verify_cb_func 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_STORE_set_verify_cb_func 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3 b/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3
index d19f288..f08c9bc 100644
--- a/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3
+++ b/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_VERIFY_PARAM_set_flags 3"
-.TH X509_VERIFY_PARAM_set_flags 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_VERIFY_PARAM_set_flags 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_new.3 b/secure/lib/libcrypto/man/X509_new.3
index aa187ba..587b861 100644
--- a/secure/lib/libcrypto/man/X509_new.3
+++ b/secure/lib/libcrypto/man/X509_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_new 3"
-.TH X509_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/X509_verify_cert.3 b/secure/lib/libcrypto/man/X509_verify_cert.3
index 42d1d87..6250339 100644
--- a/secure/lib/libcrypto/man/X509_verify_cert.3
+++ b/secure/lib/libcrypto/man/X509_verify_cert.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509_verify_cert 3"
-.TH X509_verify_cert 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509_verify_cert 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -167,7 +167,8 @@ OpenSSL internally for certificate validation, in both the S/MIME and
\&\s-1SSL/TLS\s0 code.
.PP
The negative return value from \fIX509_verify_cert()\fR can only occur if no
-certificate is set in \fBctx\fR (due to a programming error) or if a retry
+certificate is set in \fBctx\fR (due to a programming error); if \fIX509_verify_cert()\fR
+twice without reinitialising \fBctx\fR in between; or if a retry
operation is requested during internal lookups (which never happens with
standard lookup methods). It is however recommended that application check
for <= 0 return value on error.
diff --git a/secure/lib/libcrypto/man/bio.3 b/secure/lib/libcrypto/man/bio.3
index ce2396d..18288c4 100644
--- a/secure/lib/libcrypto/man/bio.3
+++ b/secure/lib/libcrypto/man/bio.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "bio 3"
-.TH bio 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH bio 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/blowfish.3 b/secure/lib/libcrypto/man/blowfish.3
index ccd2c6f..738c2b8 100644
--- a/secure/lib/libcrypto/man/blowfish.3
+++ b/secure/lib/libcrypto/man/blowfish.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "blowfish 3"
-.TH blowfish 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH blowfish 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/bn.3 b/secure/lib/libcrypto/man/bn.3
index 01b6820..441b944 100644
--- a/secure/lib/libcrypto/man/bn.3
+++ b/secure/lib/libcrypto/man/bn.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "bn 3"
-.TH bn 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH bn 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/bn_internal.3 b/secure/lib/libcrypto/man/bn_internal.3
index 4701ad9..83afdda 100644
--- a/secure/lib/libcrypto/man/bn_internal.3
+++ b/secure/lib/libcrypto/man/bn_internal.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "bn_internal 3"
-.TH bn_internal 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH bn_internal 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/buffer.3 b/secure/lib/libcrypto/man/buffer.3
index 995d3e9..8cd00a8 100644
--- a/secure/lib/libcrypto/man/buffer.3
+++ b/secure/lib/libcrypto/man/buffer.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "buffer 3"
-.TH buffer 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH buffer 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/crypto.3 b/secure/lib/libcrypto/man/crypto.3
index 998891d..53e9f5b 100644
--- a/secure/lib/libcrypto/man/crypto.3
+++ b/secure/lib/libcrypto/man/crypto.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "crypto 3"
-.TH crypto 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH crypto 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3 b/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3
index d4e49c9..aaf5154 100644
--- a/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3
+++ b/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_ASN1_OBJECT 3"
-.TH d2i_ASN1_OBJECT 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_ASN1_OBJECT 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3 b/secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3
index 2818e82..d2b17cf 100644
--- a/secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3
+++ b/secure/lib/libcrypto/man/d2i_CMS_ContentInfo.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_CMS_ContentInfo 3"
-.TH d2i_CMS_ContentInfo 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_CMS_ContentInfo 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_DHparams.3 b/secure/lib/libcrypto/man/d2i_DHparams.3
index 6b44a33..67e8d7b 100644
--- a/secure/lib/libcrypto/man/d2i_DHparams.3
+++ b/secure/lib/libcrypto/man/d2i_DHparams.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_DHparams 3"
-.TH d2i_DHparams 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_DHparams 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_DSAPublicKey.3 b/secure/lib/libcrypto/man/d2i_DSAPublicKey.3
index 8fb4f42..0455f59 100644
--- a/secure/lib/libcrypto/man/d2i_DSAPublicKey.3
+++ b/secure/lib/libcrypto/man/d2i_DSAPublicKey.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_DSAPublicKey 3"
-.TH d2i_DSAPublicKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_DSAPublicKey 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_ECPrivateKey.3 b/secure/lib/libcrypto/man/d2i_ECPrivateKey.3
index 431e7e0..f6161ef 100644
--- a/secure/lib/libcrypto/man/d2i_ECPrivateKey.3
+++ b/secure/lib/libcrypto/man/d2i_ECPrivateKey.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_ECPrivateKey 3"
-.TH d2i_ECPrivateKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_ECPrivateKey 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3 b/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3
index 91d4936..91eb895 100644
--- a/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3
+++ b/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_PKCS8PrivateKey 3"
-.TH d2i_PKCS8PrivateKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_PKCS8PrivateKey 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_RSAPublicKey.3 b/secure/lib/libcrypto/man/d2i_RSAPublicKey.3
index 519d9d1..839512a 100644
--- a/secure/lib/libcrypto/man/d2i_RSAPublicKey.3
+++ b/secure/lib/libcrypto/man/d2i_RSAPublicKey.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_RSAPublicKey 3"
-.TH d2i_RSAPublicKey 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_RSAPublicKey 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509.3 b/secure/lib/libcrypto/man/d2i_X509.3
index 8f13b46..fc2a852 100644
--- a/secure/lib/libcrypto/man/d2i_X509.3
+++ b/secure/lib/libcrypto/man/d2i_X509.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509 3"
-.TH d2i_X509 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_X509 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_ALGOR.3 b/secure/lib/libcrypto/man/d2i_X509_ALGOR.3
index b83b0af..d369ab3 100644
--- a/secure/lib/libcrypto/man/d2i_X509_ALGOR.3
+++ b/secure/lib/libcrypto/man/d2i_X509_ALGOR.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_ALGOR 3"
-.TH d2i_X509_ALGOR 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_X509_ALGOR 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_CRL.3 b/secure/lib/libcrypto/man/d2i_X509_CRL.3
index fc02264..f30cdda 100644
--- a/secure/lib/libcrypto/man/d2i_X509_CRL.3
+++ b/secure/lib/libcrypto/man/d2i_X509_CRL.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_CRL 3"
-.TH d2i_X509_CRL 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_X509_CRL 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_NAME.3 b/secure/lib/libcrypto/man/d2i_X509_NAME.3
index 1d953f2..87e1348 100644
--- a/secure/lib/libcrypto/man/d2i_X509_NAME.3
+++ b/secure/lib/libcrypto/man/d2i_X509_NAME.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_NAME 3"
-.TH d2i_X509_NAME 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_X509_NAME 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_REQ.3 b/secure/lib/libcrypto/man/d2i_X509_REQ.3
index ede040a..e2ac57f 100644
--- a/secure/lib/libcrypto/man/d2i_X509_REQ.3
+++ b/secure/lib/libcrypto/man/d2i_X509_REQ.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_REQ 3"
-.TH d2i_X509_REQ 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_X509_REQ 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/d2i_X509_SIG.3 b/secure/lib/libcrypto/man/d2i_X509_SIG.3
index 4afe19b..026826e 100644
--- a/secure/lib/libcrypto/man/d2i_X509_SIG.3
+++ b/secure/lib/libcrypto/man/d2i_X509_SIG.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_X509_SIG 3"
-.TH d2i_X509_SIG 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_X509_SIG 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/des.3 b/secure/lib/libcrypto/man/des.3
index eb704b4..35d8d29 100644
--- a/secure/lib/libcrypto/man/des.3
+++ b/secure/lib/libcrypto/man/des.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "des 3"
-.TH des 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH des 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/dh.3 b/secure/lib/libcrypto/man/dh.3
index 659fd6b..4d3dcbd 100644
--- a/secure/lib/libcrypto/man/dh.3
+++ b/secure/lib/libcrypto/man/dh.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "dh 3"
-.TH dh 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH dh 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/dsa.3 b/secure/lib/libcrypto/man/dsa.3
index 1a723b2..d7e540d 100644
--- a/secure/lib/libcrypto/man/dsa.3
+++ b/secure/lib/libcrypto/man/dsa.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "dsa 3"
-.TH dsa 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH dsa 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ecdsa.3 b/secure/lib/libcrypto/man/ecdsa.3
index 1d978e4..7594d5f 100644
--- a/secure/lib/libcrypto/man/ecdsa.3
+++ b/secure/lib/libcrypto/man/ecdsa.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ecdsa 3"
-.TH ecdsa 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ecdsa 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/engine.3 b/secure/lib/libcrypto/man/engine.3
index f7f4ef1..9896b6c 100644
--- a/secure/lib/libcrypto/man/engine.3
+++ b/secure/lib/libcrypto/man/engine.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "engine 3"
-.TH engine 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH engine 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/err.3 b/secure/lib/libcrypto/man/err.3
index a825444..66210ae 100644
--- a/secure/lib/libcrypto/man/err.3
+++ b/secure/lib/libcrypto/man/err.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "err 3"
-.TH err 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH err 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/evp.3 b/secure/lib/libcrypto/man/evp.3
index 8de15fc..a7cb86a 100644
--- a/secure/lib/libcrypto/man/evp.3
+++ b/secure/lib/libcrypto/man/evp.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "evp 3"
-.TH evp 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH evp 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/hmac.3 b/secure/lib/libcrypto/man/hmac.3
index a57a3bc..8f5c458 100644
--- a/secure/lib/libcrypto/man/hmac.3
+++ b/secure/lib/libcrypto/man/hmac.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "hmac 3"
-.TH hmac 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH hmac 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3 b/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3
index 14cfb92..93b49c1 100644
--- a/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3
+++ b/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "i2d_CMS_bio_stream 3"
-.TH i2d_CMS_bio_stream 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH i2d_CMS_bio_stream 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 b/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3
index 512c300..fd07c3b 100644
--- a/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3
+++ b/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "i2d_PKCS7_bio_stream 3"
-.TH i2d_PKCS7_bio_stream 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH i2d_PKCS7_bio_stream 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/lh_stats.3 b/secure/lib/libcrypto/man/lh_stats.3
index 9b367be..cf28f33 100644
--- a/secure/lib/libcrypto/man/lh_stats.3
+++ b/secure/lib/libcrypto/man/lh_stats.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "lh_stats 3"
-.TH lh_stats 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH lh_stats 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/lhash.3 b/secure/lib/libcrypto/man/lhash.3
index 734de5a..055a248 100644
--- a/secure/lib/libcrypto/man/lhash.3
+++ b/secure/lib/libcrypto/man/lhash.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "lhash 3"
-.TH lhash 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH lhash 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/md5.3 b/secure/lib/libcrypto/man/md5.3
index 045fca3..3c43627 100644
--- a/secure/lib/libcrypto/man/md5.3
+++ b/secure/lib/libcrypto/man/md5.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "md5 3"
-.TH md5 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH md5 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/mdc2.3 b/secure/lib/libcrypto/man/mdc2.3
index 51ff478..183793a 100644
--- a/secure/lib/libcrypto/man/mdc2.3
+++ b/secure/lib/libcrypto/man/mdc2.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "mdc2 3"
-.TH mdc2 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH mdc2 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/pem.3 b/secure/lib/libcrypto/man/pem.3
index 36d9f3b..2e03f31 100644
--- a/secure/lib/libcrypto/man/pem.3
+++ b/secure/lib/libcrypto/man/pem.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "pem 3"
-.TH pem 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH pem 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/rand.3 b/secure/lib/libcrypto/man/rand.3
index c7e7897..9445f4b 100644
--- a/secure/lib/libcrypto/man/rand.3
+++ b/secure/lib/libcrypto/man/rand.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "rand 3"
-.TH rand 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH rand 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/rc4.3 b/secure/lib/libcrypto/man/rc4.3
index b6db734..c9987df 100644
--- a/secure/lib/libcrypto/man/rc4.3
+++ b/secure/lib/libcrypto/man/rc4.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "rc4 3"
-.TH rc4 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH rc4 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ripemd.3 b/secure/lib/libcrypto/man/ripemd.3
index 4475985..b2c6443 100644
--- a/secure/lib/libcrypto/man/ripemd.3
+++ b/secure/lib/libcrypto/man/ripemd.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ripemd 3"
-.TH ripemd 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ripemd 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/rsa.3 b/secure/lib/libcrypto/man/rsa.3
index 5028f95..11a364c 100644
--- a/secure/lib/libcrypto/man/rsa.3
+++ b/secure/lib/libcrypto/man/rsa.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "rsa 3"
-.TH rsa 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH rsa 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/sha.3 b/secure/lib/libcrypto/man/sha.3
index 5b54c81..dbaf4e8 100644
--- a/secure/lib/libcrypto/man/sha.3
+++ b/secure/lib/libcrypto/man/sha.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "sha 3"
-.TH sha 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH sha 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/threads.3 b/secure/lib/libcrypto/man/threads.3
index 05ffc9d..07e763e 100644
--- a/secure/lib/libcrypto/man/threads.3
+++ b/secure/lib/libcrypto/man/threads.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "threads 3"
-.TH threads 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH threads 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ui.3 b/secure/lib/libcrypto/man/ui.3
index 4845afd..5d98570 100644
--- a/secure/lib/libcrypto/man/ui.3
+++ b/secure/lib/libcrypto/man/ui.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ui 3"
-.TH ui 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ui 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/ui_compat.3 b/secure/lib/libcrypto/man/ui_compat.3
index 69ee06f..15894d5 100644
--- a/secure/lib/libcrypto/man/ui_compat.3
+++ b/secure/lib/libcrypto/man/ui_compat.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ui_compat 3"
-.TH ui_compat 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ui_compat 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libcrypto/man/x509.3 b/secure/lib/libcrypto/man/x509.3
index 83911c7..7cbfada 100644
--- a/secure/lib/libcrypto/man/x509.3
+++ b/secure/lib/libcrypto/man/x509.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "x509 3"
-.TH x509 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH x509 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CIPHER_get_name.3 b/secure/lib/libssl/man/SSL_CIPHER_get_name.3
index e4779fc..db90114 100644
--- a/secure/lib/libssl/man/SSL_CIPHER_get_name.3
+++ b/secure/lib/libssl/man/SSL_CIPHER_get_name.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CIPHER_get_name 3"
-.TH SSL_CIPHER_get_name 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CIPHER_get_name 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_COMP_add_compression_method.3 b/secure/lib/libssl/man/SSL_COMP_add_compression_method.3
index 3bd7acf..d8b4a76 100644
--- a/secure/lib/libssl/man/SSL_COMP_add_compression_method.3
+++ b/secure/lib/libssl/man/SSL_COMP_add_compression_method.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_COMP_add_compression_method 3"
-.TH SSL_COMP_add_compression_method 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_COMP_add_compression_method 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3 b/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3
index c044866..aba4756 100644
--- a/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3
+++ b/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_add_extra_chain_cert 3"
-.TH SSL_CTX_add_extra_chain_cert 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_add_extra_chain_cert 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_add_session.3 b/secure/lib/libssl/man/SSL_CTX_add_session.3
index b6efc34..5215c74 100644
--- a/secure/lib/libssl/man/SSL_CTX_add_session.3
+++ b/secure/lib/libssl/man/SSL_CTX_add_session.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_add_session 3"
-.TH SSL_CTX_add_session 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_add_session 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_ctrl.3 b/secure/lib/libssl/man/SSL_CTX_ctrl.3
index b89fcc1..b74fd36 100644
--- a/secure/lib/libssl/man/SSL_CTX_ctrl.3
+++ b/secure/lib/libssl/man/SSL_CTX_ctrl.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_ctrl 3"
-.TH SSL_CTX_ctrl 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_ctrl 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_flush_sessions.3 b/secure/lib/libssl/man/SSL_CTX_flush_sessions.3
index 5b1f2c0..671ad58 100644
--- a/secure/lib/libssl/man/SSL_CTX_flush_sessions.3
+++ b/secure/lib/libssl/man/SSL_CTX_flush_sessions.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_flush_sessions 3"
-.TH SSL_CTX_flush_sessions 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_flush_sessions 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_free.3 b/secure/lib/libssl/man/SSL_CTX_free.3
index 812627d..b627fc9 100644
--- a/secure/lib/libssl/man/SSL_CTX_free.3
+++ b/secure/lib/libssl/man/SSL_CTX_free.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_free 3"
-.TH SSL_CTX_free 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_free 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3 b/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3
index 627bdb4..f8ebb59 100644
--- a/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3
+++ b/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_get_ex_new_index 3"
-.TH SSL_CTX_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_get_ex_new_index 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3 b/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3
index 4c7c027..0169da7 100644
--- a/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3
+++ b/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_get_verify_mode 3"
-.TH SSL_CTX_get_verify_mode 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_get_verify_mode 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3 b/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3
index 9d405ab..ac1ebcf 100644
--- a/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3
+++ b/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_load_verify_locations 3"
-.TH SSL_CTX_load_verify_locations 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_load_verify_locations 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_new.3 b/secure/lib/libssl/man/SSL_CTX_new.3
index 1ada6ba..1395429 100644
--- a/secure/lib/libssl/man/SSL_CTX_new.3
+++ b/secure/lib/libssl/man/SSL_CTX_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_new 3"
-.TH SSL_CTX_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_sess_number.3 b/secure/lib/libssl/man/SSL_CTX_sess_number.3
index b797083..d980b8b 100644
--- a/secure/lib/libssl/man/SSL_CTX_sess_number.3
+++ b/secure/lib/libssl/man/SSL_CTX_sess_number.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_sess_number 3"
-.TH SSL_CTX_sess_number 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_sess_number 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3 b/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3
index d6849f2..8bf5a0f 100644
--- a/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3
+++ b/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_sess_set_cache_size 3"
-.TH SSL_CTX_sess_set_cache_size 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_sess_set_cache_size 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3 b/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3
index 4473e05..370c2e4 100644
--- a/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3
+++ b/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_sess_set_get_cb 3"
-.TH SSL_CTX_sess_set_get_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_sess_set_get_cb 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_sessions.3 b/secure/lib/libssl/man/SSL_CTX_sessions.3
index 20e25ee..36dbf68 100644
--- a/secure/lib/libssl/man/SSL_CTX_sessions.3
+++ b/secure/lib/libssl/man/SSL_CTX_sessions.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_sessions 3"
-.TH SSL_CTX_sessions 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_sessions 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_cert_store.3 b/secure/lib/libssl/man/SSL_CTX_set_cert_store.3
index 6bbe536..5d17a91 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_cert_store.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_cert_store.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_cert_store 3"
-.TH SSL_CTX_set_cert_store 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_cert_store 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3
index 2eb7d6d..5d86dc3 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_cert_verify_callback 3"
-.TH SSL_CTX_set_cert_verify_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_cert_verify_callback 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3 b/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3
index 02929e4..e0243d6 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_cipher_list 3"
-.TH SSL_CTX_set_cipher_list 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_cipher_list 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3 b/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3
index 8664979..3746b3b 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_client_CA_list 3"
-.TH SSL_CTX_set_client_CA_list 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_client_CA_list 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3 b/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3
index 278c735..ef24866 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_client_cert_cb 3"
-.TH SSL_CTX_set_client_cert_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_client_cert_cb 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3 b/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3
index 69c1b1f..9dab343 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_default_passwd_cb 3"
-.TH SSL_CTX_set_default_passwd_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_default_passwd_cb 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3 b/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3
index 2e9b69a..cd51338 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_generate_session_id 3"
-.TH SSL_CTX_set_generate_session_id 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_generate_session_id 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_info_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_info_callback.3
index feae479..58ee7a2 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_info_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_info_callback.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_info_callback 3"
-.TH SSL_CTX_set_info_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_info_callback 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3 b/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3
index 6595ef7..265cc55 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_max_cert_list 3"
-.TH SSL_CTX_set_max_cert_list 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_max_cert_list 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_mode.3 b/secure/lib/libssl/man/SSL_CTX_set_mode.3
index 121be12..b1502ff 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_mode.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_mode.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_mode 3"
-.TH SSL_CTX_set_mode 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_mode 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3
index 1fb3bf1..3bfa3d5 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_msg_callback 3"
-.TH SSL_CTX_set_msg_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_msg_callback 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_options.3 b/secure/lib/libssl/man/SSL_CTX_set_options.3
index c5165cb..3747de6 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_options.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_options.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_options 3"
-.TH SSL_CTX_set_options 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_options 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3
index d321b07..54bbe43 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_psk_client_callback 3"
-.TH SSL_CTX_set_psk_client_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_psk_client_callback 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3 b/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3
index d9048f2..9520211 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_quiet_shutdown 3"
-.TH SSL_CTX_set_quiet_shutdown 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_quiet_shutdown 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_read_ahead.3 b/secure/lib/libssl/man/SSL_CTX_set_read_ahead.3
index 00a66c6..d72eb46 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_read_ahead.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_read_ahead.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_read_ahead 3"
-.TH SSL_CTX_set_read_ahead 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_read_ahead 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3 b/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3
index 7c3c9eb..dac4b7d 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_session_cache_mode 3"
-.TH SSL_CTX_set_session_cache_mode 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_session_cache_mode 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3 b/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3
index aaf292e..31dea8b 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_session_id_context 3"
-.TH SSL_CTX_set_session_id_context 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_session_id_context 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3 b/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3
index 96f48fc..ebce586 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_ssl_version 3"
-.TH SSL_CTX_set_ssl_version 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_ssl_version 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_timeout.3 b/secure/lib/libssl/man/SSL_CTX_set_timeout.3
index a202e2f..e9471a0 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_timeout.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_timeout.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_timeout 3"
-.TH SSL_CTX_set_timeout 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_timeout 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3 b/secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3
index 300efbf..0e442ea 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_tlsext_ticket_key_cb.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_tlsext_ticket_key_cb 3"
-.TH SSL_CTX_set_tlsext_ticket_key_cb 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_tlsext_ticket_key_cb 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3
index 62b1091..d58f518 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_tmp_dh_callback 3"
-.TH SSL_CTX_set_tmp_dh_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_tmp_dh_callback 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3 b/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3
index 1a40aa4..2338021 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_tmp_rsa_callback 3"
-.TH SSL_CTX_set_tmp_rsa_callback 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_tmp_rsa_callback 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_set_verify.3 b/secure/lib/libssl/man/SSL_CTX_set_verify.3
index 2a9a49c..1e4b37d 100644
--- a/secure/lib/libssl/man/SSL_CTX_set_verify.3
+++ b/secure/lib/libssl/man/SSL_CTX_set_verify.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_set_verify 3"
-.TH SSL_CTX_set_verify 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_set_verify 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_use_certificate.3 b/secure/lib/libssl/man/SSL_CTX_use_certificate.3
index e2d60a7..293b584 100644
--- a/secure/lib/libssl/man/SSL_CTX_use_certificate.3
+++ b/secure/lib/libssl/man/SSL_CTX_use_certificate.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_use_certificate 3"
-.TH SSL_CTX_use_certificate 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_use_certificate 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3 b/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3
index 1b6b7ef..04ea12a 100644
--- a/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3
+++ b/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_CTX_use_psk_identity_hint 3"
-.TH SSL_CTX_use_psk_identity_hint 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_CTX_use_psk_identity_hint 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_SESSION_free.3 b/secure/lib/libssl/man/SSL_SESSION_free.3
index 01856bb..52a5490 100644
--- a/secure/lib/libssl/man/SSL_SESSION_free.3
+++ b/secure/lib/libssl/man/SSL_SESSION_free.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_SESSION_free 3"
-.TH SSL_SESSION_free 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_SESSION_free 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3 b/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3
index 482f6af..b861fe3 100644
--- a/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3
+++ b/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_SESSION_get_ex_new_index 3"
-.TH SSL_SESSION_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_SESSION_get_ex_new_index 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_SESSION_get_time.3 b/secure/lib/libssl/man/SSL_SESSION_get_time.3
index 75d4694..669901e 100644
--- a/secure/lib/libssl/man/SSL_SESSION_get_time.3
+++ b/secure/lib/libssl/man/SSL_SESSION_get_time.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_SESSION_get_time 3"
-.TH SSL_SESSION_get_time 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_SESSION_get_time 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_accept.3 b/secure/lib/libssl/man/SSL_accept.3
index da8fa29..0636013 100644
--- a/secure/lib/libssl/man/SSL_accept.3
+++ b/secure/lib/libssl/man/SSL_accept.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_accept 3"
-.TH SSL_accept 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_accept 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_alert_type_string.3 b/secure/lib/libssl/man/SSL_alert_type_string.3
index 1c5e1bc..476983d 100644
--- a/secure/lib/libssl/man/SSL_alert_type_string.3
+++ b/secure/lib/libssl/man/SSL_alert_type_string.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_alert_type_string 3"
-.TH SSL_alert_type_string 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_alert_type_string 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_clear.3 b/secure/lib/libssl/man/SSL_clear.3
index 258bda0..1226faa 100644
--- a/secure/lib/libssl/man/SSL_clear.3
+++ b/secure/lib/libssl/man/SSL_clear.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_clear 3"
-.TH SSL_clear 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_clear 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_connect.3 b/secure/lib/libssl/man/SSL_connect.3
index c90c6fd..b82e103 100644
--- a/secure/lib/libssl/man/SSL_connect.3
+++ b/secure/lib/libssl/man/SSL_connect.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_connect 3"
-.TH SSL_connect 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_connect 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_do_handshake.3 b/secure/lib/libssl/man/SSL_do_handshake.3
index a4deaec..3d62274 100644
--- a/secure/lib/libssl/man/SSL_do_handshake.3
+++ b/secure/lib/libssl/man/SSL_do_handshake.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_do_handshake 3"
-.TH SSL_do_handshake 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_do_handshake 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_free.3 b/secure/lib/libssl/man/SSL_free.3
index 1611011..f2dc9d8 100644
--- a/secure/lib/libssl/man/SSL_free.3
+++ b/secure/lib/libssl/man/SSL_free.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_free 3"
-.TH SSL_free 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_free 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_SSL_CTX.3 b/secure/lib/libssl/man/SSL_get_SSL_CTX.3
index 9354f9d..e33e11e 100644
--- a/secure/lib/libssl/man/SSL_get_SSL_CTX.3
+++ b/secure/lib/libssl/man/SSL_get_SSL_CTX.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_SSL_CTX 3"
-.TH SSL_get_SSL_CTX 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_SSL_CTX 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_ciphers.3 b/secure/lib/libssl/man/SSL_get_ciphers.3
index 9111624..e31ba68 100644
--- a/secure/lib/libssl/man/SSL_get_ciphers.3
+++ b/secure/lib/libssl/man/SSL_get_ciphers.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_ciphers 3"
-.TH SSL_get_ciphers 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_ciphers 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_client_CA_list.3 b/secure/lib/libssl/man/SSL_get_client_CA_list.3
index 4c5b67d..47a8ba5 100644
--- a/secure/lib/libssl/man/SSL_get_client_CA_list.3
+++ b/secure/lib/libssl/man/SSL_get_client_CA_list.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_client_CA_list 3"
-.TH SSL_get_client_CA_list 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_client_CA_list 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_current_cipher.3 b/secure/lib/libssl/man/SSL_get_current_cipher.3
index 5f369a9..041ec39 100644
--- a/secure/lib/libssl/man/SSL_get_current_cipher.3
+++ b/secure/lib/libssl/man/SSL_get_current_cipher.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_current_cipher 3"
-.TH SSL_get_current_cipher 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_current_cipher 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_default_timeout.3 b/secure/lib/libssl/man/SSL_get_default_timeout.3
index 554e1a4..fd3298a 100644
--- a/secure/lib/libssl/man/SSL_get_default_timeout.3
+++ b/secure/lib/libssl/man/SSL_get_default_timeout.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_default_timeout 3"
-.TH SSL_get_default_timeout 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_default_timeout 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_error.3 b/secure/lib/libssl/man/SSL_get_error.3
index d3e6f4b..ce9d766 100644
--- a/secure/lib/libssl/man/SSL_get_error.3
+++ b/secure/lib/libssl/man/SSL_get_error.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_error 3"
-.TH SSL_get_error 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_error 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3 b/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3
index b250de2..0758afa 100644
--- a/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3
+++ b/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_ex_data_X509_STORE_CTX_idx 3"
-.TH SSL_get_ex_data_X509_STORE_CTX_idx 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_ex_data_X509_STORE_CTX_idx 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_ex_new_index.3 b/secure/lib/libssl/man/SSL_get_ex_new_index.3
index a14e591..8343610 100644
--- a/secure/lib/libssl/man/SSL_get_ex_new_index.3
+++ b/secure/lib/libssl/man/SSL_get_ex_new_index.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_ex_new_index 3"
-.TH SSL_get_ex_new_index 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_ex_new_index 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_fd.3 b/secure/lib/libssl/man/SSL_get_fd.3
index 120b921..610e409 100644
--- a/secure/lib/libssl/man/SSL_get_fd.3
+++ b/secure/lib/libssl/man/SSL_get_fd.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_fd 3"
-.TH SSL_get_fd 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_fd 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_peer_cert_chain.3 b/secure/lib/libssl/man/SSL_get_peer_cert_chain.3
index cc2aaa6..e63045b 100644
--- a/secure/lib/libssl/man/SSL_get_peer_cert_chain.3
+++ b/secure/lib/libssl/man/SSL_get_peer_cert_chain.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_peer_cert_chain 3"
-.TH SSL_get_peer_cert_chain 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_peer_cert_chain 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_peer_certificate.3 b/secure/lib/libssl/man/SSL_get_peer_certificate.3
index 3c7d50a..b908dd7 100644
--- a/secure/lib/libssl/man/SSL_get_peer_certificate.3
+++ b/secure/lib/libssl/man/SSL_get_peer_certificate.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_peer_certificate 3"
-.TH SSL_get_peer_certificate 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_peer_certificate 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_psk_identity.3 b/secure/lib/libssl/man/SSL_get_psk_identity.3
index eb88b5f..7849428 100644
--- a/secure/lib/libssl/man/SSL_get_psk_identity.3
+++ b/secure/lib/libssl/man/SSL_get_psk_identity.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_psk_identity 3"
-.TH SSL_get_psk_identity 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_psk_identity 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_rbio.3 b/secure/lib/libssl/man/SSL_get_rbio.3
index 858b3e6..b4f6682 100644
--- a/secure/lib/libssl/man/SSL_get_rbio.3
+++ b/secure/lib/libssl/man/SSL_get_rbio.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_rbio 3"
-.TH SSL_get_rbio 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_rbio 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_session.3 b/secure/lib/libssl/man/SSL_get_session.3
index 7504532..58ccee0 100644
--- a/secure/lib/libssl/man/SSL_get_session.3
+++ b/secure/lib/libssl/man/SSL_get_session.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_session 3"
-.TH SSL_get_session 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_session 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_verify_result.3 b/secure/lib/libssl/man/SSL_get_verify_result.3
index 26950d1..898c0a0 100644
--- a/secure/lib/libssl/man/SSL_get_verify_result.3
+++ b/secure/lib/libssl/man/SSL_get_verify_result.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_verify_result 3"
-.TH SSL_get_verify_result 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_verify_result 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_get_version.3 b/secure/lib/libssl/man/SSL_get_version.3
index c9e2615..672e51f 100644
--- a/secure/lib/libssl/man/SSL_get_version.3
+++ b/secure/lib/libssl/man/SSL_get_version.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_get_version 3"
-.TH SSL_get_version 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_get_version 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_library_init.3 b/secure/lib/libssl/man/SSL_library_init.3
index 08be353..41c9a78 100644
--- a/secure/lib/libssl/man/SSL_library_init.3
+++ b/secure/lib/libssl/man/SSL_library_init.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_library_init 3"
-.TH SSL_library_init 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_library_init 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_load_client_CA_file.3 b/secure/lib/libssl/man/SSL_load_client_CA_file.3
index f27423b..2fadca2 100644
--- a/secure/lib/libssl/man/SSL_load_client_CA_file.3
+++ b/secure/lib/libssl/man/SSL_load_client_CA_file.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_load_client_CA_file 3"
-.TH SSL_load_client_CA_file 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_load_client_CA_file 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_new.3 b/secure/lib/libssl/man/SSL_new.3
index 01cd691..dd76ac5 100644
--- a/secure/lib/libssl/man/SSL_new.3
+++ b/secure/lib/libssl/man/SSL_new.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_new 3"
-.TH SSL_new 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_new 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_pending.3 b/secure/lib/libssl/man/SSL_pending.3
index 00a8e7c..975f6e1 100644
--- a/secure/lib/libssl/man/SSL_pending.3
+++ b/secure/lib/libssl/man/SSL_pending.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_pending 3"
-.TH SSL_pending 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_pending 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_read.3 b/secure/lib/libssl/man/SSL_read.3
index 159c937..5cb35f8 100644
--- a/secure/lib/libssl/man/SSL_read.3
+++ b/secure/lib/libssl/man/SSL_read.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_read 3"
-.TH SSL_read 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_read 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_rstate_string.3 b/secure/lib/libssl/man/SSL_rstate_string.3
index 7f0dc6d..6c83879 100644
--- a/secure/lib/libssl/man/SSL_rstate_string.3
+++ b/secure/lib/libssl/man/SSL_rstate_string.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_rstate_string 3"
-.TH SSL_rstate_string 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_rstate_string 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_session_reused.3 b/secure/lib/libssl/man/SSL_session_reused.3
index 14d9290..278e81a 100644
--- a/secure/lib/libssl/man/SSL_session_reused.3
+++ b/secure/lib/libssl/man/SSL_session_reused.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_session_reused 3"
-.TH SSL_session_reused 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_session_reused 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_bio.3 b/secure/lib/libssl/man/SSL_set_bio.3
index 668d2a8..c7c3bf9 100644
--- a/secure/lib/libssl/man/SSL_set_bio.3
+++ b/secure/lib/libssl/man/SSL_set_bio.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_bio 3"
-.TH SSL_set_bio 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_set_bio 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_connect_state.3 b/secure/lib/libssl/man/SSL_set_connect_state.3
index 9754edd..b937dc1 100644
--- a/secure/lib/libssl/man/SSL_set_connect_state.3
+++ b/secure/lib/libssl/man/SSL_set_connect_state.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_connect_state 3"
-.TH SSL_set_connect_state 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_set_connect_state 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_fd.3 b/secure/lib/libssl/man/SSL_set_fd.3
index 70fdf61..2cb4fdc 100644
--- a/secure/lib/libssl/man/SSL_set_fd.3
+++ b/secure/lib/libssl/man/SSL_set_fd.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_fd 3"
-.TH SSL_set_fd 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_set_fd 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_session.3 b/secure/lib/libssl/man/SSL_set_session.3
index 70c6c8f..42c6eb0 100644
--- a/secure/lib/libssl/man/SSL_set_session.3
+++ b/secure/lib/libssl/man/SSL_set_session.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_session 3"
-.TH SSL_set_session 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_set_session 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_shutdown.3 b/secure/lib/libssl/man/SSL_set_shutdown.3
index ce1aa20..ec6b0ba 100644
--- a/secure/lib/libssl/man/SSL_set_shutdown.3
+++ b/secure/lib/libssl/man/SSL_set_shutdown.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_shutdown 3"
-.TH SSL_set_shutdown 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_set_shutdown 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_set_verify_result.3 b/secure/lib/libssl/man/SSL_set_verify_result.3
index fd97c53..3e00707 100644
--- a/secure/lib/libssl/man/SSL_set_verify_result.3
+++ b/secure/lib/libssl/man/SSL_set_verify_result.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_set_verify_result 3"
-.TH SSL_set_verify_result 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_set_verify_result 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_shutdown.3 b/secure/lib/libssl/man/SSL_shutdown.3
index e88abb8..24b81bc 100644
--- a/secure/lib/libssl/man/SSL_shutdown.3
+++ b/secure/lib/libssl/man/SSL_shutdown.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_shutdown 3"
-.TH SSL_shutdown 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_shutdown 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_state_string.3 b/secure/lib/libssl/man/SSL_state_string.3
index 3be5052..5c44d91 100644
--- a/secure/lib/libssl/man/SSL_state_string.3
+++ b/secure/lib/libssl/man/SSL_state_string.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_state_string 3"
-.TH SSL_state_string 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_state_string 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_want.3 b/secure/lib/libssl/man/SSL_want.3
index d3c4343..87b19d8 100644
--- a/secure/lib/libssl/man/SSL_want.3
+++ b/secure/lib/libssl/man/SSL_want.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_want 3"
-.TH SSL_want 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_want 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/SSL_write.3 b/secure/lib/libssl/man/SSL_write.3
index f51bff5..c66c99d 100644
--- a/secure/lib/libssl/man/SSL_write.3
+++ b/secure/lib/libssl/man/SSL_write.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SSL_write 3"
-.TH SSL_write 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SSL_write 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/d2i_SSL_SESSION.3 b/secure/lib/libssl/man/d2i_SSL_SESSION.3
index 38cd9c4..fc6269a 100644
--- a/secure/lib/libssl/man/d2i_SSL_SESSION.3
+++ b/secure/lib/libssl/man/d2i_SSL_SESSION.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "d2i_SSL_SESSION 3"
-.TH d2i_SSL_SESSION 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH d2i_SSL_SESSION 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/lib/libssl/man/ssl.3 b/secure/lib/libssl/man/ssl.3
index 9b18701..b4c2649 100644
--- a/secure/lib/libssl/man/ssl.3
+++ b/secure/lib/libssl/man/ssl.3
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ssl 3"
-.TH ssl 3 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ssl 3 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/CA.pl.1 b/secure/usr.bin/openssl/man/CA.pl.1
index f5a1c3b..feb02cf 100644
--- a/secure/usr.bin/openssl/man/CA.pl.1
+++ b/secure/usr.bin/openssl/man/CA.pl.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CA.PL 1"
-.TH CA.PL 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CA.PL 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/asn1parse.1 b/secure/usr.bin/openssl/man/asn1parse.1
index 53ce6ba..5cdea68 100644
--- a/secure/usr.bin/openssl/man/asn1parse.1
+++ b/secure/usr.bin/openssl/man/asn1parse.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ASN1PARSE 1"
-.TH ASN1PARSE 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ASN1PARSE 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/c_rehash.1 b/secure/usr.bin/openssl/man/c_rehash.1
index 3ae822b..3b0365b 100644
--- a/secure/usr.bin/openssl/man/c_rehash.1
+++ b/secure/usr.bin/openssl/man/c_rehash.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "C_REHASH 1"
-.TH C_REHASH 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH C_REHASH 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ca.1 b/secure/usr.bin/openssl/man/ca.1
index 223171e..76df602 100644
--- a/secure/usr.bin/openssl/man/ca.1
+++ b/secure/usr.bin/openssl/man/ca.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CA 1"
-.TH CA 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CA 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ciphers.1 b/secure/usr.bin/openssl/man/ciphers.1
index f3c9c51..a79ee7a 100644
--- a/secure/usr.bin/openssl/man/ciphers.1
+++ b/secure/usr.bin/openssl/man/ciphers.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CIPHERS 1"
-.TH CIPHERS 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CIPHERS 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/cms.1 b/secure/usr.bin/openssl/man/cms.1
index 36355da..106bb70 100644
--- a/secure/usr.bin/openssl/man/cms.1
+++ b/secure/usr.bin/openssl/man/cms.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CMS 1"
-.TH CMS 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CMS 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/crl.1 b/secure/usr.bin/openssl/man/crl.1
index 001fc82..564fce0 100644
--- a/secure/usr.bin/openssl/man/crl.1
+++ b/secure/usr.bin/openssl/man/crl.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CRL 1"
-.TH CRL 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CRL 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/crl2pkcs7.1 b/secure/usr.bin/openssl/man/crl2pkcs7.1
index 18dcbf8..8c41ff9 100644
--- a/secure/usr.bin/openssl/man/crl2pkcs7.1
+++ b/secure/usr.bin/openssl/man/crl2pkcs7.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "CRL2PKCS7 1"
-.TH CRL2PKCS7 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH CRL2PKCS7 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/dgst.1 b/secure/usr.bin/openssl/man/dgst.1
index 9a842b5f..c2ec0a8 100644
--- a/secure/usr.bin/openssl/man/dgst.1
+++ b/secure/usr.bin/openssl/man/dgst.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DGST 1"
-.TH DGST 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DGST 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/dhparam.1 b/secure/usr.bin/openssl/man/dhparam.1
index a428173..ba49bd4 100644
--- a/secure/usr.bin/openssl/man/dhparam.1
+++ b/secure/usr.bin/openssl/man/dhparam.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DHPARAM 1"
-.TH DHPARAM 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DHPARAM 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/dsa.1 b/secure/usr.bin/openssl/man/dsa.1
index c1ddf93..213c803 100644
--- a/secure/usr.bin/openssl/man/dsa.1
+++ b/secure/usr.bin/openssl/man/dsa.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSA 1"
-.TH DSA 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSA 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/dsaparam.1 b/secure/usr.bin/openssl/man/dsaparam.1
index a684d1a..2f76249 100644
--- a/secure/usr.bin/openssl/man/dsaparam.1
+++ b/secure/usr.bin/openssl/man/dsaparam.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "DSAPARAM 1"
-.TH DSAPARAM 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH DSAPARAM 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ec.1 b/secure/usr.bin/openssl/man/ec.1
index bc72c67..99533b9 100644
--- a/secure/usr.bin/openssl/man/ec.1
+++ b/secure/usr.bin/openssl/man/ec.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "EC 1"
-.TH EC 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH EC 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ecparam.1 b/secure/usr.bin/openssl/man/ecparam.1
index 55b4bbb..b03dad4 100644
--- a/secure/usr.bin/openssl/man/ecparam.1
+++ b/secure/usr.bin/openssl/man/ecparam.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ECPARAM 1"
-.TH ECPARAM 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ECPARAM 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/enc.1 b/secure/usr.bin/openssl/man/enc.1
index ab1cdd1..6a7103f 100644
--- a/secure/usr.bin/openssl/man/enc.1
+++ b/secure/usr.bin/openssl/man/enc.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ENC 1"
-.TH ENC 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ENC 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/errstr.1 b/secure/usr.bin/openssl/man/errstr.1
index 2cadb1e..29b48ee 100644
--- a/secure/usr.bin/openssl/man/errstr.1
+++ b/secure/usr.bin/openssl/man/errstr.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "ERRSTR 1"
-.TH ERRSTR 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH ERRSTR 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/gendsa.1 b/secure/usr.bin/openssl/man/gendsa.1
index 926484f..70df180 100644
--- a/secure/usr.bin/openssl/man/gendsa.1
+++ b/secure/usr.bin/openssl/man/gendsa.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "GENDSA 1"
-.TH GENDSA 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH GENDSA 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/genpkey.1 b/secure/usr.bin/openssl/man/genpkey.1
index 2697f05..0a40a3f 100644
--- a/secure/usr.bin/openssl/man/genpkey.1
+++ b/secure/usr.bin/openssl/man/genpkey.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "GENPKEY 1"
-.TH GENPKEY 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH GENPKEY 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/genrsa.1 b/secure/usr.bin/openssl/man/genrsa.1
index f4a7bab..babce6d 100644
--- a/secure/usr.bin/openssl/man/genrsa.1
+++ b/secure/usr.bin/openssl/man/genrsa.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "GENRSA 1"
-.TH GENRSA 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH GENRSA 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/nseq.1 b/secure/usr.bin/openssl/man/nseq.1
index e6d86ea..796efa4 100644
--- a/secure/usr.bin/openssl/man/nseq.1
+++ b/secure/usr.bin/openssl/man/nseq.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "NSEQ 1"
-.TH NSEQ 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH NSEQ 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ocsp.1 b/secure/usr.bin/openssl/man/ocsp.1
index 7b8caec..d45193d 100644
--- a/secure/usr.bin/openssl/man/ocsp.1
+++ b/secure/usr.bin/openssl/man/ocsp.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OCSP 1"
-.TH OCSP 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH OCSP 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/openssl.1 b/secure/usr.bin/openssl/man/openssl.1
index c554c76..b2ae545 100644
--- a/secure/usr.bin/openssl/man/openssl.1
+++ b/secure/usr.bin/openssl/man/openssl.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "OPENSSL 1"
-.TH OPENSSL 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH OPENSSL 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/passwd.1 b/secure/usr.bin/openssl/man/passwd.1
index 65c491d..705a8e3 100644
--- a/secure/usr.bin/openssl/man/passwd.1
+++ b/secure/usr.bin/openssl/man/passwd.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PASSWD 1"
-.TH PASSWD 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PASSWD 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkcs12.1 b/secure/usr.bin/openssl/man/pkcs12.1
index 2caa333..ac98964 100644
--- a/secure/usr.bin/openssl/man/pkcs12.1
+++ b/secure/usr.bin/openssl/man/pkcs12.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS12 1"
-.TH PKCS12 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS12 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkcs7.1 b/secure/usr.bin/openssl/man/pkcs7.1
index ef3dc76..deee40d 100644
--- a/secure/usr.bin/openssl/man/pkcs7.1
+++ b/secure/usr.bin/openssl/man/pkcs7.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS7 1"
-.TH PKCS7 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS7 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkcs8.1 b/secure/usr.bin/openssl/man/pkcs8.1
index 441a8f8..5824bd7 100644
--- a/secure/usr.bin/openssl/man/pkcs8.1
+++ b/secure/usr.bin/openssl/man/pkcs8.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKCS8 1"
-.TH PKCS8 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKCS8 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkey.1 b/secure/usr.bin/openssl/man/pkey.1
index a41c8dd..f270aeb 100644
--- a/secure/usr.bin/openssl/man/pkey.1
+++ b/secure/usr.bin/openssl/man/pkey.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKEY 1"
-.TH PKEY 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKEY 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkeyparam.1 b/secure/usr.bin/openssl/man/pkeyparam.1
index e8ccec9..8b7d5bc 100644
--- a/secure/usr.bin/openssl/man/pkeyparam.1
+++ b/secure/usr.bin/openssl/man/pkeyparam.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKEYPARAM 1"
-.TH PKEYPARAM 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKEYPARAM 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/pkeyutl.1 b/secure/usr.bin/openssl/man/pkeyutl.1
index 2025771..058292b 100644
--- a/secure/usr.bin/openssl/man/pkeyutl.1
+++ b/secure/usr.bin/openssl/man/pkeyutl.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "PKEYUTL 1"
-.TH PKEYUTL 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH PKEYUTL 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/rand.1 b/secure/usr.bin/openssl/man/rand.1
index 2c0ac33..6161b76 100644
--- a/secure/usr.bin/openssl/man/rand.1
+++ b/secure/usr.bin/openssl/man/rand.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RAND 1"
-.TH RAND 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RAND 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/req.1 b/secure/usr.bin/openssl/man/req.1
index 29aa47f..38d9849 100644
--- a/secure/usr.bin/openssl/man/req.1
+++ b/secure/usr.bin/openssl/man/req.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "REQ 1"
-.TH REQ 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH REQ 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/rsa.1 b/secure/usr.bin/openssl/man/rsa.1
index 2301072..b240fb7 100644
--- a/secure/usr.bin/openssl/man/rsa.1
+++ b/secure/usr.bin/openssl/man/rsa.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSA 1"
-.TH RSA 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSA 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/rsautl.1 b/secure/usr.bin/openssl/man/rsautl.1
index 13220f9..368ba02 100644
--- a/secure/usr.bin/openssl/man/rsautl.1
+++ b/secure/usr.bin/openssl/man/rsautl.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "RSAUTL 1"
-.TH RSAUTL 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH RSAUTL 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/s_client.1 b/secure/usr.bin/openssl/man/s_client.1
index 4cc8299f..266d567 100644
--- a/secure/usr.bin/openssl/man/s_client.1
+++ b/secure/usr.bin/openssl/man/s_client.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "S_CLIENT 1"
-.TH S_CLIENT 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH S_CLIENT 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/s_server.1 b/secure/usr.bin/openssl/man/s_server.1
index 34eb434..e2c2c39 100644
--- a/secure/usr.bin/openssl/man/s_server.1
+++ b/secure/usr.bin/openssl/man/s_server.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "S_SERVER 1"
-.TH S_SERVER 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH S_SERVER 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/s_time.1 b/secure/usr.bin/openssl/man/s_time.1
index 79a19b6..109df0f 100644
--- a/secure/usr.bin/openssl/man/s_time.1
+++ b/secure/usr.bin/openssl/man/s_time.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "S_TIME 1"
-.TH S_TIME 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH S_TIME 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/sess_id.1 b/secure/usr.bin/openssl/man/sess_id.1
index f2f96bd..1e25ad2 100644
--- a/secure/usr.bin/openssl/man/sess_id.1
+++ b/secure/usr.bin/openssl/man/sess_id.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SESS_ID 1"
-.TH SESS_ID 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SESS_ID 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/smime.1 b/secure/usr.bin/openssl/man/smime.1
index 7236ff1..86c0230 100644
--- a/secure/usr.bin/openssl/man/smime.1
+++ b/secure/usr.bin/openssl/man/smime.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SMIME 1"
-.TH SMIME 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SMIME 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/speed.1 b/secure/usr.bin/openssl/man/speed.1
index 30aa927..874e4f2 100644
--- a/secure/usr.bin/openssl/man/speed.1
+++ b/secure/usr.bin/openssl/man/speed.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SPEED 1"
-.TH SPEED 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SPEED 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/spkac.1 b/secure/usr.bin/openssl/man/spkac.1
index 1780d32..f466ab5 100644
--- a/secure/usr.bin/openssl/man/spkac.1
+++ b/secure/usr.bin/openssl/man/spkac.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "SPKAC 1"
-.TH SPKAC 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH SPKAC 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/ts.1 b/secure/usr.bin/openssl/man/ts.1
index 51ee65f..fcc6d22 100644
--- a/secure/usr.bin/openssl/man/ts.1
+++ b/secure/usr.bin/openssl/man/ts.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "TS 1"
-.TH TS 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH TS 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/tsget.1 b/secure/usr.bin/openssl/man/tsget.1
index 946e16a..597a74d 100644
--- a/secure/usr.bin/openssl/man/tsget.1
+++ b/secure/usr.bin/openssl/man/tsget.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "TSGET 1"
-.TH TSGET 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH TSGET 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/verify.1 b/secure/usr.bin/openssl/man/verify.1
index 8709a6c..dc602b4 100644
--- a/secure/usr.bin/openssl/man/verify.1
+++ b/secure/usr.bin/openssl/man/verify.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "VERIFY 1"
-.TH VERIFY 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH VERIFY 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/version.1 b/secure/usr.bin/openssl/man/version.1
index 77ee222..79305bb 100644
--- a/secure/usr.bin/openssl/man/version.1
+++ b/secure/usr.bin/openssl/man/version.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "VERSION 1"
-.TH VERSION 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH VERSION 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/x509.1 b/secure/usr.bin/openssl/man/x509.1
index 7d6dd90..9306e41 100644
--- a/secure/usr.bin/openssl/man/x509.1
+++ b/secure/usr.bin/openssl/man/x509.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509 1"
-.TH X509 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/secure/usr.bin/openssl/man/x509v3_config.1 b/secure/usr.bin/openssl/man/x509v3_config.1
index 1e1e63c..9e149f5 100644
--- a/secure/usr.bin/openssl/man/x509v3_config.1
+++ b/secure/usr.bin/openssl/man/x509v3_config.1
@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "X509V3_CONFIG 1"
-.TH X509V3_CONFIG 1 "2015-06-12" "1.0.1o" "OpenSSL"
+.TH X509V3_CONFIG 1 "2015-07-09" "1.0.1p" "OpenSSL"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
diff --git a/share/man/man9/crypto.9 b/share/man/man9/crypto.9
index d7bee01..25326ff 100644
--- a/share/man/man9/crypto.9
+++ b/share/man/man9/crypto.9
@@ -17,7 +17,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 2, 2015
+.Dd July 8, 2015
.Dt CRYPTO 9
.Os
.Sh NAME
@@ -26,7 +26,7 @@
.Sh SYNOPSIS
.In opencrypto/cryptodev.h
.Ft int32_t
-.Fn crypto_get_driverid uint8_t
+.Fn crypto_get_driverid device_t int
.Ft int
.Fn crypto_register uint32_t int uint16_t uint32_t "int \*[lp]*\*[rp]\*[lp]void *, uint32_t *, struct cryptoini *\*[rp]" "int \*[lp]*\*[rp]\*[lp]void *, uint64_t\*[rp]" "int \*[lp]*\*[rp]\*[lp]void *, struct cryptop *\*[rp]" "void *"
.Ft int
@@ -312,7 +312,10 @@ Do callback immediately instead of doing it from a dedicated kernel thread.
.It Dv CRYPTO_F_DONE
Operation completed.
.It Dv CRYPTO_F_CBIFSYNC
-Do callback immediately if operation is synchronous.
+Do callback immediately if operation is synchronous (that the driver
+specified the
+.Dv CRYPTOCAP_F_SYNC
+flag).
.El
.It Va crp_buf
Points to the input buffer.
@@ -495,12 +498,22 @@ and
routines are used by drivers that provide support for cryptographic
primitives to register and unregister with the kernel crypto services
framework.
+.Pp
Drivers must first use the
.Fn crypto_get_driverid
function to acquire a driver identifier, specifying the
-.Fa cc_flags
-as an argument (normally 0, but software-only drivers should specify
-.Dv CRYPTOCAP_F_SOFTWARE ) .
+.Fa flags
+as an argument.
+One of
+.Dv CRYPTOCAP_F_SOFTWARE
+or
+.Dv CRYPTOCAP_F_HARDWARE
+must be specified.
+The
+.Dv CRYPTOCAP_F_SYNC
+may also be specified, and should be specified if the driver does all of
+it's operations synchronously.
+.Pp
For each algorithm the driver supports, it must then call
.Fn crypto_register .
The first two arguments are the driver and algorithm identifiers.
@@ -514,6 +527,7 @@ driver-provided functions that the framework may call to establish new
cryptographic context with the driver, free already established
context, and ask for a request to be processed (encrypt, decrypt,
etc.); and an opaque parameter to pass when calling each of these routines.
+.Pp
.Fn crypto_unregister
is called by drivers that wish to withdraw support for an algorithm.
The two arguments are the driver and algorithm identifiers, respectively.
@@ -528,28 +542,33 @@ that driver, and any existing sessions will be migrated to other
drivers).
The same will be done if all algorithms associated with a driver are
unregistered one by one.
+After a call to
+.Fn crypto_unregister_all
+there will be no threads in either the newsession or freesession function
+of the driver.
.Pp
-The calling convention for the three driver-supplied routines is:
+The calling convention for the three driver-supplied routines are:
.Pp
.Bl -item -compact
.It
.Ft int
-.Fn \*[lp]*newsession\*[rp] "void *" "uint32_t *" "struct cryptoini *" ;
+.Fn \*[lp]*newsession\*[rp] "device_t" "uint32_t *" "struct cryptoini *" ;
.It
.Ft int
-.Fn \*[lp]*freesession\*[rp] "void *" "uint64_t" ;
+.Fn \*[lp]*freesession\*[rp] "device_t" "uint64_t" ;
.It
.Ft int
-.Fn \*[lp]*process\*[rp] "void *" "struct cryptop *" ;
+.Fn \*[lp]*process\*[rp] "device_t" "struct cryptop *" "int" ;
.It
.Ft int
-.Fn \*[lp]*kprocess\*[rp] "void *" "struct cryptkop *" ;
+.Fn \*[lp]*kprocess\*[rp] "device_t" "struct cryptkop *" "int" ;
.El
.Pp
On invocation, the first argument to
-all routines is an opaque data value supplied when the algorithm
-is registered with
-.Fn crypto_register .
+all routines is the
+.Fa device_t
+that was provided to
+.Fn crypto_get_driverid .
The second argument to
.Fn newsession
contains the driver identifier obtained via
@@ -570,9 +589,8 @@ registers, memory, etc.).
The
.Fn process
routine is invoked with a request to perform crypto processing.
-This routine must not block, but should queue the request and return
-immediately.
-Upon processing the request, the callback routine should be invoked.
+This routine must not block or sleep, but should queue the request and return
+immediately or process the request to completion.
In case of an unrecoverable error, the error indication must be placed in the
.Va crp_etype
field of the
@@ -580,7 +598,7 @@ field of the
structure.
When the request is completed, or an error is detected, the
.Fn process
-routine should invoke
+routine must invoke
.Fn crypto_done .
Session migration may be performed, as mentioned previously.
.Pp
diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk
index 67d7446..a5422ea 100644
--- a/share/mk/bsd.man.mk
+++ b/share/mk/bsd.man.mk
@@ -186,7 +186,7 @@ _maninstall: ${MAN}
.endif
.endfor
.else
-.for _page _sect ${.ALLSRC:C/\.([^.]*)$/.\1 \1/}
+.for _page _sect in ${.ALLSRC:C/\.([^.]*)$/.\1 \1/}
@d=${DESTDIR}${MANDIR}${_sect}${MANSUBDIR}; \
${ECHO} ${MINSTALL} ${_page} $${d}; \
${MINSTALL} $${page} $${d};
diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c
index f30c073..562951e 100644
--- a/sys/amd64/amd64/fpu.c
+++ b/sys/amd64/amd64/fpu.c
@@ -916,6 +916,7 @@ static MALLOC_DEFINE(M_FPUKERN_CTX, "fpukern_ctx",
#define FPU_KERN_CTX_FPUINITDONE 0x01
#define FPU_KERN_CTX_DUMMY 0x02 /* avoided save for the kern thread */
+#define FPU_KERN_CTX_INUSE 0x04
struct fpu_kern_ctx {
struct savefpu *prev;
@@ -940,6 +941,7 @@ void
fpu_kern_free_ctx(struct fpu_kern_ctx *ctx)
{
+ KASSERT((ctx->flags & FPU_KERN_CTX_INUSE) == 0, ("free'ing inuse ctx"));
/* XXXKIB clear the memory ? */
free(ctx, M_FPUKERN_CTX);
}
@@ -959,14 +961,16 @@ fpu_kern_enter(struct thread *td, struct fpu_kern_ctx *ctx, u_int flags)
{
struct pcb *pcb;
+ KASSERT((ctx->flags & FPU_KERN_CTX_INUSE) == 0, ("using inuse ctx"));
+
if ((flags & FPU_KERN_KTHR) != 0 && is_fpu_kern_thread(0)) {
- ctx->flags = FPU_KERN_CTX_DUMMY;
+ ctx->flags = FPU_KERN_CTX_DUMMY | FPU_KERN_CTX_INUSE;
return (0);
}
pcb = td->td_pcb;
KASSERT(!PCB_USER_FPU(pcb) || pcb->pcb_save ==
get_pcb_user_save_pcb(pcb), ("mangled pcb_save"));
- ctx->flags = 0;
+ ctx->flags = FPU_KERN_CTX_INUSE;
if ((pcb->pcb_flags & PCB_FPUINITDONE) != 0)
ctx->flags |= FPU_KERN_CTX_FPUINITDONE;
fpuexit(td);
@@ -982,6 +986,10 @@ fpu_kern_leave(struct thread *td, struct fpu_kern_ctx *ctx)
{
struct pcb *pcb;
+ KASSERT((ctx->flags & FPU_KERN_CTX_INUSE) != 0,
+ ("leaving not inuse ctx"));
+ ctx->flags &= ~FPU_KERN_CTX_INUSE;
+
if (is_fpu_kern_thread(0) && (ctx->flags & FPU_KERN_CTX_DUMMY) != 0)
return (0);
KASSERT((ctx->flags & FPU_KERN_CTX_DUMMY) == 0, ("dummy ctx"));
diff --git a/sys/arm64/arm64/identcpu.c b/sys/arm64/arm64/identcpu.c
index b961ed3..fb50922 100644
--- a/sys/arm64/arm64/identcpu.c
+++ b/sys/arm64/arm64/identcpu.c
@@ -48,7 +48,7 @@ SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, machine, 0,
/*
* Per-CPU affinity as provided in MPIDR_EL1
* Indexed by CPU number in logical order selected by the system.
- * Relevant fields can be extracetd using CPU_AFFn macros,
+ * Relevant fields can be extracted using CPU_AFFn macros,
* Aff3.Aff2.Aff1.Aff0 construct a unique CPU address in the system.
*
* Fields used by us:
@@ -57,28 +57,6 @@ SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, machine, 0,
*/
uint64_t __cpu_affinity[MAXCPU];
-#define CPU_IMPL_ARM 0x41
-#define CPU_IMPL_BROADCOM 0x42
-#define CPU_IMPL_CAVIUM 0x43
-#define CPU_IMPL_DEC 0x44
-#define CPU_IMPL_INFINEON 0x49
-#define CPU_IMPL_FREESCALE 0x4D
-#define CPU_IMPL_NVIDIA 0x4E
-#define CPU_IMPL_APM 0x50
-#define CPU_IMPL_QUALCOMM 0x51
-#define CPU_IMPL_MARVELL 0x56
-#define CPU_IMPL_INTEL 0x69
-
-#define CPU_PART_THUNDER 0x0A1
-#define CPU_PART_FOUNDATION 0xD00
-#define CPU_PART_CORTEX_A53 0xD03
-#define CPU_PART_CORTEX_A57 0xD07
-
-#define CPU_IMPL(midr) (((midr) >> 24) & 0xff)
-#define CPU_PART(midr) (((midr) >> 4) & 0xfff)
-#define CPU_VAR(midr) (((midr) >> 20) & 0xf)
-#define CPU_REV(midr) (((midr) >> 0) & 0xf)
-
struct cpu_desc {
u_int cpu_impl;
u_int cpu_part_num;
@@ -112,14 +90,14 @@ struct cpu_implementers {
*/
/* ARM Ltd. */
static const struct cpu_parts cpu_parts_arm[] = {
- { 0xD00, "Foundation-Model" },
- { 0xD03, "Cortex-A53" },
- { 0xD07, "Cortex-A57" },
+ { CPU_PART_FOUNDATION, "Foundation-Model" },
+ { CPU_PART_CORTEX_A53, "Cortex-A53" },
+ { CPU_PART_CORTEX_A57, "Cortex-A57" },
CPU_PART_NONE,
};
/* Cavium */
static const struct cpu_parts cpu_parts_cavium[] = {
- { 0x0A1, "Thunder" },
+ { CPU_PART_THUNDER, "Thunder" },
CPU_PART_NONE,
};
@@ -162,6 +140,12 @@ identify_cpu(void)
cpu = PCPU_GET(cpuid);
midr = get_midr();
+ /*
+ * Store midr to pcpu to allow fast reading
+ * from EL0, EL1 and assembly code.
+ */
+ PCPU_SET(midr, midr);
+
impl_id = CPU_IMPL(midr);
for (i = 0; i < nitems(cpu_implementers); i++) {
if (impl_id == cpu_implementers[i].impl_id ||
@@ -183,15 +167,21 @@ identify_cpu(void)
}
}
- printf("CPU: %s %s r%dp%d\n", cpu_desc[cpu].cpu_impl_name,
- cpu_desc[cpu].cpu_part_name, CPU_VAR(midr), CPU_REV(midr));
+ cpu_desc[cpu].cpu_revision = CPU_REV(midr);
+ cpu_desc[cpu].cpu_variant = CPU_VAR(midr);
- /*
- * Save affinity for the boot CPU.
- * (CPU0 in the internal system enumeration.
- */
+ /* Save affinity for current CPU */
mpidr = get_mpidr();
- CPU_AFFINITY(0) = mpidr & CPU_AFF_MASK;
+ CPU_AFFINITY(cpu) = mpidr & CPU_AFF_MASK;
+
+ /* Print details for boot CPU or if we want verbose output */
+ if (cpu == 0 || bootverbose) {
+ printf("CPU(%d): %s %s r%dp%d\n", cpu,
+ cpu_desc[cpu].cpu_impl_name,
+ cpu_desc[cpu].cpu_part_name,
+ cpu_desc[cpu].cpu_variant,
+ cpu_desc[cpu].cpu_revision);
+ }
if (bootverbose)
printf("CPU%u affinity: %u.%u.%u.%u\n", 0, CPU_AFF0(mpidr),
diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S
index c9a9c83..be7f0c7 100644
--- a/sys/arm64/arm64/locore.S
+++ b/sys/arm64/arm64/locore.S
@@ -72,6 +72,8 @@ _start:
msr sctlr_el1, x2
isb
+ /* Set the context id */
+ msr contextidr_el1, xzr
/* Get the virt -> phys offset */
bl get_virt_delta
@@ -146,6 +148,46 @@ virtdone:
.Lend:
.quad _end
+#ifdef SMP
+/*
+ * mpentry(unsigned long)
+ *
+ * Called by a core when it is being brought online.
+ * The data in x0 is passed straight to init_secondary.
+ */
+ENTRY(mpentry)
+ /* Disable interrupts */
+ msr daifset, #2
+
+ /* Drop to EL1 */
+ bl drop_to_el1
+
+ /* Set the context id */
+ msr contextidr_el1, x1
+
+ /* Load the kernel page table */
+ adr x26, pagetable_l1_ttbr1
+ /* Load the identity page table */
+ adr x27, pagetable_l1_ttbr0
+
+ /* Enable the mmu */
+ bl start_mmu
+
+ /* Jump to the virtual address space */
+ ldr x15, =mp_virtdone
+ br x15
+
+mp_virtdone:
+ ldr x4, =secondary_stacks
+ mov x5, #(PAGE_SIZE * KSTACK_PAGES)
+ sub x1, x0, #1
+ mul x5, x1, x5
+ add sp, x4, x5
+
+ b init_secondary
+END(mpentry)
+#endif
+
/*
* If we are started in EL2, configure the required hypervisor
* registers and drop to EL1.
diff --git a/sys/arm64/arm64/machdep.c b/sys/arm64/arm64/machdep.c
index 6137a6c..f67211f 100644
--- a/sys/arm64/arm64/machdep.c
+++ b/sys/arm64/arm64/machdep.c
@@ -119,6 +119,13 @@ cpu_startup(void *dummy)
SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL);
+int
+cpu_idle_wakeup(int cpu)
+{
+
+ return (0);
+}
+
void
bzero(void *buf, size_t len)
{
@@ -259,10 +266,13 @@ get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret)
{
struct trapframe *tf = td->td_frame;
- if (clear_ret & GET_MC_CLEAR_RET)
+ if (clear_ret & GET_MC_CLEAR_RET) {
mcp->mc_gpregs.gp_x[0] = 0;
- else
+ mcp->mc_gpregs.gp_spsr = tf->tf_spsr & ~PSR_C;
+ } else {
mcp->mc_gpregs.gp_x[0] = tf->tf_x[0];
+ mcp->mc_gpregs.gp_spsr = tf->tf_spsr;
+ }
memcpy(&mcp->mc_gpregs.gp_x[1], &tf->tf_x[1],
sizeof(mcp->mc_gpregs.gp_x[1]) * (nitems(mcp->mc_gpregs.gp_x) - 1));
@@ -270,7 +280,6 @@ get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret)
mcp->mc_gpregs.gp_sp = tf->tf_sp;
mcp->mc_gpregs.gp_lr = tf->tf_lr;
mcp->mc_gpregs.gp_elr = tf->tf_elr;
- mcp->mc_gpregs.gp_spsr = tf->tf_spsr;
return (0);
}
diff --git a/sys/arm64/arm64/mp_machdep.c b/sys/arm64/arm64/mp_machdep.c
new file mode 100644
index 0000000..15aa290
--- /dev/null
+++ b/sys/arm64/arm64/mp_machdep.c
@@ -0,0 +1,433 @@
+/*-
+ * Copyright (c) 2015 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Andrew Turner under
+ * sponsorship from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include "opt_platform.h"
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/cpu.h>
+#include <sys/kernel.h>
+#include <sys/malloc.h>
+#include <sys/module.h>
+#include <sys/mutex.h>
+#include <sys/proc.h>
+#include <sys/sched.h>
+#include <sys/smp.h>
+
+#include <vm/vm.h>
+#include <vm/pmap.h>
+#include <vm/vm_extern.h>
+#include <vm/vm_kern.h>
+
+#include <machine/intr.h>
+#include <machine/smp.h>
+#ifdef VFP
+#include <machine/vfp.h>
+#endif
+
+#ifdef FDT
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_cpu.h>
+#endif
+
+#include <dev/psci/psci.h>
+
+boolean_t ofw_cpu_reg(phandle_t node, u_int, cell_t *);
+
+extern struct pcpu __pcpu[];
+
+static enum {
+ CPUS_UNKNOWN,
+#ifdef FDT
+ CPUS_FDT,
+#endif
+} cpu_enum_method;
+
+static device_identify_t arm64_cpu_identify;
+static device_probe_t arm64_cpu_probe;
+static device_attach_t arm64_cpu_attach;
+
+static int ipi_handler(void *arg);
+
+struct mtx ap_boot_mtx;
+struct pcb stoppcbs[MAXCPU];
+
+#ifdef INVARIANTS
+static uint32_t cpu_reg[MAXCPU][2];
+#endif
+static device_t cpu_list[MAXCPU];
+
+void mpentry(unsigned long cpuid);
+void init_secondary(uint64_t);
+
+uint8_t secondary_stacks[MAXCPU - 1][PAGE_SIZE * KSTACK_PAGES] __aligned(16);
+
+/* # of Applications processors */
+volatile int mp_naps;
+/* Set to 1 once we're ready to let the APs out of the pen. */
+volatile int aps_ready = 0;
+
+/* Temporary variables for init_secondary() */
+void *dpcpu[MAXCPU - 1];
+
+static device_method_t arm64_cpu_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_identify, arm64_cpu_identify),
+ DEVMETHOD(device_probe, arm64_cpu_probe),
+ DEVMETHOD(device_attach, arm64_cpu_attach),
+
+ DEVMETHOD_END
+};
+
+static devclass_t arm64_cpu_devclass;
+static driver_t arm64_cpu_driver = {
+ "arm64_cpu",
+ arm64_cpu_methods,
+ 0
+};
+
+DRIVER_MODULE(arm64_cpu, cpu, arm64_cpu_driver, arm64_cpu_devclass, 0, 0);
+
+static void
+arm64_cpu_identify(driver_t *driver, device_t parent)
+{
+
+ if (device_find_child(parent, "arm64_cpu", -1) != NULL)
+ return;
+ if (BUS_ADD_CHILD(parent, 0, "arm64_cpu", -1) == NULL)
+ device_printf(parent, "add child failed\n");
+}
+
+static int
+arm64_cpu_probe(device_t dev)
+{
+ u_int cpuid;
+
+ cpuid = device_get_unit(dev);
+ if (cpuid >= MAXCPU || cpuid > mp_maxid)
+ return (EINVAL);
+
+ return (0);
+}
+
+static int
+arm64_cpu_attach(device_t dev)
+{
+ const uint32_t *reg;
+ size_t reg_size;
+ u_int cpuid;
+ int i;
+
+ cpuid = device_get_unit(dev);
+
+ if (cpuid >= MAXCPU || cpuid > mp_maxid)
+ return (EINVAL);
+ KASSERT(cpu_list[cpuid] == NULL, ("Already have cpu %u", cpuid));
+
+ reg = cpu_get_cpuid(dev, &reg_size);
+ if (reg == NULL)
+ return (EINVAL);
+
+ device_printf(dev, "Found register:");
+ for (i = 0; i < reg_size; i++)
+ printf(" %x", reg[i]);
+ printf("\n");
+
+ /* Set the device to start it later */
+ cpu_list[cpuid] = dev;
+
+ return (0);
+}
+
+static void
+release_aps(void *dummy __unused)
+{
+ int i;
+
+ /* Setup the IPI handler */
+ for (i = 0; i < COUNT_IPI; i++)
+ arm_setup_ipihandler(ipi_handler, i);
+
+ atomic_store_rel_int(&aps_ready, 1);
+ /* Wake up the other CPUs */
+ __asm __volatile("sev");
+
+ printf("Release APs\n");
+
+ for (i = 0; i < 2000; i++) {
+ if (smp_started)
+ return;
+ DELAY(1000);
+ }
+
+ printf("AP's not started\n");
+}
+SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, release_aps, NULL);
+
+void
+init_secondary(uint64_t cpu)
+{
+ struct pcpu *pcpup;
+ int i;
+
+ pcpup = &__pcpu[cpu];
+ /*
+ * Set the pcpu pointer with a backup in tpidr_el1 to be
+ * loaded when entering the kernel from userland.
+ */
+ __asm __volatile(
+ "mov x18, %0 \n"
+ "msr tpidr_el1, %0" :: "r"(pcpup));
+
+ /*
+ * pcpu_init() updates queue, so it should not be executed in parallel
+ * on several cores
+ */
+ while(mp_naps < (cpu - 1))
+ ;
+
+ /* Signal our startup to BSP */
+ atomic_add_rel_32(&mp_naps, 1);
+
+ /* Spin until the BSP releases the APs */
+ while (!aps_ready)
+ __asm __volatile("wfe");
+
+ /* Initialize curthread */
+ KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread"));
+ pcpup->pc_curthread = pcpup->pc_idlethread;
+ pcpup->pc_curpcb = pcpup->pc_idlethread->td_pcb;
+
+ for (i = 0; i < COUNT_IPI; i++)
+ arm_unmask_ipi(i);
+
+ /* Start per-CPU event timers. */
+ cpu_initclocks_ap();
+
+#ifdef VFP
+ vfp_init();
+#endif
+
+ /* Configure the interrupt controller */
+ arm_init_secondary();
+
+ /* Enable interrupts */
+ intr_enable();
+
+ mtx_lock_spin(&ap_boot_mtx);
+
+ atomic_add_rel_32(&smp_cpus, 1);
+
+ if (smp_cpus == mp_ncpus) {
+ /* enable IPI's, tlb shootdown, freezes etc */
+ atomic_store_rel_int(&smp_started, 1);
+ }
+
+ mtx_unlock_spin(&ap_boot_mtx);
+
+ /* Enter the scheduler */
+ sched_throw(NULL);
+
+ panic("scheduler returned us to init_secondary");
+ /* NOTREACHED */
+}
+
+static int
+ipi_handler(void *arg)
+{
+ u_int cpu, ipi;
+
+ arg = (void *)((uintptr_t)arg & ~(1 << 16));
+ KASSERT((uintptr_t)arg < COUNT_IPI,
+ ("Invalid IPI %ju", (uintptr_t)arg));
+
+ cpu = PCPU_GET(cpuid);
+ ipi = (uintptr_t)arg;
+
+ switch(ipi) {
+ case IPI_AST:
+ CTR0(KTR_SMP, "IPI_AST");
+ break;
+ case IPI_PREEMPT:
+ CTR1(KTR_SMP, "%s: IPI_PREEMPT", __func__);
+ sched_preempt(curthread);
+ break;
+ case IPI_RENDEZVOUS:
+ CTR0(KTR_SMP, "IPI_RENDEZVOUS");
+ smp_rendezvous_action();
+ break;
+ case IPI_STOP:
+ case IPI_STOP_HARD:
+ CTR0(KTR_SMP, (ipi == IPI_STOP) ? "IPI_STOP" : "IPI_STOP_HARD");
+ savectx(&stoppcbs[cpu]);
+
+ /* Indicate we are stopped */
+ CPU_SET_ATOMIC(cpu, &stopped_cpus);
+
+ /* Wait for restart */
+ while (!CPU_ISSET(cpu, &started_cpus))
+ cpu_spinwait();
+
+ CPU_CLR_ATOMIC(cpu, &started_cpus);
+ CPU_CLR_ATOMIC(cpu, &stopped_cpus);
+ CTR0(KTR_SMP, "IPI_STOP (restart)");
+ break;
+ case IPI_HARDCLOCK:
+ CTR1(KTR_SMP, "%s: IPI_HARDCLOCK", __func__);
+ hardclockintr();
+ break;
+ default:
+ panic("Unknown IPI %#0x on cpu %d", ipi, curcpu);
+ }
+
+ return (FILTER_HANDLED);
+}
+
+struct cpu_group *
+cpu_topo(void)
+{
+
+ return (smp_topo_none());
+}
+
+/* Determine if we running MP machine */
+int
+cpu_mp_probe(void)
+{
+
+ /* ARM64TODO: Read the u bit of mpidr_el1 to determine this */
+ return (1);
+}
+
+#ifdef FDT
+static boolean_t
+cpu_init_fdt(u_int id, phandle_t node, u_int addr_size, pcell_t *reg)
+{
+ uint64_t target_cpu;
+ struct pcpu *pcpup;
+ vm_paddr_t pa;
+ int err;
+
+ /* Check we are able to start this cpu */
+ if (id > mp_maxid)
+ return (0);
+
+ KASSERT(id < MAXCPU, ("Too mant CPUs"));
+
+ KASSERT(addr_size == 1 || addr_size == 2, ("Invalid register size"));
+#ifdef INVARIANTS
+ cpu_reg[id][0] = reg[0];
+ if (addr_size == 2)
+ cpu_reg[id][1] = reg[1];
+#endif
+
+ /* We are already running on cpu 0 */
+ if (id == 0)
+ return (1);
+
+ CPU_SET(id, &all_cpus);
+
+ pcpup = &__pcpu[id];
+ pcpu_init(pcpup, id, sizeof(struct pcpu));
+
+ dpcpu[id - 1] = (void *)kmem_malloc(kernel_arena, DPCPU_SIZE,
+ M_WAITOK | M_ZERO);
+ dpcpu_init(dpcpu[id - 1], id);
+
+ target_cpu = reg[0];
+ if (addr_size == 2) {
+ target_cpu <<= 32;
+ target_cpu |= reg[1];
+ }
+
+ printf("Starting CPU %u (%lx)\n", id, target_cpu);
+ pa = pmap_extract(kernel_pmap, (vm_offset_t)mpentry);
+
+ err = psci_cpu_on(target_cpu, pa, id);
+ if (err != PSCI_RETVAL_SUCCESS)
+ printf("Failed to start CPU %u\n", id);
+
+ return (1);
+}
+#endif
+
+/* Initialize and fire up non-boot processors */
+void
+cpu_mp_start(void)
+{
+
+ mtx_init(&ap_boot_mtx, "ap boot", NULL, MTX_SPIN);
+
+ CPU_SET(0, &all_cpus);
+
+ switch(cpu_enum_method) {
+#ifdef FDT
+ case CPUS_FDT:
+ ofw_cpu_early_foreach(cpu_init_fdt, true);
+ break;
+#endif
+ case CPUS_UNKNOWN:
+ break;
+ }
+}
+
+/* Introduce rest of cores to the world */
+void
+cpu_mp_announce(void)
+{
+}
+
+void
+cpu_mp_setmaxid(void)
+{
+#ifdef FDT
+ int cores;
+
+ cores = ofw_cpu_early_foreach(NULL, false);
+ if (cores > 0) {
+ cores = MIN(cores, MAXCPU);
+ if (bootverbose)
+ printf("Found %d CPUs in the device tree\n", cores);
+ mp_ncpus = cores;
+ mp_maxid = cores - 1;
+ cpu_enum_method = CPUS_FDT;
+ return;
+ }
+#endif
+
+ if (bootverbose)
+ printf("No CPU data, limiting to 1 core\n");
+ mp_ncpus = 1;
+ mp_maxid = 0;
+}
diff --git a/sys/arm64/arm64/swtch.S b/sys/arm64/arm64/swtch.S
index bf69b86..6774e76 100644
--- a/sys/arm64/arm64/swtch.S
+++ b/sys/arm64/arm64/swtch.S
@@ -30,6 +30,7 @@
*/
#include "assym.s"
+#include "opt_sched.h"
#include <machine/asm.h>
@@ -39,10 +40,6 @@ __FBSDID("$FreeBSD$");
* void cpu_throw(struct thread *old, struct thread *new)
*/
ENTRY(cpu_throw)
-#ifdef SMP
-#error cpu_throw needs to be ported to support SMP
-#endif
-
#ifdef VFP
/* Backup the new thread pointer around a call to C code */
mov x19, x1
@@ -100,10 +97,6 @@ END(cpu_throw)
* x3 to x7, x16 and x17 are caller saved
*/
ENTRY(cpu_switch)
-#ifdef SMP
-#error cpu_switch needs to be ported to support SMP
-#endif
-
/* Store the new curthread */
str x1, [x18, #PC_CURTHREAD]
/* And the new pcb */
@@ -167,7 +160,15 @@ ENTRY(cpu_switch)
/* Release the old thread */
str x2, [x0, #TD_LOCK]
#if defined(SCHED_ULE) && defined(SMP)
-#error We may need to wait for the lock here
+ /* Read the value in blocked_lock */
+ ldr x0, =_C_LABEL(blocked_lock)
+ ldr x1, [x0]
+ /* Load curthread */
+ ldr x2, [x18, #PC_CURTHREAD]
+1:
+ ldr x3, [x2, #TD_LOCK]
+ cmp x3, x1
+ b.eq 1b
#endif
/* Restore the registers */
diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c
index 500dce3..89c104f 100644
--- a/sys/arm64/arm64/trap.c
+++ b/sys/arm64/arm64/trap.c
@@ -258,6 +258,10 @@ do_el1h_sync(struct trapframe *frame)
(exception == EXCP_DATA_ABORT && ((esr & ISS_DATA_ISV) == 0)),
("Invalid instruction length in exception"));
+ CTR4(KTR_TRAP,
+ "do_el1_sync: curthread: %p, esr %lx, elr: %lx, frame: %p",
+ curthread, esr, frame->tf_elr, frame);
+
switch(exception) {
case EXCP_FP_SIMD:
case EXCP_TRAP_FP:
@@ -301,6 +305,10 @@ do_el0_sync(struct trapframe *frame)
esr = READ_SPECIALREG(esr_el1);
exception = ESR_ELx_EXCEPTION(esr);
+ CTR4(KTR_TRAP,
+ "do_el0_sync: curthread: %p, esr %lx, elr: %lx, frame: %p",
+ curthread, esr, frame->tf_elr, frame);
+
switch(exception) {
case EXCP_FP_SIMD:
case EXCP_TRAP_FP:
diff --git a/sys/arm64/conf/GENERIC b/sys/arm64/conf/GENERIC
index 4e84ac7..1bd12b8 100644
--- a/sys/arm64/conf/GENERIC
+++ b/sys/arm64/conf/GENERIC
@@ -69,6 +69,7 @@ options VFP # Floating-point support
options RACCT # Resource accounting framework
options RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default
options RCTL # Resource limits
+options SMP
# Debugging support. Always need this:
options KDB # Enable kernel debugger support.
diff --git a/sys/arm64/include/cpu.h b/sys/arm64/include/cpu.h
index e2438de..b805ddd 100644
--- a/sys/arm64/include/cpu.h
+++ b/sys/arm64/include/cpu.h
@@ -60,6 +60,43 @@
#ifdef _KERNEL
+#define CPU_IMPL_ARM 0x41
+#define CPU_IMPL_BROADCOM 0x42
+#define CPU_IMPL_CAVIUM 0x43
+#define CPU_IMPL_DEC 0x44
+#define CPU_IMPL_INFINEON 0x49
+#define CPU_IMPL_FREESCALE 0x4D
+#define CPU_IMPL_NVIDIA 0x4E
+#define CPU_IMPL_APM 0x50
+#define CPU_IMPL_QUALCOMM 0x51
+#define CPU_IMPL_MARVELL 0x56
+#define CPU_IMPL_INTEL 0x69
+
+#define CPU_PART_THUNDER 0x0A1
+#define CPU_PART_FOUNDATION 0xD00
+#define CPU_PART_CORTEX_A53 0xD03
+#define CPU_PART_CORTEX_A57 0xD07
+
+#define CPU_IMPL(midr) (((midr) >> 24) & 0xff)
+#define CPU_PART(midr) (((midr) >> 4) & 0xfff)
+#define CPU_VAR(midr) (((midr) >> 20) & 0xf)
+#define CPU_REV(midr) (((midr) >> 0) & 0xf)
+
+#define CPU_IMPL_TO_MIDR(val) (((val) & 0xff) << 24)
+#define CPU_PART_TO_MIDR(val) (((val) & 0xfff) << 4)
+#define CPU_VAR_TO_MIDR(val) (((val) & 0xf) << 20)
+#define CPU_REV_TO_MIDR(val) (((val) & 0xf) << 0)
+
+#define CPU_IMPL_MASK (0xff << 24)
+#define CPU_PART_MASK (0xfff << 4)
+#define CPU_VAR_MASK (0xf << 20)
+#define CPU_REV_MASK (0xf << 0)
+
+#define CPU_MATCH(mask, impl, part, var, rev) \
+ (((mask) & PCPU_GET(midr)) == (CPU_IMPL_TO_MIDR((impl)) | \
+ CPU_PART_TO_MIDR((part)) | CPU_VAR_TO_MIDR((var)) | \
+ CPU_REV_TO_MIDR((rev))))
+
extern char btext[];
extern char etext[];
diff --git a/sys/arm64/include/pcb.h b/sys/arm64/include/pcb.h
index 71695c9..027b605 100644
--- a/sys/arm64/include/pcb.h
+++ b/sys/arm64/include/pcb.h
@@ -49,7 +49,7 @@ struct pcb {
__uint128_t pcb_vfp[32];
uint32_t pcb_fpcr;
uint32_t pcb_fpsr;
- u_int pcb_fpflags;
+ int pcb_fpflags;
#define PCB_FP_STARTED 0x01
u_int pcb_vfpcpu; /* Last cpu this thread ran VFP code */
};
diff --git a/sys/arm64/include/pcpu.h b/sys/arm64/include/pcpu.h
index 19cd758..21b58db 100644
--- a/sys/arm64/include/pcpu.h
+++ b/sys/arm64/include/pcpu.h
@@ -36,8 +36,9 @@
#define ALT_STACK_SIZE 128
#define PCPU_MD_FIELDS \
- u_int pc_acpi_id; /* ACPI CPU id */ \
- char __pad[125]
+ u_int pc_acpi_id; /* ACPI CPU id */ \
+ u_int pc_midr; /* stored MIDR value */ \
+ char __pad[121]
#ifdef _KERNEL
diff --git a/sys/arm64/include/pte.h b/sys/arm64/include/pte.h
index c447dc1..2b694a6 100644
--- a/sys/arm64/include/pte.h
+++ b/sys/arm64/include/pte.h
@@ -49,6 +49,10 @@ typedef uint64_t pt_entry_t; /* page table entry */
#define ATTR_nG (1 << 11)
#define ATTR_AF (1 << 10)
#define ATTR_SH(x) ((x) << 8)
+#define ATTR_SH_MASK ATTR_SH(3)
+#define ATTR_SH_NS 0 /* Non-shareable */
+#define ATTR_SH_OS 2 /* Outer-shareable */
+#define ATTR_SH_IS 3 /* Inner-shareable */
#define ATTR_AP_RW_BIT (1 << 7)
#define ATTR_AP(x) ((x) << 6)
#define ATTR_AP_MASK ATTR_AP(3)
diff --git a/sys/arm64/include/smp.h b/sys/arm64/include/smp.h
index da23dbe..0f56396 100644
--- a/sys/arm64/include/smp.h
+++ b/sys/arm64/include/smp.h
@@ -1 +1,55 @@
-/* $FreeBSD$ */
+/*-
+ * Copyright (c) 2014 Andrew Turner <andrew@FreeBSD.org>
+ * Copyright (c) 2015 The FreeBSD Foundation
+ * All rights reserved.
+ *
+ * This software was developed by Andrew Turner under sponsorship from
+ * the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _MACHINE_SMP_H_
+#define _MACHINE_SMP_H_
+
+#include <machine/pcb.h>
+
+enum {
+ IPI_AST,
+ IPI_PREEMPT,
+ IPI_RENDEZVOUS,
+ IPI_STOP,
+ IPI_STOP_HARD,
+ IPI_HARDCLOCK,
+ COUNT_IPI,
+};
+
+void ipi_all_but_self(u_int ipi);
+void ipi_cpu(int cpu, u_int ipi);
+void ipi_selected(cpuset_t cpus, u_int ipi);
+
+/* global data in mp_machdep.c */
+extern struct pcb stoppcbs[];
+
+#endif /* !_MACHINE_SMP_H_ */
diff --git a/sys/arm64/include/ucontext.h b/sys/arm64/include/ucontext.h
index baaa9ee..2407517 100644
--- a/sys/arm64/include/ucontext.h
+++ b/sys/arm64/include/ucontext.h
@@ -34,29 +34,29 @@
#define _MACHINE_UCONTEXT_H_
struct gpregs {
- unsigned long long gp_x[30];
- unsigned long long gp_lr;
- unsigned long long gp_sp;
- unsigned long long gp_elr;
- uint32_t gp_spsr;
- u_int gp_pad;
+ __register_t gp_x[30];
+ __register_t gp_lr;
+ __register_t gp_sp;
+ __register_t gp_elr;
+ __uint32_t gp_spsr;
+ int gp_pad;
};
struct fpregs {
__uint128_t fp_q[32];
- uint32_t fp_sr;
- uint32_t fp_cr;
- u_int fp_flags;
- u_int fp_pad;
+ __uint32_t fp_sr;
+ __uint32_t fp_cr;
+ int fp_flags;
+ int fp_pad;
};
struct __mcontext {
struct gpregs mc_gpregs;
struct fpregs mc_fpregs;
- u_int mc_flags;
+ int mc_flags;
#define _MC_FP_VALID 0x1 /* Set when mc_fpregs has valid data */
- u_int mc_pad; /* Padding */
- uint64_t mc_spare[8]; /* Space for expansion, set to zero */
+ int mc_pad; /* Padding */
+ __uint64_t mc_spare[8]; /* Space for expansion, set to zero */
};
typedef struct __mcontext mcontext_t;
diff --git a/sys/cddl/contrib/opensolaris/common/nvpair/fnvpair.c b/sys/cddl/contrib/opensolaris/common/nvpair/opensolaris_fnvpair.c
index eb200a2..eb200a2 100644
--- a/sys/cddl/contrib/opensolaris/common/nvpair/fnvpair.c
+++ b/sys/cddl/contrib/opensolaris/common/nvpair/opensolaris_fnvpair.c
diff --git a/sys/cddl/contrib/opensolaris/common/nvpair/nvpair.c b/sys/cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair.c
index cd6af4e..cd6af4e 100644
--- a/sys/cddl/contrib/opensolaris/common/nvpair/nvpair.c
+++ b/sys/cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair.c
diff --git a/sys/cddl/contrib/opensolaris/common/nvpair/nvpair_alloc_fixed.c b/sys/cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair_alloc_fixed.c
index 620171e..620171e 100644
--- a/sys/cddl/contrib/opensolaris/common/nvpair/nvpair_alloc_fixed.c
+++ b/sys/cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair_alloc_fixed.c
diff --git a/sys/compat/cloudabi/cloudabi_clock.c b/sys/compat/cloudabi/cloudabi_clock.c
new file mode 100644
index 0000000..a6b783c
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_clock.c
@@ -0,0 +1,47 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi/cloudabi_proto.h>
+
+int
+cloudabi_sys_clock_res_get(struct thread *td,
+ struct cloudabi_sys_clock_res_get_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_clock_time_get(struct thread *td,
+ struct cloudabi_sys_clock_time_get_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi/cloudabi_fd.c b/sys/compat/cloudabi/cloudabi_fd.c
new file mode 100644
index 0000000..5ac9015
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_fd.c
@@ -0,0 +1,156 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/filedesc.h>
+#include <sys/proc.h>
+#include <sys/syscallsubr.h>
+#include <sys/sysproto.h>
+#include <sys/unistd.h>
+
+#include <compat/cloudabi/cloudabi_proto.h>
+
+int
+cloudabi_sys_fd_close(struct thread *td, struct cloudabi_sys_fd_close_args *uap)
+{
+
+ return (kern_close(td, uap->fd));
+}
+
+int
+cloudabi_sys_fd_create1(struct thread *td,
+ struct cloudabi_sys_fd_create1_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_fd_create2(struct thread *td,
+ struct cloudabi_sys_fd_create2_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_fd_datasync(struct thread *td,
+ struct cloudabi_sys_fd_datasync_args *uap)
+{
+ struct fsync_args fsync_args = {
+ .fd = uap->fd
+ };
+
+ /* Call into fsync(), as FreeBSD lacks fdatasync(). */
+ return (sys_fsync(td, &fsync_args));
+}
+
+int
+cloudabi_sys_fd_dup(struct thread *td, struct cloudabi_sys_fd_dup_args *uap)
+{
+
+ return (kern_dup(td, 0, uap->from, 0));
+}
+
+int
+cloudabi_sys_fd_replace(struct thread *td,
+ struct cloudabi_sys_fd_replace_args *uap)
+{
+ int error;
+
+ /*
+ * CloudABI's equivalent to dup2(). CloudABI processes should
+ * not depend on hardcoded file descriptor layouts, but simply
+ * use the file descriptor numbers that are allocated by the
+ * kernel. Duplicating file descriptors to arbitrary numbers
+ * should not be done.
+ *
+ * Invoke kern_dup() with FDDUP_MUSTREPLACE, so that we return
+ * EBADF when duplicating to a nonexistent file descriptor. Also
+ * clear the return value, as this system call yields no return
+ * value.
+ */
+ error = kern_dup(td, FDDUP_MUSTREPLACE, uap->from, uap->to);
+ td->td_retval[0] = 0;
+ return (error);
+}
+
+int
+cloudabi_sys_fd_seek(struct thread *td, struct cloudabi_sys_fd_seek_args *uap)
+{
+ struct lseek_args lseek_args = {
+ .fd = uap->fd,
+ .offset = uap->offset
+ };
+
+ switch (uap->whence) {
+ case CLOUDABI_WHENCE_CUR:
+ lseek_args.whence = SEEK_CUR;
+ break;
+ case CLOUDABI_WHENCE_END:
+ lseek_args.whence = SEEK_END;
+ break;
+ case CLOUDABI_WHENCE_SET:
+ lseek_args.whence = SEEK_SET;
+ break;
+ default:
+ return (EINVAL);
+ }
+
+ return (sys_lseek(td, &lseek_args));
+}
+
+int
+cloudabi_sys_fd_stat_get(struct thread *td,
+ struct cloudabi_sys_fd_stat_get_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_fd_stat_put(struct thread *td,
+ struct cloudabi_sys_fd_stat_put_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_fd_sync(struct thread *td, struct cloudabi_sys_fd_sync_args *uap)
+{
+ struct fsync_args fsync_args = {
+ .fd = uap->fd
+ };
+
+ return (sys_fsync(td, &fsync_args));
+}
diff --git a/sys/compat/cloudabi/cloudabi_file.c b/sys/compat/cloudabi/cloudabi_file.c
new file mode 100644
index 0000000..46e5792
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_file.c
@@ -0,0 +1,155 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi/cloudabi_proto.h>
+
+int
+cloudabi_sys_file_advise(struct thread *td,
+ struct cloudabi_sys_file_advise_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_allocate(struct thread *td,
+ struct cloudabi_sys_file_allocate_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_create(struct thread *td,
+ struct cloudabi_sys_file_create_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_link(struct thread *td,
+ struct cloudabi_sys_file_link_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_open(struct thread *td,
+ struct cloudabi_sys_file_open_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_readdir(struct thread *td,
+ struct cloudabi_sys_file_readdir_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_readlink(struct thread *td,
+ struct cloudabi_sys_file_readlink_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_rename(struct thread *td,
+ struct cloudabi_sys_file_rename_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_stat_fget(struct thread *td,
+ struct cloudabi_sys_file_stat_fget_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_stat_fput(struct thread *td,
+ struct cloudabi_sys_file_stat_fput_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_stat_get(struct thread *td,
+ struct cloudabi_sys_file_stat_get_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_stat_put(struct thread *td,
+ struct cloudabi_sys_file_stat_put_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_symlink(struct thread *td,
+ struct cloudabi_sys_file_symlink_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_file_unlink(struct thread *td,
+ struct cloudabi_sys_file_unlink_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi/cloudabi_futex.c b/sys/compat/cloudabi/cloudabi_futex.c
new file mode 100644
index 0000000..9d4fdf8
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_futex.c
@@ -0,0 +1,47 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi/cloudabi_proto.h>
+
+int
+cloudabi_sys_condvar_signal(struct thread *td,
+ struct cloudabi_sys_condvar_signal_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_lock_unlock(struct thread *td,
+ struct cloudabi_sys_lock_unlock_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi/cloudabi_mem.c b/sys/compat/cloudabi/cloudabi_mem.c
new file mode 100644
index 0000000..e519ed1
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_mem.c
@@ -0,0 +1,89 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi/cloudabi_proto.h>
+
+int
+cloudabi_sys_mem_advise(struct thread *td,
+ struct cloudabi_sys_mem_advise_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_mem_lock(struct thread *td, struct cloudabi_sys_mem_lock_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_mem_map(struct thread *td, struct cloudabi_sys_mem_map_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_mem_protect(struct thread *td,
+ struct cloudabi_sys_mem_protect_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_mem_sync(struct thread *td, struct cloudabi_sys_mem_sync_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_mem_unlock(struct thread *td,
+ struct cloudabi_sys_mem_unlock_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_mem_unmap(struct thread *td,
+ struct cloudabi_sys_mem_unmap_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi/cloudabi_proc.c b/sys/compat/cloudabi/cloudabi_proc.c
new file mode 100644
index 0000000..faa39dc
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_proc.c
@@ -0,0 +1,65 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi/cloudabi_proto.h>
+
+int
+cloudabi_sys_proc_exec(struct thread *td,
+ struct cloudabi_sys_proc_exec_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_proc_exit(struct thread *td,
+ struct cloudabi_sys_proc_exit_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_proc_fork(struct thread *td,
+ struct cloudabi_sys_proc_fork_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_proc_raise(struct thread *td,
+ struct cloudabi_sys_proc_raise_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi/cloudabi_proto.h b/sys/compat/cloudabi/cloudabi_proto.h
new file mode 100644
index 0000000..e4baffd
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_proto.h
@@ -0,0 +1,34 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * This should provide all prototypes for the machine-independent system
+ * calls. Unfortunately, we don't have a separate system call table for
+ * those, so rely on the system call table from COMPAT_CLOUDABI64.
+ */
+#include <compat/cloudabi64/cloudabi64_syscalldefs.h>
+#include <compat/cloudabi64/cloudabi64_proto.h>
diff --git a/sys/compat/cloudabi/cloudabi_random.c b/sys/compat/cloudabi/cloudabi_random.c
new file mode 100644
index 0000000..bd644c3
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_random.c
@@ -0,0 +1,38 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi/cloudabi_proto.h>
+
+int
+cloudabi_sys_random_get(struct thread *td,
+ struct cloudabi_sys_random_get_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi/cloudabi_sock.c b/sys/compat/cloudabi/cloudabi_sock.c
new file mode 100644
index 0000000..a332374
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_sock.c
@@ -0,0 +1,83 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi/cloudabi_proto.h>
+
+int
+cloudabi_sys_sock_accept(struct thread *td,
+ struct cloudabi_sys_sock_accept_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_sock_bind(struct thread *td,
+ struct cloudabi_sys_sock_bind_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_sock_connect(struct thread *td,
+ struct cloudabi_sys_sock_connect_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_sock_listen(struct thread *td,
+ struct cloudabi_sys_sock_listen_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_sock_shutdown(struct thread *td,
+ struct cloudabi_sys_sock_shutdown_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_sock_stat_get(struct thread *td,
+ struct cloudabi_sys_sock_stat_get_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi/cloudabi_syscalldefs.h b/sys/compat/cloudabi/cloudabi_syscalldefs.h
new file mode 100644
index 0000000..3a20c81
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_syscalldefs.h
@@ -0,0 +1,40 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _CLOUDABI_SYSCALLDEFS_H_
+#define _CLOUDABI_SYSCALLDEFS_H_
+
+#include <sys/types.h>
+
+#define alignas _Alignas
+#define alignof _Alignof
+#define static_assert _Static_assert
+
+/* Import machine-independent CloudABI definitions. */
+#include <contrib/cloudabi/syscalldefs_mi.h>
+
+#endif
diff --git a/sys/compat/cloudabi/cloudabi_thread.c b/sys/compat/cloudabi/cloudabi_thread.c
new file mode 100644
index 0000000..051d420
--- /dev/null
+++ b/sys/compat/cloudabi/cloudabi_thread.c
@@ -0,0 +1,47 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi/cloudabi_proto.h>
+
+int
+cloudabi_sys_thread_exit(struct thread *td,
+ struct cloudabi_sys_thread_exit_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi_sys_thread_yield(struct thread *td,
+ struct cloudabi_sys_thread_yield_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi64/Makefile b/sys/compat/cloudabi64/Makefile
new file mode 100644
index 0000000..3fbef57
--- /dev/null
+++ b/sys/compat/cloudabi64/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+all:
+ @echo "make sysent only"
+
+sysent: cloudabi64_sysent.c cloudabi64_syscall.h cloudabi64_proto.h \
+ cloudabi64_syscalls.c cloudabi64_systrace_args.c
+
+cloudabi64_sysent.c cloudabi64_syscall.h cloudabi64_proto.h \
+ cloudabi64_syscalls.c cloudabi64_systrace_args.c: \
+ ../../kern/makesyscalls.sh syscalls.master syscalls.conf
+ sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf
diff --git a/sys/compat/cloudabi64/cloudabi64_fd.c b/sys/compat/cloudabi64/cloudabi64_fd.c
new file mode 100644
index 0000000..bbe236a
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_fd.c
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi64/cloudabi64_syscalldefs.h>
+#include <compat/cloudabi64/cloudabi64_proto.h>
+
+int
+cloudabi64_sys_fd_pread(struct thread *td,
+ struct cloudabi64_sys_fd_pread_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi64_sys_fd_pwrite(struct thread *td,
+ struct cloudabi64_sys_fd_pwrite_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi64_sys_fd_read(struct thread *td,
+ struct cloudabi64_sys_fd_read_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi64_sys_fd_write(struct thread *td,
+ struct cloudabi64_sys_fd_write_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi64/cloudabi64_poll.c b/sys/compat/cloudabi64/cloudabi64_poll.c
new file mode 100644
index 0000000..544886d
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_poll.c
@@ -0,0 +1,38 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi64/cloudabi64_syscalldefs.h>
+#include <compat/cloudabi64/cloudabi64_proto.h>
+
+int
+cloudabi64_sys_poll(struct thread *td, struct cloudabi64_sys_poll_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi64/cloudabi64_proto.h b/sys/compat/cloudabi64/cloudabi64_proto.h
new file mode 100644
index 0000000..9d33b7c
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_proto.h
@@ -0,0 +1,453 @@
+/*
+ * System call prototypes.
+ *
+ * DO NOT EDIT-- this file is automatically generated.
+ * $FreeBSD$
+ * created from FreeBSD: head/sys/compat/cloudabi64/syscalls.master 285307 2015-07-09 07:20:15Z ed
+ */
+
+#ifndef _CLOUDABI64_SYSPROTO_H_
+#define _CLOUDABI64_SYSPROTO_H_
+
+#include <sys/signal.h>
+#include <sys/acl.h>
+#include <sys/cpuset.h>
+#include <sys/_ffcounter.h>
+#include <sys/_semaphore.h>
+#include <sys/ucontext.h>
+#include <sys/wait.h>
+
+#include <bsm/audit_kevents.h>
+
+struct proc;
+
+struct thread;
+
+#define PAD_(t) (sizeof(register_t) <= sizeof(t) ? \
+ 0 : sizeof(register_t) - sizeof(t))
+
+#if BYTE_ORDER == LITTLE_ENDIAN
+#define PADL_(t) 0
+#define PADR_(t) PAD_(t)
+#else
+#define PADL_(t) PAD_(t)
+#define PADR_(t) 0
+#endif
+
+struct cloudabi_sys_clock_res_get_args {
+ char clock_id_l_[PADL_(cloudabi_clockid_t)]; cloudabi_clockid_t clock_id; char clock_id_r_[PADR_(cloudabi_clockid_t)];
+};
+struct cloudabi_sys_clock_time_get_args {
+ char clock_id_l_[PADL_(cloudabi_clockid_t)]; cloudabi_clockid_t clock_id; char clock_id_r_[PADR_(cloudabi_clockid_t)];
+ char precision_l_[PADL_(cloudabi_timestamp_t)]; cloudabi_timestamp_t precision; char precision_r_[PADR_(cloudabi_timestamp_t)];
+};
+struct cloudabi_sys_condvar_signal_args {
+ char condvar_l_[PADL_(cloudabi_condvar_t *)]; cloudabi_condvar_t * condvar; char condvar_r_[PADR_(cloudabi_condvar_t *)];
+ char nwaiters_l_[PADL_(cloudabi_nthreads_t)]; cloudabi_nthreads_t nwaiters; char nwaiters_r_[PADR_(cloudabi_nthreads_t)];
+};
+struct cloudabi_sys_fd_close_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+};
+struct cloudabi_sys_fd_create1_args {
+ char type_l_[PADL_(cloudabi_filetype_t)]; cloudabi_filetype_t type; char type_r_[PADR_(cloudabi_filetype_t)];
+};
+struct cloudabi_sys_fd_create2_args {
+ char type_l_[PADL_(cloudabi_filetype_t)]; cloudabi_filetype_t type; char type_r_[PADR_(cloudabi_filetype_t)];
+};
+struct cloudabi_sys_fd_datasync_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+};
+struct cloudabi_sys_fd_dup_args {
+ char from_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t from; char from_r_[PADR_(cloudabi_fd_t)];
+};
+struct cloudabi64_sys_fd_pread_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char iov_l_[PADL_(const cloudabi64_iovec_t *)]; const cloudabi64_iovec_t * iov; char iov_r_[PADR_(const cloudabi64_iovec_t *)];
+ char iovcnt_l_[PADL_(cloudabi64_size_t)]; cloudabi64_size_t iovcnt; char iovcnt_r_[PADR_(cloudabi64_size_t)];
+ char offset_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t offset; char offset_r_[PADR_(cloudabi_filesize_t)];
+};
+struct cloudabi64_sys_fd_pwrite_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char iov_l_[PADL_(const cloudabi64_ciovec_t *)]; const cloudabi64_ciovec_t * iov; char iov_r_[PADR_(const cloudabi64_ciovec_t *)];
+ char iovcnt_l_[PADL_(cloudabi64_size_t)]; cloudabi64_size_t iovcnt; char iovcnt_r_[PADR_(cloudabi64_size_t)];
+ char offset_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t offset; char offset_r_[PADR_(cloudabi_filesize_t)];
+};
+struct cloudabi64_sys_fd_read_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char iov_l_[PADL_(const cloudabi64_iovec_t *)]; const cloudabi64_iovec_t * iov; char iov_r_[PADR_(const cloudabi64_iovec_t *)];
+ char iovcnt_l_[PADL_(cloudabi64_size_t)]; cloudabi64_size_t iovcnt; char iovcnt_r_[PADR_(cloudabi64_size_t)];
+};
+struct cloudabi_sys_fd_replace_args {
+ char from_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t from; char from_r_[PADR_(cloudabi_fd_t)];
+ char to_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t to; char to_r_[PADR_(cloudabi_fd_t)];
+};
+struct cloudabi_sys_fd_seek_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char offset_l_[PADL_(cloudabi_filedelta_t)]; cloudabi_filedelta_t offset; char offset_r_[PADR_(cloudabi_filedelta_t)];
+ char whence_l_[PADL_(cloudabi_whence_t)]; cloudabi_whence_t whence; char whence_r_[PADR_(cloudabi_whence_t)];
+};
+struct cloudabi_sys_fd_stat_get_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char buf_l_[PADL_(cloudabi_fdstat_t *)]; cloudabi_fdstat_t * buf; char buf_r_[PADR_(cloudabi_fdstat_t *)];
+};
+struct cloudabi_sys_fd_stat_put_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char buf_l_[PADL_(const cloudabi_fdstat_t *)]; const cloudabi_fdstat_t * buf; char buf_r_[PADR_(const cloudabi_fdstat_t *)];
+ char flags_l_[PADL_(cloudabi_fdsflags_t)]; cloudabi_fdsflags_t flags; char flags_r_[PADR_(cloudabi_fdsflags_t)];
+};
+struct cloudabi_sys_fd_sync_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+};
+struct cloudabi64_sys_fd_write_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char iov_l_[PADL_(const cloudabi64_ciovec_t *)]; const cloudabi64_ciovec_t * iov; char iov_r_[PADR_(const cloudabi64_ciovec_t *)];
+ char iovcnt_l_[PADL_(cloudabi64_size_t)]; cloudabi64_size_t iovcnt; char iovcnt_r_[PADR_(cloudabi64_size_t)];
+};
+struct cloudabi_sys_file_advise_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char offset_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t offset; char offset_r_[PADR_(cloudabi_filesize_t)];
+ char len_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t len; char len_r_[PADR_(cloudabi_filesize_t)];
+ char advice_l_[PADL_(cloudabi_advice_t)]; cloudabi_advice_t advice; char advice_r_[PADR_(cloudabi_advice_t)];
+};
+struct cloudabi_sys_file_allocate_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char offset_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t offset; char offset_r_[PADR_(cloudabi_filesize_t)];
+ char len_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t len; char len_r_[PADR_(cloudabi_filesize_t)];
+};
+struct cloudabi_sys_file_create_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char type_l_[PADL_(cloudabi_filetype_t)]; cloudabi_filetype_t type; char type_r_[PADR_(cloudabi_filetype_t)];
+};
+struct cloudabi_sys_file_link_args {
+ char fd1_l_[PADL_(cloudabi_lookup_t)]; cloudabi_lookup_t fd1; char fd1_r_[PADR_(cloudabi_lookup_t)];
+ char path1_l_[PADL_(const char *)]; const char * path1; char path1_r_[PADR_(const char *)];
+ char path1len_l_[PADL_(size_t)]; size_t path1len; char path1len_r_[PADR_(size_t)];
+ char fd2_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd2; char fd2_r_[PADR_(cloudabi_fd_t)];
+ char path2_l_[PADL_(const char *)]; const char * path2; char path2_r_[PADR_(const char *)];
+ char path2len_l_[PADL_(size_t)]; size_t path2len; char path2len_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_file_open_args {
+ char fd_l_[PADL_(cloudabi_lookup_t)]; cloudabi_lookup_t fd; char fd_r_[PADR_(cloudabi_lookup_t)];
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char oflags_l_[PADL_(cloudabi_oflags_t)]; cloudabi_oflags_t oflags; char oflags_r_[PADR_(cloudabi_oflags_t)];
+ char fds_l_[PADL_(const cloudabi_fdstat_t *)]; const cloudabi_fdstat_t * fds; char fds_r_[PADR_(const cloudabi_fdstat_t *)];
+};
+struct cloudabi_sys_file_readdir_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
+ char nbyte_l_[PADL_(size_t)]; size_t nbyte; char nbyte_r_[PADR_(size_t)];
+ char cookie_l_[PADL_(cloudabi_dircookie_t)]; cloudabi_dircookie_t cookie; char cookie_r_[PADR_(cloudabi_dircookie_t)];
+};
+struct cloudabi_sys_file_readlink_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
+ char bufsize_l_[PADL_(size_t)]; size_t bufsize; char bufsize_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_file_rename_args {
+ char oldfd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t oldfd; char oldfd_r_[PADR_(cloudabi_fd_t)];
+ char old_l_[PADL_(const char *)]; const char * old; char old_r_[PADR_(const char *)];
+ char oldlen_l_[PADL_(size_t)]; size_t oldlen; char oldlen_r_[PADR_(size_t)];
+ char newfd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t newfd; char newfd_r_[PADR_(cloudabi_fd_t)];
+ char new_l_[PADL_(const char *)]; const char * new; char new_r_[PADR_(const char *)];
+ char newlen_l_[PADL_(size_t)]; size_t newlen; char newlen_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_file_stat_fget_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char buf_l_[PADL_(cloudabi_filestat_t *)]; cloudabi_filestat_t * buf; char buf_r_[PADR_(cloudabi_filestat_t *)];
+};
+struct cloudabi_sys_file_stat_fput_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char buf_l_[PADL_(const cloudabi_filestat_t *)]; const cloudabi_filestat_t * buf; char buf_r_[PADR_(const cloudabi_filestat_t *)];
+ char flags_l_[PADL_(cloudabi_fsflags_t)]; cloudabi_fsflags_t flags; char flags_r_[PADR_(cloudabi_fsflags_t)];
+};
+struct cloudabi_sys_file_stat_get_args {
+ char fd_l_[PADL_(cloudabi_lookup_t)]; cloudabi_lookup_t fd; char fd_r_[PADR_(cloudabi_lookup_t)];
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char buf_l_[PADL_(cloudabi_filestat_t *)]; cloudabi_filestat_t * buf; char buf_r_[PADR_(cloudabi_filestat_t *)];
+};
+struct cloudabi_sys_file_stat_put_args {
+ char fd_l_[PADL_(cloudabi_lookup_t)]; cloudabi_lookup_t fd; char fd_r_[PADR_(cloudabi_lookup_t)];
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char buf_l_[PADL_(const cloudabi_filestat_t *)]; const cloudabi_filestat_t * buf; char buf_r_[PADR_(const cloudabi_filestat_t *)];
+ char flags_l_[PADL_(cloudabi_fsflags_t)]; cloudabi_fsflags_t flags; char flags_r_[PADR_(cloudabi_fsflags_t)];
+};
+struct cloudabi_sys_file_symlink_args {
+ char path1_l_[PADL_(const char *)]; const char * path1; char path1_r_[PADR_(const char *)];
+ char path1len_l_[PADL_(size_t)]; size_t path1len; char path1len_r_[PADR_(size_t)];
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char path2_l_[PADL_(const char *)]; const char * path2; char path2_r_[PADR_(const char *)];
+ char path2len_l_[PADL_(size_t)]; size_t path2len; char path2len_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_file_unlink_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+ char flag_l_[PADL_(cloudabi_ulflags_t)]; cloudabi_ulflags_t flag; char flag_r_[PADR_(cloudabi_ulflags_t)];
+};
+struct cloudabi_sys_lock_unlock_args {
+ char lock_l_[PADL_(cloudabi_lock_t *)]; cloudabi_lock_t * lock; char lock_r_[PADR_(cloudabi_lock_t *)];
+};
+struct cloudabi_sys_mem_advise_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char advice_l_[PADL_(cloudabi_advice_t)]; cloudabi_advice_t advice; char advice_r_[PADR_(cloudabi_advice_t)];
+};
+struct cloudabi_sys_mem_lock_args {
+ char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_mem_map_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char prot_l_[PADL_(cloudabi_mprot_t)]; cloudabi_mprot_t prot; char prot_r_[PADR_(cloudabi_mprot_t)];
+ char flags_l_[PADL_(cloudabi_mflags_t)]; cloudabi_mflags_t flags; char flags_r_[PADR_(cloudabi_mflags_t)];
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char off_l_[PADL_(cloudabi_filesize_t)]; cloudabi_filesize_t off; char off_r_[PADR_(cloudabi_filesize_t)];
+};
+struct cloudabi_sys_mem_protect_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char prot_l_[PADL_(cloudabi_mprot_t)]; cloudabi_mprot_t prot; char prot_r_[PADR_(cloudabi_mprot_t)];
+};
+struct cloudabi_sys_mem_sync_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char flags_l_[PADL_(cloudabi_msflags_t)]; cloudabi_msflags_t flags; char flags_r_[PADR_(cloudabi_msflags_t)];
+};
+struct cloudabi_sys_mem_unlock_args {
+ char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_mem_unmap_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+};
+struct cloudabi64_sys_poll_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char in_l_[PADL_(const cloudabi64_subscription_t *)]; const cloudabi64_subscription_t * in; char in_r_[PADR_(const cloudabi64_subscription_t *)];
+ char nin_l_[PADL_(cloudabi64_size_t)]; cloudabi64_size_t nin; char nin_r_[PADR_(cloudabi64_size_t)];
+ char out_l_[PADL_(cloudabi64_event_t *)]; cloudabi64_event_t * out; char out_r_[PADR_(cloudabi64_event_t *)];
+ char nout_l_[PADL_(cloudabi64_size_t)]; cloudabi64_size_t nout; char nout_r_[PADR_(cloudabi64_size_t)];
+};
+struct cloudabi_sys_proc_exec_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char data_l_[PADL_(const void *)]; const void * data; char data_r_[PADR_(const void *)];
+ char datalen_l_[PADL_(size_t)]; size_t datalen; char datalen_r_[PADR_(size_t)];
+ char fds_l_[PADL_(const cloudabi_fd_t *)]; const cloudabi_fd_t * fds; char fds_r_[PADR_(const cloudabi_fd_t *)];
+ char fdslen_l_[PADL_(size_t)]; size_t fdslen; char fdslen_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_proc_exit_args {
+ char rval_l_[PADL_(cloudabi_exitcode_t)]; cloudabi_exitcode_t rval; char rval_r_[PADR_(cloudabi_exitcode_t)];
+};
+struct cloudabi_sys_proc_fork_args {
+ register_t dummy;
+};
+struct cloudabi_sys_proc_raise_args {
+ char sig_l_[PADL_(cloudabi_signal_t)]; cloudabi_signal_t sig; char sig_r_[PADR_(cloudabi_signal_t)];
+};
+struct cloudabi_sys_random_get_args {
+ char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
+ char nbyte_l_[PADL_(size_t)]; size_t nbyte; char nbyte_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_sock_accept_args {
+ char s_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t s; char s_r_[PADR_(cloudabi_fd_t)];
+ char buf_l_[PADL_(cloudabi_sockstat_t *)]; cloudabi_sockstat_t * buf; char buf_r_[PADR_(cloudabi_sockstat_t *)];
+};
+struct cloudabi_sys_sock_bind_args {
+ char s_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t s; char s_r_[PADR_(cloudabi_fd_t)];
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_sock_connect_args {
+ char s_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t s; char s_r_[PADR_(cloudabi_fd_t)];
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char pathlen_l_[PADL_(size_t)]; size_t pathlen; char pathlen_r_[PADR_(size_t)];
+};
+struct cloudabi_sys_sock_listen_args {
+ char s_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t s; char s_r_[PADR_(cloudabi_fd_t)];
+ char backlog_l_[PADL_(cloudabi_backlog_t)]; cloudabi_backlog_t backlog; char backlog_r_[PADR_(cloudabi_backlog_t)];
+};
+struct cloudabi64_sys_sock_recv_args {
+ char s_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t s; char s_r_[PADR_(cloudabi_fd_t)];
+ char in_l_[PADL_(const cloudabi64_recv_in_t *)]; const cloudabi64_recv_in_t * in; char in_r_[PADR_(const cloudabi64_recv_in_t *)];
+ char out_l_[PADL_(cloudabi64_recv_out_t *)]; cloudabi64_recv_out_t * out; char out_r_[PADR_(cloudabi64_recv_out_t *)];
+};
+struct cloudabi64_sys_sock_send_args {
+ char s_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t s; char s_r_[PADR_(cloudabi_fd_t)];
+ char in_l_[PADL_(const cloudabi64_send_in_t *)]; const cloudabi64_send_in_t * in; char in_r_[PADR_(const cloudabi64_send_in_t *)];
+ char out_l_[PADL_(cloudabi64_send_out_t *)]; cloudabi64_send_out_t * out; char out_r_[PADR_(cloudabi64_send_out_t *)];
+};
+struct cloudabi_sys_sock_shutdown_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char how_l_[PADL_(cloudabi_sdflags_t)]; cloudabi_sdflags_t how; char how_r_[PADR_(cloudabi_sdflags_t)];
+};
+struct cloudabi_sys_sock_stat_get_args {
+ char fd_l_[PADL_(cloudabi_fd_t)]; cloudabi_fd_t fd; char fd_r_[PADR_(cloudabi_fd_t)];
+ char buf_l_[PADL_(cloudabi_sockstat_t *)]; cloudabi_sockstat_t * buf; char buf_r_[PADR_(cloudabi_sockstat_t *)];
+ char flags_l_[PADL_(cloudabi_ssflags_t)]; cloudabi_ssflags_t flags; char flags_r_[PADR_(cloudabi_ssflags_t)];
+};
+struct cloudabi64_sys_thread_create_args {
+ char attr_l_[PADL_(cloudabi64_threadattr_t *)]; cloudabi64_threadattr_t * attr; char attr_r_[PADR_(cloudabi64_threadattr_t *)];
+};
+struct cloudabi_sys_thread_exit_args {
+ char lock_l_[PADL_(cloudabi_lock_t *)]; cloudabi_lock_t * lock; char lock_r_[PADR_(cloudabi_lock_t *)];
+};
+struct cloudabi64_sys_thread_tcb_set_args {
+ char tcb_l_[PADL_(void *)]; void * tcb; char tcb_r_[PADR_(void *)];
+};
+struct cloudabi_sys_thread_yield_args {
+ register_t dummy;
+};
+int cloudabi_sys_clock_res_get(struct thread *, struct cloudabi_sys_clock_res_get_args *);
+int cloudabi_sys_clock_time_get(struct thread *, struct cloudabi_sys_clock_time_get_args *);
+int cloudabi_sys_condvar_signal(struct thread *, struct cloudabi_sys_condvar_signal_args *);
+int cloudabi_sys_fd_close(struct thread *, struct cloudabi_sys_fd_close_args *);
+int cloudabi_sys_fd_create1(struct thread *, struct cloudabi_sys_fd_create1_args *);
+int cloudabi_sys_fd_create2(struct thread *, struct cloudabi_sys_fd_create2_args *);
+int cloudabi_sys_fd_datasync(struct thread *, struct cloudabi_sys_fd_datasync_args *);
+int cloudabi_sys_fd_dup(struct thread *, struct cloudabi_sys_fd_dup_args *);
+int cloudabi64_sys_fd_pread(struct thread *, struct cloudabi64_sys_fd_pread_args *);
+int cloudabi64_sys_fd_pwrite(struct thread *, struct cloudabi64_sys_fd_pwrite_args *);
+int cloudabi64_sys_fd_read(struct thread *, struct cloudabi64_sys_fd_read_args *);
+int cloudabi_sys_fd_replace(struct thread *, struct cloudabi_sys_fd_replace_args *);
+int cloudabi_sys_fd_seek(struct thread *, struct cloudabi_sys_fd_seek_args *);
+int cloudabi_sys_fd_stat_get(struct thread *, struct cloudabi_sys_fd_stat_get_args *);
+int cloudabi_sys_fd_stat_put(struct thread *, struct cloudabi_sys_fd_stat_put_args *);
+int cloudabi_sys_fd_sync(struct thread *, struct cloudabi_sys_fd_sync_args *);
+int cloudabi64_sys_fd_write(struct thread *, struct cloudabi64_sys_fd_write_args *);
+int cloudabi_sys_file_advise(struct thread *, struct cloudabi_sys_file_advise_args *);
+int cloudabi_sys_file_allocate(struct thread *, struct cloudabi_sys_file_allocate_args *);
+int cloudabi_sys_file_create(struct thread *, struct cloudabi_sys_file_create_args *);
+int cloudabi_sys_file_link(struct thread *, struct cloudabi_sys_file_link_args *);
+int cloudabi_sys_file_open(struct thread *, struct cloudabi_sys_file_open_args *);
+int cloudabi_sys_file_readdir(struct thread *, struct cloudabi_sys_file_readdir_args *);
+int cloudabi_sys_file_readlink(struct thread *, struct cloudabi_sys_file_readlink_args *);
+int cloudabi_sys_file_rename(struct thread *, struct cloudabi_sys_file_rename_args *);
+int cloudabi_sys_file_stat_fget(struct thread *, struct cloudabi_sys_file_stat_fget_args *);
+int cloudabi_sys_file_stat_fput(struct thread *, struct cloudabi_sys_file_stat_fput_args *);
+int cloudabi_sys_file_stat_get(struct thread *, struct cloudabi_sys_file_stat_get_args *);
+int cloudabi_sys_file_stat_put(struct thread *, struct cloudabi_sys_file_stat_put_args *);
+int cloudabi_sys_file_symlink(struct thread *, struct cloudabi_sys_file_symlink_args *);
+int cloudabi_sys_file_unlink(struct thread *, struct cloudabi_sys_file_unlink_args *);
+int cloudabi_sys_lock_unlock(struct thread *, struct cloudabi_sys_lock_unlock_args *);
+int cloudabi_sys_mem_advise(struct thread *, struct cloudabi_sys_mem_advise_args *);
+int cloudabi_sys_mem_lock(struct thread *, struct cloudabi_sys_mem_lock_args *);
+int cloudabi_sys_mem_map(struct thread *, struct cloudabi_sys_mem_map_args *);
+int cloudabi_sys_mem_protect(struct thread *, struct cloudabi_sys_mem_protect_args *);
+int cloudabi_sys_mem_sync(struct thread *, struct cloudabi_sys_mem_sync_args *);
+int cloudabi_sys_mem_unlock(struct thread *, struct cloudabi_sys_mem_unlock_args *);
+int cloudabi_sys_mem_unmap(struct thread *, struct cloudabi_sys_mem_unmap_args *);
+int cloudabi64_sys_poll(struct thread *, struct cloudabi64_sys_poll_args *);
+int cloudabi_sys_proc_exec(struct thread *, struct cloudabi_sys_proc_exec_args *);
+int cloudabi_sys_proc_exit(struct thread *, struct cloudabi_sys_proc_exit_args *);
+int cloudabi_sys_proc_fork(struct thread *, struct cloudabi_sys_proc_fork_args *);
+int cloudabi_sys_proc_raise(struct thread *, struct cloudabi_sys_proc_raise_args *);
+int cloudabi_sys_random_get(struct thread *, struct cloudabi_sys_random_get_args *);
+int cloudabi_sys_sock_accept(struct thread *, struct cloudabi_sys_sock_accept_args *);
+int cloudabi_sys_sock_bind(struct thread *, struct cloudabi_sys_sock_bind_args *);
+int cloudabi_sys_sock_connect(struct thread *, struct cloudabi_sys_sock_connect_args *);
+int cloudabi_sys_sock_listen(struct thread *, struct cloudabi_sys_sock_listen_args *);
+int cloudabi64_sys_sock_recv(struct thread *, struct cloudabi64_sys_sock_recv_args *);
+int cloudabi64_sys_sock_send(struct thread *, struct cloudabi64_sys_sock_send_args *);
+int cloudabi_sys_sock_shutdown(struct thread *, struct cloudabi_sys_sock_shutdown_args *);
+int cloudabi_sys_sock_stat_get(struct thread *, struct cloudabi_sys_sock_stat_get_args *);
+int cloudabi64_sys_thread_create(struct thread *, struct cloudabi64_sys_thread_create_args *);
+int cloudabi_sys_thread_exit(struct thread *, struct cloudabi_sys_thread_exit_args *);
+int cloudabi64_sys_thread_tcb_set(struct thread *, struct cloudabi64_sys_thread_tcb_set_args *);
+int cloudabi_sys_thread_yield(struct thread *, struct cloudabi_sys_thread_yield_args *);
+
+#ifdef COMPAT_43
+
+
+#endif /* COMPAT_43 */
+
+
+#ifdef COMPAT_FREEBSD4
+
+
+#endif /* COMPAT_FREEBSD4 */
+
+
+#ifdef COMPAT_FREEBSD6
+
+
+#endif /* COMPAT_FREEBSD6 */
+
+
+#ifdef COMPAT_FREEBSD7
+
+
+#endif /* COMPAT_FREEBSD7 */
+
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_clock_res_get AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_clock_time_get AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_condvar_signal AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_close AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_create1 AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_create2 AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_datasync AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_dup AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi64_sys_fd_pread AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi64_sys_fd_pwrite AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi64_sys_fd_read AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_replace AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_seek AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_stat_get AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_stat_put AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_fd_sync AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi64_sys_fd_write AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_advise AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_allocate AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_create AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_link AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_open AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_readdir AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_readlink AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_rename AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_stat_fget AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_stat_fput AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_stat_get AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_stat_put AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_symlink AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_file_unlink AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_lock_unlock AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_mem_advise AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_mem_lock AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_mem_map AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_mem_protect AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_mem_sync AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_mem_unlock AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_mem_unmap AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi64_sys_poll AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_proc_exec AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_proc_exit AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_proc_fork AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_proc_raise AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_random_get AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_sock_accept AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_sock_bind AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_sock_connect AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_sock_listen AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi64_sys_sock_recv AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi64_sys_sock_send AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_sock_shutdown AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_sock_stat_get AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi64_sys_thread_create AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_thread_exit AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi64_sys_thread_tcb_set AUE_NULL
+#define CLOUDABI64_SYS_AUE_cloudabi_sys_thread_yield AUE_NULL
+
+#undef PAD_
+#undef PADL_
+#undef PADR_
+
+#endif /* !_CLOUDABI64_SYSPROTO_H_ */
diff --git a/sys/compat/cloudabi64/cloudabi64_sock.c b/sys/compat/cloudabi64/cloudabi64_sock.c
new file mode 100644
index 0000000..be35989
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_sock.c
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi64/cloudabi64_syscalldefs.h>
+#include <compat/cloudabi64/cloudabi64_proto.h>
+
+int
+cloudabi64_sys_sock_recv(struct thread *td,
+ struct cloudabi64_sys_sock_recv_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi64_sys_sock_send(struct thread *td,
+ struct cloudabi64_sys_sock_send_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi64/cloudabi64_syscall.h b/sys/compat/cloudabi64/cloudabi64_syscall.h
new file mode 100644
index 0000000..2904a9f
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_syscall.h
@@ -0,0 +1,66 @@
+/*
+ * System call numbers.
+ *
+ * DO NOT EDIT-- this file is automatically generated.
+ * $FreeBSD$
+ * created from FreeBSD: head/sys/compat/cloudabi64/syscalls.master 285307 2015-07-09 07:20:15Z ed
+ */
+
+#define CLOUDABI64_SYS_cloudabi_sys_clock_res_get 0
+#define CLOUDABI64_SYS_cloudabi_sys_clock_time_get 1
+#define CLOUDABI64_SYS_cloudabi_sys_condvar_signal 2
+#define CLOUDABI64_SYS_cloudabi_sys_fd_close 3
+#define CLOUDABI64_SYS_cloudabi_sys_fd_create1 4
+#define CLOUDABI64_SYS_cloudabi_sys_fd_create2 5
+#define CLOUDABI64_SYS_cloudabi_sys_fd_datasync 6
+#define CLOUDABI64_SYS_cloudabi_sys_fd_dup 7
+#define CLOUDABI64_SYS_cloudabi64_sys_fd_pread 8
+#define CLOUDABI64_SYS_cloudabi64_sys_fd_pwrite 9
+#define CLOUDABI64_SYS_cloudabi64_sys_fd_read 10
+#define CLOUDABI64_SYS_cloudabi_sys_fd_replace 11
+#define CLOUDABI64_SYS_cloudabi_sys_fd_seek 12
+#define CLOUDABI64_SYS_cloudabi_sys_fd_stat_get 13
+#define CLOUDABI64_SYS_cloudabi_sys_fd_stat_put 14
+#define CLOUDABI64_SYS_cloudabi_sys_fd_sync 15
+#define CLOUDABI64_SYS_cloudabi64_sys_fd_write 16
+#define CLOUDABI64_SYS_cloudabi_sys_file_advise 17
+#define CLOUDABI64_SYS_cloudabi_sys_file_allocate 18
+#define CLOUDABI64_SYS_cloudabi_sys_file_create 19
+#define CLOUDABI64_SYS_cloudabi_sys_file_link 20
+#define CLOUDABI64_SYS_cloudabi_sys_file_open 21
+#define CLOUDABI64_SYS_cloudabi_sys_file_readdir 22
+#define CLOUDABI64_SYS_cloudabi_sys_file_readlink 23
+#define CLOUDABI64_SYS_cloudabi_sys_file_rename 24
+#define CLOUDABI64_SYS_cloudabi_sys_file_stat_fget 25
+#define CLOUDABI64_SYS_cloudabi_sys_file_stat_fput 26
+#define CLOUDABI64_SYS_cloudabi_sys_file_stat_get 27
+#define CLOUDABI64_SYS_cloudabi_sys_file_stat_put 28
+#define CLOUDABI64_SYS_cloudabi_sys_file_symlink 29
+#define CLOUDABI64_SYS_cloudabi_sys_file_unlink 30
+#define CLOUDABI64_SYS_cloudabi_sys_lock_unlock 31
+#define CLOUDABI64_SYS_cloudabi_sys_mem_advise 32
+#define CLOUDABI64_SYS_cloudabi_sys_mem_lock 33
+#define CLOUDABI64_SYS_cloudabi_sys_mem_map 34
+#define CLOUDABI64_SYS_cloudabi_sys_mem_protect 35
+#define CLOUDABI64_SYS_cloudabi_sys_mem_sync 36
+#define CLOUDABI64_SYS_cloudabi_sys_mem_unlock 37
+#define CLOUDABI64_SYS_cloudabi_sys_mem_unmap 38
+#define CLOUDABI64_SYS_cloudabi64_sys_poll 39
+#define CLOUDABI64_SYS_cloudabi_sys_proc_exec 40
+#define CLOUDABI64_SYS_cloudabi_sys_proc_exit 41
+#define CLOUDABI64_SYS_cloudabi_sys_proc_fork 42
+#define CLOUDABI64_SYS_cloudabi_sys_proc_raise 43
+#define CLOUDABI64_SYS_cloudabi_sys_random_get 44
+#define CLOUDABI64_SYS_cloudabi_sys_sock_accept 45
+#define CLOUDABI64_SYS_cloudabi_sys_sock_bind 46
+#define CLOUDABI64_SYS_cloudabi_sys_sock_connect 47
+#define CLOUDABI64_SYS_cloudabi_sys_sock_listen 48
+#define CLOUDABI64_SYS_cloudabi64_sys_sock_recv 49
+#define CLOUDABI64_SYS_cloudabi64_sys_sock_send 50
+#define CLOUDABI64_SYS_cloudabi_sys_sock_shutdown 51
+#define CLOUDABI64_SYS_cloudabi_sys_sock_stat_get 52
+#define CLOUDABI64_SYS_cloudabi64_sys_thread_create 53
+#define CLOUDABI64_SYS_cloudabi_sys_thread_exit 54
+#define CLOUDABI64_SYS_cloudabi64_sys_thread_tcb_set 55
+#define CLOUDABI64_SYS_cloudabi_sys_thread_yield 56
+#define CLOUDABI64_SYS_MAXSYSCALL 57
diff --git a/sys/compat/cloudabi64/cloudabi64_syscalldefs.h b/sys/compat/cloudabi64/cloudabi64_syscalldefs.h
new file mode 100644
index 0000000..d57f5f4
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_syscalldefs.h
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _CLOUDABI64_SYSCALLDEFS_H_
+#define _CLOUDABI64_SYSCALLDEFS_H_
+
+#include <sys/types.h>
+
+#include <compat/cloudabi/cloudabi_syscalldefs.h>
+
+typedef uint64_t cloudabi64_size_t;
+typedef uint64_t cloudabi64_uintptr_t;
+
+/* Import machine-dependent CloudABI definitions for 64-bit systems. */
+#define IDENT(ident) cloudabi64_##ident
+#define PTR(type) cloudabi64_uintptr_t
+#include <contrib/cloudabi/syscalldefs_md.h>
+#undef IDENT
+#undef PTR
+
+#endif
diff --git a/sys/compat/cloudabi64/cloudabi64_syscalls.c b/sys/compat/cloudabi64/cloudabi64_syscalls.c
new file mode 100644
index 0000000..f8fe811
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_syscalls.c
@@ -0,0 +1,67 @@
+/*
+ * System call names.
+ *
+ * DO NOT EDIT-- this file is automatically generated.
+ * $FreeBSD$
+ * created from FreeBSD: head/sys/compat/cloudabi64/syscalls.master 285307 2015-07-09 07:20:15Z ed
+ */
+
+const char *cloudabi64_syscallnames[] = {
+ "cloudabi_sys_clock_res_get", /* 0 = cloudabi_sys_clock_res_get */
+ "cloudabi_sys_clock_time_get", /* 1 = cloudabi_sys_clock_time_get */
+ "cloudabi_sys_condvar_signal", /* 2 = cloudabi_sys_condvar_signal */
+ "cloudabi_sys_fd_close", /* 3 = cloudabi_sys_fd_close */
+ "cloudabi_sys_fd_create1", /* 4 = cloudabi_sys_fd_create1 */
+ "cloudabi_sys_fd_create2", /* 5 = cloudabi_sys_fd_create2 */
+ "cloudabi_sys_fd_datasync", /* 6 = cloudabi_sys_fd_datasync */
+ "cloudabi_sys_fd_dup", /* 7 = cloudabi_sys_fd_dup */
+ "cloudabi64_sys_fd_pread", /* 8 = cloudabi64_sys_fd_pread */
+ "cloudabi64_sys_fd_pwrite", /* 9 = cloudabi64_sys_fd_pwrite */
+ "cloudabi64_sys_fd_read", /* 10 = cloudabi64_sys_fd_read */
+ "cloudabi_sys_fd_replace", /* 11 = cloudabi_sys_fd_replace */
+ "cloudabi_sys_fd_seek", /* 12 = cloudabi_sys_fd_seek */
+ "cloudabi_sys_fd_stat_get", /* 13 = cloudabi_sys_fd_stat_get */
+ "cloudabi_sys_fd_stat_put", /* 14 = cloudabi_sys_fd_stat_put */
+ "cloudabi_sys_fd_sync", /* 15 = cloudabi_sys_fd_sync */
+ "cloudabi64_sys_fd_write", /* 16 = cloudabi64_sys_fd_write */
+ "cloudabi_sys_file_advise", /* 17 = cloudabi_sys_file_advise */
+ "cloudabi_sys_file_allocate", /* 18 = cloudabi_sys_file_allocate */
+ "cloudabi_sys_file_create", /* 19 = cloudabi_sys_file_create */
+ "cloudabi_sys_file_link", /* 20 = cloudabi_sys_file_link */
+ "cloudabi_sys_file_open", /* 21 = cloudabi_sys_file_open */
+ "cloudabi_sys_file_readdir", /* 22 = cloudabi_sys_file_readdir */
+ "cloudabi_sys_file_readlink", /* 23 = cloudabi_sys_file_readlink */
+ "cloudabi_sys_file_rename", /* 24 = cloudabi_sys_file_rename */
+ "cloudabi_sys_file_stat_fget", /* 25 = cloudabi_sys_file_stat_fget */
+ "cloudabi_sys_file_stat_fput", /* 26 = cloudabi_sys_file_stat_fput */
+ "cloudabi_sys_file_stat_get", /* 27 = cloudabi_sys_file_stat_get */
+ "cloudabi_sys_file_stat_put", /* 28 = cloudabi_sys_file_stat_put */
+ "cloudabi_sys_file_symlink", /* 29 = cloudabi_sys_file_symlink */
+ "cloudabi_sys_file_unlink", /* 30 = cloudabi_sys_file_unlink */
+ "cloudabi_sys_lock_unlock", /* 31 = cloudabi_sys_lock_unlock */
+ "cloudabi_sys_mem_advise", /* 32 = cloudabi_sys_mem_advise */
+ "cloudabi_sys_mem_lock", /* 33 = cloudabi_sys_mem_lock */
+ "cloudabi_sys_mem_map", /* 34 = cloudabi_sys_mem_map */
+ "cloudabi_sys_mem_protect", /* 35 = cloudabi_sys_mem_protect */
+ "cloudabi_sys_mem_sync", /* 36 = cloudabi_sys_mem_sync */
+ "cloudabi_sys_mem_unlock", /* 37 = cloudabi_sys_mem_unlock */
+ "cloudabi_sys_mem_unmap", /* 38 = cloudabi_sys_mem_unmap */
+ "cloudabi64_sys_poll", /* 39 = cloudabi64_sys_poll */
+ "cloudabi_sys_proc_exec", /* 40 = cloudabi_sys_proc_exec */
+ "cloudabi_sys_proc_exit", /* 41 = cloudabi_sys_proc_exit */
+ "cloudabi_sys_proc_fork", /* 42 = cloudabi_sys_proc_fork */
+ "cloudabi_sys_proc_raise", /* 43 = cloudabi_sys_proc_raise */
+ "cloudabi_sys_random_get", /* 44 = cloudabi_sys_random_get */
+ "cloudabi_sys_sock_accept", /* 45 = cloudabi_sys_sock_accept */
+ "cloudabi_sys_sock_bind", /* 46 = cloudabi_sys_sock_bind */
+ "cloudabi_sys_sock_connect", /* 47 = cloudabi_sys_sock_connect */
+ "cloudabi_sys_sock_listen", /* 48 = cloudabi_sys_sock_listen */
+ "cloudabi64_sys_sock_recv", /* 49 = cloudabi64_sys_sock_recv */
+ "cloudabi64_sys_sock_send", /* 50 = cloudabi64_sys_sock_send */
+ "cloudabi_sys_sock_shutdown", /* 51 = cloudabi_sys_sock_shutdown */
+ "cloudabi_sys_sock_stat_get", /* 52 = cloudabi_sys_sock_stat_get */
+ "cloudabi64_sys_thread_create", /* 53 = cloudabi64_sys_thread_create */
+ "cloudabi_sys_thread_exit", /* 54 = cloudabi_sys_thread_exit */
+ "cloudabi64_sys_thread_tcb_set", /* 55 = cloudabi64_sys_thread_tcb_set */
+ "cloudabi_sys_thread_yield", /* 56 = cloudabi_sys_thread_yield */
+};
diff --git a/sys/compat/cloudabi64/cloudabi64_sysent.c b/sys/compat/cloudabi64/cloudabi64_sysent.c
new file mode 100644
index 0000000..ccfb95b
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_sysent.c
@@ -0,0 +1,75 @@
+/*
+ * System call switch table.
+ *
+ * DO NOT EDIT-- this file is automatically generated.
+ * $FreeBSD$
+ * created from FreeBSD: head/sys/compat/cloudabi64/syscalls.master 285307 2015-07-09 07:20:15Z ed
+ */
+
+#include <sys/sysent.h>
+#include <sys/sysproto.h>
+#include <compat/cloudabi64/cloudabi64_syscalldefs.h>
+#include <compat/cloudabi64/cloudabi64_proto.h>
+
+#define AS(name) (sizeof(struct name) / sizeof(register_t))
+
+/* The casts are bogus but will do for now. */
+struct sysent cloudabi64_sysent[] = {
+ { AS(cloudabi_sys_clock_res_get_args), (sy_call_t *)cloudabi_sys_clock_res_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 0 = cloudabi_sys_clock_res_get */
+ { AS(cloudabi_sys_clock_time_get_args), (sy_call_t *)cloudabi_sys_clock_time_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 1 = cloudabi_sys_clock_time_get */
+ { AS(cloudabi_sys_condvar_signal_args), (sy_call_t *)cloudabi_sys_condvar_signal, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 2 = cloudabi_sys_condvar_signal */
+ { AS(cloudabi_sys_fd_close_args), (sy_call_t *)cloudabi_sys_fd_close, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 3 = cloudabi_sys_fd_close */
+ { AS(cloudabi_sys_fd_create1_args), (sy_call_t *)cloudabi_sys_fd_create1, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 4 = cloudabi_sys_fd_create1 */
+ { AS(cloudabi_sys_fd_create2_args), (sy_call_t *)cloudabi_sys_fd_create2, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 5 = cloudabi_sys_fd_create2 */
+ { AS(cloudabi_sys_fd_datasync_args), (sy_call_t *)cloudabi_sys_fd_datasync, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 6 = cloudabi_sys_fd_datasync */
+ { AS(cloudabi_sys_fd_dup_args), (sy_call_t *)cloudabi_sys_fd_dup, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 7 = cloudabi_sys_fd_dup */
+ { AS(cloudabi64_sys_fd_pread_args), (sy_call_t *)cloudabi64_sys_fd_pread, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 8 = cloudabi64_sys_fd_pread */
+ { AS(cloudabi64_sys_fd_pwrite_args), (sy_call_t *)cloudabi64_sys_fd_pwrite, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 9 = cloudabi64_sys_fd_pwrite */
+ { AS(cloudabi64_sys_fd_read_args), (sy_call_t *)cloudabi64_sys_fd_read, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 10 = cloudabi64_sys_fd_read */
+ { AS(cloudabi_sys_fd_replace_args), (sy_call_t *)cloudabi_sys_fd_replace, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 11 = cloudabi_sys_fd_replace */
+ { AS(cloudabi_sys_fd_seek_args), (sy_call_t *)cloudabi_sys_fd_seek, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 12 = cloudabi_sys_fd_seek */
+ { AS(cloudabi_sys_fd_stat_get_args), (sy_call_t *)cloudabi_sys_fd_stat_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 13 = cloudabi_sys_fd_stat_get */
+ { AS(cloudabi_sys_fd_stat_put_args), (sy_call_t *)cloudabi_sys_fd_stat_put, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 14 = cloudabi_sys_fd_stat_put */
+ { AS(cloudabi_sys_fd_sync_args), (sy_call_t *)cloudabi_sys_fd_sync, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 15 = cloudabi_sys_fd_sync */
+ { AS(cloudabi64_sys_fd_write_args), (sy_call_t *)cloudabi64_sys_fd_write, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 16 = cloudabi64_sys_fd_write */
+ { AS(cloudabi_sys_file_advise_args), (sy_call_t *)cloudabi_sys_file_advise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 17 = cloudabi_sys_file_advise */
+ { AS(cloudabi_sys_file_allocate_args), (sy_call_t *)cloudabi_sys_file_allocate, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 18 = cloudabi_sys_file_allocate */
+ { AS(cloudabi_sys_file_create_args), (sy_call_t *)cloudabi_sys_file_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 19 = cloudabi_sys_file_create */
+ { AS(cloudabi_sys_file_link_args), (sy_call_t *)cloudabi_sys_file_link, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 20 = cloudabi_sys_file_link */
+ { AS(cloudabi_sys_file_open_args), (sy_call_t *)cloudabi_sys_file_open, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 21 = cloudabi_sys_file_open */
+ { AS(cloudabi_sys_file_readdir_args), (sy_call_t *)cloudabi_sys_file_readdir, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 22 = cloudabi_sys_file_readdir */
+ { AS(cloudabi_sys_file_readlink_args), (sy_call_t *)cloudabi_sys_file_readlink, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 23 = cloudabi_sys_file_readlink */
+ { AS(cloudabi_sys_file_rename_args), (sy_call_t *)cloudabi_sys_file_rename, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 24 = cloudabi_sys_file_rename */
+ { AS(cloudabi_sys_file_stat_fget_args), (sy_call_t *)cloudabi_sys_file_stat_fget, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 25 = cloudabi_sys_file_stat_fget */
+ { AS(cloudabi_sys_file_stat_fput_args), (sy_call_t *)cloudabi_sys_file_stat_fput, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 26 = cloudabi_sys_file_stat_fput */
+ { AS(cloudabi_sys_file_stat_get_args), (sy_call_t *)cloudabi_sys_file_stat_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 27 = cloudabi_sys_file_stat_get */
+ { AS(cloudabi_sys_file_stat_put_args), (sy_call_t *)cloudabi_sys_file_stat_put, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 28 = cloudabi_sys_file_stat_put */
+ { AS(cloudabi_sys_file_symlink_args), (sy_call_t *)cloudabi_sys_file_symlink, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 29 = cloudabi_sys_file_symlink */
+ { AS(cloudabi_sys_file_unlink_args), (sy_call_t *)cloudabi_sys_file_unlink, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 30 = cloudabi_sys_file_unlink */
+ { AS(cloudabi_sys_lock_unlock_args), (sy_call_t *)cloudabi_sys_lock_unlock, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 31 = cloudabi_sys_lock_unlock */
+ { AS(cloudabi_sys_mem_advise_args), (sy_call_t *)cloudabi_sys_mem_advise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 32 = cloudabi_sys_mem_advise */
+ { AS(cloudabi_sys_mem_lock_args), (sy_call_t *)cloudabi_sys_mem_lock, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 33 = cloudabi_sys_mem_lock */
+ { AS(cloudabi_sys_mem_map_args), (sy_call_t *)cloudabi_sys_mem_map, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 34 = cloudabi_sys_mem_map */
+ { AS(cloudabi_sys_mem_protect_args), (sy_call_t *)cloudabi_sys_mem_protect, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 35 = cloudabi_sys_mem_protect */
+ { AS(cloudabi_sys_mem_sync_args), (sy_call_t *)cloudabi_sys_mem_sync, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 36 = cloudabi_sys_mem_sync */
+ { AS(cloudabi_sys_mem_unlock_args), (sy_call_t *)cloudabi_sys_mem_unlock, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 37 = cloudabi_sys_mem_unlock */
+ { AS(cloudabi_sys_mem_unmap_args), (sy_call_t *)cloudabi_sys_mem_unmap, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 38 = cloudabi_sys_mem_unmap */
+ { AS(cloudabi64_sys_poll_args), (sy_call_t *)cloudabi64_sys_poll, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 39 = cloudabi64_sys_poll */
+ { AS(cloudabi_sys_proc_exec_args), (sy_call_t *)cloudabi_sys_proc_exec, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 40 = cloudabi_sys_proc_exec */
+ { AS(cloudabi_sys_proc_exit_args), (sy_call_t *)cloudabi_sys_proc_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 41 = cloudabi_sys_proc_exit */
+ { 0, (sy_call_t *)cloudabi_sys_proc_fork, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 42 = cloudabi_sys_proc_fork */
+ { AS(cloudabi_sys_proc_raise_args), (sy_call_t *)cloudabi_sys_proc_raise, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 43 = cloudabi_sys_proc_raise */
+ { AS(cloudabi_sys_random_get_args), (sy_call_t *)cloudabi_sys_random_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 44 = cloudabi_sys_random_get */
+ { AS(cloudabi_sys_sock_accept_args), (sy_call_t *)cloudabi_sys_sock_accept, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 45 = cloudabi_sys_sock_accept */
+ { AS(cloudabi_sys_sock_bind_args), (sy_call_t *)cloudabi_sys_sock_bind, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 46 = cloudabi_sys_sock_bind */
+ { AS(cloudabi_sys_sock_connect_args), (sy_call_t *)cloudabi_sys_sock_connect, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 47 = cloudabi_sys_sock_connect */
+ { AS(cloudabi_sys_sock_listen_args), (sy_call_t *)cloudabi_sys_sock_listen, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 48 = cloudabi_sys_sock_listen */
+ { AS(cloudabi64_sys_sock_recv_args), (sy_call_t *)cloudabi64_sys_sock_recv, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 49 = cloudabi64_sys_sock_recv */
+ { AS(cloudabi64_sys_sock_send_args), (sy_call_t *)cloudabi64_sys_sock_send, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 50 = cloudabi64_sys_sock_send */
+ { AS(cloudabi_sys_sock_shutdown_args), (sy_call_t *)cloudabi_sys_sock_shutdown, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 51 = cloudabi_sys_sock_shutdown */
+ { AS(cloudabi_sys_sock_stat_get_args), (sy_call_t *)cloudabi_sys_sock_stat_get, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 52 = cloudabi_sys_sock_stat_get */
+ { AS(cloudabi64_sys_thread_create_args), (sy_call_t *)cloudabi64_sys_thread_create, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 53 = cloudabi64_sys_thread_create */
+ { AS(cloudabi_sys_thread_exit_args), (sy_call_t *)cloudabi_sys_thread_exit, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 54 = cloudabi_sys_thread_exit */
+ { AS(cloudabi64_sys_thread_tcb_set_args), (sy_call_t *)cloudabi64_sys_thread_tcb_set, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 55 = cloudabi64_sys_thread_tcb_set */
+ { 0, (sy_call_t *)cloudabi_sys_thread_yield, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 56 = cloudabi_sys_thread_yield */
+};
diff --git a/sys/compat/cloudabi64/cloudabi64_systrace_args.c b/sys/compat/cloudabi64/cloudabi64_systrace_args.c
new file mode 100644
index 0000000..0084cad
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_systrace_args.c
@@ -0,0 +1,1678 @@
+/*
+ * System call argument to DTrace register array converstion.
+ *
+ * DO NOT EDIT-- this file is automatically generated.
+ * $FreeBSD$
+ * This file is part of the DTrace syscall provider.
+ */
+
+static void
+systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
+{
+ int64_t *iarg = (int64_t *) uarg;
+ switch (sysnum) {
+ /* cloudabi_sys_clock_res_get */
+ case 0: {
+ struct cloudabi_sys_clock_res_get_args *p = params;
+ iarg[0] = p->clock_id; /* cloudabi_clockid_t */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_clock_time_get */
+ case 1: {
+ struct cloudabi_sys_clock_time_get_args *p = params;
+ iarg[0] = p->clock_id; /* cloudabi_clockid_t */
+ iarg[1] = p->precision; /* cloudabi_timestamp_t */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_condvar_signal */
+ case 2: {
+ struct cloudabi_sys_condvar_signal_args *p = params;
+ uarg[0] = (intptr_t) p->condvar; /* cloudabi_condvar_t * */
+ iarg[1] = p->nwaiters; /* cloudabi_nthreads_t */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_fd_close */
+ case 3: {
+ struct cloudabi_sys_fd_close_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_fd_create1 */
+ case 4: {
+ struct cloudabi_sys_fd_create1_args *p = params;
+ iarg[0] = p->type; /* cloudabi_filetype_t */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_fd_create2 */
+ case 5: {
+ struct cloudabi_sys_fd_create2_args *p = params;
+ iarg[0] = p->type; /* cloudabi_filetype_t */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_fd_datasync */
+ case 6: {
+ struct cloudabi_sys_fd_datasync_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_fd_dup */
+ case 7: {
+ struct cloudabi_sys_fd_dup_args *p = params;
+ iarg[0] = p->from; /* cloudabi_fd_t */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi64_sys_fd_pread */
+ case 8: {
+ struct cloudabi64_sys_fd_pread_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->iov; /* const cloudabi64_iovec_t * */
+ iarg[2] = p->iovcnt; /* cloudabi64_size_t */
+ iarg[3] = p->offset; /* cloudabi_filesize_t */
+ *n_args = 4;
+ break;
+ }
+ /* cloudabi64_sys_fd_pwrite */
+ case 9: {
+ struct cloudabi64_sys_fd_pwrite_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->iov; /* const cloudabi64_ciovec_t * */
+ iarg[2] = p->iovcnt; /* cloudabi64_size_t */
+ iarg[3] = p->offset; /* cloudabi_filesize_t */
+ *n_args = 4;
+ break;
+ }
+ /* cloudabi64_sys_fd_read */
+ case 10: {
+ struct cloudabi64_sys_fd_read_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->iov; /* const cloudabi64_iovec_t * */
+ iarg[2] = p->iovcnt; /* cloudabi64_size_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_fd_replace */
+ case 11: {
+ struct cloudabi_sys_fd_replace_args *p = params;
+ iarg[0] = p->from; /* cloudabi_fd_t */
+ iarg[1] = p->to; /* cloudabi_fd_t */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_fd_seek */
+ case 12: {
+ struct cloudabi_sys_fd_seek_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ iarg[1] = p->offset; /* cloudabi_filedelta_t */
+ iarg[2] = p->whence; /* cloudabi_whence_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_fd_stat_get */
+ case 13: {
+ struct cloudabi_sys_fd_stat_get_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->buf; /* cloudabi_fdstat_t * */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_fd_stat_put */
+ case 14: {
+ struct cloudabi_sys_fd_stat_put_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->buf; /* const cloudabi_fdstat_t * */
+ iarg[2] = p->flags; /* cloudabi_fdsflags_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_fd_sync */
+ case 15: {
+ struct cloudabi_sys_fd_sync_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi64_sys_fd_write */
+ case 16: {
+ struct cloudabi64_sys_fd_write_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->iov; /* const cloudabi64_ciovec_t * */
+ iarg[2] = p->iovcnt; /* cloudabi64_size_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_file_advise */
+ case 17: {
+ struct cloudabi_sys_file_advise_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ iarg[1] = p->offset; /* cloudabi_filesize_t */
+ iarg[2] = p->len; /* cloudabi_filesize_t */
+ iarg[3] = p->advice; /* cloudabi_advice_t */
+ *n_args = 4;
+ break;
+ }
+ /* cloudabi_sys_file_allocate */
+ case 18: {
+ struct cloudabi_sys_file_allocate_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ iarg[1] = p->offset; /* cloudabi_filesize_t */
+ iarg[2] = p->len; /* cloudabi_filesize_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_file_create */
+ case 19: {
+ struct cloudabi_sys_file_create_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->path; /* const char * */
+ uarg[2] = p->pathlen; /* size_t */
+ iarg[3] = p->type; /* cloudabi_filetype_t */
+ *n_args = 4;
+ break;
+ }
+ /* cloudabi_sys_file_link */
+ case 20: {
+ struct cloudabi_sys_file_link_args *p = params;
+ iarg[0] = p->fd1; /* cloudabi_lookup_t */
+ uarg[1] = (intptr_t) p->path1; /* const char * */
+ uarg[2] = p->path1len; /* size_t */
+ iarg[3] = p->fd2; /* cloudabi_fd_t */
+ uarg[4] = (intptr_t) p->path2; /* const char * */
+ uarg[5] = p->path2len; /* size_t */
+ *n_args = 6;
+ break;
+ }
+ /* cloudabi_sys_file_open */
+ case 21: {
+ struct cloudabi_sys_file_open_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_lookup_t */
+ uarg[1] = (intptr_t) p->path; /* const char * */
+ uarg[2] = p->pathlen; /* size_t */
+ iarg[3] = p->oflags; /* cloudabi_oflags_t */
+ uarg[4] = (intptr_t) p->fds; /* const cloudabi_fdstat_t * */
+ *n_args = 5;
+ break;
+ }
+ /* cloudabi_sys_file_readdir */
+ case 22: {
+ struct cloudabi_sys_file_readdir_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->buf; /* void * */
+ uarg[2] = p->nbyte; /* size_t */
+ iarg[3] = p->cookie; /* cloudabi_dircookie_t */
+ *n_args = 4;
+ break;
+ }
+ /* cloudabi_sys_file_readlink */
+ case 23: {
+ struct cloudabi_sys_file_readlink_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->path; /* const char * */
+ uarg[2] = p->pathlen; /* size_t */
+ uarg[3] = (intptr_t) p->buf; /* void * */
+ uarg[4] = p->bufsize; /* size_t */
+ *n_args = 5;
+ break;
+ }
+ /* cloudabi_sys_file_rename */
+ case 24: {
+ struct cloudabi_sys_file_rename_args *p = params;
+ iarg[0] = p->oldfd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->old; /* const char * */
+ uarg[2] = p->oldlen; /* size_t */
+ iarg[3] = p->newfd; /* cloudabi_fd_t */
+ uarg[4] = (intptr_t) p->new; /* const char * */
+ uarg[5] = p->newlen; /* size_t */
+ *n_args = 6;
+ break;
+ }
+ /* cloudabi_sys_file_stat_fget */
+ case 25: {
+ struct cloudabi_sys_file_stat_fget_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->buf; /* cloudabi_filestat_t * */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_file_stat_fput */
+ case 26: {
+ struct cloudabi_sys_file_stat_fput_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->buf; /* const cloudabi_filestat_t * */
+ iarg[2] = p->flags; /* cloudabi_fsflags_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_file_stat_get */
+ case 27: {
+ struct cloudabi_sys_file_stat_get_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_lookup_t */
+ uarg[1] = (intptr_t) p->path; /* const char * */
+ uarg[2] = p->pathlen; /* size_t */
+ uarg[3] = (intptr_t) p->buf; /* cloudabi_filestat_t * */
+ *n_args = 4;
+ break;
+ }
+ /* cloudabi_sys_file_stat_put */
+ case 28: {
+ struct cloudabi_sys_file_stat_put_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_lookup_t */
+ uarg[1] = (intptr_t) p->path; /* const char * */
+ uarg[2] = p->pathlen; /* size_t */
+ uarg[3] = (intptr_t) p->buf; /* const cloudabi_filestat_t * */
+ iarg[4] = p->flags; /* cloudabi_fsflags_t */
+ *n_args = 5;
+ break;
+ }
+ /* cloudabi_sys_file_symlink */
+ case 29: {
+ struct cloudabi_sys_file_symlink_args *p = params;
+ uarg[0] = (intptr_t) p->path1; /* const char * */
+ uarg[1] = p->path1len; /* size_t */
+ iarg[2] = p->fd; /* cloudabi_fd_t */
+ uarg[3] = (intptr_t) p->path2; /* const char * */
+ uarg[4] = p->path2len; /* size_t */
+ *n_args = 5;
+ break;
+ }
+ /* cloudabi_sys_file_unlink */
+ case 30: {
+ struct cloudabi_sys_file_unlink_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->path; /* const char * */
+ uarg[2] = p->pathlen; /* size_t */
+ iarg[3] = p->flag; /* cloudabi_ulflags_t */
+ *n_args = 4;
+ break;
+ }
+ /* cloudabi_sys_lock_unlock */
+ case 31: {
+ struct cloudabi_sys_lock_unlock_args *p = params;
+ uarg[0] = (intptr_t) p->lock; /* cloudabi_lock_t * */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_mem_advise */
+ case 32: {
+ struct cloudabi_sys_mem_advise_args *p = params;
+ uarg[0] = (intptr_t) p->addr; /* void * */
+ uarg[1] = p->len; /* size_t */
+ iarg[2] = p->advice; /* cloudabi_advice_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_mem_lock */
+ case 33: {
+ struct cloudabi_sys_mem_lock_args *p = params;
+ uarg[0] = (intptr_t) p->addr; /* const void * */
+ uarg[1] = p->len; /* size_t */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_mem_map */
+ case 34: {
+ struct cloudabi_sys_mem_map_args *p = params;
+ uarg[0] = (intptr_t) p->addr; /* void * */
+ uarg[1] = p->len; /* size_t */
+ iarg[2] = p->prot; /* cloudabi_mprot_t */
+ iarg[3] = p->flags; /* cloudabi_mflags_t */
+ iarg[4] = p->fd; /* cloudabi_fd_t */
+ iarg[5] = p->off; /* cloudabi_filesize_t */
+ *n_args = 6;
+ break;
+ }
+ /* cloudabi_sys_mem_protect */
+ case 35: {
+ struct cloudabi_sys_mem_protect_args *p = params;
+ uarg[0] = (intptr_t) p->addr; /* void * */
+ uarg[1] = p->len; /* size_t */
+ iarg[2] = p->prot; /* cloudabi_mprot_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_mem_sync */
+ case 36: {
+ struct cloudabi_sys_mem_sync_args *p = params;
+ uarg[0] = (intptr_t) p->addr; /* void * */
+ uarg[1] = p->len; /* size_t */
+ iarg[2] = p->flags; /* cloudabi_msflags_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_mem_unlock */
+ case 37: {
+ struct cloudabi_sys_mem_unlock_args *p = params;
+ uarg[0] = (intptr_t) p->addr; /* const void * */
+ uarg[1] = p->len; /* size_t */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_mem_unmap */
+ case 38: {
+ struct cloudabi_sys_mem_unmap_args *p = params;
+ uarg[0] = (intptr_t) p->addr; /* void * */
+ uarg[1] = p->len; /* size_t */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi64_sys_poll */
+ case 39: {
+ struct cloudabi64_sys_poll_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->in; /* const cloudabi64_subscription_t * */
+ iarg[2] = p->nin; /* cloudabi64_size_t */
+ uarg[3] = (intptr_t) p->out; /* cloudabi64_event_t * */
+ iarg[4] = p->nout; /* cloudabi64_size_t */
+ *n_args = 5;
+ break;
+ }
+ /* cloudabi_sys_proc_exec */
+ case 40: {
+ struct cloudabi_sys_proc_exec_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->data; /* const void * */
+ uarg[2] = p->datalen; /* size_t */
+ uarg[3] = (intptr_t) p->fds; /* const cloudabi_fd_t * */
+ uarg[4] = p->fdslen; /* size_t */
+ *n_args = 5;
+ break;
+ }
+ /* cloudabi_sys_proc_exit */
+ case 41: {
+ struct cloudabi_sys_proc_exit_args *p = params;
+ iarg[0] = p->rval; /* cloudabi_exitcode_t */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_proc_fork */
+ case 42: {
+ *n_args = 0;
+ break;
+ }
+ /* cloudabi_sys_proc_raise */
+ case 43: {
+ struct cloudabi_sys_proc_raise_args *p = params;
+ iarg[0] = p->sig; /* cloudabi_signal_t */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_random_get */
+ case 44: {
+ struct cloudabi_sys_random_get_args *p = params;
+ uarg[0] = (intptr_t) p->buf; /* void * */
+ uarg[1] = p->nbyte; /* size_t */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_sock_accept */
+ case 45: {
+ struct cloudabi_sys_sock_accept_args *p = params;
+ iarg[0] = p->s; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->buf; /* cloudabi_sockstat_t * */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_sock_bind */
+ case 46: {
+ struct cloudabi_sys_sock_bind_args *p = params;
+ iarg[0] = p->s; /* cloudabi_fd_t */
+ iarg[1] = p->fd; /* cloudabi_fd_t */
+ uarg[2] = (intptr_t) p->path; /* const char * */
+ uarg[3] = p->pathlen; /* size_t */
+ *n_args = 4;
+ break;
+ }
+ /* cloudabi_sys_sock_connect */
+ case 47: {
+ struct cloudabi_sys_sock_connect_args *p = params;
+ iarg[0] = p->s; /* cloudabi_fd_t */
+ iarg[1] = p->fd; /* cloudabi_fd_t */
+ uarg[2] = (intptr_t) p->path; /* const char * */
+ uarg[3] = p->pathlen; /* size_t */
+ *n_args = 4;
+ break;
+ }
+ /* cloudabi_sys_sock_listen */
+ case 48: {
+ struct cloudabi_sys_sock_listen_args *p = params;
+ iarg[0] = p->s; /* cloudabi_fd_t */
+ iarg[1] = p->backlog; /* cloudabi_backlog_t */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi64_sys_sock_recv */
+ case 49: {
+ struct cloudabi64_sys_sock_recv_args *p = params;
+ iarg[0] = p->s; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->in; /* const cloudabi64_recv_in_t * */
+ uarg[2] = (intptr_t) p->out; /* cloudabi64_recv_out_t * */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi64_sys_sock_send */
+ case 50: {
+ struct cloudabi64_sys_sock_send_args *p = params;
+ iarg[0] = p->s; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->in; /* const cloudabi64_send_in_t * */
+ uarg[2] = (intptr_t) p->out; /* cloudabi64_send_out_t * */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi_sys_sock_shutdown */
+ case 51: {
+ struct cloudabi_sys_sock_shutdown_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ iarg[1] = p->how; /* cloudabi_sdflags_t */
+ *n_args = 2;
+ break;
+ }
+ /* cloudabi_sys_sock_stat_get */
+ case 52: {
+ struct cloudabi_sys_sock_stat_get_args *p = params;
+ iarg[0] = p->fd; /* cloudabi_fd_t */
+ uarg[1] = (intptr_t) p->buf; /* cloudabi_sockstat_t * */
+ iarg[2] = p->flags; /* cloudabi_ssflags_t */
+ *n_args = 3;
+ break;
+ }
+ /* cloudabi64_sys_thread_create */
+ case 53: {
+ struct cloudabi64_sys_thread_create_args *p = params;
+ uarg[0] = (intptr_t) p->attr; /* cloudabi64_threadattr_t * */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_thread_exit */
+ case 54: {
+ struct cloudabi_sys_thread_exit_args *p = params;
+ uarg[0] = (intptr_t) p->lock; /* cloudabi_lock_t * */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi64_sys_thread_tcb_set */
+ case 55: {
+ struct cloudabi64_sys_thread_tcb_set_args *p = params;
+ uarg[0] = (intptr_t) p->tcb; /* void * */
+ *n_args = 1;
+ break;
+ }
+ /* cloudabi_sys_thread_yield */
+ case 56: {
+ *n_args = 0;
+ break;
+ }
+ default:
+ *n_args = 0;
+ break;
+ };
+}
+static void
+systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
+{
+ const char *p = NULL;
+ switch (sysnum) {
+ /* cloudabi_sys_clock_res_get */
+ case 0:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_clockid_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_clock_time_get */
+ case 1:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_clockid_t";
+ break;
+ case 1:
+ p = "cloudabi_timestamp_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_condvar_signal */
+ case 2:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_condvar_t *";
+ break;
+ case 1:
+ p = "cloudabi_nthreads_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_close */
+ case 3:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_create1 */
+ case 4:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_filetype_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_create2 */
+ case 5:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_filetype_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_datasync */
+ case 6:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_dup */
+ case 7:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi64_sys_fd_pread */
+ case 8:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const cloudabi64_iovec_t *";
+ break;
+ case 2:
+ p = "cloudabi64_size_t";
+ break;
+ case 3:
+ p = "cloudabi_filesize_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi64_sys_fd_pwrite */
+ case 9:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const cloudabi64_ciovec_t *";
+ break;
+ case 2:
+ p = "cloudabi64_size_t";
+ break;
+ case 3:
+ p = "cloudabi_filesize_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi64_sys_fd_read */
+ case 10:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const cloudabi64_iovec_t *";
+ break;
+ case 2:
+ p = "cloudabi64_size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_replace */
+ case 11:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_fd_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_seek */
+ case 12:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_filedelta_t";
+ break;
+ case 2:
+ p = "cloudabi_whence_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_stat_get */
+ case 13:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_fdstat_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_stat_put */
+ case 14:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const cloudabi_fdstat_t *";
+ break;
+ case 2:
+ p = "cloudabi_fdsflags_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_fd_sync */
+ case 15:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi64_sys_fd_write */
+ case 16:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const cloudabi64_ciovec_t *";
+ break;
+ case 2:
+ p = "cloudabi64_size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_advise */
+ case 17:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_filesize_t";
+ break;
+ case 2:
+ p = "cloudabi_filesize_t";
+ break;
+ case 3:
+ p = "cloudabi_advice_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_allocate */
+ case 18:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_filesize_t";
+ break;
+ case 2:
+ p = "cloudabi_filesize_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_create */
+ case 19:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const char *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "cloudabi_filetype_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_link */
+ case 20:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_lookup_t";
+ break;
+ case 1:
+ p = "const char *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "cloudabi_fd_t";
+ break;
+ case 4:
+ p = "const char *";
+ break;
+ case 5:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_open */
+ case 21:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_lookup_t";
+ break;
+ case 1:
+ p = "const char *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "cloudabi_oflags_t";
+ break;
+ case 4:
+ p = "const cloudabi_fdstat_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_readdir */
+ case 22:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "void *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "cloudabi_dircookie_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_readlink */
+ case 23:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const char *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "void *";
+ break;
+ case 4:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_rename */
+ case 24:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const char *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "cloudabi_fd_t";
+ break;
+ case 4:
+ p = "const char *";
+ break;
+ case 5:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_stat_fget */
+ case 25:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_filestat_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_stat_fput */
+ case 26:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const cloudabi_filestat_t *";
+ break;
+ case 2:
+ p = "cloudabi_fsflags_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_stat_get */
+ case 27:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_lookup_t";
+ break;
+ case 1:
+ p = "const char *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "cloudabi_filestat_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_stat_put */
+ case 28:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_lookup_t";
+ break;
+ case 1:
+ p = "const char *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "const cloudabi_filestat_t *";
+ break;
+ case 4:
+ p = "cloudabi_fsflags_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_symlink */
+ case 29:
+ switch(ndx) {
+ case 0:
+ p = "const char *";
+ break;
+ case 1:
+ p = "size_t";
+ break;
+ case 2:
+ p = "cloudabi_fd_t";
+ break;
+ case 3:
+ p = "const char *";
+ break;
+ case 4:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_file_unlink */
+ case 30:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const char *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "cloudabi_ulflags_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_lock_unlock */
+ case 31:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_lock_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_mem_advise */
+ case 32:
+ switch(ndx) {
+ case 0:
+ p = "void *";
+ break;
+ case 1:
+ p = "size_t";
+ break;
+ case 2:
+ p = "cloudabi_advice_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_mem_lock */
+ case 33:
+ switch(ndx) {
+ case 0:
+ p = "const void *";
+ break;
+ case 1:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_mem_map */
+ case 34:
+ switch(ndx) {
+ case 0:
+ p = "void *";
+ break;
+ case 1:
+ p = "size_t";
+ break;
+ case 2:
+ p = "cloudabi_mprot_t";
+ break;
+ case 3:
+ p = "cloudabi_mflags_t";
+ break;
+ case 4:
+ p = "cloudabi_fd_t";
+ break;
+ case 5:
+ p = "cloudabi_filesize_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_mem_protect */
+ case 35:
+ switch(ndx) {
+ case 0:
+ p = "void *";
+ break;
+ case 1:
+ p = "size_t";
+ break;
+ case 2:
+ p = "cloudabi_mprot_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_mem_sync */
+ case 36:
+ switch(ndx) {
+ case 0:
+ p = "void *";
+ break;
+ case 1:
+ p = "size_t";
+ break;
+ case 2:
+ p = "cloudabi_msflags_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_mem_unlock */
+ case 37:
+ switch(ndx) {
+ case 0:
+ p = "const void *";
+ break;
+ case 1:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_mem_unmap */
+ case 38:
+ switch(ndx) {
+ case 0:
+ p = "void *";
+ break;
+ case 1:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi64_sys_poll */
+ case 39:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const cloudabi64_subscription_t *";
+ break;
+ case 2:
+ p = "cloudabi64_size_t";
+ break;
+ case 3:
+ p = "cloudabi64_event_t *";
+ break;
+ case 4:
+ p = "cloudabi64_size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_proc_exec */
+ case 40:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const void *";
+ break;
+ case 2:
+ p = "size_t";
+ break;
+ case 3:
+ p = "const cloudabi_fd_t *";
+ break;
+ case 4:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_proc_exit */
+ case 41:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_exitcode_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_proc_fork */
+ case 42:
+ break;
+ /* cloudabi_sys_proc_raise */
+ case 43:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_signal_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_random_get */
+ case 44:
+ switch(ndx) {
+ case 0:
+ p = "void *";
+ break;
+ case 1:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_sock_accept */
+ case 45:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_sockstat_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_sock_bind */
+ case 46:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_fd_t";
+ break;
+ case 2:
+ p = "const char *";
+ break;
+ case 3:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_sock_connect */
+ case 47:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_fd_t";
+ break;
+ case 2:
+ p = "const char *";
+ break;
+ case 3:
+ p = "size_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_sock_listen */
+ case 48:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_backlog_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi64_sys_sock_recv */
+ case 49:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const cloudabi64_recv_in_t *";
+ break;
+ case 2:
+ p = "cloudabi64_recv_out_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi64_sys_sock_send */
+ case 50:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "const cloudabi64_send_in_t *";
+ break;
+ case 2:
+ p = "cloudabi64_send_out_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_sock_shutdown */
+ case 51:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_sdflags_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_sock_stat_get */
+ case 52:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_fd_t";
+ break;
+ case 1:
+ p = "cloudabi_sockstat_t *";
+ break;
+ case 2:
+ p = "cloudabi_ssflags_t";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi64_sys_thread_create */
+ case 53:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi64_threadattr_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_thread_exit */
+ case 54:
+ switch(ndx) {
+ case 0:
+ p = "cloudabi_lock_t *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi64_sys_thread_tcb_set */
+ case 55:
+ switch(ndx) {
+ case 0:
+ p = "void *";
+ break;
+ default:
+ break;
+ };
+ break;
+ /* cloudabi_sys_thread_yield */
+ case 56:
+ break;
+ default:
+ break;
+ };
+ if (p != NULL)
+ strlcpy(desc, p, descsz);
+}
+static void
+systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
+{
+ const char *p = NULL;
+ switch (sysnum) {
+ /* cloudabi_sys_clock_res_get */
+ case 0:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi_timestamp_t";
+ break;
+ /* cloudabi_sys_clock_time_get */
+ case 1:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi_timestamp_t";
+ break;
+ /* cloudabi_sys_condvar_signal */
+ case 2:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_fd_close */
+ case 3:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_fd_create1 */
+ case 4:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi_fd_t";
+ break;
+ /* cloudabi_sys_fd_create2 */
+ case 5:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_fd_datasync */
+ case 6:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_fd_dup */
+ case 7:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi_fd_t";
+ break;
+ /* cloudabi64_sys_fd_pread */
+ case 8:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi64_size_t";
+ break;
+ /* cloudabi64_sys_fd_pwrite */
+ case 9:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi64_size_t";
+ break;
+ /* cloudabi64_sys_fd_read */
+ case 10:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi64_size_t";
+ break;
+ /* cloudabi_sys_fd_replace */
+ case 11:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_fd_seek */
+ case 12:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi_filesize_t";
+ break;
+ /* cloudabi_sys_fd_stat_get */
+ case 13:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_fd_stat_put */
+ case 14:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_fd_sync */
+ case 15:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi64_sys_fd_write */
+ case 16:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi64_size_t";
+ break;
+ /* cloudabi_sys_file_advise */
+ case 17:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_allocate */
+ case 18:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_create */
+ case 19:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_link */
+ case 20:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_open */
+ case 21:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi_fd_t";
+ break;
+ /* cloudabi_sys_file_readdir */
+ case 22:
+ if (ndx == 0 || ndx == 1)
+ p = "size_t";
+ break;
+ /* cloudabi_sys_file_readlink */
+ case 23:
+ if (ndx == 0 || ndx == 1)
+ p = "size_t";
+ break;
+ /* cloudabi_sys_file_rename */
+ case 24:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_stat_fget */
+ case 25:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_stat_fput */
+ case 26:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_stat_get */
+ case 27:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_stat_put */
+ case 28:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_symlink */
+ case 29:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_file_unlink */
+ case 30:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_lock_unlock */
+ case 31:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_mem_advise */
+ case 32:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_mem_lock */
+ case 33:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_mem_map */
+ case 34:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_mem_protect */
+ case 35:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_mem_sync */
+ case 36:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_mem_unlock */
+ case 37:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_mem_unmap */
+ case 38:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi64_sys_poll */
+ case 39:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi64_size_t";
+ break;
+ /* cloudabi_sys_proc_exec */
+ case 40:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_proc_exit */
+ case 41:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_proc_fork */
+ case 42:
+ /* cloudabi_sys_proc_raise */
+ case 43:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_random_get */
+ case 44:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_sock_accept */
+ case 45:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi_fd_t";
+ break;
+ /* cloudabi_sys_sock_bind */
+ case 46:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_sock_connect */
+ case 47:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_sock_listen */
+ case 48:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi64_sys_sock_recv */
+ case 49:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi64_size_t";
+ break;
+ /* cloudabi64_sys_sock_send */
+ case 50:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi64_size_t";
+ break;
+ /* cloudabi_sys_sock_shutdown */
+ case 51:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_sock_stat_get */
+ case 52:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi64_sys_thread_create */
+ case 53:
+ if (ndx == 0 || ndx == 1)
+ p = "cloudabi_tid_t";
+ break;
+ /* cloudabi_sys_thread_exit */
+ case 54:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi64_sys_thread_tcb_set */
+ case 55:
+ if (ndx == 0 || ndx == 1)
+ p = "void";
+ break;
+ /* cloudabi_sys_thread_yield */
+ case 56:
+ default:
+ break;
+ };
+ if (p != NULL)
+ strlcpy(desc, p, descsz);
+}
diff --git a/sys/compat/cloudabi64/cloudabi64_thread.c b/sys/compat/cloudabi64/cloudabi64_thread.c
new file mode 100644
index 0000000..a77d6e2
--- /dev/null
+++ b/sys/compat/cloudabi64/cloudabi64_thread.c
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2015 Nuxi, https://nuxi.nl/
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <compat/cloudabi64/cloudabi64_syscalldefs.h>
+#include <compat/cloudabi64/cloudabi64_proto.h>
+
+int
+cloudabi64_sys_thread_create(struct thread *td,
+ struct cloudabi64_sys_thread_create_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
+
+int
+cloudabi64_sys_thread_tcb_set(struct thread *td,
+ struct cloudabi64_sys_thread_tcb_set_args *uap)
+{
+
+ /* Not implemented. */
+ return (ENOSYS);
+}
diff --git a/sys/compat/cloudabi64/syscalls.conf b/sys/compat/cloudabi64/syscalls.conf
new file mode 100644
index 0000000..6b75dbb
--- /dev/null
+++ b/sys/compat/cloudabi64/syscalls.conf
@@ -0,0 +1,15 @@
+# $FreeBSD$
+sysnames="cloudabi64_syscalls.c"
+sysproto="cloudabi64_proto.h"
+sysproto_h=_CLOUDABI64_SYSPROTO_H_
+syshdr="cloudabi64_syscall.h"
+syssw="cloudabi64_sysent.c"
+sysmk="/dev/null"
+syscallprefix="CLOUDABI64_SYS_"
+switchname="cloudabi64_sysent"
+namesname="cloudabi64_syscallnames"
+systrace="cloudabi64_systrace_args.c"
+
+# Allow all system calls in capabilities mode. Extract the names of the
+# system calls from syscalls.master.
+capenabled=`sed -n -e 's/.*\<\(cloudabi[0-9]*_sys_[a-z0-9_]*\)\>.*/\1/p' $1 | tr '\n' ','`
diff --git a/sys/compat/cloudabi64/syscalls.master b/sys/compat/cloudabi64/syscalls.master
new file mode 100644
index 0000000..42a74ca
--- /dev/null
+++ b/sys/compat/cloudabi64/syscalls.master
@@ -0,0 +1,212 @@
+ $FreeBSD$
+
+; System call table for CloudABI.
+;
+; All system calls that do not use any machine-dependent data types are
+; prefixed with cloudabi_sys_. The others are called cloudabi64_sys_.
+
+#include <sys/sysent.h>
+#include <sys/sysproto.h>
+
+#include <compat/cloudabi64/cloudabi64_syscalldefs.h>
+#include <compat/cloudabi64/cloudabi64_proto.h>
+
+0 AUE_NULL STD { cloudabi_timestamp_t \
+ cloudabi_sys_clock_res_get( \
+ cloudabi_clockid_t clock_id); }
+1 AUE_NULL STD { cloudabi_timestamp_t \
+ cloudabi_sys_clock_time_get( \
+ cloudabi_clockid_t clock_id, \
+ cloudabi_timestamp_t precision); }
+
+2 AUE_NULL STD { void cloudabi_sys_condvar_signal( \
+ cloudabi_condvar_t *condvar, \
+ cloudabi_nthreads_t nwaiters); }
+
+3 AUE_NULL STD { void cloudabi_sys_fd_close( \
+ cloudabi_fd_t fd); }
+4 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_fd_create1( \
+ cloudabi_filetype_t type); }
+5 AUE_NULL STD { void cloudabi_sys_fd_create2( \
+ cloudabi_filetype_t type); }
+6 AUE_NULL STD { void cloudabi_sys_fd_datasync( \
+ cloudabi_fd_t fd); }
+7 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_fd_dup( \
+ cloudabi_fd_t from); }
+8 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_fd_pread( \
+ cloudabi_fd_t fd, \
+ const cloudabi64_iovec_t *iov, \
+ cloudabi64_size_t iovcnt, \
+ cloudabi_filesize_t offset); }
+9 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_fd_pwrite( \
+ cloudabi_fd_t fd, \
+ const cloudabi64_ciovec_t *iov, \
+ cloudabi64_size_t iovcnt, \
+ cloudabi_filesize_t offset); }
+10 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_fd_read( \
+ cloudabi_fd_t fd, \
+ const cloudabi64_iovec_t *iov, \
+ cloudabi64_size_t iovcnt); }
+11 AUE_NULL STD { void cloudabi_sys_fd_replace( \
+ cloudabi_fd_t from, \
+ cloudabi_fd_t to); }
+12 AUE_NULL STD { cloudabi_filesize_t cloudabi_sys_fd_seek( \
+ cloudabi_fd_t fd, \
+ cloudabi_filedelta_t offset, \
+ cloudabi_whence_t whence); }
+13 AUE_NULL STD { void cloudabi_sys_fd_stat_get( \
+ cloudabi_fd_t fd, \
+ cloudabi_fdstat_t *buf); }
+14 AUE_NULL STD { void cloudabi_sys_fd_stat_put( \
+ cloudabi_fd_t fd, \
+ const cloudabi_fdstat_t *buf, \
+ cloudabi_fdsflags_t flags); }
+15 AUE_NULL STD { void cloudabi_sys_fd_sync( \
+ cloudabi_fd_t fd); }
+16 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_fd_write( \
+ cloudabi_fd_t fd, \
+ const cloudabi64_ciovec_t *iov, \
+ cloudabi64_size_t iovcnt); }
+
+17 AUE_NULL STD { void cloudabi_sys_file_advise( \
+ cloudabi_fd_t fd, \
+ cloudabi_filesize_t offset, \
+ cloudabi_filesize_t len, \
+ cloudabi_advice_t advice); }
+18 AUE_NULL STD { void cloudabi_sys_file_allocate( \
+ cloudabi_fd_t fd, \
+ cloudabi_filesize_t offset, \
+ cloudabi_filesize_t len); }
+19 AUE_NULL STD { void cloudabi_sys_file_create( \
+ cloudabi_fd_t fd, \
+ const char *path, size_t pathlen, \
+ cloudabi_filetype_t type); }
+20 AUE_NULL STD { void cloudabi_sys_file_link( \
+ cloudabi_lookup_t fd1, \
+ const char *path1, size_t path1len, \
+ cloudabi_fd_t fd2, \
+ const char *path2, size_t path2len); }
+21 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_file_open( \
+ cloudabi_lookup_t fd, \
+ const char *path, size_t pathlen, \
+ cloudabi_oflags_t oflags, \
+ const cloudabi_fdstat_t *fds); }
+22 AUE_NULL STD { size_t cloudabi_sys_file_readdir( \
+ cloudabi_fd_t fd, \
+ void *buf, size_t nbyte, \
+ cloudabi_dircookie_t cookie); }
+23 AUE_NULL STD { size_t cloudabi_sys_file_readlink( \
+ cloudabi_fd_t fd, \
+ const char *path, size_t pathlen, \
+ void *buf, size_t bufsize); }
+24 AUE_NULL STD { void cloudabi_sys_file_rename( \
+ cloudabi_fd_t oldfd, \
+ const char *old, size_t oldlen, \
+ cloudabi_fd_t newfd, \
+ const char *new, size_t newlen); }
+25 AUE_NULL STD { void cloudabi_sys_file_stat_fget( \
+ cloudabi_fd_t fd, \
+ cloudabi_filestat_t *buf); }
+26 AUE_NULL STD { void cloudabi_sys_file_stat_fput( \
+ cloudabi_fd_t fd, \
+ const cloudabi_filestat_t *buf, \
+ cloudabi_fsflags_t flags); }
+27 AUE_NULL STD { void cloudabi_sys_file_stat_get( \
+ cloudabi_lookup_t fd, \
+ const char *path, size_t pathlen, \
+ cloudabi_filestat_t *buf); }
+28 AUE_NULL STD { void cloudabi_sys_file_stat_put( \
+ cloudabi_lookup_t fd, \
+ const char *path, size_t pathlen, \
+ const cloudabi_filestat_t *buf, \
+ cloudabi_fsflags_t flags); }
+29 AUE_NULL STD { void cloudabi_sys_file_symlink( \
+ const char *path1, size_t path1len, \
+ cloudabi_fd_t fd, \
+ const char *path2, size_t path2len); }
+30 AUE_NULL STD { void cloudabi_sys_file_unlink( \
+ cloudabi_fd_t fd, \
+ const char *path, size_t pathlen, \
+ cloudabi_ulflags_t flag); }
+
+31 AUE_NULL STD { void cloudabi_sys_lock_unlock( \
+ cloudabi_lock_t *lock); }
+
+32 AUE_NULL STD { void cloudabi_sys_mem_advise( \
+ void *addr, size_t len, \
+ cloudabi_advice_t advice); }
+33 AUE_NULL STD { void cloudabi_sys_mem_lock( \
+ const void *addr, size_t len); }
+34 AUE_NULL STD { void cloudabi_sys_mem_map( \
+ void *addr, size_t len, \
+ cloudabi_mprot_t prot, \
+ cloudabi_mflags_t flags, \
+ cloudabi_fd_t fd, \
+ cloudabi_filesize_t off); }
+35 AUE_NULL STD { void cloudabi_sys_mem_protect( \
+ void *addr, size_t len, \
+ cloudabi_mprot_t prot); }
+36 AUE_NULL STD { void cloudabi_sys_mem_sync( \
+ void *addr, size_t len, \
+ cloudabi_msflags_t flags); }
+37 AUE_NULL STD { void cloudabi_sys_mem_unlock( \
+ const void *addr, size_t len); }
+38 AUE_NULL STD { void cloudabi_sys_mem_unmap( \
+ void * addr, size_t len); }
+
+39 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_poll( \
+ cloudabi_fd_t fd, \
+ const cloudabi64_subscription_t *in, \
+ cloudabi64_size_t nin, \
+ cloudabi64_event_t *out, \
+ cloudabi64_size_t nout); }
+
+40 AUE_NULL STD { void cloudabi_sys_proc_exec( \
+ cloudabi_fd_t fd, const void *data, \
+ size_t datalen, \
+ const cloudabi_fd_t *fds, \
+ size_t fdslen); }
+41 AUE_NULL STD { void cloudabi_sys_proc_exit( \
+ cloudabi_exitcode_t rval); }
+42 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_proc_fork(); }
+43 AUE_NULL STD { void cloudabi_sys_proc_raise( \
+ cloudabi_signal_t sig); }
+
+44 AUE_NULL STD { void cloudabi_sys_random_get( \
+ void *buf, size_t nbyte); }
+
+45 AUE_NULL STD { cloudabi_fd_t cloudabi_sys_sock_accept( \
+ cloudabi_fd_t s, \
+ cloudabi_sockstat_t *buf); }
+46 AUE_NULL STD { void cloudabi_sys_sock_bind( \
+ cloudabi_fd_t s, cloudabi_fd_t fd, \
+ const char *path, size_t pathlen); }
+47 AUE_NULL STD { void cloudabi_sys_sock_connect( \
+ cloudabi_fd_t s, cloudabi_fd_t fd, \
+ const char *path, size_t pathlen); }
+48 AUE_NULL STD { void cloudabi_sys_sock_listen( \
+ cloudabi_fd_t s, \
+ cloudabi_backlog_t backlog); }
+49 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_sock_recv( \
+ cloudabi_fd_t s, \
+ const cloudabi64_recv_in_t *in, \
+ cloudabi64_recv_out_t *out); }
+50 AUE_NULL STD { cloudabi64_size_t cloudabi64_sys_sock_send( \
+ cloudabi_fd_t s, \
+ const cloudabi64_send_in_t *in, \
+ cloudabi64_send_out_t *out); }
+51 AUE_NULL STD { void cloudabi_sys_sock_shutdown( \
+ cloudabi_fd_t fd, \
+ cloudabi_sdflags_t how); }
+52 AUE_NULL STD { void cloudabi_sys_sock_stat_get( \
+ cloudabi_fd_t fd, \
+ cloudabi_sockstat_t *buf, \
+ cloudabi_ssflags_t flags); }
+
+53 AUE_NULL STD { cloudabi_tid_t cloudabi64_sys_thread_create( \
+ cloudabi64_threadattr_t *attr); }
+54 AUE_NULL STD { void cloudabi_sys_thread_exit( \
+ cloudabi_lock_t *lock); }
+55 AUE_NULL STD { void cloudabi64_sys_thread_tcb_set( \
+ void *tcb); }
+56 AUE_NULL STD { void cloudabi_sys_thread_yield(); }
diff --git a/sys/conf/files b/sys/conf/files
index c101c38..e2fdfc8 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -125,9 +125,9 @@ cddl/compat/opensolaris/kern/opensolaris_vm.c optional zfs compile-with "${ZF
cddl/compat/opensolaris/kern/opensolaris_zone.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/acl/acl_common.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/avl/avl.c optional zfs compile-with "${ZFS_C}"
-cddl/contrib/opensolaris/common/nvpair/fnvpair.c optional zfs compile-with "${ZFS_C}"
-cddl/contrib/opensolaris/common/nvpair/nvpair.c optional zfs compile-with "${ZFS_C}"
-cddl/contrib/opensolaris/common/nvpair/nvpair_alloc_fixed.c optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/nvpair/opensolaris_fnvpair.c optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair.c optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/nvpair/opensolaris_nvpair_alloc_fixed.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/unicode/u8_textprep.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zfeature_common.c optional zfs compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/zfs/zfs_comutil.c optional zfs compile-with "${ZFS_C}"
@@ -253,6 +253,21 @@ cddl/dev/fbt/fbt.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}
cddl/dev/systrace/systrace.c optional dtrace_systrace | dtraceall compile-with "${CDDL_C}"
cddl/dev/prototype.c optional dtrace_prototype | dtraceall compile-with "${CDDL_C}"
fs/nfsclient/nfs_clkdtrace.c optional dtnfscl nfscl | dtraceall nfscl compile-with "${CDDL_C}"
+compat/cloudabi/cloudabi_clock.c optional compat_cloudabi64
+compat/cloudabi/cloudabi_fd.c optional compat_cloudabi64
+compat/cloudabi/cloudabi_file.c optional compat_cloudabi64
+compat/cloudabi/cloudabi_futex.c optional compat_cloudabi64
+compat/cloudabi/cloudabi_mem.c optional compat_cloudabi64
+compat/cloudabi/cloudabi_proc.c optional compat_cloudabi64
+compat/cloudabi/cloudabi_random.c optional compat_cloudabi64
+compat/cloudabi/cloudabi_sock.c optional compat_cloudabi64
+compat/cloudabi/cloudabi_thread.c optional compat_cloudabi64
+compat/cloudabi64/cloudabi64_fd.c optional compat_cloudabi64
+compat/cloudabi64/cloudabi64_poll.c optional compat_cloudabi64
+compat/cloudabi64/cloudabi64_sock.c optional compat_cloudabi64
+compat/cloudabi64/cloudabi64_syscalls.c optional compat_cloudabi64
+compat/cloudabi64/cloudabi64_sysent.c optional compat_cloudabi64
+compat/cloudabi64/cloudabi64_thread.c optional compat_cloudabi64
compat/freebsd32/freebsd32_capability.c optional compat_freebsd32
compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32
compat/freebsd32/freebsd32_misc.c optional compat_freebsd32
diff --git a/sys/conf/files.arm b/sys/conf/files.arm
index f49f4551..743fd86 100644
--- a/sys/conf/files.arm
+++ b/sys/conf/files.arm
@@ -108,6 +108,7 @@ libkern/arm/divsi3.S standard
libkern/arm/ffs.S standard
libkern/arm/ldivmod.S standard
libkern/arm/ldivmod_helper.c standard
+libkern/arm/memclr.S standard
libkern/arm/memcpy.S standard
libkern/arm/memset.S standard
libkern/arm/muldi3.c standard
diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64
index d4301ac..d63594e 100644
--- a/sys/conf/files.arm64
+++ b/sys/conf/files.arm64
@@ -35,6 +35,7 @@ arm64/arm64/locore.S standard no-obj
arm64/arm64/machdep.c standard
arm64/arm64/mem.c standard
arm64/arm64/minidump_machdep.c standard
+arm64/arm64/mp_machdep.c optional smp
arm64/arm64/nexus.c standard
arm64/arm64/pic_if.m standard
arm64/arm64/pmap.c standard
diff --git a/sys/conf/options b/sys/conf/options
index eb3594b..d53a307 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -85,6 +85,7 @@ COMPAT_FREEBSD6 opt_compat.h
COMPAT_FREEBSD7 opt_compat.h
COMPAT_FREEBSD9 opt_compat.h
COMPAT_FREEBSD10 opt_compat.h
+COMPAT_CLOUDABI64 opt_dontuse.h
COMPAT_LINUXAPI opt_compat.h
COMPILING_LINT opt_global.h
CY_PCI_FASTINTR
diff --git a/sys/contrib/cloudabi/syscalldefs_md.h b/sys/contrib/cloudabi/syscalldefs_md.h
new file mode 100644
index 0000000..95dd129
--- /dev/null
+++ b/sys/contrib/cloudabi/syscalldefs_md.h
@@ -0,0 +1,255 @@
+// Copyright (c) 2015 Nuxi, https://nuxi.nl/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE.
+
+// Machine dependent definitions.
+
+// Macro to force sane alignment rules.
+//
+// On x86-32 it is the case that 64-bit integers are 4-byte aligned when
+// embedded in structs, even though they are 8-byte aligned when not
+// embedded. Force 8-byte alignment explicitly.
+#define MEMBER(type) alignas(alignof(type)) type
+#define ASSERT_OFFSET(type, field, offset32, offset64) \
+ static_assert((sizeof(PTR(void)) == 4 && \
+ offsetof(IDENT(type), field) == (offset32)) || \
+ (sizeof(PTR(void)) == 8 && \
+ offsetof(IDENT(type), field) == (offset64)), \
+ "Offset incorrect")
+#define ASSERT_SIZE(type, size32, size64) \
+ static_assert( \
+ (sizeof(PTR(void)) == 4 && sizeof(IDENT(type)) == (size32)) || \
+ (sizeof(PTR(void)) == 8 && sizeof(IDENT(type)) == (size64)), \
+ "Size incorrect")
+
+typedef void IDENT(threadentry_t)(cloudabi_tid_t, PTR(void));
+
+typedef struct {
+ MEMBER(PTR(const void)) iov_base;
+ MEMBER(IDENT(size_t)) iov_len;
+} IDENT(ciovec_t);
+ASSERT_OFFSET(ciovec_t, iov_base, 0, 0);
+ASSERT_OFFSET(ciovec_t, iov_len, 4, 8);
+ASSERT_SIZE(ciovec_t, 8, 16);
+
+typedef struct {
+ MEMBER(cloudabi_userdata_t) userdata;
+ MEMBER(cloudabi_errno_t) error;
+ MEMBER(cloudabi_eventtype_t) type;
+ union {
+ // CLOUDABI_EVENTTYPE_CLOCK: Wait until the value of a clock
+ // exceeds a value.
+ struct {
+ MEMBER(cloudabi_userdata_t) identifier;
+ } clock;
+
+ // CLOUDABI_EVENTTYPE_CONDVAR: Release a lock and wait on a
+ // condition variable.
+ struct {
+ MEMBER(PTR(_Atomic(cloudabi_condvar_t))) condvar;
+ } condvar;
+
+ // CLOUDABI_EVENTTYPE_FD_READ and CLOUDABI_EVENTTYPE_FD_WRITE:
+ // Wait for a file descriptor to allow read() and write() to be
+ // called without blocking.
+ struct {
+ MEMBER(cloudabi_filesize_t) nbytes;
+ MEMBER(cloudabi_fd_t) fd;
+ MEMBER(uint16_t) flags;
+ } fd_readwrite;
+
+ // CLOUDABI_EVENT_LOCK_RDLOCK and CLOUDABI_EVENT_LOCK_WRLOCK: Wait
+ // and acquire a read or write lock.
+ struct {
+ MEMBER(PTR(_Atomic(cloudabi_lock_t))) lock;
+ } lock;
+
+ // CLOUDABI_EVENTTYPE_PROC_TERMINATE: Wait for a process to terminate.
+ struct {
+ MEMBER(cloudabi_fd_t) fd;
+ MEMBER(cloudabi_signal_t) signal; // Non-zero if process got killed.
+ MEMBER(cloudabi_exitcode_t) exitcode; // Exit code.
+ } proc_terminate;
+ };
+} IDENT(event_t);
+ASSERT_OFFSET(event_t, userdata, 0, 0);
+ASSERT_OFFSET(event_t, error, 8, 8);
+ASSERT_OFFSET(event_t, type, 10, 10);
+ASSERT_OFFSET(event_t, clock.identifier, 16, 16);
+ASSERT_OFFSET(event_t, condvar.condvar, 16, 16);
+ASSERT_OFFSET(event_t, fd_readwrite.nbytes, 16, 16);
+ASSERT_OFFSET(event_t, fd_readwrite.fd, 24, 24);
+ASSERT_OFFSET(event_t, fd_readwrite.flags, 28, 28);
+ASSERT_OFFSET(event_t, lock.lock, 16, 16);
+ASSERT_OFFSET(event_t, proc_terminate.fd, 16, 16);
+ASSERT_OFFSET(event_t, proc_terminate.signal, 20, 20);
+ASSERT_OFFSET(event_t, proc_terminate.exitcode, 24, 24);
+ASSERT_SIZE(event_t, 32, 32);
+
+typedef struct {
+ MEMBER(PTR(void)) iov_base;
+ MEMBER(IDENT(size_t)) iov_len;
+} IDENT(iovec_t);
+ASSERT_OFFSET(iovec_t, iov_base, 0, 0);
+ASSERT_OFFSET(iovec_t, iov_len, 4, 8);
+ASSERT_SIZE(iovec_t, 8, 16);
+
+typedef struct {
+ MEMBER(PTR(const IDENT(iovec_t))) ri_data; // Data I/O vectors.
+ MEMBER(IDENT(size_t)) ri_datalen; // Number of data I/O vectors.
+ MEMBER(PTR(cloudabi_fd_t)) ri_fds; // File descriptors.
+ MEMBER(IDENT(size_t)) ri_fdslen; // Number of file descriptors.
+ MEMBER(cloudabi_msgflags_t) ri_flags; // Input flags.
+} IDENT(recv_in_t);
+ASSERT_OFFSET(recv_in_t, ri_data, 0, 0);
+ASSERT_OFFSET(recv_in_t, ri_datalen, 4, 8);
+ASSERT_OFFSET(recv_in_t, ri_fds, 8, 16);
+ASSERT_OFFSET(recv_in_t, ri_fdslen, 12, 24);
+ASSERT_OFFSET(recv_in_t, ri_flags, 16, 32);
+ASSERT_SIZE(recv_in_t, 20, 40);
+
+typedef struct {
+ MEMBER(IDENT(size_t)) ro_datalen; // Bytes of data received.
+ MEMBER(IDENT(size_t)) ro_fdslen; // Number of file descriptors received.
+ MEMBER(cloudabi_sockaddr_t) ro_sockname; // Address of receiver.
+ MEMBER(cloudabi_sockaddr_t) ro_peername; // Address of sender.
+ MEMBER(cloudabi_msgflags_t) ro_flags; // Output flags.
+} IDENT(recv_out_t);
+ASSERT_OFFSET(recv_out_t, ro_datalen, 0, 0);
+ASSERT_OFFSET(recv_out_t, ro_fdslen, 4, 8);
+ASSERT_OFFSET(recv_out_t, ro_sockname, 8, 16);
+ASSERT_OFFSET(recv_out_t, ro_peername, 28, 36);
+ASSERT_OFFSET(recv_out_t, ro_flags, 48, 56);
+ASSERT_SIZE(recv_out_t, 52, 64);
+
+typedef struct {
+ MEMBER(PTR(const IDENT(ciovec_t))) si_data; // Data I/O vectors.
+ MEMBER(IDENT(size_t)) si_datalen; // Number of data I/O vectors.
+ MEMBER(PTR(const cloudabi_fd_t)) si_fds; // File descriptors.
+ MEMBER(IDENT(size_t)) si_fdslen; // Number of file descriptors.
+ MEMBER(cloudabi_msgflags_t) si_flags; // Input flags.
+} IDENT(send_in_t);
+ASSERT_OFFSET(send_in_t, si_data, 0, 0);
+ASSERT_OFFSET(send_in_t, si_datalen, 4, 8);
+ASSERT_OFFSET(send_in_t, si_fds, 8, 16);
+ASSERT_OFFSET(send_in_t, si_fdslen, 12, 24);
+ASSERT_OFFSET(send_in_t, si_flags, 16, 32);
+ASSERT_SIZE(send_in_t, 20, 40);
+
+typedef struct {
+ MEMBER(IDENT(size_t)) so_datalen; // Bytes of data sent.
+} IDENT(send_out_t);
+ASSERT_OFFSET(send_out_t, so_datalen, 0, 0);
+ASSERT_SIZE(send_out_t, 4, 8);
+
+typedef struct {
+ MEMBER(PTR(const void)) sd_arg; // Program argument data.
+ MEMBER(IDENT(size_t)) sd_arglen; // Program argument data size.
+
+ MEMBER(PTR(void)) sd_elf_phdr; // ELF program header.
+ MEMBER(IDENT(size_t)) sd_elf_phdrlen; // ELF program header length.
+
+ MEMBER(cloudabi_tid_t) sd_thread_id; // Thread ID.
+ MEMBER(uint64_t) sd_random_seed; // Random seed, used for SSP.
+
+ MEMBER(uint32_t) sd_ncpus; // Number of CPUs.
+ MEMBER(uint32_t) sd_pagesize; // Page size.
+} IDENT(startup_data_t);
+ASSERT_OFFSET(startup_data_t, sd_arg, 0, 0);
+ASSERT_OFFSET(startup_data_t, sd_arglen, 4, 8);
+ASSERT_OFFSET(startup_data_t, sd_elf_phdr, 8, 16);
+ASSERT_OFFSET(startup_data_t, sd_elf_phdrlen, 12, 24);
+ASSERT_OFFSET(startup_data_t, sd_thread_id, 16, 32);
+ASSERT_OFFSET(startup_data_t, sd_random_seed, 24, 40);
+ASSERT_OFFSET(startup_data_t, sd_ncpus, 32, 48);
+ASSERT_OFFSET(startup_data_t, sd_pagesize, 36, 52);
+ASSERT_SIZE(startup_data_t, 40, 56);
+
+typedef struct {
+ MEMBER(cloudabi_userdata_t) userdata;
+ MEMBER(uint16_t) flags;
+ MEMBER(cloudabi_eventtype_t) type;
+ union {
+ // CLOUDABI_EVENTTYPE_CLOCK: Wait until the value of a clock
+ // exceeds a value.
+ struct {
+ MEMBER(cloudabi_userdata_t) identifier;
+ MEMBER(cloudabi_clockid_t) clock_id;
+ MEMBER(cloudabi_timestamp_t) timeout;
+ MEMBER(cloudabi_timestamp_t) precision;
+ } clock;
+
+ // CLOUDABI_EVENTTYPE_CONDVAR: Release a lock and wait on a
+ // condition variable.
+ struct {
+ MEMBER(PTR(_Atomic(cloudabi_condvar_t))) condvar;
+ MEMBER(PTR(_Atomic(cloudabi_lock_t))) lock;
+ } condvar;
+
+ // CLOUDABI_EVENTTYPE_FD_READ and CLOUDABI_EVENTTYPE_FD_WRITE:
+ // Wait for a file descriptor to allow read() and write() to be
+ // called without blocking.
+ struct {
+ MEMBER(cloudabi_fd_t) fd;
+ } fd_readwrite;
+
+ // CLOUDABI_EVENT_LOCK_RDLOCK and CLOUDABI_EVENT_LOCK_WRLOCK: Wait
+ // and acquire a read or write lock.
+ struct {
+ MEMBER(PTR(_Atomic(cloudabi_lock_t))) lock;
+ } lock;
+
+ // CLOUDABI_EVENTTYPE_PROC_TERMINATE: Wait for a process to terminate.
+ struct {
+ MEMBER(cloudabi_fd_t) fd;
+ } proc_terminate;
+ };
+} IDENT(subscription_t);
+ASSERT_OFFSET(subscription_t, userdata, 0, 0);
+ASSERT_OFFSET(subscription_t, flags, 8, 8);
+ASSERT_OFFSET(subscription_t, type, 10, 10);
+ASSERT_OFFSET(subscription_t, clock.identifier, 16, 16);
+ASSERT_OFFSET(subscription_t, clock.clock_id, 24, 24);
+ASSERT_OFFSET(subscription_t, clock.timeout, 32, 32);
+ASSERT_OFFSET(subscription_t, clock.precision, 40, 40);
+ASSERT_OFFSET(subscription_t, condvar.condvar, 16, 16);
+ASSERT_OFFSET(subscription_t, condvar.lock, 20, 24);
+ASSERT_OFFSET(subscription_t, fd_readwrite.fd, 16, 16);
+ASSERT_OFFSET(subscription_t, lock.lock, 16, 16);
+ASSERT_OFFSET(subscription_t, proc_terminate.fd, 16, 16);
+ASSERT_SIZE(subscription_t, 48, 48);
+
+typedef struct {
+ MEMBER(PTR(IDENT(threadentry_t))) entry_point; // Entry point.
+ MEMBER(PTR(void)) stack; // Pointer to stack buffer.
+ MEMBER(IDENT(size_t)) stack_size; // Size of stack buffer.
+ MEMBER(PTR(void)) argument; // Argument to be passed to entry point.
+} IDENT(threadattr_t);
+ASSERT_OFFSET(threadattr_t, entry_point, 0, 0);
+ASSERT_OFFSET(threadattr_t, stack, 4, 8);
+ASSERT_OFFSET(threadattr_t, stack_size, 8, 16);
+ASSERT_OFFSET(threadattr_t, argument, 12, 24);
+ASSERT_SIZE(threadattr_t, 16, 32);
+
+#undef MEMBER
+#undef ASSERT_OFFSET
+#undef ASSERT_SIZE
diff --git a/sys/contrib/cloudabi/syscalldefs_mi.h b/sys/contrib/cloudabi/syscalldefs_mi.h
new file mode 100644
index 0000000..75d79f4
--- /dev/null
+++ b/sys/contrib/cloudabi/syscalldefs_mi.h
@@ -0,0 +1,457 @@
+// Copyright (c) 2015 Nuxi, https://nuxi.nl/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE.
+
+#ifndef COMMON_SYSCALLDEFS_MI_H
+#define COMMON_SYSCALLDEFS_MI_H
+
+// Machine independent definitions.
+
+// Socket address families.
+#define CLOUDABI_AF_UNSPEC 0
+#define CLOUDABI_AF_INET 1
+#define CLOUDABI_AF_INET6 2
+#define CLOUDABI_AF_UNIX 3
+
+// File and memory I/O advice.
+#define CLOUDABI_ADVICE_DONTNEED 1
+#define CLOUDABI_ADVICE_NOREUSE 2
+#define CLOUDABI_ADVICE_NORMAL 3
+#define CLOUDABI_ADVICE_RANDOM 4
+#define CLOUDABI_ADVICE_SEQUENTIAL 5
+#define CLOUDABI_ADVICE_WILLNEED 6
+
+// Clocks.
+#define CLOUDABI_CLOCK_MONOTONIC 1
+#define CLOUDABI_CLOCK_PROCESS_CPUTIME_ID 2
+#define CLOUDABI_CLOCK_REALTIME 3
+#define CLOUDABI_CLOCK_THREAD_CPUTIME_ID 4
+
+// Condition variables.
+#define CLOUDABI_CONDVAR_HAS_NO_WAITERS 0
+
+// The start of a directory, to be passed to readdir().
+#define CLOUDABI_DIRCOOKIE_START 0
+
+// POSIX standard error numbers.
+#define CLOUDABI_E2BIG 1
+#define CLOUDABI_EACCES 2
+#define CLOUDABI_EADDRINUSE 3
+#define CLOUDABI_EADDRNOTAVAIL 4
+#define CLOUDABI_EAFNOSUPPORT 5
+#define CLOUDABI_EAGAIN 6
+#define CLOUDABI_EALREADY 7
+#define CLOUDABI_EBADF 8
+#define CLOUDABI_EBADMSG 9
+#define CLOUDABI_EBUSY 10
+#define CLOUDABI_ECANCELED 11
+#define CLOUDABI_ECHILD 12
+#define CLOUDABI_ECONNABORTED 13
+#define CLOUDABI_ECONNREFUSED 14
+#define CLOUDABI_ECONNRESET 15
+#define CLOUDABI_EDEADLK 16
+#define CLOUDABI_EDESTADDRREQ 17
+#define CLOUDABI_EDOM 18
+#define CLOUDABI_EDQUOT 19
+#define CLOUDABI_EEXIST 20
+#define CLOUDABI_EFAULT 21
+#define CLOUDABI_EFBIG 22
+#define CLOUDABI_EHOSTUNREACH 23
+#define CLOUDABI_EIDRM 24
+#define CLOUDABI_EILSEQ 25
+#define CLOUDABI_EINPROGRESS 26
+#define CLOUDABI_EINTR 27
+#define CLOUDABI_EINVAL 28
+#define CLOUDABI_EIO 29
+#define CLOUDABI_EISCONN 30
+#define CLOUDABI_EISDIR 31
+#define CLOUDABI_ELOOP 32
+#define CLOUDABI_EMFILE 33
+#define CLOUDABI_EMLINK 34
+#define CLOUDABI_EMSGSIZE 35
+#define CLOUDABI_EMULTIHOP 36
+#define CLOUDABI_ENAMETOOLONG 37
+#define CLOUDABI_ENETDOWN 38
+#define CLOUDABI_ENETRESET 39
+#define CLOUDABI_ENETUNREACH 40
+#define CLOUDABI_ENFILE 41
+#define CLOUDABI_ENOBUFS 42
+#define CLOUDABI_ENODEV 43
+#define CLOUDABI_ENOENT 44
+#define CLOUDABI_ENOEXEC 45
+#define CLOUDABI_ENOLCK 46
+#define CLOUDABI_ENOLINK 47
+#define CLOUDABI_ENOMEM 48
+#define CLOUDABI_ENOMSG 49
+#define CLOUDABI_ENOPROTOOPT 50
+#define CLOUDABI_ENOSPC 51
+#define CLOUDABI_ENOSYS 52
+#define CLOUDABI_ENOTCONN 53
+#define CLOUDABI_ENOTDIR 54
+#define CLOUDABI_ENOTEMPTY 55
+#define CLOUDABI_ENOTRECOVERABLE 56
+#define CLOUDABI_ENOTSOCK 57
+#define CLOUDABI_ENOTSUP 58
+#define CLOUDABI_ENOTTY 59
+#define CLOUDABI_ENXIO 60
+#define CLOUDABI_EOVERFLOW 61
+#define CLOUDABI_EOWNERDEAD 62
+#define CLOUDABI_EPERM 63
+#define CLOUDABI_EPIPE 64
+#define CLOUDABI_EPROTO 65
+#define CLOUDABI_EPROTONOSUPPORT 66
+#define CLOUDABI_EPROTOTYPE 67
+#define CLOUDABI_ERANGE 68
+#define CLOUDABI_EROFS 69
+#define CLOUDABI_ESPIPE 70
+#define CLOUDABI_ESRCH 71
+#define CLOUDABI_ESTALE 72
+#define CLOUDABI_ETIMEDOUT 73
+#define CLOUDABI_ETXTBSY 74
+#define CLOUDABI_EXDEV 75
+
+// Non-standard error numbers.
+#define CLOUDABI_ENOTCAPABLE 76
+
+#define CLOUDABI_EVENT_FD_READWRITE_HANGUP 0x1
+
+// Filter types for cloudabi_eventtype_t.
+#define CLOUDABI_EVENTTYPE_CLOCK 1
+#define CLOUDABI_EVENTTYPE_CONDVAR 2
+#define CLOUDABI_EVENTTYPE_FD_READ 3
+#define CLOUDABI_EVENTTYPE_FD_WRITE 4
+#define CLOUDABI_EVENTTYPE_LOCK_RDLOCK 5
+#define CLOUDABI_EVENTTYPE_LOCK_WRLOCK 6
+#define CLOUDABI_EVENTTYPE_PROC_TERMINATE 7
+
+// File descriptor behavior flags.
+#define CLOUDABI_FDFLAG_APPEND 0x1
+#define CLOUDABI_FDFLAG_DSYNC 0x2
+#define CLOUDABI_FDFLAG_NONBLOCK 0x4
+#define CLOUDABI_FDFLAG_RSYNC 0x8
+#define CLOUDABI_FDFLAG_SYNC 0x10
+
+// fdstat_put() flags.
+#define CLOUDABI_FDSTAT_FLAGS 0x1
+#define CLOUDABI_FDSTAT_RIGHTS 0x2
+
+// filestat_put() flags.
+#define CLOUDABI_FILESTAT_ATIM 0x1
+#define CLOUDABI_FILESTAT_ATIM_NOW 0x2
+#define CLOUDABI_FILESTAT_MTIM 0x4
+#define CLOUDABI_FILESTAT_MTIM_NOW 0x8
+#define CLOUDABI_FILESTAT_SIZE 0x10
+
+// File types returned through struct stat::st_mode.
+#define CLOUDABI_FILETYPE_UNKNOWN 0
+#define CLOUDABI_FILETYPE_BLOCK_DEVICE 0x10
+#define CLOUDABI_FILETYPE_CHARACTER_DEVICE 0x11
+#define CLOUDABI_FILETYPE_DIRECTORY 0x20
+#define CLOUDABI_FILETYPE_FIFO 0x30
+#define CLOUDABI_FILETYPE_POLL 0x40
+#define CLOUDABI_FILETYPE_PROCESS 0x50
+#define CLOUDABI_FILETYPE_REGULAR_FILE 0x60
+#define CLOUDABI_FILETYPE_SHARED_MEMORY 0x70
+#define CLOUDABI_FILETYPE_SOCKET_DGRAM 0x80
+#define CLOUDABI_FILETYPE_SOCKET_SEQPACKET 0x81
+#define CLOUDABI_FILETYPE_SOCKET_STREAM 0x82
+#define CLOUDABI_FILETYPE_SYMBOLIC_LINK 0x90
+
+// Read-write lock related constants.
+#define CLOUDABI_LOCK_UNLOCKED 0 // Lock is unlocked.
+#define CLOUDABI_LOCK_WRLOCKED 0x40000000 // Lock is write locked.
+#define CLOUDABI_LOCK_KERNEL_MANAGED 0x80000000 // Lock has waiters.
+#define CLOUDABI_LOCK_BOGUS 0x80000000 // Lock is broken.
+
+// Lookup properties for *at() functions.
+#define CLOUDABI_LOOKUP_SYMLINK_FOLLOW (UINT64_C(0x1) << 32)
+
+// Open flags for openat(), etc.
+#define CLOUDABI_O_CREAT 0x1
+#define CLOUDABI_O_DIRECTORY 0x2
+#define CLOUDABI_O_EXCL 0x4
+#define CLOUDABI_O_TRUNC 0x8
+
+// File descriptor passed to poll() to poll just once.
+#define CLOUDABI_POLL_ONCE 0xffffffff
+
+// File descriptor returned to pdfork()'s child process.
+#define CLOUDABI_PROCESS_CHILD 0xffffffff
+
+// mmap() map flags.
+#define CLOUDABI_MAP_ANON 0x1
+#define CLOUDABI_MAP_FIXED 0x2
+#define CLOUDABI_MAP_PRIVATE 0x4
+#define CLOUDABI_MAP_SHARED 0x8
+
+// msync() flags.
+#define CLOUDABI_MS_ASYNC 0x1
+#define CLOUDABI_MS_INVALIDATE 0x2
+#define CLOUDABI_MS_SYNC 0x4
+
+// send() and recv() flags.
+#define CLOUDABI_MSG_CTRUNC 0x1 // Control data truncated.
+#define CLOUDABI_MSG_EOR 0x2 // Terminates a record.
+#define CLOUDABI_MSG_PEEK 0x4 // Leave received data in queue.
+#define CLOUDABI_MSG_TRUNC 0x8 // Normal data truncated.
+#define CLOUDABI_MSG_WAITALL 0x10 // Attempt to fill the read buffer.
+
+// mmap()/mprotect() protection flags.
+#define CLOUDABI_PROT_EXEC 0x1
+#define CLOUDABI_PROT_WRITE 0x2
+#define CLOUDABI_PROT_READ 0x4
+
+// File descriptor capabilities/rights.
+#define CLOUDABI_RIGHT_BIT(bit) (UINT64_C(1) << (bit))
+#define CLOUDABI_RIGHT_FD_DATASYNC CLOUDABI_RIGHT_BIT(0)
+#define CLOUDABI_RIGHT_FD_READ CLOUDABI_RIGHT_BIT(1)
+#define CLOUDABI_RIGHT_FD_SEEK CLOUDABI_RIGHT_BIT(2)
+#define CLOUDABI_RIGHT_FD_STAT_PUT_FLAGS CLOUDABI_RIGHT_BIT(3)
+#define CLOUDABI_RIGHT_FD_SYNC CLOUDABI_RIGHT_BIT(4)
+#define CLOUDABI_RIGHT_FD_TELL CLOUDABI_RIGHT_BIT(5)
+#define CLOUDABI_RIGHT_FD_WRITE CLOUDABI_RIGHT_BIT(6)
+#define CLOUDABI_RIGHT_FILE_ADVISE CLOUDABI_RIGHT_BIT(7)
+#define CLOUDABI_RIGHT_FILE_ALLOCATE CLOUDABI_RIGHT_BIT(8)
+#define CLOUDABI_RIGHT_FILE_CREATE_DIRECTORY CLOUDABI_RIGHT_BIT(9)
+#define CLOUDABI_RIGHT_FILE_CREATE_FILE CLOUDABI_RIGHT_BIT(10)
+#define CLOUDABI_RIGHT_FILE_CREATE_FIFO CLOUDABI_RIGHT_BIT(11)
+#define CLOUDABI_RIGHT_FILE_LINK_SOURCE CLOUDABI_RIGHT_BIT(12)
+#define CLOUDABI_RIGHT_FILE_LINK_TARGET CLOUDABI_RIGHT_BIT(13)
+#define CLOUDABI_RIGHT_FILE_OPEN CLOUDABI_RIGHT_BIT(14)
+#define CLOUDABI_RIGHT_FILE_READDIR CLOUDABI_RIGHT_BIT(15)
+#define CLOUDABI_RIGHT_FILE_READLINK CLOUDABI_RIGHT_BIT(16)
+#define CLOUDABI_RIGHT_FILE_RENAME_SOURCE CLOUDABI_RIGHT_BIT(17)
+#define CLOUDABI_RIGHT_FILE_RENAME_TARGET CLOUDABI_RIGHT_BIT(18)
+#define CLOUDABI_RIGHT_FILE_STAT_FGET CLOUDABI_RIGHT_BIT(19)
+#define CLOUDABI_RIGHT_FILE_STAT_FPUT_SIZE CLOUDABI_RIGHT_BIT(20)
+#define CLOUDABI_RIGHT_FILE_STAT_FPUT_TIMES CLOUDABI_RIGHT_BIT(21)
+#define CLOUDABI_RIGHT_FILE_STAT_GET CLOUDABI_RIGHT_BIT(22)
+#define CLOUDABI_RIGHT_FILE_STAT_PUT_TIMES CLOUDABI_RIGHT_BIT(23)
+#define CLOUDABI_RIGHT_FILE_SYMLINK CLOUDABI_RIGHT_BIT(24)
+#define CLOUDABI_RIGHT_FILE_UNLINK CLOUDABI_RIGHT_BIT(25)
+#define CLOUDABI_RIGHT_MEM_MAP CLOUDABI_RIGHT_BIT(26)
+#define CLOUDABI_RIGHT_MEM_MAP_EXEC CLOUDABI_RIGHT_BIT(27)
+#define CLOUDABI_RIGHT_POLL_FD_READWRITE CLOUDABI_RIGHT_BIT(28)
+#define CLOUDABI_RIGHT_POLL_MODIFY CLOUDABI_RIGHT_BIT(29)
+#define CLOUDABI_RIGHT_POLL_PROC_TERMINATE CLOUDABI_RIGHT_BIT(30)
+#define CLOUDABI_RIGHT_POLL_WAIT CLOUDABI_RIGHT_BIT(31)
+#define CLOUDABI_RIGHT_PROC_EXEC CLOUDABI_RIGHT_BIT(32)
+#define CLOUDABI_RIGHT_SOCK_ACCEPT CLOUDABI_RIGHT_BIT(33)
+#define CLOUDABI_RIGHT_SOCK_BIND_DIRECTORY CLOUDABI_RIGHT_BIT(34)
+#define CLOUDABI_RIGHT_SOCK_BIND_SOCKET CLOUDABI_RIGHT_BIT(35)
+#define CLOUDABI_RIGHT_SOCK_CONNECT_DIRECTORY CLOUDABI_RIGHT_BIT(36)
+#define CLOUDABI_RIGHT_SOCK_CONNECT_SOCKET CLOUDABI_RIGHT_BIT(37)
+#define CLOUDABI_RIGHT_SOCK_LISTEN CLOUDABI_RIGHT_BIT(38)
+#define CLOUDABI_RIGHT_SOCK_SHUTDOWN CLOUDABI_RIGHT_BIT(39)
+#define CLOUDABI_RIGHT_SOCK_STAT_GET CLOUDABI_RIGHT_BIT(40)
+
+// Socket shutdown flags.
+#define CLOUDABI_SHUT_RD 0x1
+#define CLOUDABI_SHUT_WR 0x2
+
+// Signals.
+#define CLOUDABI_SIGABRT 1
+#define CLOUDABI_SIGALRM 2
+#define CLOUDABI_SIGBUS 3
+#define CLOUDABI_SIGCHLD 4
+#define CLOUDABI_SIGCONT 5
+#define CLOUDABI_SIGFPE 6
+#define CLOUDABI_SIGHUP 7
+#define CLOUDABI_SIGILL 8
+#define CLOUDABI_SIGINT 9
+#define CLOUDABI_SIGKILL 10
+#define CLOUDABI_SIGPIPE 11
+#define CLOUDABI_SIGQUIT 12
+#define CLOUDABI_SIGSEGV 13
+#define CLOUDABI_SIGSTOP 14
+#define CLOUDABI_SIGSYS 15
+#define CLOUDABI_SIGTERM 16
+#define CLOUDABI_SIGTRAP 17
+#define CLOUDABI_SIGTSTP 18
+#define CLOUDABI_SIGTTIN 19
+#define CLOUDABI_SIGTTOU 20
+#define CLOUDABI_SIGURG 21
+#define CLOUDABI_SIGUSR1 22
+#define CLOUDABI_SIGUSR2 23
+#define CLOUDABI_SIGVTALRM 24
+#define CLOUDABI_SIGXCPU 25
+#define CLOUDABI_SIGXFSZ 26
+
+// sockstat() flags.
+#define CLOUDABI_SOCKSTAT_CLEAR_ERROR 0x1
+
+// sockstat() state.
+#define CLOUDABI_SOCKSTAT_ACCEPTCONN 0x1
+
+// cloudabi_subscription_t flags.
+#define CLOUDABI_SUBSCRIPTION_ADD 0x1
+#define CLOUDABI_SUBSCRIPTION_CLEAR 0x2
+#define CLOUDABI_SUBSCRIPTION_DELETE 0x4
+#define CLOUDABI_SUBSCRIPTION_DISABLE 0x8
+#define CLOUDABI_SUBSCRIPTION_ENABLE 0x10
+#define CLOUDABI_SUBSCRIPTION_ONESHOT 0x20
+
+// unlinkat().
+#define CLOUDABI_UNLINK_REMOVEDIR 0x1
+
+// Seeking.
+#define CLOUDABI_WHENCE_CUR 1
+#define CLOUDABI_WHENCE_END 2
+#define CLOUDABI_WHENCE_SET 3
+
+typedef uint8_t cloudabi_advice_t; // posix_fadvise() and posix_madvise().
+typedef uint32_t cloudabi_backlog_t; // listen().
+typedef uint32_t cloudabi_clockid_t; // clock_*().
+typedef uint32_t cloudabi_condvar_t; // pthread_cond_*().
+typedef uint64_t cloudabi_device_t; // struct stat::st_dev.
+typedef uint64_t cloudabi_dircookie_t; // readdir().
+typedef uint16_t cloudabi_errno_t; // errno.
+typedef uint8_t cloudabi_eventtype_t; // poll().
+typedef uint32_t cloudabi_exitcode_t; // _exit() and _Exit().
+typedef uint32_t cloudabi_fd_t; // File descriptors.
+typedef uint16_t cloudabi_fdflags_t; // cloudabi_fdstat_t.
+typedef uint16_t cloudabi_fdsflags_t; // fd_stat_put().
+typedef int64_t cloudabi_filedelta_t; // lseek().
+typedef uint64_t cloudabi_filesize_t; // ftruncate(), struct stat::st_size.
+typedef uint8_t cloudabi_filetype_t; // struct stat::st_mode.
+typedef uint16_t cloudabi_fsflags_t; // file_stat_put().
+typedef uint64_t cloudabi_inode_t; // struct stat::st_ino.
+typedef uint32_t cloudabi_linkcount_t; // struct stat::st_nlink.
+typedef uint32_t cloudabi_lock_t; // pthread_{mutex,rwlock}_*().
+typedef uint64_t cloudabi_lookup_t; // openat(), linkat(), etc.
+typedef uint8_t cloudabi_mflags_t; // mmap().
+typedef uint8_t cloudabi_mprot_t; // mmap().
+typedef uint8_t cloudabi_msflags_t; // msync().
+typedef uint16_t cloudabi_msgflags_t; // send() and recv().
+typedef uint32_t cloudabi_nthreads_t; // pthread_cond_*().
+typedef uint16_t cloudabi_oflags_t; // openat(), etc.
+typedef uint64_t cloudabi_rights_t; // File descriptor rights.
+typedef uint8_t cloudabi_sa_family_t; // Socket address family.
+typedef uint8_t cloudabi_sdflags_t; // shutdown().
+typedef uint8_t cloudabi_ssflags_t; // sockstat().
+typedef uint8_t cloudabi_signal_t; // raise().
+typedef uint32_t cloudabi_tid_t; // Thread ID.
+typedef uint64_t cloudabi_timestamp_t; // clock_*(), struct stat::st_*tim.
+typedef uint8_t cloudabi_ulflags_t; // unlinkat().
+typedef uint64_t cloudabi_userdata_t; // User-supplied data for callbacks.
+typedef uint8_t cloudabi_whence_t; // lseek().
+
+// Macro to force sane alignment rules.
+//
+// On x86-32 it is the case that 64-bit integers are 4-byte aligned when
+// embedded in structs, even though they are 8-byte aligned when not
+// embedded. Force 8-byte alignment explicitly.
+#define MEMBER(type) alignas(alignof(type)) type
+#define ASSERT_OFFSET(type, field, offset) \
+ static_assert(offsetof(cloudabi_##type, field) == (offset), \
+ "Offset incorrect")
+#define ASSERT_SIZE(type, size) \
+ static_assert(sizeof(cloudabi_##type) == (size), "Size incorrect")
+
+// Directory entries.
+typedef struct {
+ MEMBER(cloudabi_dircookie_t) d_next; // Cookie of the next entry.
+ MEMBER(cloudabi_inode_t) d_ino; // Inode number of the current entry.
+ MEMBER(uint32_t) d_namlen; // Length of the name of the current entry.
+ MEMBER(cloudabi_filetype_t) d_type; // File type of the current entry.
+} cloudabi_dirent_t;
+ASSERT_OFFSET(dirent_t, d_next, 0);
+ASSERT_OFFSET(dirent_t, d_ino, 8);
+ASSERT_OFFSET(dirent_t, d_namlen, 16);
+ASSERT_OFFSET(dirent_t, d_type, 20);
+ASSERT_SIZE(dirent_t, 24);
+
+// File descriptor status.
+typedef struct {
+ MEMBER(cloudabi_filetype_t) fs_filetype; // File descriptor type.
+ MEMBER(cloudabi_fdflags_t) fs_flags; // Non-blocking mode, etc.
+ MEMBER(cloudabi_rights_t) fs_rights_base; // Base rights.
+ MEMBER(cloudabi_rights_t) fs_rights_inheriting; // Inheriting rights.
+} cloudabi_fdstat_t;
+ASSERT_OFFSET(fdstat_t, fs_filetype, 0);
+ASSERT_OFFSET(fdstat_t, fs_flags, 2);
+ASSERT_OFFSET(fdstat_t, fs_rights_base, 8);
+ASSERT_OFFSET(fdstat_t, fs_rights_inheriting, 16);
+ASSERT_SIZE(fdstat_t, 24);
+
+// File status.
+typedef struct {
+ MEMBER(cloudabi_device_t) st_dev; // Device storing the file.
+ MEMBER(cloudabi_inode_t) st_ino; // Inode of the file.
+ MEMBER(cloudabi_filetype_t) st_filetype; // File type.
+ MEMBER(cloudabi_linkcount_t) st_nlink; // Number of hardlinks.
+ MEMBER(cloudabi_filesize_t) st_size; // Size of the file.
+ MEMBER(cloudabi_timestamp_t) st_atim; // Access time.
+ MEMBER(cloudabi_timestamp_t) st_mtim; // Modification time.
+ MEMBER(cloudabi_timestamp_t) st_ctim; // Change time.
+} cloudabi_filestat_t;
+ASSERT_OFFSET(filestat_t, st_dev, 0);
+ASSERT_OFFSET(filestat_t, st_ino, 8);
+ASSERT_OFFSET(filestat_t, st_filetype, 16);
+ASSERT_OFFSET(filestat_t, st_nlink, 20);
+ASSERT_OFFSET(filestat_t, st_size, 24);
+ASSERT_OFFSET(filestat_t, st_atim, 32);
+ASSERT_OFFSET(filestat_t, st_mtim, 40);
+ASSERT_OFFSET(filestat_t, st_ctim, 48);
+ASSERT_SIZE(filestat_t, 56);
+
+typedef struct {
+ MEMBER(cloudabi_sa_family_t) sa_family;
+ union {
+ struct {
+ // IPv4 address and port number.
+ MEMBER(uint8_t) addr[4];
+ MEMBER(uint16_t) port;
+ } sa_inet;
+ struct {
+ // IPv6 address and port number.
+ // TODO(ed): What about the flow info and scope ID?
+ MEMBER(uint8_t) addr[16];
+ MEMBER(uint16_t) port;
+ } sa_inet6;
+ };
+} cloudabi_sockaddr_t;
+ASSERT_OFFSET(sockaddr_t, sa_family, 0);
+ASSERT_OFFSET(sockaddr_t, sa_inet.addr, 2);
+ASSERT_OFFSET(sockaddr_t, sa_inet.port, 6);
+ASSERT_OFFSET(sockaddr_t, sa_inet6.addr, 2);
+ASSERT_OFFSET(sockaddr_t, sa_inet6.port, 18);
+ASSERT_SIZE(sockaddr_t, 20);
+
+// Socket status.
+typedef struct {
+ MEMBER(cloudabi_sockaddr_t) ss_sockname; // Socket address.
+ MEMBER(cloudabi_sockaddr_t) ss_peername; // Peer address.
+ MEMBER(cloudabi_errno_t) ss_error; // Current error state.
+ MEMBER(uint32_t) ss_state; // State flags.
+} cloudabi_sockstat_t;
+ASSERT_OFFSET(sockstat_t, ss_sockname, 0);
+ASSERT_OFFSET(sockstat_t, ss_peername, 20);
+ASSERT_OFFSET(sockstat_t, ss_error, 40);
+ASSERT_OFFSET(sockstat_t, ss_state, 44);
+ASSERT_SIZE(sockstat_t, 48);
+
+#undef MEMBER
+#undef ASSERT_OFFSET
+#undef ASSERT_SIZE
+
+#endif
diff --git a/sys/crypto/aesni/aesni.c b/sys/crypto/aesni/aesni.c
index 7f143cb..84203d7 100644
--- a/sys/crypto/aesni/aesni.c
+++ b/sys/crypto/aesni/aesni.c
@@ -45,17 +45,35 @@ __FBSDID("$FreeBSD$");
#include <sys/bus.h>
#include <sys/uio.h>
#include <sys/mbuf.h>
+#include <sys/smp.h>
#include <crypto/aesni/aesni.h>
#include <cryptodev_if.h>
#include <opencrypto/gmac.h>
+static struct mtx_padalign *ctx_mtx;
+static struct fpu_kern_ctx **ctx_fpu;
+
struct aesni_softc {
+ int dieing;
int32_t cid;
uint32_t sid;
TAILQ_HEAD(aesni_sessions_head, aesni_session) sessions;
struct rwlock lock;
};
+#define AQUIRE_CTX(i, ctx) \
+ do { \
+ (i) = PCPU_GET(cpuid); \
+ mtx_lock(&ctx_mtx[(i)]); \
+ (ctx) = ctx_fpu[(i)]; \
+ } while (0)
+#define RELEASE_CTX(i, ctx) \
+ do { \
+ mtx_unlock(&ctx_mtx[(i)]); \
+ (i) = -1; \
+ (ctx) = NULL; \
+ } while (0)
+
static int aesni_newsession(device_t, uint32_t *sidp, struct cryptoini *cri);
static int aesni_freesession(device_t, uint64_t tid);
static void aesni_freesession_locked(struct aesni_softc *sc,
@@ -95,14 +113,36 @@ aesni_probe(device_t dev)
return (0);
}
+static void
+aensi_cleanctx(void)
+{
+ int i;
+
+ /* XXX - no way to return driverid */
+ CPU_FOREACH(i) {
+ if (ctx_fpu[i] != NULL) {
+ mtx_destroy(&ctx_mtx[i]);
+ fpu_kern_free_ctx(ctx_fpu[i]);
+ }
+ ctx_fpu[i] = NULL;
+ }
+ free(ctx_mtx, M_AESNI);
+ ctx_mtx = NULL;
+ free(ctx_fpu, M_AESNI);
+ ctx_fpu = NULL;
+}
+
static int
aesni_attach(device_t dev)
{
struct aesni_softc *sc;
+ int i;
sc = device_get_softc(dev);
+ sc->dieing = 0;
TAILQ_INIT(&sc->sessions);
sc->sid = 1;
+
sc->cid = crypto_get_driverid(dev, CRYPTOCAP_F_HARDWARE |
CRYPTOCAP_F_SYNC);
if (sc->cid < 0) {
@@ -110,6 +150,16 @@ aesni_attach(device_t dev)
return (ENOMEM);
}
+ ctx_mtx = malloc(sizeof *ctx_mtx * (mp_maxid + 1), M_AESNI,
+ M_WAITOK|M_ZERO);
+ ctx_fpu = malloc(sizeof *ctx_fpu * (mp_maxid + 1), M_AESNI,
+ M_WAITOK|M_ZERO);
+
+ CPU_FOREACH(i) {
+ ctx_fpu[i] = fpu_kern_alloc_ctx(0);
+ mtx_init(&ctx_mtx[i], "anifpumtx", NULL, MTX_DEF|MTX_NEW);
+ }
+
rw_init(&sc->lock, "aesni_lock");
crypto_register(sc->cid, CRYPTO_AES_CBC, 0, 0);
crypto_register(sc->cid, CRYPTO_AES_ICM, 0, 0);
@@ -128,6 +178,7 @@ aesni_detach(device_t dev)
struct aesni_session *ses;
sc = device_get_softc(dev);
+
rw_wlock(&sc->lock);
TAILQ_FOREACH(ses, &sc->sessions, next) {
if (ses->used) {
@@ -137,14 +188,18 @@ aesni_detach(device_t dev)
return (EBUSY);
}
}
+ sc->dieing = 1;
while ((ses = TAILQ_FIRST(&sc->sessions)) != NULL) {
TAILQ_REMOVE(&sc->sessions, ses, next);
- fpu_kern_free_ctx(ses->fpu_ctx);
free(ses, M_AESNI);
}
rw_wunlock(&sc->lock);
- rw_destroy(&sc->lock);
crypto_unregister_all(sc->cid);
+
+ rw_destroy(&sc->lock);
+
+ aensi_cleanctx();
+
return (0);
}
@@ -162,6 +217,9 @@ aesni_newsession(device_t dev, uint32_t *sidp, struct cryptoini *cri)
}
sc = device_get_softc(dev);
+ if (sc->dieing)
+ return (EINVAL);
+
ses = NULL;
encini = NULL;
for (; cri != NULL; cri = cri->cri_next) {
@@ -195,6 +253,10 @@ aesni_newsession(device_t dev, uint32_t *sidp, struct cryptoini *cri)
}
rw_wlock(&sc->lock);
+ if (sc->dieing) {
+ rw_wunlock(&sc->lock);
+ return (EINVAL);
+ }
/*
* Free sessions goes first, so if first session is used, we need to
* allocate one.
@@ -206,12 +268,6 @@ aesni_newsession(device_t dev, uint32_t *sidp, struct cryptoini *cri)
rw_wunlock(&sc->lock);
return (ENOMEM);
}
- ses->fpu_ctx = fpu_kern_alloc_ctx(FPU_KERN_NOWAIT);
- if (ses->fpu_ctx == NULL) {
- free(ses, M_AESNI);
- rw_wunlock(&sc->lock);
- return (ENOMEM);
- }
ses->id = sc->sid++;
} else {
TAILQ_REMOVE(&sc->sessions, ses, next);
@@ -237,15 +293,14 @@ aesni_newsession(device_t dev, uint32_t *sidp, struct cryptoini *cri)
static void
aesni_freesession_locked(struct aesni_softc *sc, struct aesni_session *ses)
{
- struct fpu_kern_ctx *ctx;
uint32_t sid;
+ rw_assert(&sc->lock, RA_WLOCKED);
+
sid = ses->id;
TAILQ_REMOVE(&sc->sessions, ses, next);
- ctx = ses->fpu_ctx;
*ses = (struct aesni_session){};
ses->id = sid;
- ses->fpu_ctx = ctx;
TAILQ_INSERT_HEAD(&sc->sessions, ses, next);
}
@@ -429,17 +484,27 @@ MODULE_DEPEND(aesni, crypto, 1, 1, 1);
static int
aesni_cipher_setup(struct aesni_session *ses, struct cryptoini *encini)
{
- struct thread *td;
+ struct fpu_kern_ctx *ctx;
int error;
+ int kt, ctxidx;
+
+ kt = is_fpu_kern_thread(0);
+ if (!kt) {
+ AQUIRE_CTX(ctxidx, ctx);
+ error = fpu_kern_enter(curthread, ctx,
+ FPU_KERN_NORMAL | FPU_KERN_KTHR);
+ if (error != 0)
+ goto out;
+ }
- td = curthread;
- error = fpu_kern_enter(td, ses->fpu_ctx, FPU_KERN_NORMAL |
- FPU_KERN_KTHR);
- if (error != 0)
- return (error);
error = aesni_cipher_setup_common(ses, encini->cri_key,
encini->cri_klen);
- fpu_kern_leave(td, ses->fpu_ctx);
+
+ if (!kt) {
+ fpu_kern_leave(curthread, ctx);
+out:
+ RELEASE_CTX(ctxidx, ctx);
+ }
return (error);
}
@@ -450,12 +515,13 @@ static int
aesni_cipher_process(struct aesni_session *ses, struct cryptodesc *enccrd,
struct cryptodesc *authcrd, struct cryptop *crp)
{
+ struct fpu_kern_ctx *ctx;
uint8_t iv[AES_BLOCK_LEN];
uint8_t tag[GMAC_DIGEST_LEN];
- struct thread *td;
uint8_t *buf, *authbuf;
int error, allocated, authallocated;
int ivlen, encflag;
+ int kt, ctxidx;
encflag = (enccrd->crd_flags & CRD_F_ENCRYPT) == CRD_F_ENCRYPT;
@@ -478,11 +544,14 @@ aesni_cipher_process(struct aesni_session *ses, struct cryptodesc *enccrd,
}
}
- td = curthread;
- error = fpu_kern_enter(td, ses->fpu_ctx, FPU_KERN_NORMAL |
- FPU_KERN_KTHR);
- if (error != 0)
- goto out1;
+ kt = is_fpu_kern_thread(0);
+ if (!kt) {
+ AQUIRE_CTX(ctxidx, ctx);
+ error = fpu_kern_enter(curthread, ctx,
+ FPU_KERN_NORMAL|FPU_KERN_KTHR);
+ if (error != 0)
+ goto out2;
+ }
if ((enccrd->crd_flags & CRD_F_KEY_EXPLICIT) != 0) {
error = aesni_cipher_setup_common(ses, enccrd->crd_key,
@@ -578,7 +647,12 @@ aesni_cipher_process(struct aesni_session *ses, struct cryptodesc *enccrd,
}
out:
- fpu_kern_leave(td, ses->fpu_ctx);
+ if (!kt) {
+ fpu_kern_leave(curthread, ctx);
+out2:
+ RELEASE_CTX(ctxidx, ctx);
+ }
+
out1:
if (allocated) {
bzero(buf, enccrd->crd_len);
diff --git a/sys/crypto/aesni/aesni.h b/sys/crypto/aesni/aesni.h
index 2210f7f..0594176 100644
--- a/sys/crypto/aesni/aesni.h
+++ b/sys/crypto/aesni/aesni.h
@@ -64,7 +64,6 @@ struct aesni_session {
int used;
uint32_t id;
TAILQ_ENTRY(aesni_session) next;
- struct fpu_kern_ctx *fpu_ctx;
};
/*
diff --git a/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c b/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
index 8f4980f..f9d36b3 100644
--- a/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
+++ b/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_provider.c
@@ -303,7 +303,7 @@ iwch_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags)
else
cq_op = CQ_ARM_AN;
if (chp->user_rptr_addr) {
- if (copyin(&rptr, chp->user_rptr_addr, 4))
+ if (copyin(chp->user_rptr_addr, &rptr, sizeof(rptr)))
return (-EFAULT);
mtx_lock(&chp->lock);
chp->cq.rptr = rptr;
diff --git a/sys/i386/isa/npx.c b/sys/i386/isa/npx.c
index 61356cc..d3cd628 100644
--- a/sys/i386/isa/npx.c
+++ b/sys/i386/isa/npx.c
@@ -1359,6 +1359,7 @@ static MALLOC_DEFINE(M_FPUKERN_CTX, "fpukern_ctx",
#define FPU_KERN_CTX_NPXINITDONE 0x01
#define FPU_KERN_CTX_DUMMY 0x02
+#define FPU_KERN_CTX_INUSE 0x04
struct fpu_kern_ctx {
union savefpu *prev;
@@ -1383,6 +1384,7 @@ void
fpu_kern_free_ctx(struct fpu_kern_ctx *ctx)
{
+ KASSERT((ctx->flags & FPU_KERN_CTX_INUSE) == 0, ("free'ing inuse ctx"));
/* XXXKIB clear the memory ? */
free(ctx, M_FPUKERN_CTX);
}
@@ -1402,14 +1404,16 @@ fpu_kern_enter(struct thread *td, struct fpu_kern_ctx *ctx, u_int flags)
{
struct pcb *pcb;
+ KASSERT((ctx->flags & FPU_KERN_CTX_INUSE) == 0, ("using inuse ctx"));
+
if ((flags & FPU_KERN_KTHR) != 0 && is_fpu_kern_thread(0)) {
- ctx->flags = FPU_KERN_CTX_DUMMY;
+ ctx->flags = FPU_KERN_CTX_DUMMY | FPU_KERN_CTX_INUSE;
return (0);
}
pcb = td->td_pcb;
KASSERT(!PCB_USER_FPU(pcb) || pcb->pcb_save ==
get_pcb_user_save_pcb(pcb), ("mangled pcb_save"));
- ctx->flags = 0;
+ ctx->flags = FPU_KERN_CTX_INUSE;
if ((pcb->pcb_flags & PCB_NPXINITDONE) != 0)
ctx->flags |= FPU_KERN_CTX_NPXINITDONE;
npxexit(td);
@@ -1425,6 +1429,10 @@ fpu_kern_leave(struct thread *td, struct fpu_kern_ctx *ctx)
{
struct pcb *pcb;
+ KASSERT((ctx->flags & FPU_KERN_CTX_INUSE) != 0,
+ ("leaving not inuse ctx"));
+ ctx->flags &= ~FPU_KERN_CTX_INUSE;
+
if (is_fpu_kern_thread(0) && (ctx->flags & FPU_KERN_CTX_DUMMY) != 0)
return (0);
pcb = td->td_pcb;
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 79f6695..3f2a4e4 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -102,7 +102,6 @@ static uma_zone_t filedesc0_zone;
static int closefp(struct filedesc *fdp, int fd, struct file *fp,
struct thread *td, int holdleaders);
-static int do_dup(struct thread *td, int flags, int old, int new);
static int fd_first_free(struct filedesc *fdp, int low, int size);
static int fd_last_used(struct filedesc *fdp, int size);
static void fdgrowtable(struct filedesc *fdp, int nfd);
@@ -111,11 +110,6 @@ static void fdunused(struct filedesc *fdp, int fd);
static void fdused(struct filedesc *fdp, int fd);
static int getmaxfd(struct thread *td);
-/* Flags for do_dup() */
-#define DUP_FIXED 0x1 /* Force fixed allocation. */
-#define DUP_FCNTL 0x2 /* fcntl()-style errors. */
-#define DUP_CLOEXEC 0x4 /* Atomically set FD_CLOEXEC. */
-
/*
* Each process has:
*
@@ -361,7 +355,7 @@ int
sys_dup2(struct thread *td, struct dup2_args *uap)
{
- return (do_dup(td, DUP_FIXED, (int)uap->from, (int)uap->to));
+ return (kern_dup(td, FDDUP_FIXED, (int)uap->from, (int)uap->to));
}
/*
@@ -377,7 +371,7 @@ int
sys_dup(struct thread *td, struct dup_args *uap)
{
- return (do_dup(td, 0, (int)uap->fd, 0));
+ return (kern_dup(td, 0, (int)uap->fd, 0));
}
/*
@@ -487,22 +481,22 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg)
switch (cmd) {
case F_DUPFD:
tmp = arg;
- error = do_dup(td, DUP_FCNTL, fd, tmp);
+ error = kern_dup(td, FDDUP_FCNTL, fd, tmp);
break;
case F_DUPFD_CLOEXEC:
tmp = arg;
- error = do_dup(td, DUP_FCNTL | DUP_CLOEXEC, fd, tmp);
+ error = kern_dup(td, FDDUP_FCNTL | FDDUP_CLOEXEC, fd, tmp);
break;
case F_DUP2FD:
tmp = arg;
- error = do_dup(td, DUP_FIXED, fd, tmp);
+ error = kern_dup(td, FDDUP_FIXED, fd, tmp);
break;
case F_DUP2FD_CLOEXEC:
tmp = arg;
- error = do_dup(td, DUP_FIXED | DUP_CLOEXEC, fd, tmp);
+ error = kern_dup(td, FDDUP_FIXED | FDDUP_CLOEXEC, fd, tmp);
break;
case F_GETFD:
@@ -794,8 +788,8 @@ getmaxfd(struct thread *td)
/*
* Common code for dup, dup2, fcntl(F_DUPFD) and fcntl(F_DUP2FD).
*/
-static int
-do_dup(struct thread *td, int flags, int old, int new)
+int
+kern_dup(struct thread *td, int flags, int old, int new)
{
struct filedesc *fdp;
struct filedescent *oldfde, *newfde;
@@ -807,6 +801,11 @@ do_dup(struct thread *td, int flags, int old, int new)
p = td->td_proc;
fdp = p->p_fd;
+ MPASS((flags & ~(FDDUP_FIXED | FDDUP_FCNTL | FDDUP_CLOEXEC |
+ FDDUP_MUSTREPLACE)) == 0);
+ MPASS((flags & (FDDUP_FIXED | FDDUP_MUSTREPLACE)) !=
+ (FDDUP_FIXED | FDDUP_MUSTREPLACE));
+
/*
* Verify we have a valid descriptor to dup from and possibly to
* dup to. Unlike dup() and dup2(), fcntl()'s F_DUPFD should
@@ -815,10 +814,10 @@ do_dup(struct thread *td, int flags, int old, int new)
if (old < 0)
return (EBADF);
if (new < 0)
- return (flags & DUP_FCNTL ? EINVAL : EBADF);
+ return (flags & FDDUP_FCNTL ? EINVAL : EBADF);
maxfd = getmaxfd(td);
if (new >= maxfd)
- return (flags & DUP_FCNTL ? EINVAL : EBADF);
+ return (flags & FDDUP_FCNTL ? EINVAL : EBADF);
FILEDESC_XLOCK(fdp);
if (fget_locked(fdp, old) == NULL) {
@@ -826,9 +825,9 @@ do_dup(struct thread *td, int flags, int old, int new)
return (EBADF);
}
oldfde = &fdp->fd_ofiles[old];
- if (flags & DUP_FIXED && old == new) {
+ if (flags & (FDDUP_FIXED | FDDUP_MUSTREPLACE) && old == new) {
td->td_retval[0] = new;
- if (flags & DUP_CLOEXEC)
+ if (flags & FDDUP_CLOEXEC)
fdp->fd_ofiles[new].fde_flags |= UF_EXCLOSE;
FILEDESC_XUNLOCK(fdp);
return (0);
@@ -841,7 +840,16 @@ do_dup(struct thread *td, int flags, int old, int new)
* table is large enough to hold it, and grab it. Otherwise, just
* allocate a new descriptor the usual way.
*/
- if (flags & DUP_FIXED) {
+ if (flags & FDDUP_MUSTREPLACE) {
+ /* Target file descriptor must exist. */
+ if (new >= fdp->fd_nfiles ||
+ fdp->fd_ofiles[new].fde_file == NULL) {
+ FILEDESC_XUNLOCK(fdp);
+ fdrop(fp, td);
+ return (EBADF);
+ }
+ newfde = &fdp->fd_ofiles[new];
+ } else if (flags & FDDUP_FIXED) {
if (new >= fdp->fd_nfiles) {
/*
* The resource limits are here instead of e.g.
@@ -892,7 +900,7 @@ do_dup(struct thread *td, int flags, int old, int new)
filecaps_free(&newfde->fde_caps);
memcpy(newfde, oldfde, fde_change_size);
filecaps_copy(&oldfde->fde_caps, &newfde->fde_caps);
- if ((flags & DUP_CLOEXEC) != 0)
+ if ((flags & FDDUP_CLOEXEC) != 0)
newfde->fde_flags = oldfde->fde_flags | UF_EXCLOSE;
else
newfde->fde_flags = oldfde->fde_flags & ~UF_EXCLOSE;
@@ -1988,7 +1996,7 @@ retry:
if (fdp->fd_holdleaderscount > 0 &&
(p->p_leader->p_flag & P_ADVLOCK) != 0) {
/*
- * close() or do_dup() has cleared a reference
+ * close() or kern_dup() has cleared a reference
* in a shared file descriptor table.
*/
fdp->fd_holdleaderswakeup = 1;
@@ -2215,7 +2223,7 @@ fdcheckstd(struct thread *td)
save = td->td_retval[0];
if (devnull != -1) {
- error = do_dup(td, DUP_FIXED, devnull, i);
+ error = kern_dup(td, FDDUP_FIXED, devnull, i);
} else {
error = kern_openat(td, AT_FDCWD, "/dev/null",
UIO_SYSSPACE, O_RDWR, 0);
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 9ce6d34..60691f0 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -839,7 +839,6 @@ proc_reap(struct thread *td, struct proc *p, int *status, int options)
q = td->td_proc;
PROC_SUNLOCK(p);
- td->td_retval[0] = p->p_pid;
if (status)
*status = p->p_xstat; /* convert to int */
if (options & WNOWAIT) {
@@ -1153,6 +1152,7 @@ kern_wait6(struct thread *td, idtype_t idtype, id_t id, int *status,
int options, struct __wrusage *wrusage, siginfo_t *siginfo)
{
struct proc *p, *q;
+ pid_t pid;
int error, nfound, ret;
AUDIT_ARG_VALUE((int)idtype); /* XXX - This is likely wrong! */
@@ -1191,14 +1191,17 @@ loop:
nfound = 0;
sx_xlock(&proctree_lock);
LIST_FOREACH(p, &q->p_children, p_sibling) {
+ pid = p->p_pid;
ret = proc_to_reap(td, p, idtype, id, status, options,
wrusage, siginfo, 0);
if (ret == 0)
continue;
else if (ret == 1)
nfound++;
- else
+ else {
+ td->td_retval[0] = pid;
return (0);
+ }
PROC_LOCK(p);
PROC_SLOCK(p);
@@ -1212,7 +1215,6 @@ loop:
if ((options & WNOWAIT) == 0)
p->p_flag |= P_WAITED;
sx_xunlock(&proctree_lock);
- td->td_retval[0] = p->p_pid;
if (status != NULL)
*status = W_STOPCODE(p->p_xstat);
@@ -1231,6 +1233,7 @@ loop:
p->p_pid, W_STOPCODE(p->p_xstat), p->p_xstat,
p->p_xthread != NULL ? p->p_xthread->td_tid : -1);
PROC_UNLOCK(p);
+ td->td_retval[0] = pid;
return (0);
}
if ((options & WUNTRACED) != 0 &&
@@ -1241,7 +1244,6 @@ loop:
if ((options & WNOWAIT) == 0)
p->p_flag |= P_WAITED;
sx_xunlock(&proctree_lock);
- td->td_retval[0] = p->p_pid;
if (status != NULL)
*status = W_STOPCODE(p->p_xstat);
@@ -1256,13 +1258,13 @@ loop:
}
PROC_UNLOCK(p);
+ td->td_retval[0] = pid;
return (0);
}
PROC_SUNLOCK(p);
if ((options & WCONTINUED) != 0 &&
(p->p_flag & P_CONTINUED) != 0) {
sx_xunlock(&proctree_lock);
- td->td_retval[0] = p->p_pid;
if ((options & WNOWAIT) == 0) {
p->p_flag &= ~P_CONTINUED;
PROC_LOCK(q);
@@ -1277,6 +1279,7 @@ loop:
siginfo->si_status = SIGCONT;
siginfo->si_code = CLD_CONTINUED;
}
+ td->td_retval[0] = pid;
return (0);
}
PROC_UNLOCK(p);
diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c
index eba0b60..e997818 100644
--- a/sys/kern/kern_tc.c
+++ b/sys/kern/kern_tc.c
@@ -189,33 +189,6 @@ tc_delta(struct timehands *th)
tc->tc_counter_mask);
}
-static inline u_int
-tc_getgen(struct timehands *th)
-{
-
-#ifdef SMP
- return (atomic_load_acq_int(&th->th_generation));
-#else
- u_int gen;
-
- gen = th->th_generation;
- __compiler_membar();
- return (gen);
-#endif
-}
-
-static inline void
-tc_setgen(struct timehands *th, u_int newgen)
-{
-
-#ifdef SMP
- atomic_store_rel_int(&th->th_generation, newgen);
-#else
- __compiler_membar();
- th->th_generation = newgen;
-#endif
-}
-
/*
* Functions for reading the time. We have to loop until we are sure that
* the timehands that we operated on was not updated under our feet. See
@@ -231,10 +204,11 @@ fbclock_binuptime(struct bintime *bt)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*bt = th->th_offset;
bintime_addx(bt, th->th_scale * tc_delta(th));
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -289,9 +263,10 @@ fbclock_getbinuptime(struct bintime *bt)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*bt = th->th_offset;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -302,9 +277,10 @@ fbclock_getnanouptime(struct timespec *tsp)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
bintime2timespec(&th->th_offset, tsp);
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -315,9 +291,10 @@ fbclock_getmicrouptime(struct timeval *tvp)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
bintime2timeval(&th->th_offset, tvp);
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -328,9 +305,10 @@ fbclock_getbintime(struct bintime *bt)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*bt = th->th_offset;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
bintime_add(bt, &boottimebin);
}
@@ -342,9 +320,10 @@ fbclock_getnanotime(struct timespec *tsp)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*tsp = th->th_nanotime;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -355,9 +334,10 @@ fbclock_getmicrotime(struct timeval *tvp)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*tvp = th->th_microtime;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
#else /* !FFCLOCK */
void
@@ -368,10 +348,11 @@ binuptime(struct bintime *bt)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*bt = th->th_offset;
bintime_addx(bt, th->th_scale * tc_delta(th));
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -426,9 +407,10 @@ getbinuptime(struct bintime *bt)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*bt = th->th_offset;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -439,9 +421,10 @@ getnanouptime(struct timespec *tsp)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
bintime2timespec(&th->th_offset, tsp);
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -452,9 +435,10 @@ getmicrouptime(struct timeval *tvp)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
bintime2timeval(&th->th_offset, tvp);
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -465,9 +449,10 @@ getbintime(struct bintime *bt)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*bt = th->th_offset;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
bintime_add(bt, &boottimebin);
}
@@ -479,9 +464,10 @@ getnanotime(struct timespec *tsp)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*tsp = th->th_nanotime;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
void
@@ -492,9 +478,10 @@ getmicrotime(struct timeval *tvp)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*tvp = th->th_microtime;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
#endif /* FFCLOCK */
@@ -907,11 +894,12 @@ ffclock_read_counter(ffcounter *ffcount)
*/
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
ffth = fftimehands;
delta = tc_delta(th);
*ffcount = ffth->tick_ffcount;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
*ffcount += delta;
}
@@ -1015,9 +1003,10 @@ dtrace_getnanotime(struct timespec *tsp)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
*tsp = th->th_nanotime;
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
}
/*
@@ -1055,7 +1044,7 @@ sysclock_getsnapshot(struct sysclock_snap *clock_snap, int fast)
do {
th = timehands;
- gen = tc_getgen(th);
+ gen = atomic_load_acq_int(&th->th_generation);
fbi->th_scale = th->th_scale;
fbi->tick_time = th->th_offset;
#ifdef FFCLOCK
@@ -1069,7 +1058,8 @@ sysclock_getsnapshot(struct sysclock_snap *clock_snap, int fast)
#endif
if (!fast)
delta = tc_delta(th);
- } while (gen == 0 || gen != tc_getgen(th));
+ atomic_thread_fence_acq();
+ } while (gen == 0 || gen != th->th_generation);
clock_snap->delta = delta;
clock_snap->sysclock_active = sysclock_active;
@@ -1280,14 +1270,19 @@ tc_windup(void)
time_t t;
/*
- * Make the next timehands a copy of the current one, but do not
- * overwrite the generation or next pointer. While we update
- * the contents, the generation must be zero.
+ * Make the next timehands a copy of the current one, but do
+ * not overwrite the generation or next pointer. While we
+ * update the contents, the generation must be zero. We need
+ * to ensure that the zero generation is visible before the
+ * data updates become visible, which requires release fence.
+ * For similar reasons, re-reading of the generation after the
+ * data is read should use acquire fence.
*/
tho = timehands;
th = tho->th_next;
ogen = th->th_generation;
- tc_setgen(th, 0);
+ th->th_generation = 0;
+ atomic_thread_fence_rel();
bcopy(tho, th, offsetof(struct timehands, th_generation));
/*
@@ -1404,7 +1399,7 @@ tc_windup(void)
*/
if (++ogen == 0)
ogen = 1;
- tc_setgen(th, ogen);
+ atomic_store_rel_int(&th->th_generation, ogen);
/* Go live with the new struct timehands. */
#ifdef FFCLOCK
@@ -1678,13 +1673,14 @@ pps_capture(struct pps_state *pps)
KASSERT(pps != NULL, ("NULL pps pointer in pps_capture"));
th = timehands;
- pps->capgen = tc_getgen(th);
+ pps->capgen = atomic_load_acq_int(&th->th_generation);
pps->capth = th;
#ifdef FFCLOCK
pps->capffth = fftimehands;
#endif
pps->capcount = th->th_counter->tc_get_timecount(th->th_counter);
- if (pps->capgen != tc_getgen(th))
+ atomic_thread_fence_acq();
+ if (pps->capgen != th->th_generation)
pps->capgen = 0;
}
@@ -1704,7 +1700,8 @@ pps_event(struct pps_state *pps, int event)
KASSERT(pps != NULL, ("NULL pps pointer in pps_event"));
/* If the timecounter was wound up underneath us, bail out. */
- if (pps->capgen == 0 || pps->capgen != tc_getgen(pps->capth))
+ if (pps->capgen == 0 || pps->capgen !=
+ atomic_load_acq_int(&pps->capth->th_generation))
return;
/* Things would be easier with arrays. */
@@ -1754,7 +1751,8 @@ pps_event(struct pps_state *pps, int event)
bintime2timespec(&bt, &ts);
/* If the timecounter was wound up underneath us, bail out. */
- if (pps->capgen != tc_getgen(pps->capth))
+ atomic_thread_fence_acq();
+ if (pps->capgen != pps->capth->th_generation)
return;
*pcount = pps->capcount;
diff --git a/sys/kern/makesyscalls.sh b/sys/kern/makesyscalls.sh
index 0c3adff..ef15174 100644
--- a/sys/kern/makesyscalls.sh
+++ b/sys/kern/makesyscalls.sh
@@ -446,7 +446,8 @@ s/\$//g
if (funcname == "nosys" || funcname == "lkmnosys" ||
funcname == "sysarch" || funcname ~ /^freebsd/ ||
funcname ~ /^linux/ || funcname ~ /^svr4/ ||
- funcname ~ /^ibcs2/ || funcname ~ /^xenix/) {
+ funcname ~ /^ibcs2/ || funcname ~ /^xenix/ ||
+ funcname ~ /^cloudabi/) {
printf("%s\t%s(struct thread *, struct %s *)",
rettype, funcname, argalias) > sysdcl
} else {
@@ -466,7 +467,8 @@ s/\$//g
if (funcname == "nosys" || funcname == "sysarch" ||
funcname == "lkmnosys" || funcname ~ /^freebsd/ ||
funcname ~ /^linux/ || funcname ~ /^svr4/ ||
- funcname ~ /^ibcs2/ || funcname ~ /^xenix/) {
+ funcname ~ /^ibcs2/ || funcname ~ /^xenix/ ||
+ funcname ~ /^cloudabi/) {
printf("%s, %s, NULL, 0, 0, %s, %s },", funcname, auditev, flags, thr_flag) > sysent
column = column + length(funcname) + length(auditev) + length(flags) + 3
} else {
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index 213801a..55ae650 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -153,6 +153,7 @@ struct selfd {
struct mtx *sf_mtx; /* Pointer to selinfo mtx. */
struct seltd *sf_td; /* (k) owning seltd. */
void *sf_cookie; /* (k) fd or pollfd. */
+ u_int sf_refs;
};
static uma_zone_t selfd_zone;
@@ -1685,11 +1686,14 @@ selfdfree(struct seltd *stp, struct selfd *sfp)
STAILQ_REMOVE(&stp->st_selq, sfp, selfd, sf_link);
if (sfp->sf_si != NULL) {
mtx_lock(sfp->sf_mtx);
- if (sfp->sf_si != NULL)
+ if (sfp->sf_si != NULL) {
TAILQ_REMOVE(&sfp->sf_si->si_tdlist, sfp, sf_threads);
+ refcount_release(&sfp->sf_refs);
+ }
mtx_unlock(sfp->sf_mtx);
}
- uma_zfree(selfd_zone, sfp);
+ if (refcount_release(&sfp->sf_refs))
+ uma_zfree(selfd_zone, sfp);
}
/* Drain the waiters tied to all the selfd belonging the specified selinfo. */
@@ -1745,6 +1749,7 @@ selrecord(selector, sip)
*/
sfp->sf_si = sip;
sfp->sf_mtx = mtxp;
+ refcount_init(&sfp->sf_refs, 2);
STAILQ_INSERT_TAIL(&stp->st_selq, sfp, sf_link);
/*
* Now that we've locked the sip, check for initialization.
@@ -1809,6 +1814,8 @@ doselwakeup(sip, pri)
stp->st_flags |= SELTD_PENDING;
cv_broadcastpri(&stp->st_wait, pri);
mtx_unlock(&stp->st_mtx);
+ if (refcount_release(&sfp->sf_refs))
+ uma_zfree(selfd_zone, sfp);
}
mtx_unlock(sip->si_mtx);
}
diff --git a/sys/kern/vfs_lookup.c b/sys/kern/vfs_lookup.c
index 5dc07dc..1d3bc35 100644
--- a/sys/kern/vfs_lookup.c
+++ b/sys/kern/vfs_lookup.c
@@ -109,6 +109,28 @@ namei_cleanup_cnp(struct componentname *cnp)
#endif
}
+static int
+namei_handle_root(struct nameidata *ndp, struct vnode **dpp)
+{
+ struct componentname *cnp;
+
+ cnp = &ndp->ni_cnd;
+ if (ndp->ni_strictrelative != 0) {
+#ifdef KTRACE
+ if (KTRPOINT(curthread, KTR_CAPFAIL))
+ ktrcapfail(CAPFAIL_LOOKUP, NULL, NULL);
+#endif
+ return (ENOTCAPABLE);
+ }
+ while (*(cnp->cn_nameptr) == '/') {
+ cnp->cn_nameptr++;
+ ndp->ni_pathlen--;
+ }
+ *dpp = ndp->ni_rootdir;
+ VREF(*dpp);
+ return (0);
+}
+
/*
* Convert a pathname into a pointer to a locked vnode.
*
@@ -137,7 +159,7 @@ namei(struct nameidata *ndp)
struct vnode *dp; /* the directory we are searching */
struct iovec aiov; /* uio for reading symbolic links */
struct uio auio;
- int error, linklen;
+ int error, linklen, startdir_used;
struct componentname *cnp = &ndp->ni_cnd;
struct thread *td = cnp->cn_thread;
struct proc *p = td->td_proc;
@@ -148,6 +170,8 @@ namei(struct nameidata *ndp)
("namei: nameiop contaminated with flags"));
KASSERT((cnp->cn_flags & OPMASK) == 0,
("namei: flags contaminated with nameiops"));
+ MPASS(ndp->ni_startdir == NULL || ndp->ni_startdir->v_type == VDIR ||
+ ndp->ni_startdir->v_type == VBAD);
if (!lookup_shared)
cnp->cn_flags &= ~LOCKSHARED;
fdp = p->p_fd;
@@ -171,7 +195,7 @@ namei(struct nameidata *ndp)
/*
* Don't allow empty pathnames.
*/
- if (!error && *cnp->cn_pnbuf == '\0')
+ if (error == 0 && *cnp->cn_pnbuf == '\0')
error = ENOENT;
#ifdef CAPABILITY_MODE
@@ -192,7 +216,7 @@ namei(struct nameidata *ndp)
}
}
#endif
- if (error) {
+ if (error != 0) {
namei_cleanup_cnp(cnp);
ndp->ni_vp = NULL;
return (error);
@@ -210,6 +234,7 @@ namei(struct nameidata *ndp)
*/
FILEDESC_SLOCK(fdp);
ndp->ni_rootdir = fdp->fd_rdir;
+ VREF(ndp->ni_rootdir);
ndp->ni_topdir = fdp->fd_jdir;
/*
@@ -220,12 +245,19 @@ namei(struct nameidata *ndp)
if (cnp->cn_flags & AUDITVNODE2)
AUDIT_ARG_UPATH2(td, ndp->ni_dirfd, cnp->cn_pnbuf);
+ startdir_used = 0;
dp = NULL;
- if (cnp->cn_pnbuf[0] != '/') {
+ cnp->cn_nameptr = cnp->cn_pnbuf;
+ if (cnp->cn_pnbuf[0] == '/') {
+ error = namei_handle_root(ndp, &dp);
+ } else {
if (ndp->ni_startdir != NULL) {
dp = ndp->ni_startdir;
- error = 0;
- } else if (ndp->ni_dirfd != AT_FDCWD) {
+ startdir_used = 1;
+ } else if (ndp->ni_dirfd == AT_FDCWD) {
+ dp = fdp->fd_cdir;
+ VREF(dp);
+ } else {
cap_rights_t rights;
rights = ndp->ni_rightsneeded;
@@ -252,53 +284,26 @@ namei(struct nameidata *ndp)
}
#endif
}
- if (error != 0 || dp != NULL) {
- FILEDESC_SUNLOCK(fdp);
- if (error == 0 && dp->v_type != VDIR) {
- vrele(dp);
- error = ENOTDIR;
- }
- }
- if (error) {
- namei_cleanup_cnp(cnp);
- return (error);
- }
+ if (error == 0 && dp->v_type != VDIR)
+ error = ENOTDIR;
}
- if (dp == NULL) {
- dp = fdp->fd_cdir;
- VREF(dp);
- FILEDESC_SUNLOCK(fdp);
- if (ndp->ni_startdir != NULL)
- vrele(ndp->ni_startdir);
+ FILEDESC_SUNLOCK(fdp);
+ if (ndp->ni_startdir != NULL && !startdir_used)
+ vrele(ndp->ni_startdir);
+ if (error != 0) {
+ if (dp != NULL)
+ vrele(dp);
+ vrele(ndp->ni_rootdir);
+ namei_cleanup_cnp(cnp);
+ return (error);
}
SDT_PROBE(vfs, namei, lookup, entry, dp, cnp->cn_pnbuf,
cnp->cn_flags, 0, 0);
for (;;) {
- /*
- * Check if root directory should replace current directory.
- * Done at start of translation and after symbolic link.
- */
- cnp->cn_nameptr = cnp->cn_pnbuf;
- if (*(cnp->cn_nameptr) == '/') {
- vrele(dp);
- if (ndp->ni_strictrelative != 0) {
-#ifdef KTRACE
- if (KTRPOINT(curthread, KTR_CAPFAIL))
- ktrcapfail(CAPFAIL_LOOKUP, NULL, NULL);
-#endif
- namei_cleanup_cnp(cnp);
- return (ENOTCAPABLE);
- }
- while (*(cnp->cn_nameptr) == '/') {
- cnp->cn_nameptr++;
- ndp->ni_pathlen--;
- }
- dp = ndp->ni_rootdir;
- VREF(dp);
- }
ndp->ni_startdir = dp;
error = lookup(ndp);
- if (error) {
+ if (error != 0) {
+ vrele(ndp->ni_rootdir);
namei_cleanup_cnp(cnp);
SDT_PROBE(vfs, namei, lookup, return, error, NULL, 0,
0, 0);
@@ -308,6 +313,7 @@ namei(struct nameidata *ndp)
* If not a symbolic link, we're done.
*/
if ((cnp->cn_flags & ISSYMLINK) == 0) {
+ vrele(ndp->ni_rootdir);
if ((cnp->cn_flags & (SAVENAME | SAVESTART)) == 0) {
namei_cleanup_cnp(cnp);
} else
@@ -325,7 +331,7 @@ namei(struct nameidata *ndp)
if ((cnp->cn_flags & NOMACCHECK) == 0) {
error = mac_vnode_check_readlink(td->td_ucred,
ndp->ni_vp);
- if (error)
+ if (error != 0)
break;
}
#endif
@@ -343,7 +349,7 @@ namei(struct nameidata *ndp)
auio.uio_td = td;
auio.uio_resid = MAXPATHLEN;
error = VOP_READLINK(ndp->ni_vp, &auio, cnp->cn_cred);
- if (error) {
+ if (error != 0) {
if (ndp->ni_pathlen > 1)
uma_zfree(namei_zone, cp);
break;
@@ -370,7 +376,21 @@ namei(struct nameidata *ndp)
ndp->ni_pathlen += linklen;
vput(ndp->ni_vp);
dp = ndp->ni_dvp;
+ /*
+ * Check if root directory should replace current directory.
+ */
+ cnp->cn_nameptr = cnp->cn_pnbuf;
+ if (*(cnp->cn_nameptr) == '/') {
+ vrele(dp);
+ error = namei_handle_root(ndp, &dp);
+ if (error != 0) {
+ vrele(ndp->ni_rootdir);
+ namei_cleanup_cnp(cnp);
+ return (error);
+ }
+ }
}
+ vrele(ndp->ni_rootdir);
namei_cleanup_cnp(cnp);
vput(ndp->ni_vp);
ndp->ni_vp = NULL;
diff --git a/sys/libkern/arm/aeabi_unwind.c b/sys/libkern/arm/aeabi_unwind.c
index efaf58d..18cf1d0 100644
--- a/sys/libkern/arm/aeabi_unwind.c
+++ b/sys/libkern/arm/aeabi_unwind.c
@@ -35,7 +35,6 @@ __FBSDID("$FreeBSD$");
#define panic(x) (void)0
#endif
-#ifdef __ARM_EABI__
/* We need to provide these functions never call them */
void __aeabi_unwind_cpp_pr0(void);
void __aeabi_unwind_cpp_pr1(void);
@@ -58,5 +57,3 @@ __aeabi_unwind_cpp_pr2(void)
{
panic("__aeabi_unwind_cpp_pr2");
}
-#endif
-
diff --git a/sys/libkern/arm/divsi3.S b/sys/libkern/arm/divsi3.S
index 46e7c63..9b71b83 100644
--- a/sys/libkern/arm/divsi3.S
+++ b/sys/libkern/arm/divsi3.S
@@ -52,10 +52,8 @@ ENTRY_NP(__modsi3)
END(__modsi3)
ENTRY_NP(__udivsi3)
-#ifdef __ARM_EABI__
EENTRY_NP(__aeabi_uidiv)
EENTRY_NP(__aeabi_uidivmod)
-#endif
.L_udivide: /* r0 = r0 / r1; r1 = r0 % r1 */
eor r0, r1, r0
eor r1, r0, r1
@@ -76,17 +74,13 @@ EENTRY_NP(__aeabi_uidivmod)
mov r0, r1
mov r1, #0
RET
-#ifdef __ARM_EABI__
EEND(__aeabi_uidiv)
EEND(__aeabi_uidivmod)
-#endif
END(__udivsi3)
ENTRY_NP(__divsi3)
-#ifdef __ARM_EABI__
EENTRY_NP(__aeabi_idiv)
EENTRY_NP(__aeabi_idivmod)
-#endif
.L_divide: /* r0 = r0 / r1; r1 = r0 % r1 */
eor r0, r1, r0
eor r1, r0, r1
@@ -400,9 +394,7 @@ EENTRY_NP(__aeabi_idivmod)
addhs r3, r3, r2
mov r0, r3
RET
-#ifdef __ARM_EABI__
EEND(__aeabi_idiv)
EEND(__aeabi_idivmod)
-#endif
END(__divsi3)
diff --git a/sys/libkern/arm/ldivmod.S b/sys/libkern/arm/ldivmod.S
index 26a3944..95f816b 100644
--- a/sys/libkern/arm/ldivmod.S
+++ b/sys/libkern/arm/ldivmod.S
@@ -28,8 +28,6 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
-#ifdef __ARM_EABI__
-
/*
* These calculate:
* q = n / m
@@ -64,6 +62,3 @@ ENTRY_NP(__aeabi_uldivmod)
ldmfd sp!, {r2, r3} /* Load the remainder */
RET
END(__aeabi_uldivmod)
-
-#endif
-
diff --git a/sys/libkern/arm/ldivmod_helper.c b/sys/libkern/arm/ldivmod_helper.c
index 9061ae4..f3c02b2 100644
--- a/sys/libkern/arm/ldivmod_helper.c
+++ b/sys/libkern/arm/ldivmod_helper.c
@@ -28,7 +28,6 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-#ifdef __ARM_EABI__
#include <libkern/quad.h>
/*
@@ -48,6 +47,3 @@ __kern_ldivmod(long long n, long long m, long long *rem)
return q;
}
-
-#endif
-
diff --git a/sys/libkern/arm/memclr.S b/sys/libkern/arm/memclr.S
new file mode 100644
index 0000000..b86b558
--- /dev/null
+++ b/sys/libkern/arm/memclr.S
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2015 Andrew Turner
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#include <machine/asm.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * This implements
+ * void __aeabi_memclr4(void *dest, size_t len)
+ * by calling:
+ * void bzero(dest, len)
+ */
+ENTRY_NP(__aeabi_memclr4)
+ b bzero
+END(__aeabi_memclr4)
+
diff --git a/sys/libkern/arm/memcpy.S b/sys/libkern/arm/memcpy.S
index 3703195..dd3dea1 100644
--- a/sys/libkern/arm/memcpy.S
+++ b/sys/libkern/arm/memcpy.S
@@ -28,8 +28,6 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
-#ifdef __ARM_EABI__
-
ENTRY_NP(__aeabi_memcpy)
EENTRY_NP(__aeabi_memcpy4)
EENTRY_NP(__aeabi_memcpy8)
@@ -37,6 +35,3 @@ EENTRY_NP(__aeabi_memcpy8)
EEND(__aeabi_memcpy8)
EEND(__aeabi_memcpy4)
END(__aeabi_memcpy)
-
-#endif
-
diff --git a/sys/libkern/arm/memset.S b/sys/libkern/arm/memset.S
index 57d2507..dd06e6b 100644
--- a/sys/libkern/arm/memset.S
+++ b/sys/libkern/arm/memset.S
@@ -28,8 +28,6 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
-#ifdef __ARM_EABI__
-
/*
* This implements
* void __aeabi_memset(void *dest, size_t len, int c)
@@ -44,6 +42,3 @@ ENTRY_NP(__aeabi_memset)
mov r1, r3
b memset
END(__aeabi_memset)
-
-#endif
-
diff --git a/sys/modules/zfs/Makefile b/sys/modules/zfs/Makefile
index 29f4ae0..05d226c 100644
--- a/sys/modules/zfs/Makefile
+++ b/sys/modules/zfs/Makefile
@@ -13,9 +13,9 @@ SRCS+= acl_common.c
.PATH: ${SUNW}/common/avl
SRCS+= avl.c
.PATH: ${SUNW}/common/nvpair
-SRCS+= nvpair.c
-SRCS+= nvpair_alloc_fixed.c
-SRCS+= fnvpair.c
+SRCS+= opensolaris_nvpair.c
+SRCS+= opensolaris_nvpair_alloc_fixed.c
+SRCS+= opensolaris_fnvpair.c
.PATH: ${SYSDIR}/cddl/contrib/opensolaris/common/unicode
SRCS+= u8_textprep.c
diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c
index 49e8b42..4140eda 100644
--- a/sys/netinet/ip_input.c
+++ b/sys/netinet/ip_input.c
@@ -941,7 +941,8 @@ ip_forward(struct mbuf *m, int srcrt)
if (ro.ro_rt != NULL) {
ia = ifatoia(ro.ro_rt->rt_ifa);
ifa_ref(&ia->ia_ifa);
- }
+ } else
+ ia = NULL;
#ifndef IPSEC
/*
* 'ia' may be NULL if there is no route for this destination.
diff --git a/sys/netipsec/xform_ah.c b/sys/netipsec/xform_ah.c
index 8f791db..0710578 100644
--- a/sys/netipsec/xform_ah.c
+++ b/sys/netipsec/xform_ah.c
@@ -82,11 +82,11 @@
(((sav)->flags & SADB_X_EXT_OLD) ? \
sizeof (struct ah) : sizeof (struct ah) + sizeof (u_int32_t))
/*
- * Return authenticator size in bytes. The old protocol is known
- * to use a fixed 16-byte authenticator. The new algorithm use 12-byte
- * authenticator.
+ * Return authenticator size in bytes, based on a field in the
+ * algorithm descriptor.
*/
-#define AUTHSIZE(sav) ah_authsize(sav)
+#define AUTHSIZE(sav) \
+ ((sav->flags & SADB_X_EXT_OLD) ? 16 : (sav)->tdb_authalgxform->hashsize)
VNET_DEFINE(int, ah_enable) = 1; /* control flow of packets with AH */
VNET_DEFINE(int, ah_cleartos) = 1; /* clear ip_tos when doing AH calc */
@@ -112,27 +112,6 @@ static unsigned char ipseczeroes[256]; /* larger than an ip6 extension hdr */
static int ah_input_cb(struct cryptop*);
static int ah_output_cb(struct cryptop*);
-static int
-ah_authsize(struct secasvar *sav)
-{
-
- IPSEC_ASSERT(sav != NULL, ("%s: sav == NULL", __func__));
-
- if (sav->flags & SADB_X_EXT_OLD)
- return 16;
-
- switch (sav->alg_auth) {
- case SADB_X_AALG_SHA2_256:
- return 16;
- case SADB_X_AALG_SHA2_384:
- return 24;
- case SADB_X_AALG_SHA2_512:
- return 32;
- default:
- return AH_HMAC_HASHLEN;
- }
- /* NOTREACHED */
-}
/*
* NB: this is public for use by the PF_KEY support.
*/
@@ -160,6 +139,12 @@ ah_algorithm_lookup(int alg)
return &auth_hash_hmac_sha2_384;
case SADB_X_AALG_SHA2_512:
return &auth_hash_hmac_sha2_512;
+ case SADB_X_AALG_AES128GMAC:
+ return &auth_hash_nist_gmac_aes_128;
+ case SADB_X_AALG_AES192GMAC:
+ return &auth_hash_nist_gmac_aes_192;
+ case SADB_X_AALG_AES256GMAC:
+ return &auth_hash_nist_gmac_aes_256;
}
return NULL;
}
diff --git a/sys/netipsec/xform_esp.c b/sys/netipsec/xform_esp.c
index 003c514..3d9ba14 100644
--- a/sys/netipsec/xform_esp.c
+++ b/sys/netipsec/xform_esp.c
@@ -121,6 +121,12 @@ esp_algorithm_lookup(int alg)
return &enc_xform_null;
case SADB_X_EALG_CAMELLIACBC:
return &enc_xform_camellia;
+ case SADB_X_EALG_AESCTR:
+ return &enc_xform_aes_icm;
+ case SADB_X_EALG_AESGCM16:
+ return &enc_xform_aes_nist_gcm;
+ case SADB_X_EALG_AESGMAC:
+ return &enc_xform_aes_nist_gmac;
}
return NULL;
}
@@ -198,7 +204,7 @@ esp_init(struct secasvar *sav, struct xformsw *xsp)
* the ESP header will be processed incorrectly. The
* compromise is to force it to zero here.
*/
- sav->ivlen = (txform == &enc_xform_null ? 0 : txform->blocksize);
+ sav->ivlen = (txform == &enc_xform_null ? 0 : txform->ivsize);
sav->iv = (caddr_t) malloc(sav->ivlen, M_XDATA, M_WAITOK);
key_randomfill(sav->iv, sav->ivlen); /*XXX*/
@@ -215,11 +221,45 @@ esp_init(struct secasvar *sav, struct xformsw *xsp)
sav->tdb_xform = xsp;
sav->tdb_encalgxform = txform;
+ /*
+ * Whenever AES-GCM is used for encryption, one
+ * of the AES authentication algorithms is chosen
+ * as well, based on the key size.
+ */
+ if (sav->alg_enc == SADB_X_EALG_AESGCM16) {
+ switch (keylen) {
+ case AES_128_HMAC_KEY_LEN:
+ sav->alg_auth = SADB_X_AALG_AES128GMAC;
+ sav->tdb_authalgxform = &auth_hash_nist_gmac_aes_128;
+ break;
+ case AES_192_HMAC_KEY_LEN:
+ sav->alg_auth = SADB_X_AALG_AES192GMAC;
+ sav->tdb_authalgxform = &auth_hash_nist_gmac_aes_192;
+ break;
+ case AES_256_HMAC_KEY_LEN:
+ sav->alg_auth = SADB_X_AALG_AES256GMAC;
+ sav->tdb_authalgxform = &auth_hash_nist_gmac_aes_256;
+ break;
+ default:
+ DPRINTF(("%s: invalid key length %u"
+ "for algorithm %s\n", __func__,
+ keylen, txform->name));
+ return EINVAL;
+ }
+ bzero(&cria, sizeof(cria));
+ cria.cri_alg = sav->tdb_authalgxform->type;
+ cria.cri_klen = _KEYBITS(sav->key_enc) + 4;
+ cria.cri_key = sav->key_enc->key_data;
+ }
+
/* Initialize crypto session. */
bzero(&crie, sizeof (crie));
crie.cri_alg = sav->tdb_encalgxform->type;
crie.cri_klen = _KEYBITS(sav->key_enc);
crie.cri_key = sav->key_enc->key_data;
+ if (sav->alg_enc == SADB_X_EALG_AESGCM16)
+ arc4rand(crie.cri_iv, sav->ivlen, 0);
+
/* XXX Rounds ? */
if (sav->tdb_authalgxform && sav->tdb_encalgxform) {
@@ -289,7 +329,6 @@ esp_input(struct mbuf *m, struct secasvar *sav, int skip, int protoff)
m_freem(m);
return EINVAL;
}
-
/* XXX don't pullup, just copy header */
IP6_EXTHDR_GET(esp, struct newesp *, m, skip, sizeof (struct newesp));
@@ -302,18 +341,7 @@ esp_input(struct mbuf *m, struct secasvar *sav, int skip, int protoff)
else
hlen = sizeof (struct newesp) + sav->ivlen;
/* Authenticator hash size */
- if (esph != NULL) {
- switch (esph->type) {
- case CRYPTO_SHA2_256_HMAC:
- case CRYPTO_SHA2_384_HMAC:
- case CRYPTO_SHA2_512_HMAC:
- alen = esph->hashsize/2;
- break;
- default:
- alen = AH_HMAC_HASHLEN;
- break;
- }
- }
+ alen = esph ? esph->hashsize : 0;
/*
* Verify payload length is multiple of encryption algorithm
@@ -325,13 +353,15 @@ esp_input(struct mbuf *m, struct secasvar *sav, int skip, int protoff)
*/
plen = m->m_pkthdr.len - (skip + hlen + alen);
if ((plen & (espx->blocksize - 1)) || (plen <= 0)) {
- DPRINTF(("%s: payload of %d octets not a multiple of %d octets,"
- " SA %s/%08lx\n", __func__,
- plen, espx->blocksize, ipsec_address(&sav->sah->saidx.dst,
- buf, sizeof(buf)), (u_long) ntohl(sav->spi)));
- ESPSTAT_INC(esps_badilen);
- m_freem(m);
- return EINVAL;
+ if (!espx || sav->alg_enc != SADB_X_EALG_AESGCM16) {
+ DPRINTF(("%s: payload of %d octets not a multiple of %d octets,"
+ " SA %s/%08lx\n", __func__,
+ plen, espx->blocksize, ipsec_address(&sav->sah->saidx.dst,
+ buf, sizeof(buf)), (u_long) ntohl(sav->spi)));
+ ESPSTAT_INC(esps_badilen);
+ m_freem(m);
+ return EINVAL;
+ }
}
/*
@@ -377,12 +407,20 @@ esp_input(struct mbuf *m, struct secasvar *sav, int skip, int protoff)
/* Authentication descriptor */
crda->crd_skip = skip;
- crda->crd_len = m->m_pkthdr.len - (skip + alen);
+ if (espx && espx->type == CRYPTO_AES_NIST_GCM_16)
+ crda->crd_len = hlen - sav->ivlen;
+ else
+ crda->crd_len = m->m_pkthdr.len - (skip + alen);
crda->crd_inject = m->m_pkthdr.len - alen;
crda->crd_alg = esph->type;
- crda->crd_key = sav->key_auth->key_data;
- crda->crd_klen = _KEYBITS(sav->key_auth);
+ if (espx && (espx->type == CRYPTO_AES_NIST_GCM_16)) {
+ crda->crd_key = sav->key_enc->key_data;
+ crda->crd_klen = _KEYBITS(sav->key_enc);
+ } else {
+ crda->crd_key = sav->key_auth->key_data;
+ crda->crd_klen = _KEYBITS(sav->key_auth);
+ }
/* Copy the authenticator */
m_copydata(m, m->m_pkthdr.len - alen, alen,
@@ -420,6 +458,9 @@ esp_input(struct mbuf *m, struct secasvar *sav, int skip, int protoff)
crde->crd_alg = espx->type;
crde->crd_key = sav->key_enc->key_data;
crde->crd_klen = _KEYBITS(sav->key_enc);
+ if (espx && (espx->type == CRYPTO_AES_NIST_GCM_16))
+ crde->crd_flags |= CRD_F_IV_EXPLICIT;
+
/* XXX Rounds ? */
return (crypto_dispatch(crp));
@@ -489,16 +530,7 @@ esp_input_cb(struct cryptop *crp)
/* If authentication was performed, check now. */
if (esph != NULL) {
- switch (esph->type) {
- case CRYPTO_SHA2_256_HMAC:
- case CRYPTO_SHA2_384_HMAC:
- case CRYPTO_SHA2_512_HMAC:
- alen = esph->hashsize/2;
- break;
- default:
- alen = AH_HMAC_HASHLEN;
- break;
- }
+ alen = esph->hashsize;
AHSTAT_INC(ahs_hist[sav->alg_auth]);
/* Copy the authenticator from the packet */
m_copydata(m, m->m_pkthdr.len - alen, alen, aalg);
@@ -663,22 +695,13 @@ esp_output(struct mbuf *m, struct ipsecrequest *isr, struct mbuf **mp,
* NB: The null encoding transform has a blocksize of 4
* so that headers are properly aligned.
*/
- blks = espx->blocksize; /* IV blocksize */
+ blks = espx->ivsize; /* IV blocksize */
/* XXX clamp padding length a la KAME??? */
padding = ((blks - ((rlen + 2) % blks)) % blks) + 2;
if (esph)
- switch (esph->type) {
- case CRYPTO_SHA2_256_HMAC:
- case CRYPTO_SHA2_384_HMAC:
- case CRYPTO_SHA2_512_HMAC:
- alen = esph->hashsize/2;
- break;
- default:
- alen = AH_HMAC_HASHLEN;
- break;
- }
+ alen = esph->hashsize;
else
alen = 0;
@@ -706,6 +729,8 @@ esp_output(struct mbuf *m, struct ipsecrequest *isr, struct mbuf **mp,
error = EPFNOSUPPORT;
goto bad;
}
+ DPRINTF(("%s: skip %d hlen %d rlen %d padding %d alen %d blksd %d\n",
+ __func__, skip, hlen, rlen, padding, alen, blks));
if (skip + hlen + rlen + padding + alen > maxpacketsize) {
DPRINTF(("%s: packet in SA %s/%08lx got too big "
"(len %u, max len %u)\n", __func__,
@@ -820,6 +845,8 @@ esp_output(struct mbuf *m, struct ipsecrequest *isr, struct mbuf **mp,
crde->crd_alg = espx->type;
crde->crd_key = sav->key_enc->key_data;
crde->crd_klen = _KEYBITS(sav->key_enc);
+ if (espx->type == CRYPTO_AES_NIST_GCM_16)
+ crde->crd_flags |= CRD_F_IV_EXPLICIT;
/* XXX Rounds ? */
} else
crda = crp->crp_desc;
@@ -854,13 +881,22 @@ esp_output(struct mbuf *m, struct ipsecrequest *isr, struct mbuf **mp,
if (esph) {
/* Authentication descriptor. */
crda->crd_skip = skip;
- crda->crd_len = m->m_pkthdr.len - (skip + alen);
+ if (espx && espx->type == CRYPTO_AES_NIST_GCM_16)
+ crda->crd_len = hlen - sav->ivlen;
+ else
+ crda->crd_len = m->m_pkthdr.len - (skip + alen);
crda->crd_inject = m->m_pkthdr.len - alen;
/* Authentication operation. */
crda->crd_alg = esph->type;
- crda->crd_key = sav->key_auth->key_data;
- crda->crd_klen = _KEYBITS(sav->key_auth);
+ if (espx && espx->type == CRYPTO_AES_NIST_GCM_16) {
+ crda->crd_key = sav->key_enc->key_data;
+ crda->crd_klen = _KEYBITS(sav->key_enc);
+ } else {
+ crda->crd_key = sav->key_auth->key_data;
+ crda->crd_klen = _KEYBITS(sav->key_auth);
+ }
+
}
return crypto_dispatch(crp);
@@ -953,6 +989,11 @@ esp_output_cb(struct cryptop *crp)
case CRYPTO_SHA2_512_HMAC:
alen = esph->hashsize/2;
break;
+ case CRYPTO_AES_128_GMAC:
+ case CRYPTO_AES_192_GMAC:
+ case CRYPTO_AES_256_GMAC:
+ alen = esph->hashsize;
+ break;
default:
alen = AH_HMAC_HASHLEN;
break;
diff --git a/sys/opencrypto/cryptodev.h b/sys/opencrypto/cryptodev.h
index ab34b9e..48f094b 100644
--- a/sys/opencrypto/cryptodev.h
+++ b/sys/opencrypto/cryptodev.h
@@ -78,6 +78,7 @@
#define SHA2_512_HASH_LEN 64
#define MD5_KPDK_HASH_LEN 16
#define SHA1_KPDK_HASH_LEN 20
+#define AES_HASH_LEN 16
/* Maximum hash algorithm result length */
#define HASH_MAX_LEN SHA2_512_HASH_LEN /* Keep this updated */
@@ -86,28 +87,74 @@
#define MD5_HMAC_BLOCK_LEN 64
#define SHA1_HMAC_BLOCK_LEN 64
#define RIPEMD160_HMAC_BLOCK_LEN 64
-#define SHA2_256_HMAC_BLOCK_LEN 64
-#define SHA2_384_HMAC_BLOCK_LEN 128
-#define SHA2_512_HMAC_BLOCK_LEN 128
+#define SHA2_256_HMAC_BLOCK_LEN 64
+#define SHA2_384_HMAC_BLOCK_LEN 128
+#define SHA2_512_HMAC_BLOCK_LEN 128
/* Maximum HMAC block length */
-#define HMAC_MAX_BLOCK_LEN SHA2_512_HMAC_BLOCK_LEN /* Keep this updated */
+#define HMAC_MAX_BLOCK_LEN SHA2_512_HMAC_BLOCK_LEN /* Keep this updated */
#define HMAC_IPAD_VAL 0x36
#define HMAC_OPAD_VAL 0x5C
+/* HMAC Key Length */
+#define NULL_HMAC_KEY_LEN 0
+#define MD5_HMAC_KEY_LEN 16
+#define SHA1_HMAC_KEY_LEN 20
+#define RIPEMD160_HMAC_KEY_LEN 20
+#define SHA2_256_HMAC_KEY_LEN 32
+#define SHA2_384_HMAC_KEY_LEN 48
+#define SHA2_512_HMAC_KEY_LEN 64
+#define AES_128_HMAC_KEY_LEN 16
+#define AES_192_HMAC_KEY_LEN 24
+#define AES_256_HMAC_KEY_LEN 32
/* Encryption algorithm block sizes */
-#define NULL_BLOCK_LEN 4
-#define DES_BLOCK_LEN 8
-#define DES3_BLOCK_LEN 8
-#define BLOWFISH_BLOCK_LEN 8
-#define SKIPJACK_BLOCK_LEN 8
-#define CAST128_BLOCK_LEN 8
-#define RIJNDAEL128_BLOCK_LEN 16
-#define AES_BLOCK_LEN RIJNDAEL128_BLOCK_LEN
-#define CAMELLIA_BLOCK_LEN 16
-#define EALG_MAX_BLOCK_LEN AES_BLOCK_LEN /* Keep this updated */
+#define NULL_BLOCK_LEN 4
+#define DES_BLOCK_LEN 8
+#define DES3_BLOCK_LEN 8
+#define BLOWFISH_BLOCK_LEN 8
+#define SKIPJACK_BLOCK_LEN 8
+#define CAST128_BLOCK_LEN 8
+#define RIJNDAEL128_BLOCK_LEN 16
+#define AES_BLOCK_LEN 16
+#define AES_MIN_BLOCK_LEN 1
+#define ARC4_BLOCK_LEN 1
+#define CAMELLIA_BLOCK_LEN 16
+#define EALG_MAX_BLOCK_LEN AES_BLOCK_LEN /* Keep this updated */
+
+/* IV Lengths */
+
+#define ARC4_IV_LEN 1
+#define AES_IV_LEN 12
+#define AES_XTS_IV_LEN 8
+#define AES_XTS_ALPHA 0x87 /* GF(2^128) generator polynomial */
+
+#define AES_CTR_NONCE_SIZE 4
+
+/* Min and Max Encryption Key Sizes */
+#define NULL_MIN_KEY 0
+#define NULL_MAX_KEY 256 /* 2048 bits, max key */
+#define DES_MIN_KEY 8
+#define DES_MAX_KEY DES_MIN_KEY
+#define TRIPLE_DES_MIN_KEY 24
+#define TRIPLE_DES_MAX_KEY TRIPLE_DES_MIN_KEY
+#define BLOWFISH_MIN_KEY 5
+#define BLOWFISH_MAX_KEY 56 /* 448 bits, max key */
+#define CAST_MIN_KEY 5
+#define CAST_MAX_KEY 16
+#define SKIPJACK_MIN_KEY 10
+#define SKIPJACK_MAX_KEY SKIPJACK_MIN_KEY
+#define RIJNDAEL_MIN_KEY 16
+#define RIJNDAEL_MAX_KEY 32
+#define AES_MIN_KEY 16
+#define AES_MAX_KEY 32
+#define AES_XTS_MIN_KEY 32
+#define AES_XTS_MAX_KEY 64
+#define ARC4_MIN_KEY 1
+#define ARC4_MAX_KEY 32
+#define CAMELLIA_MIN_KEY 8
+#define CAMELLIA_MAX_KEY 32
/* Maximum hash algorithm result length */
-#define AALG_MAX_RESULT_LEN 64 /* Keep this updated */
+#define AALG_MAX_RESULT_LEN 64 /* Keep this updated */
#define CRYPTO_ALGORITHM_MIN 1
#define CRYPTO_DES_CBC 1
@@ -141,7 +188,7 @@
#define CRYPTO_AES_256_NIST_GMAC 28 /* auth side */
#define CRYPTO_ALGORITHM_MAX 28 /* Keep updated - see below */
-#define CRYPTO_ALGO_VALID(x) ((x) >= CRYPTO_ALGORITHM_MIN && \
+#define CRYPTO_ALGO_VALID(x) ((x) >= CRYPTO_ALGORITHM_MIN && \
(x) <= CRYPTO_ALGORITHM_MAX)
/* Algorithm flags */
diff --git a/sys/opencrypto/xform.c b/sys/opencrypto/xform.c
index 508a646..265e0b4 100644
--- a/sys/opencrypto/xform.c
+++ b/sys/opencrypto/xform.c
@@ -154,7 +154,7 @@ MALLOC_DEFINE(M_XDATA, "xform", "xform data buffers");
struct enc_xform enc_xform_null = {
CRYPTO_NULL_CBC, "NULL",
/* NB: blocksize of 4 is to generate a properly aligned ESP header */
- NULL_BLOCK_LEN, NULL_BLOCK_LEN, 0, 256, /* 2048 bits, max key */
+ NULL_BLOCK_LEN, NULL_BLOCK_LEN, NULL_MIN_KEY, NULL_MAX_KEY,
null_encrypt,
null_decrypt,
null_setkey,
@@ -164,7 +164,7 @@ struct enc_xform enc_xform_null = {
struct enc_xform enc_xform_des = {
CRYPTO_DES_CBC, "DES",
- DES_BLOCK_LEN, DES_BLOCK_LEN, 8, 8,
+ DES_BLOCK_LEN, DES_BLOCK_LEN, DES_MIN_KEY, DES_MAX_KEY,
des1_encrypt,
des1_decrypt,
des1_setkey,
@@ -174,7 +174,8 @@ struct enc_xform enc_xform_des = {
struct enc_xform enc_xform_3des = {
CRYPTO_3DES_CBC, "3DES",
- DES3_BLOCK_LEN, DES3_BLOCK_LEN, 24, 24,
+ DES3_BLOCK_LEN, DES3_BLOCK_LEN, TRIPLE_DES_MIN_KEY,
+ TRIPLE_DES_MAX_KEY,
des3_encrypt,
des3_decrypt,
des3_setkey,
@@ -184,7 +185,8 @@ struct enc_xform enc_xform_3des = {
struct enc_xform enc_xform_blf = {
CRYPTO_BLF_CBC, "Blowfish",
- BLOWFISH_BLOCK_LEN, BLOWFISH_BLOCK_LEN, 5, 56 /* 448 bits, max key */,
+ BLOWFISH_BLOCK_LEN, BLOWFISH_BLOCK_LEN, BLOWFISH_MIN_KEY,
+ BLOWFISH_MAX_KEY,
blf_encrypt,
blf_decrypt,
blf_setkey,
@@ -194,7 +196,7 @@ struct enc_xform enc_xform_blf = {
struct enc_xform enc_xform_cast5 = {
CRYPTO_CAST_CBC, "CAST-128",
- CAST128_BLOCK_LEN, CAST128_BLOCK_LEN, 5, 16,
+ CAST128_BLOCK_LEN, CAST128_BLOCK_LEN, CAST_MIN_KEY, CAST_MAX_KEY,
cast5_encrypt,
cast5_decrypt,
cast5_setkey,
@@ -204,7 +206,8 @@ struct enc_xform enc_xform_cast5 = {
struct enc_xform enc_xform_skipjack = {
CRYPTO_SKIPJACK_CBC, "Skipjack",
- SKIPJACK_BLOCK_LEN, SKIPJACK_BLOCK_LEN, 10, 10,
+ SKIPJACK_BLOCK_LEN, SKIPJACK_BLOCK_LEN, SKIPJACK_MIN_KEY,
+ SKIPJACK_MAX_KEY,
skipjack_encrypt,
skipjack_decrypt, skipjack_setkey,
skipjack_zerokey,
@@ -213,7 +216,8 @@ struct enc_xform enc_xform_skipjack = {
struct enc_xform enc_xform_rijndael128 = {
CRYPTO_RIJNDAEL128_CBC, "Rijndael-128/AES",
- RIJNDAEL128_BLOCK_LEN, RIJNDAEL128_BLOCK_LEN, 16, 32,
+ RIJNDAEL128_BLOCK_LEN, RIJNDAEL128_BLOCK_LEN, RIJNDAEL_MIN_KEY,
+ RIJNDAEL_MAX_KEY,
rijndael128_encrypt,
rijndael128_decrypt,
rijndael128_setkey,
@@ -223,7 +227,7 @@ struct enc_xform enc_xform_rijndael128 = {
struct enc_xform enc_xform_aes_icm = {
CRYPTO_AES_ICM, "AES-ICM",
- RIJNDAEL128_BLOCK_LEN, RIJNDAEL128_BLOCK_LEN, 16, 32,
+ RIJNDAEL128_BLOCK_LEN, RIJNDAEL128_BLOCK_LEN, AES_MIN_KEY, AES_MAX_KEY,
aes_icm_crypt,
aes_icm_crypt,
aes_icm_setkey,
@@ -233,7 +237,7 @@ struct enc_xform enc_xform_aes_icm = {
struct enc_xform enc_xform_aes_nist_gcm = {
CRYPTO_AES_NIST_GCM_16, "AES-GCM",
- 1, 12, 16, 32,
+ AES_MIN_BLOCK_LEN, AES_IV_LEN, AES_MIN_KEY, AES_MAX_KEY,
aes_icm_crypt,
aes_icm_crypt,
aes_icm_setkey,
@@ -243,7 +247,7 @@ struct enc_xform enc_xform_aes_nist_gcm = {
struct enc_xform enc_xform_aes_nist_gmac = {
CRYPTO_AES_NIST_GMAC, "AES-GMAC",
- 1, 12, 16, 32,
+ AES_MIN_BLOCK_LEN, AES_IV_LEN, AES_MIN_KEY, AES_MAX_KEY,
NULL,
NULL,
NULL,
@@ -253,7 +257,7 @@ struct enc_xform enc_xform_aes_nist_gmac = {
struct enc_xform enc_xform_aes_xts = {
CRYPTO_AES_XTS, "AES-XTS",
- RIJNDAEL128_BLOCK_LEN, 8, 32, 64,
+ AES_MIN_BLOCK_LEN, AES_XTS_IV_LEN, AES_XTS_MIN_KEY, AES_XTS_MAX_KEY,
aes_xts_encrypt,
aes_xts_decrypt,
aes_xts_setkey,
@@ -263,7 +267,7 @@ struct enc_xform enc_xform_aes_xts = {
struct enc_xform enc_xform_arc4 = {
CRYPTO_ARC4, "ARC4",
- 1, 1, 1, 32,
+ ARC4_BLOCK_LEN, ARC4_IV_LEN, ARC4_MIN_KEY, ARC4_MAX_KEY,
NULL,
NULL,
NULL,
@@ -273,7 +277,8 @@ struct enc_xform enc_xform_arc4 = {
struct enc_xform enc_xform_camellia = {
CRYPTO_CAMELLIA_CBC, "Camellia",
- CAMELLIA_BLOCK_LEN, CAMELLIA_BLOCK_LEN, 8, 32,
+ CAMELLIA_BLOCK_LEN, CAMELLIA_BLOCK_LEN, CAMELLIA_MIN_KEY,
+ CAMELLIA_MAX_KEY,
cml_encrypt,
cml_decrypt,
cml_setkey,
@@ -284,67 +289,72 @@ struct enc_xform enc_xform_camellia = {
/* Authentication instances */
struct auth_hash auth_hash_null = { /* NB: context isn't used */
CRYPTO_NULL_HMAC, "NULL-HMAC",
- 0, NULL_HASH_LEN, sizeof(int), NULL_HMAC_BLOCK_LEN,
+ NULL_HMAC_KEY_LEN, NULL_HASH_LEN, sizeof(int), NULL_HMAC_BLOCK_LEN,
null_init, null_reinit, null_reinit, null_update, null_final
};
struct auth_hash auth_hash_hmac_md5 = {
CRYPTO_MD5_HMAC, "HMAC-MD5",
- 16, MD5_HASH_LEN, sizeof(MD5_CTX), MD5_HMAC_BLOCK_LEN,
+ MD5_HMAC_KEY_LEN, MD5_HASH_LEN, sizeof(MD5_CTX), MD5_HMAC_BLOCK_LEN,
(void (*) (void *)) MD5Init, NULL, NULL, MD5Update_int,
(void (*) (u_int8_t *, void *)) MD5Final
};
struct auth_hash auth_hash_hmac_sha1 = {
CRYPTO_SHA1_HMAC, "HMAC-SHA1",
- 20, SHA1_HASH_LEN, sizeof(SHA1_CTX), SHA1_HMAC_BLOCK_LEN,
+ SHA1_HMAC_KEY_LEN, SHA1_HASH_LEN, sizeof(SHA1_CTX), SHA1_HMAC_BLOCK_LEN,
SHA1Init_int, NULL, NULL, SHA1Update_int, SHA1Final_int
};
struct auth_hash auth_hash_hmac_ripemd_160 = {
CRYPTO_RIPEMD160_HMAC, "HMAC-RIPEMD-160",
- 20, RIPEMD160_HASH_LEN, sizeof(RMD160_CTX), RIPEMD160_HMAC_BLOCK_LEN,
+ RIPEMD160_HMAC_KEY_LEN, RIPEMD160_HASH_LEN, sizeof(RMD160_CTX),
+ RIPEMD160_HMAC_BLOCK_LEN,
(void (*)(void *)) RMD160Init, NULL, NULL, RMD160Update_int,
(void (*)(u_int8_t *, void *)) RMD160Final
};
struct auth_hash auth_hash_key_md5 = {
CRYPTO_MD5_KPDK, "Keyed MD5",
- 0, MD5_KPDK_HASH_LEN, sizeof(MD5_CTX), 0,
+ NULL_HMAC_KEY_LEN, MD5_KPDK_HASH_LEN, sizeof(MD5_CTX), 0,
(void (*)(void *)) MD5Init, NULL, NULL, MD5Update_int,
(void (*)(u_int8_t *, void *)) MD5Final
};
struct auth_hash auth_hash_key_sha1 = {
CRYPTO_SHA1_KPDK, "Keyed SHA1",
- 0, SHA1_KPDK_HASH_LEN, sizeof(SHA1_CTX), 0,
+ NULL_HMAC_KEY_LEN, SHA1_KPDK_HASH_LEN, sizeof(SHA1_CTX), 0,
SHA1Init_int, NULL, NULL, SHA1Update_int, SHA1Final_int
};
struct auth_hash auth_hash_hmac_sha2_256 = {
CRYPTO_SHA2_256_HMAC, "HMAC-SHA2-256",
- 32, SHA2_256_HASH_LEN, sizeof(SHA256_CTX), SHA2_256_HMAC_BLOCK_LEN,
+ SHA2_256_HMAC_KEY_LEN, SHA2_256_HASH_LEN, sizeof(SHA256_CTX),
+ SHA2_256_HMAC_BLOCK_LEN,
(void (*)(void *)) SHA256_Init, NULL, NULL, SHA256Update_int,
(void (*)(u_int8_t *, void *)) SHA256_Final
};
struct auth_hash auth_hash_hmac_sha2_384 = {
CRYPTO_SHA2_384_HMAC, "HMAC-SHA2-384",
- 48, SHA2_384_HASH_LEN, sizeof(SHA384_CTX), SHA2_384_HMAC_BLOCK_LEN,
+ SHA2_384_HMAC_KEY_LEN, SHA2_384_HASH_LEN, sizeof(SHA384_CTX),
+ SHA2_384_HMAC_BLOCK_LEN,
(void (*)(void *)) SHA384_Init, NULL, NULL, SHA384Update_int,
(void (*)(u_int8_t *, void *)) SHA384_Final
};
struct auth_hash auth_hash_hmac_sha2_512 = {
CRYPTO_SHA2_512_HMAC, "HMAC-SHA2-512",
- 64, SHA2_512_HASH_LEN, sizeof(SHA512_CTX), SHA2_512_HMAC_BLOCK_LEN,
+ SHA2_512_HMAC_KEY_LEN, SHA2_512_HASH_LEN, sizeof(SHA512_CTX),
+ SHA2_512_HMAC_BLOCK_LEN,
(void (*)(void *)) SHA512_Init, NULL, NULL, SHA512Update_int,
(void (*)(u_int8_t *, void *)) SHA512_Final
};
struct auth_hash auth_hash_nist_gmac_aes_128 = {
CRYPTO_AES_128_NIST_GMAC, "GMAC-AES-128",
- 16, 16, sizeof(struct aes_gmac_ctx), GMAC_BLOCK_LEN,
+ AES_128_HMAC_KEY_LEN, AES_HASH_LEN, sizeof(struct aes_gmac_ctx),
+ GMAC_BLOCK_LEN,
(void (*)(void *)) AES_GMAC_Init,
(void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Setkey,
(void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Reinit,
@@ -354,7 +364,8 @@ struct auth_hash auth_hash_nist_gmac_aes_128 = {
struct auth_hash auth_hash_nist_gmac_aes_192 = {
CRYPTO_AES_192_NIST_GMAC, "GMAC-AES-192",
- 24, 16, sizeof(struct aes_gmac_ctx), GMAC_BLOCK_LEN,
+ AES_192_HMAC_KEY_LEN, AES_HASH_LEN, sizeof(struct aes_gmac_ctx),
+ GMAC_BLOCK_LEN,
(void (*)(void *)) AES_GMAC_Init,
(void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Setkey,
(void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Reinit,
@@ -364,7 +375,8 @@ struct auth_hash auth_hash_nist_gmac_aes_192 = {
struct auth_hash auth_hash_nist_gmac_aes_256 = {
CRYPTO_AES_256_NIST_GMAC, "GMAC-AES-256",
- 32, 16, sizeof(struct aes_gmac_ctx), GMAC_BLOCK_LEN,
+ AES_256_HMAC_KEY_LEN, AES_HASH_LEN, sizeof(struct aes_gmac_ctx),
+ GMAC_BLOCK_LEN,
(void (*)(void *)) AES_GMAC_Init,
(void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Setkey,
(void (*)(void *, const u_int8_t *, u_int16_t)) AES_GMAC_Reinit,
diff --git a/sys/sys/bus_dma.h b/sys/sys/bus_dma.h
index 2a9d2ed..1a2ecd6 100644
--- a/sys/sys/bus_dma.h
+++ b/sys/sys/bus_dma.h
@@ -289,18 +289,18 @@ void bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map);
*/
void _bus_dmamap_sync(bus_dma_tag_t, bus_dmamap_t, bus_dmasync_op_t);
#if defined(__arm__)
- #define __BUS_DMAMAP_SYNC_DEFAULT mb();
+ #define __BUS_DMAMAP_SYNC_DEFAULT mb()
#elif defined(__aarch64__)
- #define __BUS_DMAMAP_SYNC_DEFAULT dmb(sy);
+ #define __BUS_DMAMAP_SYNC_DEFAULT dmb(sy)
#else
- #define __BUS_DMAMAP_SYNC_DEFAULT {}
+ #define __BUS_DMAMAP_SYNC_DEFAULT do {} while (0)
#endif
#define bus_dmamap_sync(dmat, dmamap, op) \
do { \
if ((dmamap) != NULL) \
_bus_dmamap_sync(dmat, dmamap, op); \
else \
- __BUS_DMAMAP_SYNC_DEFAULT \
+ __BUS_DMAMAP_SYNC_DEFAULT; \
} while (0)
/*
diff --git a/sys/sys/cpuset.h b/sys/sys/cpuset.h
index ee0fb04..4fa55a9 100644
--- a/sys/sys/cpuset.h
+++ b/sys/sys/cpuset.h
@@ -116,6 +116,7 @@ struct cpuset {
extern cpuset_t *cpuset_root;
struct prison;
struct proc;
+struct thread;
struct cpuset *cpuset_thread0(void);
struct cpuset *cpuset_ref(struct cpuset *);
diff --git a/sys/sys/filedesc.h b/sys/sys/filedesc.h
index fe95111..74cc5fd 100644
--- a/sys/sys/filedesc.h
+++ b/sys/sys/filedesc.h
@@ -134,6 +134,12 @@ struct filedesc_to_leader {
SX_NOTRECURSED)
#define FILEDESC_UNLOCK_ASSERT(fdp) sx_assert(&(fdp)->fd_sx, SX_UNLOCKED)
+/* Flags for kern_dup(). */
+#define FDDUP_FIXED 0x1 /* Force fixed allocation. */
+#define FDDUP_FCNTL 0x2 /* fcntl()-style errors. */
+#define FDDUP_CLOEXEC 0x4 /* Atomically set FD_CLOEXEC. */
+#define FDDUP_MUSTREPLACE 0x8 /* Target must exist. */
+
struct thread;
void filecaps_init(struct filecaps *fcaps);
diff --git a/sys/sys/seq.h b/sys/sys/seq.h
index 21067cb..f54a4a9 100644
--- a/sys/sys/seq.h
+++ b/sys/sys/seq.h
@@ -69,35 +69,6 @@ typedef uint32_t seq_t;
#include <machine/cpu.h>
-/*
- * Stuff below is going away when we gain suitable memory barriers.
- *
- * atomic_load_acq_int at least on amd64 provides a full memory barrier,
- * in a way which affects performance.
- *
- * Hack below covers all architectures and avoids most of the penalty at least
- * on amd64 but still has unnecessary cost.
- */
-static __inline int
-atomic_load_rmb_int(volatile const u_int *p)
-{
- volatile u_int v;
-
- v = *p;
- atomic_load_acq_int(&v);
- return (v);
-}
-
-static __inline int
-atomic_rmb_load_int(volatile const u_int *p)
-{
- volatile u_int v = 0;
-
- atomic_load_acq_int(&v);
- v = *p;
- return (v);
-}
-
static __inline bool
seq_in_modify(seq_t seqp)
{
@@ -110,14 +81,15 @@ seq_write_begin(seq_t *seqp)
{
MPASS(!seq_in_modify(*seqp));
- atomic_add_acq_int(seqp, 1);
+ *seqp += 1;
+ atomic_thread_fence_rel();
}
static __inline void
seq_write_end(seq_t *seqp)
{
- atomic_add_rel_int(seqp, 1);
+ atomic_store_rel_int(seqp, *seqp + 1);
MPASS(!seq_in_modify(*seqp));
}
@@ -127,7 +99,7 @@ seq_read(const seq_t *seqp)
seq_t ret;
for (;;) {
- ret = atomic_load_rmb_int(seqp);
+ ret = atomic_load_acq_int(__DECONST(seq_t *, seqp));
if (seq_in_modify(ret)) {
cpu_spinwait();
continue;
@@ -139,17 +111,18 @@ seq_read(const seq_t *seqp)
}
static __inline seq_t
-seq_consistent(const seq_t *seqp, seq_t oldseq)
+seq_consistent_nomb(const seq_t *seqp, seq_t oldseq)
{
- return (atomic_rmb_load_int(seqp) == oldseq);
+ return (*seqp == oldseq);
}
static __inline seq_t
-seq_consistent_nomb(seq_t *seqp, seq_t oldseq)
+seq_consistent(const seq_t *seqp, seq_t oldseq)
{
- return (*seqp == oldseq);
+ atomic_thread_fence_acq();
+ return (seq_consistent_nomb(seqp, oldseq));
}
#endif /* _KERNEL */
diff --git a/sys/sys/syscallsubr.h b/sys/sys/syscallsubr.h
index 4ff111e..625f834 100644
--- a/sys/sys/syscallsubr.h
+++ b/sys/sys/syscallsubr.h
@@ -85,6 +85,7 @@ int kern_clock_settime(struct thread *td, clockid_t clock_id,
int kern_close(struct thread *td, int fd);
int kern_connectat(struct thread *td, int dirfd, int fd,
struct sockaddr *sa);
+int kern_dup(struct thread *td, int flags, int old, int new);
int kern_execve(struct thread *td, struct image_args *args,
struct mac *mac_p);
int kern_fchmodat(struct thread *td, int fd, char *path,
diff --git a/usr.sbin/pw/pw.c b/usr.sbin/pw/pw.c
index b9bd9d0..6769738 100644
--- a/usr.sbin/pw/pw.c
+++ b/usr.sbin/pw/pw.c
@@ -215,6 +215,7 @@ main(int argc, char *argv[])
if (mode == -1 || which == -1)
cmdhelp(mode, which);
+ conf.which = which;
/*
* We know which mode we're in and what we're about to do, so now
* let's dispatch the remaining command line args in a genric way.
diff --git a/usr.sbin/pw/pw_group.c b/usr.sbin/pw/pw_group.c
index 2a90ff2..c664ef5 100644
--- a/usr.sbin/pw/pw_group.c
+++ b/usr.sbin/pw/pw_group.c
@@ -200,7 +200,7 @@ pw_group(int mode, char *name, long id, struct cargs * args)
* software.
*/
- if (conf.fd != -1)
+ if (conf.which == W_GROUP && conf.fd != -1)
set_passwd(grp, mode == M_UPDATE);
if (((arg = getarg(args, 'M')) != NULL ||
diff --git a/usr.sbin/pw/pwupd.h b/usr.sbin/pw/pwupd.h
index c6ed32e..37303de 100644
--- a/usr.sbin/pw/pwupd.h
+++ b/usr.sbin/pw/pwupd.h
@@ -86,6 +86,7 @@ struct pwconf {
char *newname;
char *config;
int fd;
+ int which;
bool dryrun;
bool pretty;
bool v7;
diff --git a/usr.sbin/pw/tests/pw_useradd.sh b/usr.sbin/pw/tests/pw_useradd.sh
index 32d3b9d..469c1e5 100755
--- a/usr.sbin/pw/tests/pw_useradd.sh
+++ b/usr.sbin/pw/tests/pw_useradd.sh
@@ -231,6 +231,15 @@ user_add_invalid_group_entry_body() {
atf_check -s exit:1 -e match:"Invalid group entry" ${PW} useradd foo2
}
+atf_test_case user_add_password_from_h
+user_add_password_from_h_body() {
+ populate_etc_skel
+
+ atf_check -s exit:0 ${PW} useradd test -h 0 <<-EOF
+ $(echo test)
+ EOF
+}
+
atf_init_test_cases() {
atf_add_test_case user_add
atf_add_test_case user_add_noupdate
@@ -251,4 +260,5 @@ atf_init_test_cases() {
atf_add_test_case user_add_expiration
atf_add_test_case user_add_invalid_user_entry
atf_add_test_case user_add_invalid_group_entry
+ atf_add_test_case user_add_password_from_h
}
OpenPOWER on IntegriCloud