td: OpenBSD 6.7 -stable build fail

ssh3@balamut:build$ uname -a OpenBSD balamut.td.kms 6.7 GENERIC.MP#2 amd64

ssh3@balamut:build$ clang -v OpenBSD clang version 8.0.1 (tags/RELEASE_801/final) (based on LLVM 8.0.1) Target: amd64-unknown-openbsd6.7 Thread model: posix InstalledDir: /usr/bin

ssh3@balamut:build$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=…/tdlib … – The CXX compiler identification is Clang 8.0.1 – The C compiler identification is Clang 8.0.1 – Check for working CXX compiler: /usr/bin/c++ – Check for working CXX compiler: /usr/bin/c++ – works – Detecting CXX compiler ABI info – Detecting CXX compiler ABI info - done – Detecting CXX compile features – Detecting CXX compile features - done – Check for working C compiler: /usr/bin/cc – Check for working C compiler: /usr/bin/cc – works – Detecting C compiler ABI info – Detecting C compiler ABI info - done – Detecting C compile features – Detecting C compile features - done – Could NOT find ccache (this is NOT an error) – Found OpenSSL: /usr/lib/libcrypto.so.46.1 (found version “2.0.0”)
– Found OpenSSL: /usr/include /usr/lib/libssl.so.48.1;/usr/lib/libcrypto.so.46.1 – Performing Test HAVE_STD14 – Performing Test HAVE_STD14 - Success – Looking for pthread.h – Looking for pthread.h - found – Performing Test CMAKE_HAVE_LIBC_PTHREAD – Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed – Check if compiler accepts -pthread – Check if compiler accepts -pthread - yes – Found Threads: TRUE
– Performing Test HAVE_CXX_FLAG_WALL – Performing Test HAVE_CXX_FLAG_WALL - Success – Performing Test HAVE_CXX_FLAG_WEXTRA – Performing Test HAVE_CXX_FLAG_WEXTRA - Success – Performing Test HAVE_CXX_FLAG_WIMPLICIT_FALLTHROUGH_2 – Performing Test HAVE_CXX_FLAG_WIMPLICIT_FALLTHROUGH_2 - Failed – Performing Test HAVE_CXX_FLAG_WPOINTER_ARITH – Performing Test HAVE_CXX_FLAG_WPOINTER_ARITH - Success – Performing Test HAVE_CXX_FLAG_WCAST_QUAL – Performing Test HAVE_CXX_FLAG_WCAST_QUAL - Success – Performing Test HAVE_CXX_FLAG_WSIGN_COMPARE – Performing Test HAVE_CXX_FLAG_WSIGN_COMPARE - Success – Performing Test HAVE_CXX_FLAG_WDUPLICATED_BRANCHES – Performing Test HAVE_CXX_FLAG_WDUPLICATED_BRANCHES - Failed – Performing Test HAVE_CXX_FLAG_WDUPLICATED_COND – Performing Test HAVE_CXX_FLAG_WDUPLICATED_COND - Failed – Performing Test HAVE_CXX_FLAG_WALLOC_ZERO – Performing Test HAVE_CXX_FLAG_WALLOC_ZERO - Failed – Performing Test HAVE_CXX_FLAG_WLOGICAL_OP – Performing Test HAVE_CXX_FLAG_WLOGICAL_OP - Failed – Performing Test HAVE_CXX_FLAG_WTAUTOLOGICAL_COMPARE – Performing Test HAVE_CXX_FLAG_WTAUTOLOGICAL_COMPARE - Success – Performing Test HAVE_CXX_FLAG_WVLA – Performing Test HAVE_CXX_FLAG_WVLA - Success – Performing Test HAVE_CXX_FLAG_WNON_VIRTUAL_DTOR – Performing Test HAVE_CXX_FLAG_WNON_VIRTUAL_DTOR - Success – Performing Test HAVE_CXX_FLAG_WUNUSED_PARAMETER – Performing Test HAVE_CXX_FLAG_WUNUSED_PARAMETER - Success – Performing Test HAVE_CXX_FLAG_WCONVERSION – Performing Test HAVE_CXX_FLAG_WCONVERSION - Success – Performing Test HAVE_CXX_FLAG_WSIGN_CONVERSION – Performing Test HAVE_CXX_FLAG_WSIGN_CONVERSION - Success – Performing Test HAVE_CXX_FLAG_WCXX14_COMPAT_PEDANTIC – Performing Test HAVE_CXX_FLAG_WCXX14_COMPAT_PEDANTIC - Success – Performing Test HAVE_CXX_FLAG_WDEPRECATED – Performing Test HAVE_CXX_FLAG_WDEPRECATED - Success – Performing Test HAVE_CXX_FLAG_QUNUSED_ARGUMENTS – Performing Test HAVE_CXX_FLAG_QUNUSED_ARGUMENTS - Success – Performing Test HAVE_CXX_FLAG_WODR – Performing Test HAVE_CXX_FLAG_WODR - Success – Performing Test HAVE_CXX_FLAG_FLTO_ODR_TYPE_MERGING – Performing Test HAVE_CXX_FLAG_FLTO_ODR_TYPE_MERGING - Failed – Found ZLIB: /usr/lib/libz.so.5.0 (found version “1.2.3”) – Found ZLIB: /usr/include /usr/lib/libz.so.5.0 – Performing Test COMPILER_HAS_HIDDEN_VISIBILITY – Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success – Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY – Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success – Performing Test COMPILER_HAS_DEPRECATED_ATTR – Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success – Performing Test GNU_READLINE_FOUND – Performing Test GNU_READLINE_FOUND - Failed – Could NOT find Readline (missing: READLINE_INCLUDE_DIR READLINE_LIBRARY) – Could NOT find Readline (this is NOT an error) – Configuring done – Generating done – Build files have been written to: /usr/src/td/build

ssh3@balamut:build$ cmake --build . --target install …

Scanning dependencies of target tg_cli
[ 67%] Building CXX object CMakeFiles/tg_cli.dir/td/telegram/cli.cpp.o
[ 67%] Building CXX object CMakeFiles/tg_cli.dir/td/generate/auto/td/telegram/td_api_json.cpp.o
[ 67%] Linking CXX executable tg_cli
ld: error: undefined symbol: td::Td::request(unsigned long long, td::tl::unique_ptr<td::td_api::Function>)
>>> referenced by ClientActor.cpp
>>>               ClientActor.cpp.o:(td::ClientActor::request(unsigned long long, td::tl::unique_ptr<td::td_api::Function>)) in archive libtdcore.a

ld: error: undefined symbol: td::Td::static_request(td::tl::unique_ptr<td::td_api::Function>)
>>> referenced by ClientActor.cpp
>>>               ClientActor.cpp.o:(td::ClientActor::execute(td::tl::unique_ptr<td::td_api::Function>)) in archive libtdcore.a

ld: error: undefined symbol: td::Td::Td(td::unique_ptr<td::TdCallback>)
>>> referenced by ClientActor.cpp
>>>               ClientActor.cpp.o:(td::ActorOwn<td::Td> td::Scheduler::create_actor<td::Td, td::unique_ptr<td::TdCallback> >(td::Slice, td::unique_ptr<td::TdCallback>&&)) in archive libtdcore.a

ld: error: undefined symbol: td::verbosity_td_init
>>> referenced by Logging.cpp
>>>               Logging.cpp.o:(.data.rel.ro..Lconstinit+0x10) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::inputEncryptedFileBigUploaded::inputEncryptedFileBigUploaded(long long, int, int)
>>> referenced by FileManager.cpp
>>>               FileManager.cpp.o:(td::tl::unique_ptr<td::telegram_api::inputEncryptedFileBigUploaded> td::make_tl_object<td::telegram_api::inputEncryptedFileBigUploaded, long long const&, int const&, int>(long long const&, int const&, int&&)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::inputEncryptedFileUploaded::inputEncryptedFileUploaded(long long, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)
>>> referenced by FileManager.cpp
>>>               FileManager.cpp.o:(td::tl::unique_ptr<td::telegram_api::inputEncryptedFileUploaded> td::make_tl_object<td::telegram_api::inputEncryptedFileUploaded, long long const&, int const&, char const (&) [1], int>(long long const&, int const&, char const (&) [1], int&&)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::inputSecureFileUploaded::inputSecureFileUploaded(long long, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, td::BufferSlice&&, td::BufferSlice&&)
>>> referenced by FileManager.cpp
>>>               FileManager.cpp.o:(td::tl::unique_ptr<td::telegram_api::inputSecureFileUploaded> td::make_tl_object<td::telegram_api::inputSecureFileUploaded, long long const&, int const&, char const (&) [1], td::BufferSlice, td::BufferSlice>(long long const&, int const&, char const (&) [1], td::BufferSlice&&, td::BufferSlice&&)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::inputFileBig::inputFileBig(long long, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
>>> referenced by FileManager.cpp
>>>               FileManager.cpp.o:(td::tl::unique_ptr<td::telegram_api::inputFileBig> td::make_tl_object<td::telegram_api::inputFileBig, long long const&, int const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(long long const&, int const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::inputFile::inputFile(long long, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
>>> referenced by FileManager.cpp
>>>               FileManager.cpp.o:(td::tl::unique_ptr<td::telegram_api::inputFile> td::make_tl_object<td::telegram_api::inputFile, long long const&, int const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char const (&) [1]>(long long const&, int const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&, char const (&) [1])) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::inputDocument::inputDocument(long long, long long, td::BufferSlice&&)
>>> referenced by FileManager.cpp
>>>               FileManager.cpp.o:(td::tl::unique_ptr<td::telegram_api::inputDocument> td::make_tl_object<td::telegram_api::inputDocument, long long const&, long long const&, td::BufferSlice>(long long const&, long long const&, td::BufferSlice&&)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::upload_saveBigFilePart::upload_saveBigFilePart(long long, int, int, td::BufferSlice&&)
>>> referenced by FileUploader.cpp
>>>               FileUploader.cpp.o:(td::FileUploader::start_part(td::Part, int, long long)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::upload_saveFilePart::upload_saveFilePart(long long, int, td::BufferSlice&&)
>>> referenced by FileUploader.cpp
>>>               FileUploader.cpp.o:(td::FileUploader::start_part(td::Part, int, long long)) in archive libtdcore.a

ld: error: undefined symbol: vtable for td::telegram_api::upload_saveBigFilePart
>>> referenced by FileUploader.cpp
>>>               FileUploader.cpp.o:(td::telegram_api::upload_saveBigFilePart::~upload_saveBigFilePart()) in archive libtdcore.a
the vtable symbol may be undefined because the class is missing its key function (see https://lld.llvm.org/missingkeyfunction)

ld: error: undefined symbol: vtable for td::telegram_api::upload_saveFilePart
>>> referenced by FileUploader.cpp
>>>               FileUploader.cpp.o:(td::telegram_api::upload_saveFilePart::~upload_saveFilePart()) in archive libtdcore.a
the vtable symbol may be undefined because the class is missing its key function (see https://lld.llvm.org/missingkeyfunction)

ld: error: undefined symbol: td::telegram_api::upload_saveBigFilePart::fetch_result(td::TlBufferParser&)
>>> referenced by FileUploader.cpp
>>>               FileUploader.cpp.o:(td::Result<td::telegram_api::upload_saveBigFilePart::ReturnType> td::fetch_result<td::telegram_api::upload_saveBigFilePart>(td::BufferSlice const&, bool)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::upload_saveFilePart::fetch_result(td::TlBufferParser&)
>>> referenced by FileUploader.cpp
>>>               FileUploader.cpp.o:(td::Result<td::telegram_api::upload_saveFilePart::ReturnType> td::fetch_result<td::telegram_api::upload_saveFilePart>(td::BufferSlice const&, bool)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::to_string(td::TlObject const&)
>>> referenced by utils.cpp
>>>               utils.cpp.o:(td::create_storer(td::telegram_api::Function const&)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::upload_getFile::fetch_result(td::TlBufferParser&)
>>> referenced by FileDownloader.cpp
>>>               FileDownloader.cpp.o:(td::Result<td::telegram_api::upload_getFile::ReturnType> td::fetch_result<td::telegram_api::upload_getFile>(td::BufferSlice const&, bool)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::to_string(td::TlObject const&)
>>> referenced by FileDownloader.cpp
>>>               FileDownloader.cpp.o:(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > td::telegram_api::to_string<td::telegram_api::upload_fileCdnRedirect>(td::tl::unique_ptr<td::telegram_api::upload_fileCdnRedirect> const&)) in archive libtdcore.a

ld: error: undefined symbol: td::telegram_api::upload_reuploadCdnFile::fetch_result(td::TlBufferParser&)
>>> referenced by FileDownloader.cpp
>>>               FileDownloader.cpp.o:(td::Result<td::telegram_api::upload_reuploadCdnFile::ReturnType> td::fetch_result<td::telegram_api::upload_reuploadCdnFile>(td::BufferSlice const&, bool)) in archive libtdcore.a

ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
c++: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error 1 in . (CMakeFiles/tg_cli.dir/build.make:111 'tg_cli': /usr/local/bin/cmake -E cmake_link_script CMakeFiles/tg_cli.dir/link.txt --...)
*** Error 2 in . (CMakeFiles/Makefile2:388 'CMakeFiles/tg_cli.dir/all': /usr/bin/make -f CMakeFiles/tg_cli.dir/build.make CMakeFiles/tg_cli....)
*** Error 2 in /usr/src/td/build (Makefile:141 'all': /usr/bin/make -f CMakeFiles/Makefile2 all)

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 3
  • Comments: 17 (12 by maintainers)

Most upvoted comments

@ssh3 @tipsybsd I reproduced this in OpenBSD 6.7 and the primary cause of the issue is /usr/bin/ar: libtdcore.a: Memory exhausted. The libtdcore.a file is truncated, but it still created, so the build continues and fails on linking.