[openssl-commits] [openssl] master update

Matt Caswell matt at openssl.org
Wed Apr 13 08:01:18 UTC 2016


The branch master has been updated
       via  b3599dbb6af7e28efae5f08ace99cc75f5e90b2f (commit)
       via  974eeb93e3549d378d2c20276a51e2de21d50622 (commit)
       via  1d5099dec648ba1d4f5cca6596dac5c7e2037560 (commit)
       via  6457615ac82d688a965c9b2cce9611e0559635be (commit)
       via  20c56358e6f278d6a469a92280d7a38be44dbe3e (commit)
       via  342c21cd8bb42b6750abfc49cac26dc288de98c3 (commit)
       via  5eb8f71204626843a5ff1e7016d5d9e5a9598ee8 (commit)
       via  e6216feb4c35aefd2920a99f8d52802b00df18ce (commit)
       via  cbf6959fe8ff51730a397ea426075d547ec5d7a8 (commit)
       via  6d4fb1d59e61aacefa25edc4fe5acfe1ac93f743 (commit)
       via  7b8cc9b3458ec3f18b4d4d9ca2a72b6b3e3744c8 (commit)
       via  22c84afa773559279af928652a2d9f3489cc7d73 (commit)
       via  62d876ad1784bce2feb1b95cfff8aca0fbc3e1e2 (commit)
       via  a5e3ac13d602173e2820e7f4399fa89e25db7821 (commit)
       via  f3cd81d6538e6295eaa279acd65ad10faeccd2ed (commit)
       via  b22234deebe2e1758d59c64778ce462f11f16cb4 (commit)
       via  03b0e735556ed31c3e9096350e7a4563ea9d34b7 (commit)
       via  6827cb3610fee4ec8cc120cc6b5bf88b04884ae7 (commit)
       via  02a247e0fa23f2caa9c10df3adf3476eb9813c95 (commit)
      from  01d358a3ab09b0a4e79a5a492169aedcfbe8ddb3 (commit)


- Log -----------------------------------------------------------------
commit b3599dbb6af7e28efae5f08ace99cc75f5e90b2f
Author: Matt Caswell <matt at openssl.org>
Date:   Tue Apr 12 12:20:16 2016 +0100

    Rename int_*() functions to *_int()
    
    There is a preference for suffixes to indicate that a function is internal
    rather than prefixes. Note: the suffix is only required to disambiguate
    internal functions and public symbols with the same name (but different
    case)
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 974eeb93e3549d378d2c20276a51e2de21d50622
Author: Matt Caswell <matt at openssl.org>
Date:   Tue Apr 12 11:49:40 2016 +0100

    Tweak to documentation
    
    Tweak to documentation following feedback
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 1d5099dec648ba1d4f5cca6596dac5c7e2037560
Author: Matt Caswell <matt at openssl.org>
Date:   Wed Apr 6 11:13:25 2016 +0100

    Misc fix ups to deprecate explicit de-init documentation
    
    Documentation fix ups as a result of feedback received.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 6457615ac82d688a965c9b2cce9611e0559635be
Author: Matt Caswell <matt at openssl.org>
Date:   Wed Apr 6 11:12:12 2016 +0100

    Fix explicit de-init macros
    
    The no-op de-init macros may fail because of extraneous ";", so we use
    a slightly different construct instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 20c56358e6f278d6a469a92280d7a38be44dbe3e
Author: Matt Caswell <matt at openssl.org>
Date:   Wed Apr 6 10:50:05 2016 +0100

    Fix symbols missing from shared build
    
    libssl needs to have access to some internal libcrypto symbols.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 342c21cd8bb42b6750abfc49cac26dc288de98c3
Author: Matt Caswell <matt at openssl.org>
Date:   Wed Apr 6 10:39:00 2016 +0100

    Rename lots of *_intern or *_internal function to int_*
    
    There was a lot of naming inconsistency, so we try and standardise on
    one form.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 5eb8f71204626843a5ff1e7016d5d9e5a9598ee8
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 17:12:58 2016 +0100

    Add a CHANGES entry for the deprecated cleanup functions
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit e6216feb4c35aefd2920a99f8d52802b00df18ce
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 17:05:21 2016 +0100

    make update
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit cbf6959fe8ff51730a397ea426075d547ec5d7a8
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 17:00:04 2016 +0100

    Deprecate CONF_modules_free() and make it a no-op
    
    CONF_modules_free() should not be called expicitly - we should leave
    auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 6d4fb1d59e61aacefa25edc4fe5acfe1ac93f743
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 16:12:39 2016 +0100

    Deprecate ENGINE_cleanup() and make it a no-op
    
    ENGINE_cleanup() should not be called expicitly - we should leave
    auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 7b8cc9b3458ec3f18b4d4d9ca2a72b6b3e3744c8
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 15:49:21 2016 +0100

    Deprecate OBJ_cleanup() and make it a no-op
    
    OBJ_cleanup() should not be called expicitly - we should leave
    auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 22c84afa773559279af928652a2d9f3489cc7d73
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 15:28:58 2016 +0100

    Deprecate EVP_cleanup() and make it a no-op
    
    EVP_cleanup() should not be called expicitly - we should leave
    auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 62d876ad1784bce2feb1b95cfff8aca0fbc3e1e2
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 14:53:37 2016 +0100

    Deprecate BIO_sock_cleanup() and make it a no-op
    
    BIO_sock_cleanup() should not be called expicitly - we should leave
    auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit a5e3ac13d602173e2820e7f4399fa89e25db7821
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 14:38:45 2016 +0100

    Deprecate CRYPTO_cleanup_all_ex_data() and make it a no-op
    
    CRYPTO_cleanup_all_ex_data() should not be called expicitly - we should
    leave auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit f3cd81d6538e6295eaa279acd65ad10faeccd2ed
Author: Matt Caswell <matt at openssl.org>
Date:   Wed Apr 6 11:19:55 2016 +0100

    Deprecate RAND_cleanup() and make it a no-op
    
    RAND_cleanup() should not be called expicitly - we should leave
    auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit b22234deebe2e1758d59c64778ce462f11f16cb4
Author: Matt Caswell <matt at openssl.org>
Date:   Wed Apr 6 11:17:44 2016 +0100

    Fix conditional compile logic in speed.c
    
    The conditional compile logic wasn't quite right in speed.c for when
    both OPENSSL_NO_DSA and OPENSSL_NO_EC are defined.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 03b0e735556ed31c3e9096350e7a4563ea9d34b7
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 13:53:35 2016 +0100

    Deprecate SSL_COMP_free_compression_methods() and make it a no-op
    
    SSL_COMP_free_compression_methods() should not be called expicitly - we
    should leave auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 6827cb3610fee4ec8cc120cc6b5bf88b04884ae7
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 13:43:58 2016 +0100

    Deprecate ERR_free_strings() and make it a no-op
    
    ERR_free_strings() should not be called expicitly - we should leave
    auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

commit 02a247e0fa23f2caa9c10df3adf3476eb9813c95
Author: Matt Caswell <matt at openssl.org>
Date:   Mon Apr 4 17:19:06 2016 +0100

    Deprecate COMP_zlib_cleanup() and make it a no-op
    
    COMP_zlib_cleanup() should not be called expicitly - we should leave
    auto-deinit to clean this up instead.
    
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    Reviewed-by: Richard Levitte <levitte at openssl.org>

-----------------------------------------------------------------------

Summary of changes:
 CHANGES                                            |  11 +++
 apps/asn1pars.c                                    |   1 -
 apps/ca.c                                          |   1 -
 apps/req.c                                         |   1 -
 apps/speed.c                                       |  12 +--
 apps/srp.c                                         |   1 -
 apps/testdsa.h                                     |   3 -
 apps/ts.c                                          |   1 -
 apps/x509.c                                        |   1 -
 crypto/asn1/asn_moid.c                             |   3 +-
 crypto/bio/b_sock.c                                |   2 +-
 crypto/comp/c_zlib.c                               |   6 +-
 crypto/conf/conf_mod.c                             |   4 +-
 crypto/conf/conf_sap.c                             |   4 +-
 crypto/engine/eng_cryptodev.c                      |   6 +-
 crypto/engine/eng_dyn.c                            |   2 +-
 crypto/engine/eng_int.h                            |   6 +-
 crypto/engine/eng_lib.c                            |   6 +-
 crypto/engine/eng_list.c                           |   2 +-
 crypto/engine/eng_openssl.c                        |   2 +-
 crypto/engine/eng_rdrand.c                         |   4 +-
 crypto/err/err.c                                   |   4 +-
 crypto/err/err_all.c                               |   2 +-
 crypto/evp/c_allc.c                                |   2 +-
 crypto/evp/c_alld.c                                |   2 +-
 crypto/evp/names.c                                 |   6 +-
 crypto/ex_data.c                                   |   2 +-
 crypto/include/internal/cryptlib.h                 |   1 +
 crypto/include/internal/engine.h                   |  17 ++--
 crypto/include/internal/evp_int.h                  |   5 +-
 .../include/internal/objects.h                     |  10 +-
 test/aborttest.c => crypto/include/internal/rand.h |  10 +-
 crypto/init.c                                      | 102 +++++++++++----------
 crypto/objects/obj_dat.c                           |   8 +-
 crypto/rand/rand_lib.c                             |   4 +-
 doc/crypto/CONF_modules_free.pod                   |  17 +++-
 doc/crypto/ERR_load_crypto_strings.pod             |  19 ++--
 doc/crypto/EVP_DigestInit.pod                      |   2 -
 doc/crypto/OBJ_nid2obj.pod                         |  19 ++--
 doc/crypto/OPENSSL_config.pod                      |   6 +-
 doc/crypto/OpenSSL_add_all_algorithms.pod          |  15 ++-
 doc/crypto/RAND_cleanup.pod                        |  12 ++-
 doc/crypto/RAND_set_rand_method.pod                |   4 +-
 doc/crypto/engine.pod                              |  31 ++++---
 doc/crypto/err.pod                                 |   6 +-
 doc/crypto/rand.pod                                |   8 +-
 doc/ssl/SSL_COMP_add_compression_method.pod        |  19 +++-
 engines/afalg/e_afalg.c                            |   4 +-
 engines/e_capi.c                                   |   8 +-
 engines/e_dasync.c                                 |   4 +-
 engines/e_padlock.c                                |   4 +-
 include/internal/bio.h                             |   3 +-
 test/aborttest.c => include/internal/comp.h        |  10 +-
 include/internal/conf.h                            |   5 +-
 {crypto/include => include}/internal/err.h         |   8 +-
 include/openssl/bio.h                              |   4 +-
 include/openssl/comp.h                             |   5 +-
 include/openssl/conf.h                             |   4 +-
 include/openssl/crypto.h                           |   5 +-
 include/openssl/engine.h                           |  13 ++-
 include/openssl/err.h                              |   3 +-
 include/openssl/evp.h                              |  11 ++-
 include/openssl/objects.h                          |   4 +-
 include/openssl/rand.h                             |   4 +-
 include/openssl/ssl.h                              |   4 +-
 ssl/ssl_ciph.c                                     |   5 +-
 ssl/ssl_init.c                                     |  15 +--
 ssl/ssl_locl.h                                     |   2 +
 util/libcrypto.num                                 |  20 ++--
 util/libssl.num                                    |   2 +-
 util/mkdef.pl                                      |   1 +
 71 files changed, 312 insertions(+), 248 deletions(-)
 copy test/aborttest.c => crypto/include/internal/objects.h (57%)
 copy test/aborttest.c => crypto/include/internal/rand.h (57%)
 copy test/aborttest.c => include/internal/comp.h (57%)
 rename {crypto/include => include}/internal/err.h (95%)

diff --git a/CHANGES b/CHANGES
index b71b850..c0d85b3 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,17 @@
  _______________
 
  Changes between 1.0.2g and 1.1.0  [xx XXX xxxx]
+ 
+  *) Make various cleanup routines no-ops and mark them as deprecated. Most
+     global cleanup functions are no longer required because they are handled
+     via auto-deinit (see OPENSSL_init_crypto and OPENSSL_init_ssl man pages).
+     Explicitly de-initing can cause problems (e.g. where a library that uses
+     OpenSSL de-inits, but an application is still using it). The affected
+     functions are CONF_modules_free(), ENGINE_cleanup(), OBJ_cleanup(),
+     EVP_cleanup(), BIO_sock_cleanup(), CRYPTO_cleanup_all_ex_data(),
+     RAND_cleanup(), SSL_COMP_free_compression_methods(), ERR_free_strings() and
+     COMP_zlib_cleanup().
+     [Matt Caswell]
 
   *) --strict-warnings no longer enables runtime debugging options
      such as REF_DEBUG. Instead, debug options are automatically
diff --git a/apps/asn1pars.c b/apps/asn1pars.c
index a6cc639..3da7e3b 100644
--- a/apps/asn1pars.c
+++ b/apps/asn1pars.c
@@ -327,7 +327,6 @@ int asn1parse_main(int argc, char **argv)
         OPENSSL_free(str);
     ASN1_TYPE_free(at);
     sk_OPENSSL_STRING_free(osk);
-    OBJ_cleanup();
     return (ret);
 }
 
diff --git a/apps/ca.c b/apps/ca.c
index d2990a5..95801fb 100644
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -1307,7 +1307,6 @@ end_of_options:
     X509_CRL_free(crl);
     NCONF_free(conf);
     NCONF_free(extconf);
-    OBJ_cleanup();
     return (ret);
 }
 
diff --git a/apps/req.c b/apps/req.c
index e3869ba..7f4a946 100644
--- a/apps/req.c
+++ b/apps/req.c
@@ -867,7 +867,6 @@ int req_main(int argc, char **argv)
         OPENSSL_free(passin);
     if (passout != nofree_passout)
         OPENSSL_free(passout);
-    OBJ_cleanup();
     return (ret);
 }
 
diff --git a/apps/speed.c b/apps/speed.c
index b3f477e..b2c247f 100644
--- a/apps/speed.c
+++ b/apps/speed.c
@@ -310,10 +310,9 @@ static double ecdsa_results[EC_NUM][2];
 static double ecdh_results[EC_NUM][1];
 #endif
 
-#if defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_EC)
+#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_EC)
 static const char rnd_seed[] =
     "string to make the random number generator think it has entropy";
-static int rnd_fake = 0;
 #endif
 
 #ifdef SIGALRM
@@ -2448,7 +2447,6 @@ int speed_main(int argc, char **argv)
 #ifndef OPENSSL_NO_DSA
     if (RAND_status() != 1) {
         RAND_seed(rnd_seed, sizeof rnd_seed);
-        rnd_fake = 1;
     }
     for (testnum = 0; testnum < DSA_NUM; testnum++) {
         int st = 0;
@@ -2512,14 +2510,11 @@ int speed_main(int argc, char **argv)
                 dsa_doit[testnum] = 0;
         }
     }
-    if (rnd_fake)
-        RAND_cleanup();
 #endif
 
 #ifndef OPENSSL_NO_EC
     if (RAND_status() != 1) {
         RAND_seed(rnd_seed, sizeof rnd_seed);
-        rnd_fake = 1;
     }
     for (testnum = 0; testnum < EC_NUM; testnum++) {
         int st = 1;
@@ -2601,14 +2596,11 @@ int speed_main(int argc, char **argv)
             }
         }
     }
-    if (rnd_fake)
-        RAND_cleanup();
 #endif
 
 #ifndef OPENSSL_NO_EC
     if (RAND_status() != 1) {
         RAND_seed(rnd_seed, sizeof rnd_seed);
-        rnd_fake = 1;
     }
     for (testnum = 0; testnum < EC_NUM; testnum++) {
         if (!ecdh_doit[testnum])
@@ -2700,8 +2692,6 @@ int speed_main(int argc, char **argv)
                 ecdh_doit[testnum] = 0;
         }
     }
-    if (rnd_fake)
-        RAND_cleanup();
 #endif
 #ifndef NO_FORK
  show_res:
diff --git a/apps/srp.c b/apps/srp.c
index 2c4d746..1bf2ee2 100644
--- a/apps/srp.c
+++ b/apps/srp.c
@@ -653,7 +653,6 @@ int srp_main(int argc, char **argv)
         app_RAND_write_file(randfile);
     NCONF_free(conf);
     free_index(db);
-    OBJ_cleanup();
     return (ret);
 }
 #endif
diff --git a/apps/testdsa.h b/apps/testdsa.h
index 6519948..c72c71e 100644
--- a/apps/testdsa.h
+++ b/apps/testdsa.h
@@ -328,6 +328,3 @@ DSA *get_dsa2048()
     return NULL;
 }
 
-static const char rnd_seed[] =
-    "string to make the random number generator think it has entropy";
-static int rnd_fake = 0;
diff --git a/apps/ts.c b/apps/ts.c
index 44e6004..ec0cfa9 100644
--- a/apps/ts.c
+++ b/apps/ts.c
@@ -383,7 +383,6 @@ int ts_main(int argc, char **argv)
     app_RAND_write_file(NULL);
     NCONF_free(conf);
     OPENSSL_free(password);
-    OBJ_cleanup();
     return (ret);
 }
 
diff --git a/apps/x509.c b/apps/x509.c
index 6ee2611..d8be179 100644
--- a/apps/x509.c
+++ b/apps/x509.c
@@ -919,7 +919,6 @@ int x509_main(int argc, char **argv)
  end:
     if (need_rand)
         app_RAND_write_file(NULL);
-    OBJ_cleanup();
     NCONF_free(extconf);
     BIO_free_all(out);
     X509_STORE_free(ctx);
diff --git a/crypto/asn1/asn_moid.c b/crypto/asn1/asn_moid.c
index 8198874..bebf82a 100644
--- a/crypto/asn1/asn_moid.c
+++ b/crypto/asn1/asn_moid.c
@@ -63,6 +63,7 @@
 #include <openssl/conf.h>
 #include <openssl/x509.h>
 #include "internal/asn1_int.h"
+#include "internal/objects.h"
 
 /* Simple ASN1 OID module: add all objects in a given section */
 
@@ -92,7 +93,7 @@ static int oid_module_init(CONF_IMODULE *md, const CONF *cnf)
 
 static void oid_module_finish(CONF_IMODULE *md)
 {
-    OBJ_cleanup();
+    obj_cleanup_int();
 }
 
 void ASN1_add_oid_module(void)
diff --git a/crypto/bio/b_sock.c b/crypto/bio/b_sock.c
index 046de99..a2d0100 100644
--- a/crypto/bio/b_sock.c
+++ b/crypto/bio/b_sock.c
@@ -205,7 +205,7 @@ int BIO_sock_init(void)
     return (1);
 }
 
-void BIO_sock_cleanup(void)
+void bio_sock_cleanup_int(void)
 {
 # ifdef OPENSSL_SYS_WINDOWS
     if (wsa_init_done) {
diff --git a/crypto/comp/c_zlib.c b/crypto/comp/c_zlib.c
index 68b9da7..20376b6 100644
--- a/crypto/comp/c_zlib.c
+++ b/crypto/comp/c_zlib.c
@@ -56,7 +56,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <openssl/objects.h>
-#include <openssl/comp.h>
+#include "internal/comp.h"
 #include <openssl/err.h>
 #include "internal/cryptlib_int.h"
 #include "internal/bio.h"
@@ -282,7 +282,7 @@ COMP_METHOD *COMP_zlib(void)
                 zlib_loaded++;
 
             if (!OPENSSL_init_crypto(OPENSSL_INIT_ZLIB, NULL)) {
-                COMP_zlib_cleanup();
+                comp_zlib_cleanup_int();
                 return meth;
             }
             if (zlib_loaded)
@@ -297,7 +297,7 @@ COMP_METHOD *COMP_zlib(void)
     return (meth);
 }
 
-void COMP_zlib_cleanup(void)
+void comp_zlib_cleanup_int(void)
 {
 #ifdef ZLIB_SHARED
     if (zlib_dso != NULL)
diff --git a/crypto/conf/conf_mod.c b/crypto/conf/conf_mod.c
index aede656..cef805d 100644
--- a/crypto/conf/conf_mod.c
+++ b/crypto/conf/conf_mod.c
@@ -60,7 +60,7 @@
 #include <ctype.h>
 #include <openssl/crypto.h>
 #include "internal/cryptlib.h"
-#include <openssl/conf.h>
+#include "internal/conf.h"
 #include "internal/dso.h"
 #include <openssl/x509.h>
 
@@ -460,7 +460,7 @@ int CONF_module_add(const char *name, conf_init_func *ifunc,
         return 0;
 }
 
-void CONF_modules_free(void)
+void conf_modules_free_int(void)
 {
     CONF_modules_finish();
     CONF_modules_unload(1);
diff --git a/crypto/conf/conf_sap.c b/crypto/conf/conf_sap.c
index 2198c2f..ab034c2 100644
--- a/crypto/conf/conf_sap.c
+++ b/crypto/conf/conf_sap.c
@@ -84,7 +84,7 @@ void OPENSSL_config(const char *config_name)
 }
 #endif
 
-void openssl_config_internal(const char *config_name)
+void openssl_config_int(const char *config_name)
 {
     if (openssl_configured)
         return;
@@ -103,7 +103,7 @@ void openssl_config_internal(const char *config_name)
     openssl_configured = 1;
 }
 
-void openssl_no_config_internal(void)
+void openssl_no_config_int(void)
 {
     openssl_configured = 1;
 }
diff --git a/crypto/engine/eng_cryptodev.c b/crypto/engine/eng_cryptodev.c
index bb2ce9e..151529c 100644
--- a/crypto/engine/eng_cryptodev.c
+++ b/crypto/engine/eng_cryptodev.c
@@ -63,7 +63,7 @@
 
 #ifndef HAVE_CRYPTODEV
 
-void engine_load_cryptodev_internal(void)
+void engine_load_cryptodev_int(void)
 {
     /* This is a NOP on platforms without /dev/crypto */
     return;
@@ -141,7 +141,7 @@ static int cryptodev_dh_compute_key(unsigned char *key, const BIGNUM *pub_key,
 #endif
 static int cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p,
                           void (*f) (void));
-void engine_load_cryptodev_internal(void);
+void engine_load_cryptodev_int(void);
 
 static const ENGINE_CMD_DEFN cryptodev_defns[] = {
     {0, NULL, NULL, 0}
@@ -1628,7 +1628,7 @@ cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
     return (1);
 }
 
-void engine_load_cryptodev_internal(void)
+void engine_load_cryptodev_int(void)
 {
     ENGINE *engine = ENGINE_new();
     int fd;
diff --git a/crypto/engine/eng_dyn.c b/crypto/engine/eng_dyn.c
index c7553e1..f224255 100644
--- a/crypto/engine/eng_dyn.c
+++ b/crypto/engine/eng_dyn.c
@@ -295,7 +295,7 @@ static ENGINE *engine_dynamic(void)
     return ret;
 }
 
-void engine_load_dynamic_internal(void)
+void engine_load_dynamic_int(void)
 {
     ENGINE *toadd = engine_dynamic();
     if (!toadd)
diff --git a/crypto/engine/eng_int.h b/crypto/engine/eng_int.h
index f6a54d8..beaa878 100644
--- a/crypto/engine/eng_int.h
+++ b/crypto/engine/eng_int.h
@@ -99,9 +99,9 @@ extern CRYPTO_RWLOCK *global_engine_lock;
 
 /*
  * Any code that will need cleanup operations should use these functions to
- * register callbacks. ENGINE_cleanup() will call all registered callbacks in
- * order. NB: both the "add" functions assume the engine lock to already be
- * held (in "write" mode).
+ * register callbacks. engine_cleanup_int() will call all registered
+ * callbacks in order. NB: both the "add" functions assume the engine lock to
+ * already be held (in "write" mode).
  */
 typedef void (ENGINE_CLEANUP_CB) (void);
 typedef struct st_engine_cleanup_item {
diff --git a/crypto/engine/eng_lib.c b/crypto/engine/eng_lib.c
index dd47342..d0bc716 100644
--- a/crypto/engine/eng_lib.c
+++ b/crypto/engine/eng_lib.c
@@ -148,8 +148,8 @@ int ENGINE_free(ENGINE *e)
 /* Cleanup stuff */
 
 /*
- * ENGINE_cleanup() is coded such that anything that does work that will need
- * cleanup can register a "cleanup" callback here. That way we don't get
+ * engine_cleanup_int() is coded such that anything that does work that will
+ * need cleanup can register a "cleanup" callback here. That way we don't get
  * linker bloat by referring to all *possible* cleanups, but any linker bloat
  * into code "X" will cause X's cleanup function to end up here.
  */
@@ -200,7 +200,7 @@ static void engine_cleanup_cb_free(ENGINE_CLEANUP_ITEM *item)
     OPENSSL_free(item);
 }
 
-void ENGINE_cleanup(void)
+void engine_cleanup_int(void)
 {
     if (int_cleanup_check(0)) {
         sk_ENGINE_CLEANUP_ITEM_pop_free(cleanup_stack,
diff --git a/crypto/engine/eng_list.c b/crypto/engine/eng_list.c
index 4883d14..15ba1ca 100644
--- a/crypto/engine/eng_list.c
+++ b/crypto/engine/eng_list.c
@@ -79,7 +79,7 @@ static ENGINE *engine_list_tail = NULL;
 
 /*
  * This cleanup function is only needed internally. If it should be called,
- * we register it with the "ENGINE_cleanup()" stack to be called during
+ * we register it with the "engine_cleanup_int()" stack to be called during
  * cleanup.
  */
 
diff --git a/crypto/engine/eng_openssl.c b/crypto/engine/eng_openssl.c
index fc0784f..fa26700 100644
--- a/crypto/engine/eng_openssl.c
+++ b/crypto/engine/eng_openssl.c
@@ -189,7 +189,7 @@ static ENGINE *engine_openssl(void)
     return ret;
 }
 
-void engine_load_openssl_internal(void)
+void engine_load_openssl_int(void)
 {
     ENGINE *toadd = engine_openssl();
     if (!toadd)
diff --git a/crypto/engine/eng_rdrand.c b/crypto/engine/eng_rdrand.c
index 1be10db..b62f910 100644
--- a/crypto/engine/eng_rdrand.c
+++ b/crypto/engine/eng_rdrand.c
@@ -130,7 +130,7 @@ static ENGINE *ENGINE_rdrand(void)
     return ret;
 }
 
-void engine_load_rdrand_internal(void)
+void engine_load_rdrand_int(void)
 {
     extern unsigned int OPENSSL_ia32cap_P[];
 
@@ -144,7 +144,7 @@ void engine_load_rdrand_internal(void)
     }
 }
 #else
-void engine_load_rdrand_internal(void)
+void engine_load_rdrand_int(void)
 {
 }
 #endif
diff --git a/crypto/err/err.c b/crypto/err/err.c
index da6d3ee..3ee4e86 100644
--- a/crypto/err/err.c
+++ b/crypto/err/err.c
@@ -117,7 +117,7 @@
 #include <openssl/crypto.h>
 #include <openssl/buffer.h>
 #include <openssl/bio.h>
-#include <openssl/err.h>
+#include "internal/err.h"
 #include <openssl/opensslconf.h>
 
 static void err_load_strings(int lib, ERR_STRING_DATA *str);
@@ -447,7 +447,7 @@ void ERR_unload_strings(int lib, ERR_STRING_DATA *str)
     CRYPTO_THREAD_unlock(err_string_lock);
 }
 
-void ERR_free_strings(void)
+void err_free_strings_int(void)
 {
     CRYPTO_THREAD_run_once(&err_string_init, do_err_strings_init);
 
diff --git a/crypto/err/err_all.c b/crypto/err/err_all.c
index f939db7..4add7fa 100644
--- a/crypto/err/err_all.c
+++ b/crypto/err/err_all.c
@@ -88,7 +88,7 @@
 #include <openssl/async.h>
 #include <openssl/kdf.h>
 
-void err_load_crypto_strings_intern(void)
+void err_load_crypto_strings_int(void)
 {
 #ifdef OPENSSL_FIPS
     FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata);
diff --git a/crypto/evp/c_allc.c b/crypto/evp/c_allc.c
index be6baf6..a36e2c6 100644
--- a/crypto/evp/c_allc.c
+++ b/crypto/evp/c_allc.c
@@ -62,7 +62,7 @@
 #include <openssl/pkcs12.h>
 #include <openssl/objects.h>
 
-void openssl_add_all_ciphers_internal(void)
+void openssl_add_all_ciphers_int(void)
 {
 
 #ifndef OPENSSL_NO_DES
diff --git a/crypto/evp/c_alld.c b/crypto/evp/c_alld.c
index ad261b3..1612c2f 100644
--- a/crypto/evp/c_alld.c
+++ b/crypto/evp/c_alld.c
@@ -62,7 +62,7 @@
 #include <openssl/pkcs12.h>
 #include <openssl/objects.h>
 
-void openssl_add_all_digests_internal(void)
+void openssl_add_all_digests_int(void)
 {
 #ifndef OPENSSL_NO_MD4
     EVP_add_digest(EVP_md4());
diff --git a/crypto/evp/names.c b/crypto/evp/names.c
index 2a5606b..501bfee 100644
--- a/crypto/evp/names.c
+++ b/crypto/evp/names.c
@@ -58,7 +58,7 @@
 #include <stdio.h>
 #include "internal/cryptlib.h"
 #include <openssl/evp.h>
-#include <openssl/objects.h>
+#include <internal/objects.h>
 #include <openssl/x509.h>
 #include "internal/evp_int.h"
 
@@ -128,7 +128,7 @@ const EVP_MD *EVP_get_digestbyname(const char *name)
     return (cp);
 }
 
-void EVP_cleanup(void)
+void evp_cleanup_int(void)
 {
     OBJ_NAME_cleanup(OBJ_NAME_TYPE_CIPHER_METH);
     OBJ_NAME_cleanup(OBJ_NAME_TYPE_MD_METH);
@@ -142,7 +142,7 @@ void EVP_cleanup(void)
     EVP_PBE_cleanup();
     if (obj_cleanup_defer == 2) {
         obj_cleanup_defer = 0;
-        OBJ_cleanup();
+        obj_cleanup_int();
     }
     OBJ_sigid_free();
 }
diff --git a/crypto/ex_data.c b/crypto/ex_data.c
index 6984a1f..44dc46b 100644
--- a/crypto/ex_data.c
+++ b/crypto/ex_data.c
@@ -175,7 +175,7 @@ static void cleanup_cb(EX_CALLBACK *funcs)
  * called under potential race-conditions anyway (it's for program shutdown
  * after all).
  */
-void CRYPTO_cleanup_all_ex_data(void)
+void crypto_cleanup_all_ex_data_int(void)
 {
     int i;
 
diff --git a/crypto/include/internal/cryptlib.h b/crypto/include/internal/cryptlib.h
index 8fe9057..5fc7f0d 100644
--- a/crypto/include/internal/cryptlib.h
+++ b/crypto/include/internal/cryptlib.h
@@ -113,6 +113,7 @@ void OPENSSL_cpuid_setup(void);
 extern unsigned int OPENSSL_ia32cap_P[];
 void OPENSSL_showfatal(const char *fmta, ...);
 extern int OPENSSL_NONPIC_relocated;
+void crypto_cleanup_all_ex_data_int(void);
 
 #ifdef  __cplusplus
 }
diff --git a/crypto/include/internal/engine.h b/crypto/include/internal/engine.h
index abdb8cc..fffce40 100644
--- a/crypto/include/internal/engine.h
+++ b/crypto/include/internal/engine.h
@@ -54,11 +54,12 @@
 
 #include <openssl/engine.h>
 
-void engine_load_openssl_internal(void);
-void engine_load_cryptodev_internal(void);
-void engine_load_rdrand_internal(void);
-void engine_load_dynamic_internal(void);
-void engine_load_padlock_internal(void);
-void engine_load_capi_internal(void);
-void engine_load_dasync_internal(void);
-void engine_load_afalg_internal(void);
+void engine_load_openssl_int(void);
+void engine_load_cryptodev_int(void);
+void engine_load_rdrand_int(void);
+void engine_load_dynamic_int(void);
+void engine_load_padlock_int(void);
+void engine_load_capi_int(void);
+void engine_load_dasync_int(void);
+void engine_load_afalg_int(void);
+void engine_cleanup_int(void);
diff --git a/crypto/include/internal/evp_int.h b/crypto/include/internal/evp_int.h
index f5811c1..ca130c2 100644
--- a/crypto/include/internal/evp_int.h
+++ b/crypto/include/internal/evp_int.h
@@ -420,5 +420,6 @@ struct evp_pkey_st {
 } /* EVP_PKEY */ ;
 
 
-void openssl_add_all_ciphers_internal(void);
-void openssl_add_all_digests_internal(void);
+void openssl_add_all_ciphers_int(void);
+void openssl_add_all_digests_int(void);
+void evp_cleanup_int(void);
diff --git a/test/aborttest.c b/crypto/include/internal/objects.h
similarity index 57%
copy from test/aborttest.c
copy to crypto/include/internal/objects.h
index 98aeddf..86000b6 100644
--- a/test/aborttest.c
+++ b/crypto/include/internal/objects.h
@@ -1,6 +1,4 @@
 /*
- * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
- *
  * Licensed under the OpenSSL licenses, (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -8,10 +6,6 @@
  * or in the file LICENSE in the source distribution.
  */
 
-#include <openssl/crypto.h>
+#include <openssl/objects.h>
 
-int main(int argc, char **argv)
-{
-    OPENSSL_die("Voluntary abort", __FILE__, __LINE__);
-    return 0;
-}
+void obj_cleanup_int(void);
diff --git a/test/aborttest.c b/crypto/include/internal/rand.h
similarity index 57%
copy from test/aborttest.c
copy to crypto/include/internal/rand.h
index 98aeddf..be92fa1 100644
--- a/test/aborttest.c
+++ b/crypto/include/internal/rand.h
@@ -1,6 +1,4 @@
 /*
- * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
- *
  * Licensed under the OpenSSL licenses, (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -8,10 +6,6 @@
  * or in the file LICENSE in the source distribution.
  */
 
-#include <openssl/crypto.h>
+#include <openssl/rand.h>
 
-int main(int argc, char **argv)
-{
-    OPENSSL_die("Voluntary abort", __FILE__, __LINE__);
-    return 0;
-}
+void rand_cleanup_int(void);
diff --git a/crypto/init.c b/crypto/init.c
index 4d28e31..d9f4000 100644
--- a/crypto/init.c
+++ b/crypto/init.c
@@ -58,14 +58,16 @@
 #include <internal/threads.h>
 #include <internal/cryptlib_int.h>
 #include <openssl/err.h>
-#include <openssl/rand.h>
+#include <internal/rand.h>
+#include <internal/bio.h>
 #include <openssl/evp.h>
 #include <internal/evp_int.h>
 #include <internal/conf.h>
 #include <internal/async.h>
 #include <internal/engine.h>
-#include <openssl/comp.h>
+#include <internal/comp.h>
 #include <internal/err.h>
+#include <internal/objects.h>
 #include <stdlib.h>
 #include <assert.h>
 
@@ -142,9 +144,9 @@ static void ossl_init_load_crypto_strings(void)
 #if !defined(OPENSSL_NO_ERR) && !defined(OPENSSL_NO_AUTOERRINIT)
 # ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_load_crypto_strings: "
-                    "err_load_crypto_strings_intern()\n");
+                    "err_load_crypto_strings_int()\n");
 # endif
-    err_load_crypto_strings_intern();
+    err_load_crypto_strings_int();
 #endif
     load_crypto_strings_inited = 1;
 }
@@ -159,9 +161,9 @@ static void ossl_init_add_all_ciphers(void)
 #ifndef OPENSSL_NO_AUTOALGINIT
 # ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_add_all_ciphers: "
-                    "openssl_add_all_ciphers_internal()\n");
+                    "openssl_add_all_ciphers_int()\n");
 # endif
-    openssl_add_all_ciphers_internal();
+    openssl_add_all_ciphers_int();
 # ifndef OPENSSL_NO_ENGINE
 #  if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)
     ENGINE_setup_bsd_cryptodev();
@@ -180,9 +182,9 @@ static void ossl_init_add_all_digests(void)
 #ifndef OPENSSL_NO_AUTOALGINIT
 # ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_add_all_digests: "
-                    "openssl_add_all_digests_internal()\n");
+                    "openssl_add_all_digests()\n");
 # endif
-    openssl_add_all_digests_internal();
+    openssl_add_all_digests_int();
 # ifndef OPENSSL_NO_ENGINE
 #  if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)
     ENGINE_setup_bsd_cryptodev();
@@ -204,19 +206,19 @@ static void ossl_init_config(void)
 {
 #ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr,
-            "OPENSSL_INIT: ossl_init_config: openssl_config_internal(%s)\n",
+            "OPENSSL_INIT: ossl_init_config: openssl_config(%s)\n",
             config_filename==NULL?"NULL":config_filename);
 #endif
-    openssl_config_internal(config_filename);
+    openssl_config_int(config_filename);
     config_inited = 1;
 }
 static void ossl_init_no_config(void)
 {
 #ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr,
-            "OPENSSL_INIT: ossl_init_config: openssl_no_config_internal()\n");
+            "OPENSSL_INIT: ossl_init_config: openssl_no_config_int()\n");
 #endif
-    openssl_no_config_internal();
+    openssl_no_config_int();
     config_inited = 1;
 }
 
@@ -237,9 +239,9 @@ static void ossl_init_engine_openssl(void)
 {
 # ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_openssl: "
-                    "engine_load_openssl_internal()\n");
+                    "engine_load_openssl_int()\n");
 # endif
-    engine_load_openssl_internal();
+    engine_load_openssl_int();
 }
 # if !defined(OPENSSL_NO_HW) && \
     (defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV))
@@ -248,9 +250,9 @@ static void ossl_init_engine_cryptodev(void)
 {
 #  ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_cryptodev: "
-                    "engine_load_cryptodev_internal()\n");
+                    "engine_load_cryptodev_int()\n");
 #  endif
-    engine_load_cryptodev_internal();
+    engine_load_cryptodev_int();
 }
 # endif
 
@@ -260,9 +262,9 @@ static void ossl_init_engine_rdrand(void)
 {
 #  ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_rdrand: "
-                    "engine_load_rdrand_internal()\n");
+                    "engine_load_rdrand_int()\n");
 #  endif
-    engine_load_rdrand_internal();
+    engine_load_rdrand_int();
 }
 # endif
 static CRYPTO_ONCE engine_dynamic = CRYPTO_ONCE_STATIC_INIT;
@@ -270,9 +272,9 @@ static void ossl_init_engine_dynamic(void)
 {
 # ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_dynamic: "
-                    "engine_load_dynamic_internal()\n");
+                    "engine_load_dynamic_int()\n");
 # endif
-    engine_load_dynamic_internal();
+    engine_load_dynamic_int();
 }
 # ifndef OPENSSL_NO_STATIC_ENGINE
 #  if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK)
@@ -281,9 +283,9 @@ static void ossl_init_engine_padlock(void)
 {
 #   ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_padlock: "
-                    "engine_load_padlock_internal()\n");
+                    "engine_load_padlock_int()\n");
 #   endif
-    engine_load_padlock_internal();
+    engine_load_padlock_int();
 }
 #  endif
 #  if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG)
@@ -292,9 +294,9 @@ static void ossl_init_engine_capi(void)
 {
 #   ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_capi: "
-                    "engine_load_capi_internal()\n");
+                    "engine_load_capi_int()\n");
 #   endif
-    engine_load_capi_internal();
+    engine_load_capi_int();
 }
 #  endif
 static CRYPTO_ONCE engine_dasync = CRYPTO_ONCE_STATIC_INIT;
@@ -302,9 +304,9 @@ static void ossl_init_engine_dasync(void)
 {
 # ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_dasync: "
-                    "engine_load_dasync_internal()\n");
+                    "engine_load_dasync_int()\n");
 # endif
-    engine_load_dasync_internal();
+    engine_load_dasync_int();
 }
 #  if !defined(OPENSSL_NO_AFALGENG)
 static CRYPTO_ONCE engine_afalg = CRYPTO_ONCE_STATIC_INIT;
@@ -312,9 +314,9 @@ static void ossl_init_engine_afalg(void)
 {
 #   ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_afalg: "
-                    "engine_load_afalg_internal()\n");
+                    "engine_load_afalg_int()\n");
 #   endif
-    engine_load_afalg_internal();
+    engine_load_afalg_int();
 }
 #  endif
 # endif
@@ -427,9 +429,9 @@ void OPENSSL_cleanup(void)
     if (zlib_inited) {
 #ifdef OPENSSL_INIT_DEBUG
         fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
-                        "COMP_zlib_cleanup()\n");
+                        "comp_zlib_cleanup_int()\n");
 #endif
-        COMP_zlib_cleanup();
+        comp_zlib_cleanup_int();
     }
 #endif
 
@@ -444,51 +446,51 @@ void OPENSSL_cleanup(void)
     if (load_crypto_strings_inited) {
 #ifdef OPENSSL_INIT_DEBUG
         fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
-                        "ERR_free_strings()\n");
+                        "err_free_strings_int()\n");
 #endif
-        ERR_free_strings();
+        err_free_strings_int();
     }
 
     CRYPTO_THREAD_cleanup_local(&threadstopkey);
 
 #ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
-                    "RAND_cleanup()\n");
+                    "rand_cleanup_int()\n");
     fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
-                    "CONF_modules_free()\n");
+                    "conf_modules_free_int()\n");
 #ifndef OPENSSL_NO_ENGINE
     fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
-                    "ENGINE_cleanup()\n");
+                    "engine_cleanup_int()\n");
 #endif
     fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
-                    "CRYPTO_cleanup_all_ex_data()\n");
+                    "crypto_cleanup_all_ex_data_int()\n");
     fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
-                    "BIO_sock_cleanup()\n");
+                    "bio_sock_cleanup_int()\n");
     fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
-                    "EVP_cleanup()\n");
+                    "evp_cleanup_int()\n");
     fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: "
-                    "OBJ_cleanup()\n");
+                    "obj_cleanup_int()\n");
 #endif
     /*
      * Note that cleanup order is important:
-     * - RAND_cleanup could call an ENINGE's RAND cleanup function so must be
-     * called before ENGINE_cleanup()
+     * - rand_cleanup_int could call an ENINGE's RAND cleanup function so
+     * must be called before engine_cleanup_int()
      * - ENGINEs use CRYPTO_EX_DATA and therefore, must be cleaned up
      * before the ex data handlers are wiped in CRYPTO_cleanup_all_ex_data().
-     * - CONF_modules_free() can end up in ENGINE code so must be called before
-     * ENGINE_cleanup()
+     * - conf_modules_free_int() can end up in ENGINE code so must be called
+     * before engine_cleanup_int()
      */
-    RAND_cleanup();
-    CONF_modules_free();
+    rand_cleanup_int();
+    conf_modules_free_int();
 #ifndef OPENSSL_NO_ENGINE
-    ENGINE_cleanup();
+    engine_cleanup_int();
 #endif
-    CRYPTO_cleanup_all_ex_data();
+    crypto_cleanup_all_ex_data_int();
 #ifndef OPENSSL_NO_SOCK
-    BIO_sock_cleanup();
+    bio_sock_cleanup_int();
 #endif
-    EVP_cleanup();
-    OBJ_cleanup();
+    evp_cleanup_int();
+    obj_cleanup_int();
     base_inited = 0;
 }
 
diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c
index 82b4494..24e684a 100644
--- a/crypto/objects/obj_dat.c
+++ b/crypto/objects/obj_dat.c
@@ -61,7 +61,7 @@
 #include "internal/cryptlib.h"
 #include <openssl/lhash.h>
 #include <openssl/asn1.h>
-#include <openssl/objects.h>
+#include "internal/objects.h"
 #include <openssl/bn.h>
 #include "internal/asn1_int.h"
 #include "obj_lcl.h"
@@ -199,8 +199,8 @@ static void cleanup3_doall(ADDED_OBJ *a)
 }
 
 /*
- * The purpose of obj_cleanup_defer is to avoid EVP_cleanup() attempting to
- * use freed up OIDs. If necessary the actual freeing up of OIDs is delayed.
+ * The purpose of obj_cleanup_defer is to avoid int_evp_cleanup() attempting
+ * to use freed up OIDs. If necessary the actual freeing up of OIDs is delayed.
  */
 int obj_cleanup_defer = 0;
 
@@ -210,7 +210,7 @@ void check_defer(int nid)
         obj_cleanup_defer = 1;
 }
 
-void OBJ_cleanup(void)
+void obj_cleanup_int(void)
 {
     if (obj_cleanup_defer) {
         obj_cleanup_defer = 2;
diff --git a/crypto/rand/rand_lib.c b/crypto/rand/rand_lib.c
index 36b41cd..9871113 100644
--- a/crypto/rand/rand_lib.c
+++ b/crypto/rand/rand_lib.c
@@ -59,7 +59,7 @@
 #include <time.h>
 #include "internal/cryptlib.h"
 #include <openssl/opensslconf.h>
-#include <openssl/rand.h>
+#include "internal/rand.h"
 
 #include <openssl/engine.h>
 
@@ -125,7 +125,7 @@ int RAND_set_rand_engine(ENGINE *engine)
 }
 #endif
 
-void RAND_cleanup(void)
+void rand_cleanup_int(void)
 {
     const RAND_METHOD *meth = RAND_get_rand_method();
     if (meth && meth->cleanup)
diff --git a/doc/crypto/CONF_modules_free.pod b/doc/crypto/CONF_modules_free.pod
index 37a7b16..4a8580c 100644
--- a/doc/crypto/CONF_modules_free.pod
+++ b/doc/crypto/CONF_modules_free.pod
@@ -9,10 +9,15 @@
 
  #include <openssl/conf.h>
 
- void CONF_modules_free(void);
  void CONF_modules_finish(void);
  void CONF_modules_unload(int all);
 
+Deprecated:
+
+ #if OPENSSL_API_COMPAT < 0x10100000L
+ void CONF_modules_free(void)
+ #endif
+
 =head1 DESCRIPTION
 
 CONF_modules_free() closes down and frees up all memory allocated by all
@@ -27,8 +32,10 @@ B<all> is B<1> all modules, including builtin modules will be unloaded.
 
 =head1 NOTES
 
-Normally applications will only call CONF_modules_free() at application to
-tidy up any configuration performed.
+Normally in versions of OpenSSL prior to 1.1.0 applications will only call
+CONF_modules_free() at application exit to tidy up any configuration performed.
+From 1.1.0 CONF_modules_free() is deprecated and no explicit CONF cleanup is
+required at all. For more information see L<OPENSSL_init_crypto(3)>.
 
 =head1 RETURN VALUE
 
@@ -39,4 +46,8 @@ None of the functions return a value.
 L<conf(5)>, L<OPENSSL_config(3)>,
 L<CONF_modules_load_file(3)>
 
+=head1 HISTORY
+
+CONF_modules_free() was deprecated in OpenSSL 1.1.0.
+
 =cut
diff --git a/doc/crypto/ERR_load_crypto_strings.pod b/doc/crypto/ERR_load_crypto_strings.pod
index 88678d9..68c006f 100644
--- a/doc/crypto/ERR_load_crypto_strings.pod
+++ b/doc/crypto/ERR_load_crypto_strings.pod
@@ -7,26 +7,33 @@ load and free error strings
 
 =head1 SYNOPSIS
 
+Deprecated:
+
  #include <openssl/err.h>
 
+ #if OPENSSL_API_COMPAT < 0x10100000L
  void ERR_load_crypto_strings(void);
  void ERR_free_strings(void);
+ #endif
 
  #include <openssl/ssl.h>
 
+ #if OPENSSL_API_COMPAT < 0x10100000L
  void SSL_load_error_strings(void);
-
+ #endif
+ 
 =head1 DESCRIPTION
 
+All of the following functions are deprecated from OpenSSL 1.1.0. No explicit
+initialisation or de-initialisation is necessary. See L<OPENSSL_init_crypto(3)>
+and L<OPENSSL_init_ssl(3)>.
+
 ERR_load_crypto_strings() registers the error strings for all
 B<libcrypto> functions. SSL_load_error_strings() does the same,
 but also registers the B<libssl> error strings.
 
-One of these functions should be called before generating
-textual error messages. However, this is not required when memory
-usage is an issue.
-
-ERR_free_strings() frees all previously loaded error strings.
+In versions of OpenSSL prior to 1.1.0 ERR_free_strings() freed all previously
+loaded error strings. However from OpenSSL 1.1.0 it does nothing.
 
 =head1 RETURN VALUES
 
diff --git a/doc/crypto/EVP_DigestInit.pod b/doc/crypto/EVP_DigestInit.pod
index 94c4d19..7ce5695 100644
--- a/doc/crypto/EVP_DigestInit.pod
+++ b/doc/crypto/EVP_DigestInit.pod
@@ -236,8 +236,6 @@ digest name passed on the command line.
  	printf("%02x", md_value[i]);
  printf("\n");
 
- /* Call this once before exit. */
- EVP_cleanup();
  exit(0);
  }
 
diff --git a/doc/crypto/OBJ_nid2obj.pod b/doc/crypto/OBJ_nid2obj.pod
index b2b815d..d777d7c 100644
--- a/doc/crypto/OBJ_nid2obj.pod
+++ b/doc/crypto/OBJ_nid2obj.pod
@@ -27,11 +27,16 @@ functions
  ASN1_OBJECT * OBJ_dup(const ASN1_OBJECT *o);
 
  int OBJ_create(const char *oid,const char *sn,const char *ln);
- void OBJ_cleanup(void);
 
  size_t OBJ_length(const ASN1_OBJECT *obj);
  const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj);
 
+Deprecated:
+
+ #if OPENSSL_API_COMPAT < 0x10100000L
+ void OBJ_cleanup(void)
+ #endif
+
 =head1 DESCRIPTION
 
 The ASN1 object utility functions process ASN1_OBJECT structures which are
@@ -69,15 +74,17 @@ OBJ_create() adds a new object to the internal table. B<oid> is the
 numerical form of the object, B<sn> the short name and B<ln> the
 long name. A new NID is returned for the created object.
 
-OBJ_cleanup() cleans up OpenSSLs internal object table: this should
-be called before an application exits if any new objects were added
-using OBJ_create().
-
 OBJ_length() returns the size of the content octets of B<obj>.
 
 OBJ_get0_data() returns a pointer to the content octets of B<obj>.
 The returned pointer is an internal pointer which B<must not> be freed.
 
+In OpenSSL versions prior to 1.1.0 OBJ_cleanup() cleaned up OpenSSLs internal
+object table and was called before an application exits if any new objects were
+added using OBJ_create(). This function is deprecated in version 1.1.0 and now
+does nothing if called. No explicit de-initialisation is now required. See
+L<OPENSSL_init_crypto(3)> for further information.
+
 =head1 NOTES
 
 Objects in OpenSSL can have a short name, a long name and a numerical
@@ -160,6 +167,6 @@ L<ERR_get_error(3)>
 
 =head1 HISTORY
 
-TBA
+OBJ_cleanup() was deprecated in OpenSSL 1.1.0.
 
 =cut
diff --git a/doc/crypto/OPENSSL_config.pod b/doc/crypto/OPENSSL_config.pod
index 4c82566..77061a0 100644
--- a/doc/crypto/OPENSSL_config.pod
+++ b/doc/crypto/OPENSSL_config.pod
@@ -23,9 +23,6 @@ Multiple calls have no effect.
 OPENSSL_no_config() disables configuration. If called before OPENSSL_config()
 no configuration takes place.
 
-Applications should free up configuration at application closedown by calling
-CONF_modules_free().
-
 If the application is built with B<OPENSSL_LOAD_CONF> defined, then a
 call to OpenSSL_add_all_algorithms() will implicitly call OPENSSL_config()
 first.
@@ -57,8 +54,7 @@ Neither OPENSSL_config() nor OPENSSL_no_config() return a value.
 =head1 SEE ALSO
 
 L<conf(5)>,
-L<CONF_modules_load_file(3)>,
-L<CONF_modules_free(3)>
+L<CONF_modules_load_file(3)>
 
 =head1 HISTORY
 
diff --git a/doc/crypto/OpenSSL_add_all_algorithms.pod b/doc/crypto/OpenSSL_add_all_algorithms.pod
index b107155..10f3b8f 100644
--- a/doc/crypto/OpenSSL_add_all_algorithms.pod
+++ b/doc/crypto/OpenSSL_add_all_algorithms.pod
@@ -9,16 +9,24 @@ add algorithms to internal table
 
  #include <openssl/evp.h>
 
+Deprecated:
+
+ # if OPENSSL_API_COMPAT < 0x10100000L
  void OpenSSL_add_all_algorithms(void);
  void OpenSSL_add_all_ciphers(void);
  void OpenSSL_add_all_digests(void);
 
- void EVP_cleanup(void);
+ void EVP_cleanup(void)
+# endif
 
 =head1 DESCRIPTION
 
 OpenSSL keeps an internal table of digest algorithms and ciphers. It uses
-this table to lookup ciphers via functions such as EVP_get_cipher_byname().
+this table to lookup ciphers via functions such as EVP_get_cipher_byname(). In
+OpenSSL versions prior to 1.1.0 these functions initialised and de-initialised
+this table. From OpenSSL 1.1.0 they are deprecated. No explicit initialisation
+or de-initialisation is required. See L<OPENSSL_init_crypto(3)> for further
+information.
 
 OpenSSL_add_all_digests() adds all digest algorithms to the table.
 
@@ -28,7 +36,8 @@ ciphers).
 OpenSSL_add_all_ciphers() adds all encryption algorithms to the table including
 password based encryption algorithms.
 
-EVP_cleanup() removes all ciphers and digests from the table.
+In versions prior to 1.1.0 EVP_cleanup() removed all ciphers and digests from
+the table. It no longer has any effect in OpenSSL 1.1.0.
 
 =head1 RETURN VALUES
 
diff --git a/doc/crypto/RAND_cleanup.pod b/doc/crypto/RAND_cleanup.pod
index 88efb9a..fd3f81c 100644
--- a/doc/crypto/RAND_cleanup.pod
+++ b/doc/crypto/RAND_cleanup.pod
@@ -8,11 +8,15 @@ RAND_cleanup - erase the PRNG state
 
  #include <openssl/rand.h>
 
- void RAND_cleanup(void);
+ #if OPENSSL_API_COMPAT < 0x10100000L
+ void RAND_cleanup(void)
+ #endif
 
 =head1 DESCRIPTION
 
-RAND_cleanup() erases the memory used by the PRNG.
+Prior to OpenSSL 1.1.0 RAND_cleanup() erases the memory used by the PRNG. This
+function is deprecated and as of version 1.1.0 does nothing. No explicit
+initialisation or de-initialisation is necessary. See L<OPENSSL_init_crypto(3)>.
 
 =head1 RETURN VALUE
 
@@ -22,4 +26,8 @@ RAND_cleanup() returns no value.
 
 L<rand(3)>
 
+=head1 HISTORY
+
+RAND_cleanup() was deprecated in OpenSSL 1.1.0.
+
 =cut
diff --git a/doc/crypto/RAND_set_rand_method.pod b/doc/crypto/RAND_set_rand_method.pod
index 533d577..6a421a2 100644
--- a/doc/crypto/RAND_set_rand_method.pod
+++ b/doc/crypto/RAND_set_rand_method.pod
@@ -45,8 +45,8 @@ API is being used, so this function is no longer recommended.
 	int (*status)(void);
  } RAND_METHOD;
 
-The components point to the implementation of RAND_seed(),
-RAND_bytes(), RAND_cleanup(), RAND_add(), RAND_pseudo_rand()
+The components point to method implementations used by (or called by), in order,
+RAND_seed(), RAND_bytes(), internal RAND cleanup, RAND_add(), RAND_pseudo_rand()
 and RAND_status().
 Each component may be NULL if the function is not implemented.
 
diff --git a/doc/crypto/engine.pod b/doc/crypto/engine.pod
index c069fd7..8d1b3df 100644
--- a/doc/crypto/engine.pod
+++ b/doc/crypto/engine.pod
@@ -23,8 +23,6 @@ engine - ENGINE cryptographic module support
 
  void ENGINE_load_builtin_engines(void);
 
- void ENGINE_cleanup(void);
-
  ENGINE *ENGINE_get_default_RSA(void);
  ENGINE *ENGINE_get_default_DSA(void);
  ENGINE *ENGINE_get_default_ECDH(void);
@@ -134,6 +132,12 @@ engine - ENGINE cryptographic module support
 
  void ENGINE_add_conf_module(void);
 
+Deprecated:
+
+ #if OPENSSL_API_COMPAT < 0x10100000L
+ void ENGINE_cleanup(void)
+ #endif
+
 =head1 DESCRIPTION
 
 These functions create, manipulate, and use cryptographic modules in the
@@ -300,21 +304,23 @@ dynamically allocated and populated with these implementations and linked
 into OpenSSL's internal linked list. At this point it is important to
 mention an important API function;
 
- void ENGINE_cleanup(void);
+ void ENGINE_cleanup(void)
 
 If no ENGINE API functions are called at all in an application, then there
-are no inherent memory leaks to worry about from the ENGINE functionality,
-however if any ENGINEs are loaded, even if they are never registered or
-used, it is necessary to use the ENGINE_cleanup() function to
-correspondingly cleanup before program exit, if the caller wishes to avoid
-memory leaks. This mechanism uses an internal callback registration table
+are no inherent memory leaks to worry about from the ENGINE functionality.
+However, prior to OpenSSL 1.1.0 if any ENGINEs are loaded, even if they are
+never registered or used, it was necessary to use the ENGINE_cleanup() function
+to correspondingly cleanup before program exit, if the caller wishes to avoid
+memory leaks. This mechanism used an internal callback registration table
 so that any ENGINE API functionality that knows it requires cleanup can
 register its cleanup details to be called during ENGINE_cleanup(). This
-approach allows ENGINE_cleanup() to clean up after any ENGINE functionality
+approach allowed ENGINE_cleanup() to clean up after any ENGINE functionality
 at all that your program uses, yet doesn't automatically create linker
 dependencies to all possible ENGINE functionality - only the cleanup
 callbacks required by the functionality you do use will be required by the
-linker.
+linker. From OpenSSL 1.1.0 it is no longer necessary to explicitly call
+ENGINE_cleanup and this function is deprecated. Cleanup automatically takes
+place at program exit.
 
 The fact that ENGINEs are made visible to OpenSSL (and thus are linked into
 the program and loaded into memory at run-time) does not mean they are
@@ -553,7 +559,8 @@ L<OPENSSL_init_crypto(3)>, L<rsa(3)>, L<dsa(3)>, L<dh(3)>, L<rand(3)>
 
 =head1 HISTORY
 
-ENGINE_load_openssl(), ENGINE_load_dynamic(), and ENGINE_load_cryptodev()
-were deprecated in OpenSSL 1.1.0 by OPENSSL_init_crypto().
+ENGINE_cleanup(), ENGINE_load_openssl(), ENGINE_load_dynamic(), and
+ENGINE_load_cryptodev() were deprecated in OpenSSL 1.1.0 by
+OPENSSL_init_crypto().
 
 =cut
diff --git a/doc/crypto/err.pod b/doc/crypto/err.pod
index 6847f21..33cb19d 100644
--- a/doc/crypto/err.pod
+++ b/doc/crypto/err.pod
@@ -33,7 +33,6 @@ err - error codes
  void ERR_print_errors_fp(FILE *fp);
 
  void ERR_load_crypto_strings(void);
- void ERR_free_strings(void);
 
  void ERR_put_error(int lib, int func, int reason, const char *file,
          int line);
@@ -49,6 +48,11 @@ Deprecated:
  void ERR_remove_state(unsigned long pid);
  #endif
 
+ #if OPENSSL_API_COMPAT < 0x10100000L
+ void ERR_free_strings(void)
+ #endif
+
+
 =head1 DESCRIPTION
 
 When a call to the OpenSSL library fails, this is usually signaled
diff --git a/doc/crypto/rand.pod b/doc/crypto/rand.pod
index 27a6787..46de8f7 100644
--- a/doc/crypto/rand.pod
+++ b/doc/crypto/rand.pod
@@ -27,12 +27,16 @@ rand - pseudo-random number generator
  const RAND_METHOD *RAND_get_rand_method(void);
  RAND_METHOD *RAND_OpenSSL(void);
 
- void RAND_cleanup(void);
-
  /* For Win32 only */
  void RAND_screen(void);
  int RAND_event(UINT, WPARAM, LPARAM);
 
+Deprecated:
+
+ #if OPENSSL_API_COMPAT < 0x10100000L
+ void RAND_cleanup(void)
+ #endif
+
 =head1 DESCRIPTION
 
 Since the introduction of the ENGINE API, the recommended way of controlling
diff --git a/doc/ssl/SSL_COMP_add_compression_method.pod b/doc/ssl/SSL_COMP_add_compression_method.pod
index 6a0caff..fe10e1b 100644
--- a/doc/ssl/SSL_COMP_add_compression_method.pod
+++ b/doc/ssl/SSL_COMP_add_compression_method.pod
@@ -10,7 +10,11 @@ SSL_COMP_add_compression_method, SSL_COMP_free_compression_methods - handle SSL/
 
  int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm);
 
- +void SSL_COMP_free_compression_methods(void);
+Deprecated:
+
+ #if OPENSSL_API_COMPAT < 0x10100000L
+ void SSL_COMP_free_compression_methods(void)
+ #endif
 
 =head1 DESCRIPTION
 
@@ -19,9 +23,12 @@ the identifier B<id> to the list of available compression methods. This
 list is globally maintained for all SSL operations within this application.
 It cannot be set for specific SSL_CTX or SSL objects.
 
-SSL_COMP_free_compression_methods() frees the internal table of
-compression methods that were built internally, and possibly
-augmented by adding SSL_COMP_add_compression_method().
+In versions of OpenSSL prior to 1.1.0 SSL_COMP_free_compression_methods() freed
+the internal table of compression methods that were built internally, and
+possibly augmented by adding SSL_COMP_add_compression_method(). However this is
+now unncessary from version 1.1.0.  No explicit initialisation or
+de-initialisation is necessary. See L<OPENSSL_init_crypto(3)> and
+L<OPENSSL_init_ssl(3)>. From OpenSSL 1.1.0 calling this function does nothing.
 
 =head1 NOTES
 
@@ -73,4 +80,8 @@ The operation failed. Check the error queue to find out the reason.
 
 L<ssl(3)>
 
+=head1 HISTORY
+
+SSL_COMP_free_compression_methods() was deprecated in OpenSSL 1.1.0.
+
 =cut
diff --git a/engines/afalg/e_afalg.c b/engines/afalg/e_afalg.c
index 3ccf9d5..830e88b 100644
--- a/engines/afalg/e_afalg.c
+++ b/engines/afalg/e_afalg.c
@@ -104,7 +104,7 @@
 #define ALG_MAX_SALG_TYPE       14
 
 # ifdef OPENSSL_NO_DYNAMIC_ENGINE
-void engine_load_afalg_internal(void);
+void engine_load_afalg_int(void);
 # endif
 
 /* Local Linkage Functions */
@@ -816,7 +816,7 @@ static ENGINE *engine_afalg(void)
     return ret;
 }
 
-void engine_load_afalg_internal(void)
+void engine_load_afalg_int(void)
 {
     ENGINE *toadd;
 
diff --git a/engines/e_capi.c b/engines/e_capi.c
index ed136e7..d2b24d5 100644
--- a/engines/e_capi.c
+++ b/engines/e_capi.c
@@ -191,7 +191,7 @@ static int cert_select_simple(ENGINE *e, SSL *ssl, STACK_OF(X509) *certs);
 static int cert_select_dialog(ENGINE *e, SSL *ssl, STACK_OF(X509) *certs);
 # endif
 
-void engine_load_capi_internal(void);
+void engine_load_capi_int(void);
 
 typedef PCCERT_CONTEXT(WINAPI *CERTDLG) (HCERTSTORE, HWND, LPCWSTR,
                                          LPCWSTR, DWORD, DWORD, void *);
@@ -613,7 +613,7 @@ static ENGINE *engine_capi(void)
     return ret;
 }
 
-void engine_load_capi_internal(void)
+void int_engine_load_capi(void)
 {
     /* Copied from eng_[openssl|dyn].c */
     ENGINE *toadd = engine_capi();
@@ -1911,8 +1911,8 @@ OPENSSL_EXPORT
 
 IMPLEMENT_DYNAMIC_CHECK_FN()
 # else
-void engine_load_capi_internal(void);
-void engine_load_capi_internal(void)
+void engine_load_capi_int(void);
+void engine_load_capi_int(void)
 {
 }
 # endif
diff --git a/engines/e_dasync.c b/engines/e_dasync.c
index 2ee7d63..27a5602 100644
--- a/engines/e_dasync.c
+++ b/engines/e_dasync.c
@@ -86,7 +86,7 @@ static const char *engine_dasync_name = "Dummy Async engine support";
 static int dasync_destroy(ENGINE *e);
 static int dasync_init(ENGINE *e);
 static int dasync_finish(ENGINE *e);
-void engine_load_dasync_internal(void);
+void engine_load_dasync_int(void);
 
 
 /* Set up digests. Just SHA1 for now */
@@ -347,7 +347,7 @@ static ENGINE *engine_dasync(void)
     return ret;
 }
 
-void engine_load_dasync_internal(void)
+void engine_load_dasync_int(void)
 {
     ENGINE *toadd = engine_dasync();
     if (!toadd)
diff --git a/engines/e_padlock.c b/engines/e_padlock.c
index f474f50..5bde91d 100644
--- a/engines/e_padlock.c
+++ b/engines/e_padlock.c
@@ -111,8 +111,8 @@ static ENGINE *ENGINE_padlock(void);
 #  endif
 
 #  ifdef OPENSSL_NO_DYNAMIC_ENGINE
-void engine_load_padlock_internal(void);
-void engine_load_padlock_internal(void)
+void engine_load_padlock_int(void);
+void engine_load_padlock_int(void)
 {
 /* On non-x86 CPUs it just returns. */
 #   ifdef COMPILE_HW_PADLOCK
diff --git a/include/internal/bio.h b/include/internal/bio.h
index b3352ce..e62580b 100644
--- a/include/internal/bio.h
+++ b/include/internal/bio.h
@@ -67,5 +67,4 @@ struct bio_method_st {
     long (*callback_ctrl) (BIO *, int, bio_info_cb *);
 };
 
-
-
+void bio_sock_cleanup_int(void);
diff --git a/test/aborttest.c b/include/internal/comp.h
similarity index 57%
copy from test/aborttest.c
copy to include/internal/comp.h
index 98aeddf..34bf147 100644
--- a/test/aborttest.c
+++ b/include/internal/comp.h
@@ -1,6 +1,4 @@
 /*
- * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
- *
  * Licensed under the OpenSSL licenses, (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -8,10 +6,6 @@
  * or in the file LICENSE in the source distribution.
  */
 
-#include <openssl/crypto.h>
+#include <openssl/comp.h>
 
-int main(int argc, char **argv)
-{
-    OPENSSL_die("Voluntary abort", __FILE__, __LINE__);
-    return 0;
-}
+void comp_zlib_cleanup_int(void);
diff --git a/include/internal/conf.h b/include/internal/conf.h
index 3bd6069..2d48daf 100644
--- a/include/internal/conf.h
+++ b/include/internal/conf.h
@@ -51,8 +51,9 @@ struct ossl_init_settings_st {
     char *config_name;
 };
 
-void openssl_config_internal(const char *config_name);
-void openssl_no_config_internal(void);
+void openssl_config_int(const char *config_name);
+void openssl_no_config_int(void);
+void conf_modules_free_int(void);
 
 #ifdef __cplusplus
 }
diff --git a/crypto/include/internal/err.h b/include/internal/err.h
similarity index 95%
rename from crypto/include/internal/err.h
rename to include/internal/err.h
index aa48019..f9aa2b2 100644
--- a/crypto/include/internal/err.h
+++ b/include/internal/err.h
@@ -55,4 +55,10 @@
  *
  */
 
-void err_load_crypto_strings_intern(void);
+#ifndef INTERNAL_ERR_H
+# define INTERNAL_ERR_H
+
+void err_load_crypto_strings_int(void);
+void err_free_strings_int(void);
+
+#endif
diff --git a/include/openssl/bio.h b/include/openssl/bio.h
index e0c6380..a168be0 100644
--- a/include/openssl/bio.h
+++ b/include/openssl/bio.h
@@ -695,7 +695,9 @@ int BIO_sock_error(int sock);
 int BIO_socket_ioctl(int fd, long type, void *arg);
 int BIO_socket_nbio(int fd, int mode);
 int BIO_sock_init(void);
-void BIO_sock_cleanup(void);
+#if OPENSSL_API_COMPAT < 0x10100000L
+# define BIO_sock_cleanup() while(0) continue
+#endif
 int BIO_set_tcp_ndelay(int sock, int turn_on);
 
 DEPRECATEDIN_1_1_0(struct hostent *BIO_gethostbyname(const char *name))
diff --git a/include/openssl/comp.h b/include/openssl/comp.h
index 9fa71ef..d2537f8 100644
--- a/include/openssl/comp.h
+++ b/include/openssl/comp.h
@@ -79,7 +79,10 @@ int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen,
                       unsigned char *in, int ilen);
 
 COMP_METHOD *COMP_zlib(void);
-void COMP_zlib_cleanup(void);
+
+#if OPENSSL_API_COMPAT < 0x10100000L
+#define COMP_zlib_cleanup() while(0) continue
+#endif
 
 # ifdef HEADER_BIO_H
 #  ifdef ZLIB
diff --git a/include/openssl/conf.h b/include/openssl/conf.h
index 24e9dee..5f7f547 100644
--- a/include/openssl/conf.h
+++ b/include/openssl/conf.h
@@ -186,7 +186,9 @@ int CONF_modules_load_file(const char *filename, const char *appname,
                            unsigned long flags);
 void CONF_modules_unload(int all);
 void CONF_modules_finish(void);
-void CONF_modules_free(void);
+#if OPENSSL_API_COMPAT < 0x10100000L
+# define CONF_modules_free() while(0) continue
+#endif
 int CONF_module_add(const char *name, conf_init_func *ifunc,
                     conf_finish_func *ffunc);
 
diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h
index d775e9e..32b8843 100644
--- a/include/openssl/crypto.h
+++ b/include/openssl/crypto.h
@@ -297,13 +297,14 @@ void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
  */
 int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
 void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
+
+# if OPENSSL_API_COMPAT < 0x10100000L
 /*
  * This function cleans up all "ex_data" state. It mustn't be called under
  * potential race-conditions.
  */
-void CRYPTO_cleanup_all_ex_data(void);
+# define CRYPTO_cleanup_all_ex_data() while(0) continue
 
-# if OPENSSL_API_COMPAT < 0x10100000L
 /*
  * The old locking functions have been removed completely without compatibility
  * macros. This is because the old functions either could not properly report
diff --git a/include/openssl/engine.h b/include/openssl/engine.h
index c12e027..3123ad3 100644
--- a/include/openssl/engine.h
+++ b/include/openssl/engine.h
@@ -406,8 +406,7 @@ void ENGINE_set_table_flags(unsigned int flags);
  *   ENGINE_register_***(e) - registers the implementation from 'e' (if it has one)
  *   ENGINE_unregister_***(e) - unregister the implementation from 'e'
  *   ENGINE_register_all_***() - call ENGINE_register_***() for each 'e' in the list
- * Cleanup is automatically registered from each table when required, so
- * ENGINE_cleanup() will reverse any "register" operations.
+ * Cleanup is automatically registered from each table when required.
  */
 
 int ENGINE_register_RSA(ENGINE *e);
@@ -549,13 +548,13 @@ int ENGINE_set_cmd_defns(ENGINE *e, const ENGINE_CMD_DEFN *defns);
 int ENGINE_set_ex_data(ENGINE *e, int idx, void *arg);
 void *ENGINE_get_ex_data(const ENGINE *e, int idx);
 
+#if OPENSSL_API_COMPAT < 0x10100000L
 /*
- * This function cleans up anything that needs it. Eg. the ENGINE_add()
- * function automatically ensures the list cleanup function is registered to
- * be called from ENGINE_cleanup(). Similarly, all ENGINE_register_***
- * functions ensure ENGINE_cleanup() will clean up after them.
+ * This function previously cleaned up anything that needs it. Auto-deinit will
+ * now take care of it so it is no longer required to call this function.
  */
-void ENGINE_cleanup(void);
+# define ENGINE_cleanup() while(0) continue
+#endif
 
 /*
  * These return values from within the ENGINE structure. These can be useful
diff --git a/include/openssl/err.h b/include/openssl/err.h
index d372520..ccf2ff7 100644
--- a/include/openssl/err.h
+++ b/include/openssl/err.h
@@ -356,10 +356,9 @@ void ERR_load_ERR_strings(void);
 #if OPENSSL_API_COMPAT < 0x10100000L
 # define ERR_load_crypto_strings() \
     OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
+# define ERR_free_strings() while(0) continue
 #endif
 
-void ERR_free_strings(void);
-
 void ERR_remove_thread_state(void);
 DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid)) /* if zero we
                                                               * look it up */
diff --git a/include/openssl/evp.h b/include/openssl/evp.h
index 25a3e6f..0dabdbc 100644
--- a/include/openssl/evp.h
+++ b/include/openssl/evp.h
@@ -888,11 +888,11 @@ const EVP_CIPHER *EVP_seed_ofb(void);
 # endif
 
 # if OPENSSL_API_COMPAT < 0x10100000L
-#   define OPENSSL_add_all_algorithms_conf() \
+#  define OPENSSL_add_all_algorithms_conf() \
     OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
                         | OPENSSL_INIT_ADD_ALL_DIGESTS \
                         | OPENSSL_INIT_LOAD_CONFIG, NULL)
-#   define OPENSSL_add_all_algorithms_noconf() \
+#  define OPENSSL_add_all_algorithms_noconf() \
     OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
                         | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
 
@@ -907,10 +907,12 @@ const EVP_CIPHER *EVP_seed_ofb(void);
                         | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
 #  endif
 
-#   define OpenSSL_add_all_ciphers() \
+#  define OpenSSL_add_all_ciphers() \
     OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL)
-#   define OpenSSL_add_all_digests() \
+#  define OpenSSL_add_all_digests() \
     OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
+
+#  define EVP_cleanup() while(0) continue
 # endif
 
 int EVP_add_cipher(const EVP_CIPHER *cipher);
@@ -918,7 +920,6 @@ int EVP_add_digest(const EVP_MD *digest);
 
 const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
 const EVP_MD *EVP_get_digestbyname(const char *name);
-void EVP_cleanup(void);
 
 void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph,
                                    const char *from, const char *to, void *x),
diff --git a/include/openssl/objects.h b/include/openssl/objects.h
index 05bc9b0..79e1d3d 100644
--- a/include/openssl/objects.h
+++ b/include/openssl/objects.h
@@ -1103,7 +1103,9 @@ const void *OBJ_bsearch_ex_(const void *key, const void *base, int num,
 int OBJ_new_nid(int num);
 int OBJ_add_object(const ASN1_OBJECT *obj);
 int OBJ_create(const char *oid, const char *sn, const char *ln);
-void OBJ_cleanup(void);
+#if OPENSSL_API_COMPAT < 0x10100000L
+# define OBJ_cleanup() while(0) continue
+#endif
 int OBJ_create_objects(BIO *in);
 
 size_t OBJ_length(const ASN1_OBJECT *obj);
diff --git a/include/openssl/rand.h b/include/openssl/rand.h
index 2a9a85c..d337ee7 100644
--- a/include/openssl/rand.h
+++ b/include/openssl/rand.h
@@ -92,7 +92,9 @@ const RAND_METHOD *RAND_get_rand_method(void);
 int RAND_set_rand_engine(ENGINE *engine);
 # endif
 RAND_METHOD *RAND_OpenSSL(void);
-void RAND_cleanup(void);
+#if OPENSSL_API_COMPAT < 0x10100000L
+# define RAND_cleanup() while(0) continue
+#endif
 int RAND_bytes(unsigned char *buf, int num);
 DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
 void RAND_seed(const void *buf, int num);
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
index b085c9e..ef7ef56 100644
--- a/include/openssl/ssl.h
+++ b/include/openssl/ssl.h
@@ -1835,7 +1835,9 @@ __owur const char *SSL_COMP_get_name(const COMP_METHOD *comp);
 STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);
 __owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP)
                                                       *meths);
-void SSL_COMP_free_compression_methods(void);
+#if OPENSSL_API_COMPAT < 0x10100000L
+# define SSL_COMP_free_compression_methods() while(0) continue
+#endif
 __owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm);
 
 const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr);
diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c
index 46fa3e8..d0d9d88 100644
--- a/ssl/ssl_ciph.c
+++ b/ssl/ssl_ciph.c
@@ -1883,9 +1883,6 @@ STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP)
 {
     return meths;
 }
-void SSL_COMP_free_compression_methods(void)
-{
-}
 int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm)
 {
     return 1;
@@ -1911,7 +1908,7 @@ static void cmeth_free(SSL_COMP *cm)
     OPENSSL_free(cm);
 }
 
-void SSL_COMP_free_compression_methods(void)
+void ssl_comp_free_compression_methods_int(void)
 {
     STACK_OF(SSL_COMP) *old_meths = ssl_comp_methods;
     ssl_comp_methods = NULL;
diff --git a/ssl/ssl_init.c b/ssl/ssl_init.c
index 413fa41..54892b9 100644
--- a/ssl/ssl_init.c
+++ b/ssl/ssl_init.c
@@ -57,7 +57,8 @@
 
 #include "e_os.h"
 
-#include <internal/threads.h>
+#include "internal/threads.h"
+#include "internal/err.h"
 #include <openssl/crypto.h>
 #include <openssl/evp.h>
 #include <assert.h>
@@ -197,24 +198,24 @@ static void ssl_library_stop(void)
 #ifndef OPENSSL_NO_COMP
 #ifdef OPENSSL_INIT_DEBUG
         fprintf(stderr, "OPENSSL_INIT: ssl_library_stop: "
-                        "SSL_COMP_free_compression_methods()\n");
+                        "ssl_comp_free_compression_methods_int()\n");
 #endif
-        SSL_COMP_free_compression_methods();
+        ssl_comp_free_compression_methods_int();
 #endif
     }
 
     if (ssl_strings_inited) {
 #ifdef OPENSSL_INIT_DEBUG
         fprintf(stderr, "OPENSSL_INIT: ssl_library_stop: "
-                        "ERR_free_strings()\n");
+                        "err_free_strings_int()\n");
 #endif
         /*
          * If both crypto and ssl error strings are inited we will end up
-         * calling ERR_free_strings() twice - but that's ok. The second time
-         * will be a no-op. It's easier to do that than to try and track
+         * calling err_free_strings_int() twice - but that's ok. The second
+         * time will be a no-op. It's easier to do that than to try and track
          * between the two libraries whether they have both been inited.
          */
-        ERR_free_strings();
+        err_free_strings_int();
     }
 }
 
diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
index c02dbbb..50e0d39 100644
--- a/ssl/ssl_locl.h
+++ b/ssl/ssl_locl.h
@@ -2195,6 +2195,8 @@ __owur int custom_ext_add(SSL *s, int server,
 __owur int custom_exts_copy(custom_ext_methods *dst, const custom_ext_methods *src);
 void custom_exts_free(custom_ext_methods *exts);
 
+void ssl_comp_free_compression_methods_int(void);
+
 # else
 
 #  define ssl_init_wbio_buffer SSL_test_functions()->p_ssl_init_wbio_buffer
diff --git a/util/libcrypto.num b/util/libcrypto.num
index af6762f..2b4d0fb 100644
--- a/util/libcrypto.num
+++ b/util/libcrypto.num
@@ -18,7 +18,7 @@ PKCS12_it                               16	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FU
 i2d_ASN1_OCTET_STRING                   17	1_1_0	EXIST::FUNCTION:
 EC_KEY_set_private_key                  18	1_1_0	EXIST::FUNCTION:EC
 SRP_VBASE_get_by_user                   19	1_1_0	EXIST::FUNCTION:DEPRECATEDIN_1_1_0,SRP
-CONF_modules_free                       20	1_1_0	EXIST::FUNCTION:
+CONF_modules_free                       20	1_1_0	NOEXIST::FUNCTION:
 Camellia_cfb128_encrypt                 21	1_1_0	EXIST::FUNCTION:CAMELLIA
 DES_ncbc_encrypt                        22	1_1_0	EXIST::FUNCTION:DES
 TS_REQ_get_ext_count                    23	1_1_0	EXIST::FUNCTION:TS
@@ -316,7 +316,7 @@ X509_STORE_CTX_init                     311	1_1_0	EXIST::FUNCTION:
 OCSP_RESPONSE_free                      312	1_1_0	EXIST::FUNCTION:
 ENGINE_set_DH                           313	1_1_0	EXIST::FUNCTION:ENGINE
 EVP_CIPHER_CTX_set_flags                314	1_1_0	EXIST::FUNCTION:
-ERR_free_strings                        315	1_1_0	EXIST::FUNCTION:
+ERR_free_strings                        315	1_1_0	NOEXIST::FUNCTION:
 PEM_write_bio_PKCS7_stream              316	1_1_0	EXIST::FUNCTION:
 d2i_X509_CERT_AUX                       317	1_1_0	EXIST::FUNCTION:
 UI_process                              318	1_1_0	EXIST::FUNCTION:
@@ -965,7 +965,7 @@ PKCS7_get0_signers                      940	1_1_0	EXIST::FUNCTION:
 X509_STORE_CTX_set_ex_data              941	1_1_0	EXIST::FUNCTION:
 TS_VERIFY_CTS_set_certs                 942	1_1_0	EXIST::FUNCTION:TS
 BN_MONT_CTX_copy                        943	1_1_0	EXIST::FUNCTION:
-CRYPTO_cleanup_all_ex_data              944	1_1_0	EXIST::FUNCTION:
+CRYPTO_cleanup_all_ex_data              944	1_1_0	NOEXIST::FUNCTION:
 OPENSSL_INIT_new                        945	1_1_0	EXIST::FUNCTION:
 TS_ACCURACY_dup                         946	1_1_0	EXIST::FUNCTION:TS
 i2d_ECPrivateKey                        947	1_1_0	EXIST::FUNCTION:EC
@@ -1281,7 +1281,7 @@ X509_CRL_cmp                            1243	1_1_0	EXIST::FUNCTION:
 DSO_METHOD_openssl                      1244	1_1_0	EXIST::FUNCTION:
 d2i_PrivateKey_fp                       1245	1_1_0	EXIST::FUNCTION:STDIO
 i2d_NETSCAPE_CERT_SEQUENCE              1246	1_1_0	EXIST::FUNCTION:
-COMP_zlib_cleanup                       1247	1_1_0	EXIST::FUNCTION:COMP
+COMP_zlib_cleanup                       1247	1_1_0	NOEXIST::FUNCTION:
 EC_POINT_oct2point                      1248	1_1_0	EXIST::FUNCTION:EC
 EVP_CIPHER_CTX_buf_noconst              1249	1_1_0	EXIST::FUNCTION:
 OPENSSL_DIR_read                        1250	1_1_0	EXIST::FUNCTION:
@@ -1824,7 +1824,7 @@ PKCS7_RECIP_INFO_free                   1771	1_1_0	EXIST::FUNCTION:
 ASN1_tag2bit                            1772	1_1_0	EXIST::FUNCTION:
 TS_REQ_add_ext                          1773	1_1_0	EXIST::FUNCTION:TS
 CRYPTO_get_new_dynlockid                1774	1_1_0	NOEXIST::FUNCTION:
-RAND_cleanup                            1775	1_1_0	EXIST::FUNCTION:
+RAND_cleanup                            1775	1_1_0	NOEXIST::FUNCTION:
 X509_digest                             1776	1_1_0	EXIST::FUNCTION:
 CRYPTO_THREAD_cleanup_local             1777	1_1_0	EXIST::FUNCTION:
 NETSCAPE_CERT_SEQUENCE_it               1778	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
@@ -2873,7 +2873,7 @@ RSAPrivateKey_it                        2777	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION
 RSAPrivateKey_it                        2777	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA
 X509_NAME_ENTRY_free                    2778	1_1_0	EXIST::FUNCTION:
 BIO_new_fd                              2779	1_1_0	EXIST::FUNCTION:
-ENGINE_cleanup                          2780	1_1_0	EXIST::FUNCTION:ENGINE
+ENGINE_cleanup                          2780	1_1_0	NOEXIST::FUNCTION:
 sk_value                                2781	1_1_0	EXIST::FUNCTION:
 NCONF_get_section                       2782	1_1_0	EXIST::FUNCTION:
 PKCS12_MAC_DATA_it                      2783	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
@@ -3664,7 +3664,7 @@ BN_dec2bn                               3549	1_1_0	EXIST::FUNCTION:
 CMS_decrypt                             3550	1_1_0	EXIST::FUNCTION:CMS
 BN_mpi2bn                               3551	1_1_0	EXIST::FUNCTION:
 EVP_aes_128_cfb128                      3552	1_1_0	EXIST::FUNCTION:AES
-EVP_cleanup                             3553	1_1_0	EXIST::FUNCTION:
+EVP_cleanup                             3553	1_1_0	NOEXIST::FUNCTION:
 RC5_32_ecb_encrypt                      3554	1_1_0	EXIST::FUNCTION:RC5
 EVP_CIPHER_meth_new                     3555	1_1_0	EXIST::FUNCTION:
 i2d_RSA_OAEP_PARAMS                     3556	1_1_0	EXIST::FUNCTION:RSA
@@ -3783,7 +3783,7 @@ ERR_load_DH_strings                     3664	1_1_0	EXIST::FUNCTION:DH
 EVP_MD_block_size                       3665	1_1_0	EXIST::FUNCTION:
 TS_X509_ALGOR_print_bio                 3666	1_1_0	EXIST::FUNCTION:TS
 d2i_PKCS7_ENVELOPE                      3667	1_1_0	EXIST::FUNCTION:
-OBJ_cleanup                             3668	1_1_0	EXIST::FUNCTION:
+OBJ_cleanup                             3668	1_1_0	NOEXIST::FUNCTION:
 ESS_CERT_ID_new                         3669	1_1_0	EXIST::FUNCTION:TS
 EC_POINT_invert                         3670	1_1_0	EXIST::FUNCTION:EC
 CAST_set_key                            3671	1_1_0	EXIST::FUNCTION:CAST
@@ -4009,7 +4009,7 @@ CMS_add0_RevocationInfoChoice           3880	1_1_0	EXIST::FUNCTION:CMS
 ASN1_PCTX_get_flags                     3881	1_1_0	EXIST::FUNCTION:
 EVP_MD_meth_set_result_size             3882	1_1_0	EXIST::FUNCTION:
 i2d_X509_CRL                            3883	1_1_0	EXIST::FUNCTION:
-BIO_sock_cleanup                        3884	1_1_0	EXIST::FUNCTION:
+BIO_sock_cleanup                        3884	1_1_0	NOEXIST::FUNCTION:
 ASN1_INTEGER_it                         3885	1_1_0	EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
 ASN1_INTEGER_it                         3885	1_1_0	EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
 TS_ACCURACY_new                         3886	1_1_0	EXIST::FUNCTION:TS
@@ -4196,3 +4196,5 @@ DH_meth_set_bn_mod_exp                  4066	1_1_0	EXIST::FUNCTION:DH
 DH_meth_set_generate_key                4067	1_1_0	EXIST::FUNCTION:DH
 DH_meth_free                            4068	1_1_0	EXIST::FUNCTION:DH
 DH_meth_get_generate_key                4069	1_1_0	EXIST::FUNCTION:DH
+err_load_crypto_strings_int             4070	1_1_0	EXIST::FUNCTION:
+err_free_strings_int                    4071	1_1_0	EXIST::FUNCTION:
diff --git a/util/libssl.num b/util/libssl.num
index 74f2c8a..bcf1ac3 100644
--- a/util/libssl.num
+++ b/util/libssl.num
@@ -7,7 +7,7 @@ SSL_copy_session_id                     6	1_1_0	EXIST::FUNCTION:
 SSL_CTX_set_srp_password                7	1_1_0	EXIST::FUNCTION:SRP
 SSL_shutdown                            8	1_1_0	EXIST::FUNCTION:
 SSL_CTX_set_msg_callback                9	1_1_0	EXIST::FUNCTION:
-SSL_COMP_free_compression_methods       10	1_1_0	EXIST::FUNCTION:
+SSL_COMP_free_compression_methods       10	1_1_0	NOEXIST::FUNCTION:
 SSL_SESSION_get0_ticket                 11	1_1_0	EXIST::FUNCTION:
 SSL_get1_supported_ciphers              12	1_1_0	EXIST::FUNCTION:
 SSL_state_string_long                   13	1_1_0	EXIST::FUNCTION:
diff --git a/util/mkdef.pl b/util/mkdef.pl
index ea87486..9f8d561 100755
--- a/util/mkdef.pl
+++ b/util/mkdef.pl
@@ -240,6 +240,7 @@ my $crypto ="include/openssl/crypto.h";
 $crypto.=" include/internal/o_dir.h";
 $crypto.=" include/internal/o_str.h";
 $crypto.=" include/internal/threads.h";
+$crypto.=" include/internal/err.h";
 $crypto.=" include/openssl/des.h" ; # unless $no_des;
 $crypto.=" include/openssl/idea.h" ; # unless $no_idea;
 $crypto.=" include/openssl/rc4.h" ; # unless $no_rc4;


More information about the openssl-commits mailing list