Skip to content

Build fails for version 31.1 on linux/aarch64 with clang #22338

Open
@phkrl

Description

@phkrl

What version of protobuf and what language are you using?
Version: v31.1 (also had with 31.0)
Language: C++

What operating system (Linux, Windows, ...) and version?
Artix Linux, aarch64

What runtime / compiler are you using (e.g., python version or gcc version)
clang 20.1.6

What did you do?
Trying to build with clang. The following cmake arguments are used:

    -B build
    -D CMAKE_BUILD_TYPE=None
    -D CMAKE_INSTALL_PREFIX=/usr
    -D CMAKE_C_COMPILER=/usr/bin/clang
    -D CMAKE_CXX_COMPILER=/usr/bin/clang++
    -D CMAKE_C_FLAGS="$CFLAGS -ffat-lto-objects"
    -D CMAKE_CXX_FLAGS="$CXXFLAGS -ffat-lto-objects"
    -D protobuf_BUILD_SHARED_LIBS=ON
    -D protobuf_USE_EXTERNAL_GTEST=ON
    -D protobuf_ABSL_PROVIDER=package
    -S "$pkgbase"
    -W no-dev

Here CFLAGS=-march=armv8-a -O2 -pipe -fstack-protector-strong -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer, CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"

Compiling with clang was an attempt to fix #22339.

What did you expect to see
Successful build; building with gcc15 works but resulting package cannot be used for building other packages (e.g. grpc)

What did you see instead?

/usr/bin/clang++ -march=armv8-a -O2 -pipe -fstack-protector-strong -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security         -fstack-clash-protection         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wp,-D_GLIBCXX_ASSERTIONS -ffat-lto-objects -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Xlinker --dependency-file=CMakeFiles/tests.dir/link.d CMakeFiles/tests.dir/src/google/protobuf/any_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/arena_align_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/arena_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/arenastring_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/arenaz_sampler_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/debug_counter_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/descriptor_database_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/descriptor_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/descriptor_visitor_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/drop_unknown_fields_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/dynamic_message_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/edition_message_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/extension_set_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/feature_resolver_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/generated_enum_util_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/generated_message_reflection_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/generated_message_tctable_lite_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/has_bits_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/inlined_string_field_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/internal_feature_helper_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/internal_message_util_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/map_field_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/map_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/message_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/micro_string_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/no_field_presence_map_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/no_field_presence_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/port_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/preserve_unknown_enum_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/proto3_arena_lite_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/proto3_arena_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/proto3_lite_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/raw_ptr_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/redaction_metric_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/reflection_mode_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/reflection_ops_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/reflection_visit_fields_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/repeated_field_reflection_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/repeated_field_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/repeated_ptr_field_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/retention_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/string_block_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/string_piece_field_support_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/string_view_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/text_format_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/unknown_field_set_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/unredacted_debug_format_for_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/unredacted_debug_format_for_test_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/varint_shuffle_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/well_known_types_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/wire_format_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/code_generator_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/command_line_interface_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/arena_ctor_visibility_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/bootstrap_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/copy_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/field_chunk_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/file_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/generator_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/ifndef_guard_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/message_size_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/metadata_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/move_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/namespace_printer_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/plugin_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/cpp/unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/importer_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/java/doc_comment_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/java/generator_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/java/message_serialization_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/java/name_resolver_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/java/plugin_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/objectivec/line_consumer_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/objectivec/names_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/objectivec/text_format_decode_data_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/parser_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/php/generator_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/python/plugin_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/retention_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/versions_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/io/coded_stream_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/io/io_win32_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/io/printer_death_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/io/printer_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/io/test_zero_copy_stream_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/io/tokenizer_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/io/zero_copy_sink_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/io/zero_copy_stream_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/util/delimited_message_util_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/util/field_comparator_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/util/field_mask_util_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/util/message_differencer_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/util/time_util_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/util/type_resolver_util_test.cc.o CMakeFiles/tests.dir/src/google/protobuf/stubs/common_unittest.cc.o CMakeFiles/tests.dir/src/google/protobuf/test_util_lite.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/annotation_test_util.cc.o CMakeFiles/tests.dir/src/google/protobuf/reflection_tester.cc.o CMakeFiles/tests.dir/src/google/protobuf/test_util.cc.o CMakeFiles/tests.dir/src/google/protobuf/testing/file.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/command_line_interface_tester.cc.o CMakeFiles/tests.dir/src/google/protobuf/compiler/mock_code_generator.cc.o CMakeFiles/tests.dir/src/google/protobuf/testing/googletest.cc.o -o tests  -Wl,-rpath,/build/protobuf/src/build:/build/protobuf/src/build/third_party/utf8_ran/usr/bin/ld: CMakeFiles/tests.dir/src/google/protobuf/io/zero_copy_stream_unittest.cc.o: in function `google::protobuf::io::(anonymous namespace)::CordInputStreamTest_SkipToEnd_Test::TestBody()':
zero_copy_stream_unittest.cc:(.text+0x71e0): undefined reference to `_ZN4absl12lts_202505124CordC1INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEETnNSt9enable_ifIXsr3std7is_sameIT_S8_EE5valueEiE4typeELi0EEEOSA_'
/usr/bin/ld: zero_copy_stream_unittest.cc:(.text+0x71ec): undefined reference to `_ZN4absl12lts_202505124CordC1INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEETnNSt9enable_ifIXsr3std7is_sameIT_S8_EE5valueEiE4typeELi0EEEOSA_'
/usr/bin/ld: CMakeFiles/tests.dir/src/google/protobuf/io/zero_copy_stream_unittest.cc.o: in function `google::protobuf::io::(anonymous namespace)::CordOutputStreamTest_DonateCordAndPartialCordBufferAndUseExtraCapacity_Test::TestBody()':
zero_copy_stream_unittest.cc:(.text+0xd554): undefined reference to `_ZN4absl12lts_202505124CordC1INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEETnNSt9enable_ifIXsr3std7is_sameIT_S8_EE5valueEiE4typeELi0EEEOSA_'
/usr/bin/ld: zero_copy_stream_unittest.cc:(.text+0xd560): undefined reference to `_ZN4absl12lts_202505124CordC1INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEETnNSt9enable_ifIXsr3std7is_sameIT_S8_EE5valueEiE4typeELi0EEEOSA_'
/usr/bin/ld: CMakeFiles/tests.dir/src/google/protobuf/io/zero_copy_stream_unittest.cc.o: in function `google::protobuf::io::(anonymous namespace)::CordOutputStreamTest_DonateFullCordBufferAndCord_Test::TestBody()':
zero_copy_stream_unittest.cc:(.text+0xef28): undefined reference to `_ZN4absl12lts_202505124CordC1INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEETnNSt9enable_ifIXsr3std7is_sameIT_S8_EE5valueEiE4typeELi0EEEOSA_'
/usr/bin/ld: CMakeFiles/tests.dir/src/google/protobuf/io/zero_copy_stream_unittest.cc.o:zero_copy_stream_unittest.cc:(.text+0xef34): more undefined references to `_ZN4absl12lts_202505124CordC1INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEETnNSt9enable_ifIXsr3std7is_sameIT_S8_EE5valueEiE4typeELi0EEEOSA_' follow
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ge liblibtest_common.a liblibtest_common_lite.a libprotoc.so.31.1.0 libprotobuf.so.31.1.0 /usr/lib/libabsl_scoped_mock_log.so.2505.0.0 /usr/lib/libgmock_main.so.1.17.0 libupb.a third_party/utf8_range/libutf8_range.so.31.1.0 libprotobuf-lite.so.31.1.0 /usr/lib/libabsl_log_internal_check_op.so.2505.0.0 /usr/lib/libabsl_die_if_null.so.2505.0.0 /usr/lib/libabsl_log_internal_conditions.so.2505.0.0 /usr/lib/libabsl_log_internal_message.so.2505.0.0 /usr/lib/libabsl_log_internal_log_sink_set.so.2505.0.0 /usr/lib/libabsl_log_sink.so.2505.0.0 /usr/lib/libabsl_log_internal_nullguard.so.2505.0.0 /usr/lib/libabsl_examine_stack.so.2505.0.0 /usr/lib/libabsl_log_internal_format.so.2505.0.0 /usr/lib/libabsl_log_internal_structured_proto.so.2505.0.0 /usr/lib/libabsl_log_internal_proto.so.2505.0.0 /usr/lib/libabsl_flags_internal.so.2505.0.0 /usr/lib/libabsl_flags_marshalling.so.2505.0.0 /usr/lib/libabsl_flags_reflection.so.2505.0.0 /usr/lib/libabsl_flags_config.so.2505.0.0 /usr/lib/libabsl_flags_program_name.so.2505.0.0 /usr/lib/libabsl_flags_private_handle_accessor.so.2505.0.0 /usr/lib/libabsl_flags_commandlineflag.so.2505.0.0 /usr/lib/libabsl_flags_commandlineflag_internal.so.2505.0.0 /usr/lib/libabsl_log_initialize.so.2505.0.0 /usr/lib/libabsl_log_internal_globals.so.2505.0.0 /usr/lib/libabsl_log_globals.so.2505.0.0 /usr/lib/libabsl_vlog_config_internal.so.2505.0.0 /usr/lib/libabsl_log_internal_fnmatch.so.2505.0.0 /usr/lib/libabsl_raw_hash_set.so.2505.0.0 /usr/lib/libabsl_hash.so.2505.0.0 /usr/lib/libabsl_city.so.2505.0.0 /usr/lib/libabsl_low_level_hash.so.2505.0.0 /usr/lib/libabsl_hashtablez_sampler.so.2505.0.0 /usr/lib/libabsl_random_distributions.so.2505.0.0 /usr/lib/libabsl_random_seed_sequences.so.2505.0.0 /usr/lib/libabsl_random_internal_entropy_pool.so.2505.0.0 /usr/lib/libabsl_random_internal_randen.so.2505.0.0 /usr/lib/libabsl_random_internal_randen_hwaes.so.2505.0.0 /usr/lib/libabsl_random_internal_randen_hwaes_impl.so.2505.0.0 /usr/lib/libabsl_random_internal_randen_slow.so.2505.0.0 /usr/lib/libabsl_random_internal_platform.so.2505.0.0 /usr/lib/libabsl_random_internal_seed_material.so.2505.0.0 /usr/lib/libabsl_random_seed_gen_exception.so.2505.0.0 /usr/lib/libabsl_statusor.so.2505.0.0 /usr/lib/libabsl_status.so.2505.0.0 /usr/lib/libabsl_cord.so.2505.0.0 /usr/lib/libabsl_cordz_info.so.2505.0.0 /usr/lib/libabsl_cord_internal.so.2505.0.0 /usr/lib/libabsl_cordz_functions.so.2505.0.0 /usr/lib/libabsl_exponential_biased.so.2505.0.0 /usr/lib/libabsl_cordz_handle.so.2505.0.0 /usr/lib/libabsl_crc_cord_state.so.2505.0.0 /usr/lib/libabsl_crc32c.so.2505.0.0 /usr/lib/libabsl_crc_internal.so.2505.0.0 /usr/lib/libabsl_crc_cpu_detect.so.2505.0.0 /usr/lib/libabsl_leak_check.so.2505.0.0 /usr/lib/libabsl_strerror.so.2505.0.0 /usr/lib/libabsl_str_format_internal.so.2505.0.0 /usr/lib/libabsl_synchronization.so.2505.0.0 /usr/lib/libabsl_stacktrace.so.2505.0.0 /usr/lib/libabsl_symbolize.so.2505.0.0 /usr/lib/libabsl_debugging_internal.so.2505.0.0 /usr/lib/libabsl_demangle_internal.so.2505.0.0 /usr/lib/libabsl_demangle_rust.so.2505.0.0 /usr/lib/libabsl_decode_rust_punycode.so.2505.0.0 /usr/lib/libabsl_utf8_for_code_point.so.2505.0.0 /usr/lib/libabsl_graphcycles_internal.so.2505.0.0 /usr/lib/libabsl_kernel_timeout_internal.so.2505.0.0 /usr/lib/libabsl_malloc_internal.so.2505.0.0 /usr/lib/libabsl_tracing_internal.so.2505.0.0 /usr/lib/libabsl_time.so.2505.0.0 /usr/lib/libabsl_civil_time.so.2505.0.0 /usr/lib/libabsl_time_zone.so.2505.0.0 /usr/lib/libabsl_strings.so.2505.0.0 /usr/lib/libabsl_int128.so.2505.0.0 /usr/lib/libabsl_strings_internal.so.2505.0.0 /usr/lib/libabsl_string_view.so.2505.0.0 /usr/lib/libabsl_base.so.2505.0.0 /usr/lib/libabsl_spinlock_wait.so.2505.0.0 /usr/lib/libabsl_throw_delegate.so.2505.0.0 /usr/lib/libabsl_raw_logging_internal.so.2505.0.0 /usr/lib/libabsl_log_severity.so.2505.0.0 /usr/lib/libgmock.so.1.17.0 /usr/lib/libgtest.so.1.17.0 -Wl,-rpath-link,/build/protobuf/src/build/third_party/utf8_range

Anything else we should know about your project / environment
Installed abseil-cpp version: 20250512.1-1

Metadata

Metadata

Assignees

No one assigned

    Labels

    untriagedauto added to all issues by default when created.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions