commit | 62d8540fcc411558aed8457e1a92ea1f4e0d039e | [log] [tgz] |
---|---|---|
author | David Benjamin <davidben@google.com> | Mon Sep 23 14:50:53 2024 -0400 |
committer | Boringssl LUCI CQ <boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Sep 23 20:20:03 2024 +0000 |
tree | d2cfa5691e6920fa9f20106c50ebfc7fb6f8e90c | |
parent | 505c2c6277835b1689969e01edd26a1fe03f38b4 [diff] |
Rework the Bazel workaround's relationship with linkstatic Due to a longstanding Bazel flaw (https://github.com/bazelbuild/bazel/issues/22041), we need to split all our mixed C/C++ targets in two. Ideally this split would behave as if the Bazel flaw were fixed, with the split-out library statically linked with the other source files. Accordingly, the helper macro sets linkstatic = True. It turns out linkstatic = True does not work this way. Bazel interprets linkstatic such that, if A(test, linkshared) -> B(library) -> C(library, linkstatic), C will be statically linked into A, not B. This is probably to avoid diamond dependency problems but means it is not possible for a cc_library split to be transparent, only cc_binary and cc_test. So what is happening is that every cc_test that links libcrypto is getting mlkem.cc statically linked into it, separate from the rest of libcrypto! That means we're getting the worst of both worlds: worse cache hit rate for tests that link libcrypto AND our C/C++ bits are still not contained in the same library. linkstatic = True on the helper is still valuable in cc_test and cc_binary, but otherwise inherit the outer value. Change-Id: I1089c58c6ddaa90c89efd8cdcebd88169b0236c8 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/71508 Reviewed-by: Bob Beck <bbe@google.com> Commit-Queue: David Benjamin <davidben@google.com>
BoringSSL is a fork of OpenSSL that is designed to meet Google's needs.
Although BoringSSL is an open source project, it is not intended for general use, as OpenSSL is. We don't recommend that third parties depend upon it. Doing so is likely to be frustrating because there are no guarantees of API or ABI stability.
Programs ship their own copies of BoringSSL when they use it and we update everything as needed when deciding to make API changes. This allows us to mostly avoid compromises in the name of compatibility. It works for us, but it may not work for you.
BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built up a large number of patches that were maintained while tracking upstream OpenSSL. As Google's product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved in maintaining all these patches in multiple places was growing steadily.
Currently BoringSSL is the SSL library in Chrome/Chromium, Android (but it's not part of the NDK) and a number of other apps/programs.
Project links:
To file a security issue, use the Chromium process and mention in the report this is for BoringSSL. You can ignore the parts of the process that are specific to Chromium/Chrome.
There are other files in this directory which might be helpful: