Skip to content

Fix Debug builds for the Module branch #123

@matheusgomes28

Description

@matheusgomes28

Debug tools require building with clang-17, but conan's version of GTest does not work with clang-17 builds even after settings libcxx=libstdc++11.

For some reason, the ABI is incompatible:

[build] [1/8] Scanning /home/matheus/development/base64pp/base64pp/base64pp.cpp for CXX dependencies
[build] [2/8] Generating CXX dyndep file base64pp/CMakeFiles/base64pp.dir/CXX.dd
[build] [3/8] Scanning /home/matheus/development/base64pp/tests/base64pp_tests.cpp for CXX dependencies
[build] [4/8] Generating CXX dyndep file tests/CMakeFiles/base64pp_tests.dir/CXX.dd
[build] [5/8] Building CXX object base64pp/CMakeFiles/base64pp.dir/base64pp.cpp.o
[build] [6/8] Linking CXX static library base64pp/libbase64pp.a
[build] [7/8] Building CXX object tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o
[build] [8/8] Linking CXX executable tests/base64pp_tests
[build] FAILED: tests/base64pp_tests 
[build] : && /usr/bin/clang-17 -Werror -Wall -Wextra -pedantic  -m64 -g -m64 tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o -o tests/base64pp_tests -L/home/matheus/.conan2/p/b/gtest27682b8c1f791/p/lib -Wl,-rpath,/home/matheus/.conan2/p/b/gtest27682b8c1f791/p/lib  base64pp/libbase64pp.a  /home/matheus/.conan2/p/b/gtest27682b8c1f791/p/lib/libgmock_main.a  /home/matheus/.conan2/p/b/gtest27682b8c1f791/p/lib/libgmock.a  /home/matheus/.conan2/p/b/gtest27682b8c1f791/p/lib/libgtest_main.a  /home/matheus/.conan2/p/b/gtest27682b8c1f791/p/lib/libgtest.a  -lm  -lpthread && :
[build] /usr/bin/ld: /usr/bin/ld: DWARF error: invalid or unhandled FORM value: 0x23
[build] tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `Base64Decode_FailDecodeNonSize4Bigger_Test::TestBody()':
[build] base64pp_tests.cpp:(.text+0x1d28): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `Base64Decode_DecodesMissingTwoPads0_Test::TestBody()':
[build] base64pp_tests.cpp:(.text+0x2677): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `Base64Decode_DecodesMissingTwoPads1_Test::TestBody()':
[build] base64pp_tests.cpp:(.text+0x2b17): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `Base64Decode_DecodesMissingOnePad0_Test::TestBody()':
[build] base64pp_tests.cpp:(.text+0x2fbe): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `Base64Decode_DecodesMissingOnePad1_Test::TestBody()':
[build] base64pp_tests.cpp:(.text+0x346e): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o:base64pp_tests.cpp:(.text+0x39e1): more undefined references to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' follow
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init':
[build] base64pp_tests.cpp:(.text.startup+0x8f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x161): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.5':
[build] base64pp_tests.cpp:(.text.startup+0x21f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x2f1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.8':
[build] base64pp_tests.cpp:(.text.startup+0x3af): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x481): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.11':
[build] base64pp_tests.cpp:(.text.startup+0x53f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x611): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.14':
[build] base64pp_tests.cpp:(.text.startup+0x6cf): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x7a1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.17':
[build] base64pp_tests.cpp:(.text.startup+0x85f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x931): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.20':
[build] base64pp_tests.cpp:(.text.startup+0x9ef): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0xac1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.23':
[build] base64pp_tests.cpp:(.text.startup+0xb7f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0xc51): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.26':
[build] base64pp_tests.cpp:(.text.startup+0xd0f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0xde1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.29':
[build] base64pp_tests.cpp:(.text.startup+0xe9f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0xf71): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.32':
[build] base64pp_tests.cpp:(.text.startup+0x102f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x1101): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.37':
[build] base64pp_tests.cpp:(.text.startup+0x11bf): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x1291): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.40':
[build] base64pp_tests.cpp:(.text.startup+0x134f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x1421): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.43':
[build] base64pp_tests.cpp:(.text.startup+0x14df): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x15b1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.49':
[build] base64pp_tests.cpp:(.text.startup+0x166f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x1741): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.52':
[build] base64pp_tests.cpp:(.text.startup+0x17ff): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x18d1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.55':
[build] base64pp_tests.cpp:(.text.startup+0x198f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x1a61): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.58':
[build] base64pp_tests.cpp:(.text.startup+0x1b1f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x1bf1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.61':
[build] base64pp_tests.cpp:(.text.startup+0x1caf): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x1d81): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.64':
[build] base64pp_tests.cpp:(.text.startup+0x1e3f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x1f11): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.67':
[build] base64pp_tests.cpp:(.text.startup+0x1fcf): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x20a1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.71':
[build] base64pp_tests.cpp:(.text.startup+0x215f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x2231): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.74':
[build] base64pp_tests.cpp:(.text.startup+0x22ef): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x23c1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.76':
[build] base64pp_tests.cpp:(.text.startup+0x247f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x2551): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.79':
[build] base64pp_tests.cpp:(.text.startup+0x260f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x26e1): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.81':
[build] base64pp_tests.cpp:(.text.startup+0x279f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x2871): undefined reference to `operator delete(void*)'
[build] /usr/bin/ld: tests/CMakeFiles/base64pp_tests.dir/base64pp_tests.cpp.o: in function `__cxx_global_var_init.83':
[build] base64pp_tests.cpp:(.text.startup+0x292f): undefined reference to `operator new(unsigned long)'
[build] /usr/bin/ld: base64pp_tests.cpp:(.text.startup+0x2a01): undefined reference to `operator delete(void*)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingenhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions