From 89decce0b48bae0bc041a944e40f848af4cd8ac5 Mon Sep 17 00:00:00 2001 From: Nuri Jung Date: Wed, 15 Jul 2026 23:22:03 +0900 Subject: [PATCH] Link Threads::Threads in tests that use threads directly These tests reference pthread symbols (via std::thread or thread-local storage) but relied on transitive linkage through the gtest shared library to pull in libpthread. That is fragile and breaks when building the monolithic shared library (ABSL_BUILD_MONOLITHIC_SHARED_LIBS) on platforms where libpthread is a separate DSO (glibc < 2.34): the monolithic DLL links Threads::Threads privately, so a test whose only non-gtest dependency is the DLL (e.g. lifetime_test) fails to link with an undefined reference to pthread_join. Depend on Threads::Threads explicitly, matching low_level_alloc_test and thread_identity_test. --- absl/base/CMakeLists.txt | 6 ++++++ absl/container/CMakeLists.txt | 3 +++ absl/debugging/CMakeLists.txt | 2 ++ absl/flags/CMakeLists.txt | 2 ++ absl/log/CMakeLists.txt | 13 +++++++++++++ absl/profiling/CMakeLists.txt | 2 ++ absl/random/CMakeLists.txt | 4 ++++ absl/strings/CMakeLists.txt | 6 ++++++ absl/synchronization/CMakeLists.txt | 7 +++++++ absl/time/CMakeLists.txt | 2 ++ 10 files changed, 47 insertions(+) diff --git a/absl/base/CMakeLists.txt b/absl/base/CMakeLists.txt index 2a20d74e846..d7bfaa8cbf7 100644 --- a/absl/base/CMakeLists.txt +++ b/absl/base/CMakeLists.txt @@ -483,6 +483,7 @@ absl_cc_test( DEPS absl::errno_saver absl::strerror + Threads::Threads GTest::gmock GTest::gtest_main ) @@ -533,6 +534,7 @@ absl_cc_test( absl::config absl::core_headers absl::synchronization + Threads::Threads GTest::gtest_main ) @@ -577,6 +579,7 @@ absl_cc_test( DEPS absl::config absl::synchronization + Threads::Threads GTest::gtest_main ) @@ -591,6 +594,7 @@ absl_cc_test( absl::base absl::core_headers absl::synchronization + Threads::Threads GTest::gtest_main ) @@ -632,6 +636,7 @@ absl_cc_test( DEPS absl::base absl::synchronization + Threads::Threads GTest::gtest_main ) @@ -756,6 +761,7 @@ absl_cc_test( DEPS absl::strerror absl::strings + Threads::Threads GTest::gmock GTest::gtest_main ) diff --git a/absl/container/CMakeLists.txt b/absl/container/CMakeLists.txt index 2f89efed1d4..c28ec3c0e2a 100644 --- a/absl/container/CMakeLists.txt +++ b/absl/container/CMakeLists.txt @@ -602,6 +602,7 @@ absl_cc_test( DEPS absl::container_memory absl::hash_policy_traits + Threads::Threads GTest::gmock_main ) @@ -628,6 +629,7 @@ absl_cc_test( DEPS absl::common_policy_traits absl::config + Threads::Threads GTest::gmock_main ) @@ -664,6 +666,7 @@ absl_cc_test( absl::config absl::hashtablez_sampler absl::random_random + Threads::Threads GTest::gmock_main ) diff --git a/absl/debugging/CMakeLists.txt b/absl/debugging/CMakeLists.txt index fbdb550f832..8355ac5d3d7 100644 --- a/absl/debugging/CMakeLists.txt +++ b/absl/debugging/CMakeLists.txt @@ -60,6 +60,7 @@ absl_cc_test( absl::core_headers absl::errno_saver absl::span + Threads::Threads GTest::gmock_main ) @@ -117,6 +118,7 @@ absl_cc_test( absl::strings absl::str_format absl::symbolize + Threads::Threads GTest::gmock ) diff --git a/absl/flags/CMakeLists.txt b/absl/flags/CMakeLists.txt index 0c75c93dee8..9f97b23d2a3 100644 --- a/absl/flags/CMakeLists.txt +++ b/absl/flags/CMakeLists.txt @@ -355,6 +355,7 @@ absl_cc_test( absl::raw_logging_internal absl::strings absl::time + Threads::Threads GTest::gtest_main ) @@ -443,6 +444,7 @@ absl_cc_test( absl::base absl::flags_internal absl::time + Threads::Threads GTest::gmock_main ) diff --git a/absl/log/CMakeLists.txt b/absl/log/CMakeLists.txt index e0a307b3aff..09f37f9dff9 100644 --- a/absl/log/CMakeLists.txt +++ b/absl/log/CMakeLists.txt @@ -807,6 +807,7 @@ absl_cc_test( absl::vlog_is_on absl::log_severity absl::flags + Threads::Threads GTest::gmock_main ) @@ -870,6 +871,7 @@ absl_cc_test( absl::log_internal_test_helpers absl::log_internal_test_matchers absl::scoped_mock_log + Threads::Threads GTest::gmock_main ) @@ -930,6 +932,7 @@ absl_cc_test( absl::log_internal_test_helpers absl::log_internal_test_matchers absl::scoped_mock_log + Threads::Threads GTest::gmock_main ) @@ -979,6 +982,7 @@ absl_cc_test( absl::flags_reflection absl::scoped_mock_log absl::strings + Threads::Threads GTest::gmock_main ) @@ -999,6 +1003,7 @@ absl_cc_test( absl::log_internal_test_helpers absl::log_severity absl::scoped_mock_log + Threads::Threads GTest::gmock_main ) @@ -1020,6 +1025,7 @@ absl_cc_test( absl::source_location absl::str_format absl::strings + Threads::Threads GTest::gmock_main ) @@ -1037,6 +1043,7 @@ absl_cc_test( absl::log absl::log_severity absl::scoped_mock_log + Threads::Threads GTest::gmock_main ) @@ -1060,6 +1067,7 @@ absl_cc_test( absl::log_severity absl::scoped_mock_log absl::strings + Threads::Threads GTest::gmock_main ) @@ -1084,6 +1092,7 @@ absl_cc_test( absl::scoped_mock_log absl::source_location absl::strings + Threads::Threads GTest::gmock_main ) @@ -1106,6 +1115,7 @@ absl_cc_test( absl::source_location absl::strings absl::time + Threads::Threads GTest::gmock_main ) @@ -1130,6 +1140,7 @@ absl_cc_test( absl::scoped_mock_log absl::strings absl::synchronization + Threads::Threads GTest::gmock GTest::gtest_main ) @@ -1171,6 +1182,7 @@ absl_cc_test( absl::strerror absl::strings absl::str_format + Threads::Threads GTest::gmock_main ) @@ -1190,6 +1202,7 @@ absl_cc_test( absl::log_internal_test_matchers absl::log_structured absl::scoped_mock_log + Threads::Threads GTest::gmock_main ) diff --git a/absl/profiling/CMakeLists.txt b/absl/profiling/CMakeLists.txt index 6441daec852..dac887ad6a1 100644 --- a/absl/profiling/CMakeLists.txt +++ b/absl/profiling/CMakeLists.txt @@ -35,6 +35,7 @@ absl_cc_test( absl::random_random absl::sample_recorder absl::time + Threads::Threads GTest::gmock_main ) @@ -89,6 +90,7 @@ absl_cc_test( DEPS absl::core_headers absl::periodic_sampler + Threads::Threads GTest::gmock_main ) diff --git a/absl/random/CMakeLists.txt b/absl/random/CMakeLists.txt index 4a13e84e7db..6fd7b02b13d 100644 --- a/absl/random/CMakeLists.txt +++ b/absl/random/CMakeLists.txt @@ -158,6 +158,7 @@ absl_cc_test( absl::random_distributions absl::random_mocking_bit_gen absl::random_random + Threads::Threads GTest::gmock GTest::gtest_main ) @@ -175,6 +176,7 @@ absl_cc_test( absl::random_bit_gen_ref absl::random_mocking_bit_gen absl::random_random + Threads::Threads GTest::gmock GTest::gtest_main ) @@ -1059,6 +1061,7 @@ absl_cc_test( absl::random_random absl::synchronization absl::type_traits + Threads::Threads GTest::gtest_main ) @@ -1093,6 +1096,7 @@ absl_cc_test( absl::flat_hash_map absl::random_internal_entropy_pool absl::synchronization + Threads::Threads GTest::gtest_main ) diff --git a/absl/strings/CMakeLists.txt b/absl/strings/CMakeLists.txt index a9fa1f9e0c1..fbff88e835f 100644 --- a/absl/strings/CMakeLists.txt +++ b/absl/strings/CMakeLists.txt @@ -620,6 +620,7 @@ absl_cc_test( absl::span absl::str_format absl::strings + Threads::Threads GTest::gmock_main ) @@ -828,6 +829,7 @@ absl_cc_test( absl::cordz_update_tracker absl::core_headers absl::synchronization + Threads::Threads GTest::gmock_main ) @@ -857,6 +859,7 @@ absl_cc_test( absl::config absl::cordz_functions absl::cordz_test_helpers + Threads::Threads GTest::gmock_main ) @@ -907,6 +910,7 @@ absl_cc_test( absl::random_distributions absl::synchronization absl::time + Threads::Threads GTest::gmock_main ) @@ -978,6 +982,7 @@ absl_cc_test( absl::cordz_update_tracker absl::crc_cord_state absl::thread_pool + Threads::Threads GTest::gmock_main ) @@ -1017,6 +1022,7 @@ absl_cc_test( absl::synchronization absl::thread_pool absl::time + Threads::Threads GTest::gmock_main ) diff --git a/absl/synchronization/CMakeLists.txt b/absl/synchronization/CMakeLists.txt index 9c4a0b1fe90..6e79e06c241 100644 --- a/absl/synchronization/CMakeLists.txt +++ b/absl/synchronization/CMakeLists.txt @@ -130,6 +130,7 @@ absl_cc_test( DEPS absl::synchronization absl::time + Threads::Threads GTest::gmock_main ) @@ -144,6 +145,7 @@ absl_cc_test( absl::synchronization absl::time absl::tracing_internal + Threads::Threads GTest::gmock_main ) @@ -195,6 +197,7 @@ absl_cc_test( absl::memory absl::random_random absl::time + Threads::Threads GTest::gmock_main ) @@ -226,6 +229,7 @@ absl_cc_test( absl::synchronization absl::time absl::tracing_internal + Threads::Threads GTest::gmock_main ) @@ -259,6 +263,7 @@ absl_cc_test( absl::synchronization absl::strings absl::time + Threads::Threads GTest::gmock_main ) @@ -276,6 +281,7 @@ absl_cc_test( absl::synchronization absl::thread_pool absl::time + Threads::Threads GTest::gmock_main ) @@ -290,4 +296,5 @@ absl_cc_test( absl::synchronization absl::core_headers absl::check + Threads::Threads ) diff --git a/absl/time/CMakeLists.txt b/absl/time/CMakeLists.txt index c3ae98c13c9..b86a0d2e436 100644 --- a/absl/time/CMakeLists.txt +++ b/absl/time/CMakeLists.txt @@ -163,6 +163,7 @@ absl_cc_test( absl::config absl::bind_front absl::synchronization + Threads::Threads GTest::gmock_main ) @@ -201,6 +202,7 @@ absl_cc_test( absl::random_random absl::raw_logging_internal absl::synchronization + Threads::Threads GTest::gmock_main )