Skip to content

[FuzzTest] Update FuzzTest to 2026-06-29 - #9394

Open
tlively wants to merge 1 commit into
mainfrom
update-fuzztest
Open

tlively wants to merge 1 commit into
mainfrom
update-fuzztest

Conversation

@tlively

@tlively tlively commented Nov 13, 2026

Copy link
Copy Markdown
Member

GitHub Actions recently updated ubuntu-latest to Ubuntu 26.04, which ships GCC 15's libstdc++ headers without transitive <cstdint> includes. The previously pinned FuzzTest submodule fetched abseil-cpp 20240116.0, which failed to compile under GCC 15's libstdc++ due to a missing uintptr_t declaration in absl/container/internal/container_memory.h.

Update third_party/fuzztest to the 2026-06-29 release tag (which updates abseil-cpp to 20260526.0) along with two compatibility fixes:

  1. Inherit std::variant constructors via using variant::variant; in the std::variant wrapper structs in test/gtest/type-domains.h, as FuzzTest's VariantOfImpl::GetValue now constructs custom variant types using std::in_place_index<I>.

  2. Restore Binaryen's CMAKE_CXX_STANDARD (20) when configuring Abseil via CMAKE_PROJECT_absl_INCLUDE in third_party/CMakeLists.txt. FuzzTest's CMakeLists.txt unconditionally sets CMAKE_CXX_STANDARD to 17, which otherwise builds libabsl_status with C++17 absl::SourceLocation while binaryen-unittests compiles with C++20 std::source_location, causing an ABI link mismatch. With ABSL_PROPAGATE_CXX_STD enabled, configuring Abseil with C++20 also propagates -std=c++20 to FuzzTest.

GitHub Actions recently updated `ubuntu-latest` to Ubuntu 26.04, which ships GCC 15's `libstdc++` headers without transitive `<cstdint>` includes. The previously pinned FuzzTest submodule fetched `abseil-cpp` `20240116.0`, which failed to compile under GCC 15's `libstdc++` due to a missing `uintptr_t` declaration in `absl/container/internal/container_memory.h`.

Update `third_party/fuzztest` to the `2026-06-29` release tag (which updates `abseil-cpp` to `20260526.0`) along with two compatibility fixes:

1. Inherit `std::variant` constructors via `using variant::variant;` in the `std::variant` wrapper structs in `test/gtest/type-domains.h`, as FuzzTest's `VariantOfImpl::GetValue` now constructs custom variant types using `std::in_place_index<I>`.

2. Restore Binaryen's `CMAKE_CXX_STANDARD` (`20`) when configuring Abseil via `CMAKE_PROJECT_absl_INCLUDE` in `third_party/CMakeLists.txt`. FuzzTest's `CMakeLists.txt` unconditionally sets `CMAKE_CXX_STANDARD` to `17`, which otherwise builds `libabsl_status` with C++17 `absl::SourceLocation` while `binaryen-unittests` compiles with C++20 `std::source_location`, causing an ABI link mismatch. With `ABSL_PROPAGATE_CXX_STD` enabled, configuring Abseil with C++20 also propagates `-std=c++20` to FuzzTest.
@tlively
tlively requested a review from kripken November 13, 2026 21:49
@tlively

tlively commented Nov 13, 2026

Copy link
Copy Markdown
Member Author

If this doesn't seem worth the complexity, we can just delete fuzztest instead. It's still used only experimentally and is not load bearing. But I think it might be worth keeping around in case we want to use it more in the future.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants