diff --git a/bazel/external/googleurl.patch b/bazel/external/googleurl.patch index e124821f9acee..8c27b8f327ceb 100644 --- a/bazel/external/googleurl.patch +++ b/bazel/external/googleurl.patch @@ -2,22 +2,22 @@ # project using clang-cl. Tracked in https://github.com/envoyproxy/envoy/issues/11974. diff --git a/base/compiler_specific.h b/base/compiler_specific.h -index 0cd36dc..8c4cbd4 100644 +index 6651220..a469c19 100644 --- a/base/compiler_specific.h +++ b/base/compiler_specific.h @@ -7,10 +7,6 @@ - + #include "build/build_config.h" - + -#if defined(COMPILER_MSVC) && !defined(__clang__) -#error "Only clang-cl is supported on Windows, see https://crbug.com/988071" -#endif - - // Annotate a variable indicating it's ok if the variable is not used. - // (Typically used to silence a compiler warning when the assignment - // is important for some other reason.) -@@ -55,8 +51,12 @@ - // prevent code folding, see gurl_base::debug::Alias. + // This is a wrapper around `__has_cpp_attribute`, which can be used to test for + // the presence of an attribute. In case the compiler does not support this + // macro it will simply evaluate to 0. +@@ -75,8 +71,12 @@ + // prevent code folding, see NO_CODE_FOLDING() in base/debug/alias.h. // Use like: // void NOT_TAIL_CALLED FooBar(); -#if defined(__clang__) && __has_attribute(not_tail_called) @@ -30,10 +30,10 @@ index 0cd36dc..8c4cbd4 100644 #else #define NOT_TAIL_CALLED #endif -@@ -226,7 +226,9 @@ +@@ -273,7 +273,9 @@ #endif #endif - + -#if defined(__clang__) && __has_attribute(uninitialized) +#if defined(__clang__) +#if defined(__has_attribute) @@ -41,7 +41,7 @@ index 0cd36dc..8c4cbd4 100644 // Attribute "uninitialized" disables -ftrivial-auto-var-init=pattern for // the specified variable. // Library-wide alternative is -@@ -257,6 +259,8 @@ +@@ -304,6 +306,8 @@ // E.g. platform, bot, benchmark or test name in patch description or next to // the attribute. #define STACK_UNINITIALIZED __attribute__((uninitialized)) @@ -50,13 +50,74 @@ index 0cd36dc..8c4cbd4 100644 #else #define STACK_UNINITIALIZED #endif +@@ -365,8 +369,12 @@ inline constexpr bool AnalyzerAssumeTrue(bool arg) { + #endif // defined(__clang_analyzer__) + + // Use nomerge attribute to disable optimization of merging multiple same calls. +-#if defined(__clang__) && __has_attribute(nomerge) ++#if defined(__clang__) ++#if defined(__has_attribute) ++#if __has_attribute(nomerge) + #define NOMERGE [[clang::nomerge]] ++#endif ++#endif + #else + #define NOMERGE + #endif +@@ -392,8 +400,12 @@ inline constexpr bool AnalyzerAssumeTrue(bool arg) { + // See also: + // https://clang.llvm.org/docs/AttributeReference.html#trivial-abi + // https://libcxx.llvm.org/docs/DesignDocs/UniquePtrTrivialAbi.html +-#if defined(__clang__) && __has_attribute(trivial_abi) ++#if defined(__clang__) ++#if defined(__has_attribute) ++#if __has_attribute(trivial_abi) + #define TRIVIAL_ABI [[clang::trivial_abi]] ++#endif ++#endif + #else + #define TRIVIAL_ABI + #endif +@@ -401,8 +413,12 @@ inline constexpr bool AnalyzerAssumeTrue(bool arg) { + // Marks a member function as reinitializing a moved-from variable. + // See also + // https://clang.llvm.org/extra/clang-tidy/checks/bugprone-use-after-move.html#reinitialization +-#if defined(__clang__) && __has_attribute(reinitializes) ++#if defined(__clang__) ++#if defined(__has_attribute) ++#if __has_attribute(reinitializes) + #define REINITIALIZES_AFTER_MOVE [[clang::reinitializes]] ++#endif ++#endif + #else + #define REINITIALIZES_AFTER_MOVE + #endif + +# TODO(keith): Remove once bazel supports newer NDK versions https://github.com/bazelbuild/bazel/issues/12889 + +diff --git a/base/containers/checked_iterators.h b/base/containers/checked_iterators.h +index b5fe925..31aa81e 100644 +--- a/base/containers/checked_iterators.h ++++ b/base/containers/checked_iterators.h +@@ -237,9 +237,11 @@ using CheckedContiguousConstIterator = CheckedContiguousIterator; + // [3] https://wg21.link/pointer.traits.optmem + namespace std { + ++#ifdef SUPPORTS_CPP_17_CONTIGUOUS_ITERATOR + template + struct __is_cpp17_contiguous_iterator<::gurl_base::CheckedContiguousIterator> + : true_type {}; ++#endif + + template + struct pointer_traits<::gurl_base::CheckedContiguousIterator> { # TODO(dio): Consider to remove the following patch when we have IDN-free optional build for URL # library from the upstream Chromium project. This is tracked in: # https://github.com/envoyproxy/envoy/issues/14743. diff --git a/url/BUILD b/url/BUILD -index f2ec8da..4e2d55b 100644 +index f2ec8da..df69661 100644 --- a/url/BUILD +++ b/url/BUILD @@ -52,3 +52,27 @@ cc_library( diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index bc674cb74ca12..7ab1cf9285ac2 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -850,13 +850,13 @@ REPOSITORY_LOCATIONS_SPEC = dict( project_name = "Chrome URL parsing library", project_desc = "Chrome URL parsing library", project_url = "https://quiche.googlesource.com/googleurl", - # Static snapshot of https://quiche.googlesource.com/quiche/+archive/ef0d23689e240e6c8de4c3a5296b209128c87373.tar.gz. - version = "ef0d23689e240e6c8de4c3a5296b209128c87373", - sha256 = "d769283fed1319bca68bae8bdd47fbc3a7933999329eee850eff1f1ea61ce176", + # Static snapshot of https://quiche.googlesource.com/googleurl/+archive/561705e0066ff11e6cb97b8092f1547835beeb92.tar.gz. + version = "561705e0066ff11e6cb97b8092f1547835beeb92", + sha256 = "7ce00768fea1fa4c7bf658942f13e41c9ba30e9cff931a6cda2f9fd02289f673", urls = ["https://storage.googleapis.com/quiche-envoy-integration/googleurl_{version}.tar.gz"], use_category = ["controlplane", "dataplane_core"], extensions = [], - release_date = "2020-07-30", + release_date = "2021-08-31", cpe = "N/A", ), com_google_cel_cpp = dict( diff --git a/envoy/common/platform.h b/envoy/common/platform.h index 96ed53f8562a2..570713dca67a1 100644 --- a/envoy/common/platform.h +++ b/envoy/common/platform.h @@ -305,6 +305,14 @@ struct mmsghdr { #endif // __ANDROID_API__ < 24 #endif // ifdef __ANDROID_API__ +// TODO: Remove once bazel supports NDKs > 21 +#define SUPPORTS_CPP_17_CONTIGUOUS_ITERATOR +#ifdef __ANDROID_API__ +#if __ANDROID_API__ < 24 +#undef SUPPORTS_CPP_17_CONTIGUOUS_ITERATOR +#endif // __ANDROID_API__ < 24 +#endif // ifdef __ANDROID_API__ + // https://android.googlesource.com/platform/bionic/+/master/docs/status.md // ``pthread_getname_np`` is introduced in API 26 #define SUPPORTS_PTHREAD_NAMING 0