Some notes from updating OpenSSL from 1.1.0j to 1.1.1b. These notes are not intended to be complete yet, but might become more so after a few update rounds. These notes apply to a 64-bit Linux host and may need to be adjusted for others. For updating the minor version just applying the changes between the current and upstream should be enough, instead of steps 3 and later. Finish of with kmk check-openssl-mangling. 1) kmk recreate-openssl-asm needs to be run. In the OpenSSL sub-folder? 2) kmk openssl-mangling.h should be run with VBOX_WITH_GCC_SANITIZER:= and VBOX_NEED_EXTPACK_OPENSSL=1 set in the OpenSSL sub-folder. Do a normal kmk with those options in that folder first. 3) Unpack and configure an unmodified upstream OpenSSL and capture the build output. Configuration used: $ ./config no-err no-dso no-camellia no-cast no-comp no-des no-ecdh no-ecdsa \ no-engine no-idea no-rc2 no-rmd160 no-mdc2 enable-md2 no-md4 no-ssl3 \ no-whirlpool no-poly1305 Get the list of source files built and check whether any of them are missing in our makefiles. E.g. for crypto: $ names=`cat openssl.out | sed -n 's|.* crypto/\([^ ]*/[^ ]*\.[cs]$\)|\1|p'` $ for i in $names; do case $i in *.s) i=${i%.s}.S; esac grep -q ${i#*/} /crypto/${i%%/*}/Makefile.kmk || echo $i done Check Configurations/00-base-templates.conf to see which asm source files are needed for which modules for x86, x86_64 and no asm. 4) Check that we do not have any files in our makefiles which should not be there: $ for i in crypto/*/Makefile.kmk; do base=${i#crypto/}; folder=${base%/Makefile.kmk}; list=$(sed -n 's;.*[\t /]\([^ /]*\.[cS]\) *\\*$;\1;p' $i | sort -u); for j in $list; do case $j in *.S) j=${j%.S}.s; esac; grep -q "$folder[^ ]*/$j" /Makefile || echo $folder/$j; done; done There will be some hits for files which are not built for the current target. 5) Run diff on the generated and our opensslconf.h and bn_conf.h and dso_conf.h and adjust as necessary. 6) Update TEMPLATE_LIBCRYPTO_DEFS from CPPFLAGS_Q in the OpenSSL generated makefile.