Mark some transitive includes as IWYU export.

This reflects some assumptions we have on our headers:

- <openssl/foo.h> pulls in <openssl/base.h>. In particular, the
  canonical FOO typedefs for foo_st all live forward declared in
  <opessl/base.h>, but including <openssl/foo.h> is sufficient to use
  FOO.

- <openssl/base.h> pulls in <stdint.h> and <stddef.h> so we don't have
  to keep including it.

Add IWYU exports to reflect this so that clang's include cleaner gets
less upset. It's a bit of a blunt instrument because it also means that
<openssl/foo.h> lets you use the forward-declared BAR typedef, and
downstream projects might still prefer to explicit include <stdint.h>
when they use it (we use it so much that it would be too much), but I
think this is fine.

NB: By adding these, we're essentially promising we won't include those
transitive includes because downstream code might accidentally start
relying on it.

Change-Id: I705fe6d1026fbd302ed0f070a0cf7658a70af8ef
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/77687
Reviewed-by: Bob Beck <bbe@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
This commit is contained in:
David Benjamin
2025-03-15 21:26:20 +07:00
committed by Boringssl LUCI CQ
parent 808b8f3b9d
commit 30b7a01dd4
73 changed files with 77 additions and 75 deletions
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_AEAD_H
#define OPENSSL_HEADER_AEAD_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_AES_H
#define OPENSSL_HEADER_AES_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_ASN1_H
#define OPENSSL_HEADER_ASN1_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <time.h>
+1 -1
View File
@@ -16,7 +16,7 @@
#define OPENSSL_HEADER_ASN1T_H
#include <openssl/asn1.h>
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+5 -3
View File
@@ -16,10 +16,12 @@
#define OPENSSL_HEADER_BASE_H
// This file should be the first included by all BoringSSL headers.
// This file should be the first included by all BoringSSL headers. All
// BoringSSL headers can be assumed to import this file, and this header can be
// assumed to include stddef.h (size_t) and stdint.h (uint*_t, etc).
#include <stddef.h>
#include <stdint.h>
#include <stddef.h> // IWYU pragma: export
#include <stdint.h> // IWYU pragma: export
#include <stdlib.h>
#include <sys/types.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_BASE64_H
#define OPENSSL_HEADER_BASE64_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_BCM_PUBLIC_H_
#define OPENSSL_HEADER_BCM_PUBLIC_H_
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_BIO_H
#define OPENSSL_HEADER_BIO_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <stdio.h> // For FILE
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_BLAKE2_H
#define OPENSSL_HEADER_BLAKE2_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_BLOWFISH_H
#define OPENSSL_HEADER_BLOWFISH_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#ifdef __cplusplus
extern "C" {
+1 -1
View File
@@ -16,7 +16,7 @@
#ifndef OPENSSL_HEADER_BN_H
#define OPENSSL_HEADER_BN_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/thread.h>
#include <inttypes.h> // for PRIu64 and friends
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_BUFFER_H
#define OPENSSL_HEADER_BUFFER_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_BYTESTRING_H
#define OPENSSL_HEADER_BYTESTRING_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/span.h>
#include <time.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_CAST_H
#define OPENSSL_HEADER_CAST_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#ifdef __cplusplus
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_CHACHA_H
#define OPENSSL_HEADER_CHACHA_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_CIPHER_H
#define OPENSSL_HEADER_CIPHER_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_CMAC_H
#define OPENSSL_HEADER_CMAC_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_CONF_H
#define OPENSSL_HEADER_CONF_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/stack.h>
#include <openssl/lhash.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_CRYPTO_H
#define OPENSSL_HEADER_CRYPTO_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/sha.h>
// Upstream OpenSSL defines |OPENSSL_malloc|, etc., in crypto.h rather than
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_CTRDRBG_H
#define OPENSSL_HEADER_CTRDRBG_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_CURVE25519_H
#define OPENSSL_HEADER_CURVE25519_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_DES_H
#define OPENSSL_HEADER_DES_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_DH_H
#define OPENSSL_HEADER_DH_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/thread.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_DIGEST_H
#define OPENSSL_HEADER_DIGEST_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_DSA_H
#define OPENSSL_HEADER_DSA_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/ex_data.h>
+1 -1
View File
@@ -15,4 +15,4 @@
/* This header is provided in order to make compiling against code that expects
OpenSSL easier. */
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
+1 -1
View File
@@ -16,7 +16,7 @@
#ifndef OPENSSL_HEADER_EC_H
#define OPENSSL_HEADER_EC_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -16,7 +16,7 @@
#ifndef OPENSSL_HEADER_EC_KEY_H
#define OPENSSL_HEADER_EC_KEY_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/ec.h>
#include <openssl/engine.h>
+1 -1
View File
@@ -16,7 +16,7 @@
#ifndef OPENSSL_HEADER_ECDH_H
#define OPENSSL_HEADER_ECDH_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/ec_key.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_ECDSA_H
#define OPENSSL_HEADER_ECDSA_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/ec_key.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_ENGINE_H
#define OPENSSL_HEADER_ENGINE_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -17,7 +17,7 @@
#include <stdio.h>
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_EVP_H
#define OPENSSL_HEADER_EVP_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/evp_errors.h> // IWYU pragma: export
#include <openssl/thread.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_EX_DATA_H
#define OPENSSL_HEADER_EX_DATA_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/stack.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_KYBER_H
#define OPENSSL_HEADER_KYBER_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_HKDF_H
#define OPENSSL_HEADER_HKDF_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_HMAC_H
#define OPENSSL_HEADER_HMAC_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/digest.h>
+1 -1
View File
@@ -16,7 +16,7 @@
#define OPENSSL_HEADER_CRYPTO_HPKE_INTERNAL_H
#include <openssl/aead.h>
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/curve25519.h>
#include <openssl/digest.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_HRSS_H
#define OPENSSL_HEADER_HRSS_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_KDF_H
#define OPENSSL_HEADER_KDF_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_LHASH_H
#define OPENSSL_HEADER_LHASH_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_MD4_H
#define OPENSSL_HEADER_MD4_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_MD5_H
#define OPENSSL_HEADER_MD5_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_MEM_H
#define OPENSSL_HEADER_MEM_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <stdlib.h>
#include <stdarg.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_MLDSA_H_
#define OPENSSL_HEADER_MLDSA_H_
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_MLKEM_H
#define OPENSSL_HEADER_MLKEM_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -17,7 +17,7 @@
#ifndef OPENSSL_HEADER_NID_H
#define OPENSSL_HEADER_NID_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_OBJ_H
#define OPENSSL_HEADER_OBJ_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/bytestring.h>
#include <openssl/nid.h> // IWYU pragma: export
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_PKCS7_H
#define OPENSSL_HEADER_PKCS7_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/stack.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_PKCS8_H
#define OPENSSL_HEADER_PKCS8_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/x509.h>
+1 -1
View File
@@ -19,7 +19,7 @@
#include <string>
#include <string_view>
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/span.h>
BSSL_NAMESPACE_BEGIN
+1 -1
View File
@@ -15,7 +15,7 @@
#if !defined(OPENSSL_HEADER_BSSL_PKI_OCSP_H_) && defined(__cplusplus)
#define OPENSSL_HEADER_BSSL_PKI_OCSP_H_
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <string_view>
#include <optional>
+1 -1
View File
@@ -15,7 +15,7 @@
#if !defined(BSSL_PKI_SIGNATURE_VERIFY_CACHE_H_) && defined(__cplusplus)
#define BSSL_PKI_SIGNATURE_VERIFY_CACHE_H_
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <string>
BSSL_NAMESPACE_BEGIN
+1 -1
View File
@@ -15,7 +15,7 @@
#if !defined(OPENSSL_HEADER_BSSL_PKI_VERIFY_ERROR_H_) && defined(__cplusplus)
#define OPENSSL_HEADER_BSSL_PKI_VERIFY_ERROR_H_
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <string>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_POLY1305_H
#define OPENSSL_HEADER_POLY1305_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#ifdef __cplusplus
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_POOL_H
#define OPENSSL_HEADER_POOL_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/stack.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_POSIX_TIME_H
#define OPENSSL_HEADER_POSIX_TIME_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <time.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_RAND_H
#define OPENSSL_HEADER_RAND_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_RC4_H
#define OPENSSL_HEADER_RC4_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_RIPEMD_H
#define OPENSSL_HEADER_RIPEMD_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#ifdef __cplusplus
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_RSA_H
#define OPENSSL_HEADER_RSA_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/engine.h>
#include <openssl/ex_data.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_SERVICE_INDICATOR_H
#define OPENSSL_HEADER_SERVICE_INDICATOR_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_SHA_H
#define OPENSSL_HEADER_SHA_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/bcm_public.h> // IWYU pragma: export
#if defined(__cplusplus)
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_SIPHASH_H
#define OPENSSL_HEADER_SIPHASH_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_SLHDSA_H
#define OPENSSL_HEADER_SLHDSA_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_SSL_SPAN_H
#define OPENSSL_HEADER_SSL_SPAN_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if !defined(BORINGSSL_NO_CXX)
+1 -1
View File
@@ -17,7 +17,7 @@
#ifndef OPENSSL_HEADER_SSL_H
#define OPENSSL_HEADER_SSL_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/bio.h>
#include <openssl/buf.h>
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_STACK_H
#define OPENSSL_HEADER_STACK_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -17,7 +17,7 @@
#include <sys/types.h>
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -17,7 +17,7 @@
#ifndef OPENSSL_HEADER_TLS1_H
#define OPENSSL_HEADER_TLS1_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#ifdef __cplusplus
extern "C" {
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_TRUST_TOKEN_H
#define OPENSSL_HEADER_TRUST_TOKEN_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <openssl/stack.h>
#if defined(__cplusplus)
+1 -1
View File
@@ -15,7 +15,7 @@
#ifndef OPENSSL_HEADER_TYPE_CHECK_H
#define OPENSSL_HEADER_TYPE_CHECK_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#if defined(__cplusplus)
extern "C" {
+1 -1
View File
@@ -16,7 +16,7 @@
#ifndef OPENSSL_HEADER_X509_H
#define OPENSSL_HEADER_X509_H
#include <openssl/base.h>
#include <openssl/base.h> // IWYU pragma: export
#include <time.h>