That was such a low-grade, I need a swift-kick-in-the-pants flub - apologies!
T. On Wed, Feb 16, 2022 at 4:58 AM Oliver Kowalke via Boost-users < boost-users@lists.boost.org> wrote: > It's a linker error - the linker doesn't sees the jump_fcontext(). > > tjisana (泰志) via Boost-users <boost-users@lists.boost.org> schrieb am > Mi., 16. Feb. 2022, 10:17: > >> Team, >> >> I'm trying to get a simple coroutine2 program to work with address >> sanitizer and I'm running into a block. I'm building boost_1_78_0 as >> follows: ./b2 context-impl=ucontext and compiling with -DBOOST_USE_ASAN and >> -DBOOST_USE_CONTEXT. I've built and rebuilt the library thinking I've made >> an error somewhere and it boils down to jump_fcontext and make_fcontext. >> What am I doing wrong/missing? >> >> Cheers, >> >> TJ >> >> >> g++ -DBOOST_USE_ASAN -DBOOST_USE_UCONTEXT >> -I/home/tjisana/Downloads/boost_1_78_0 -O0 -g3 -fsanitize=address -pedantic >> -Wall -c -fmessage-length=0 -o src/Testbed II.o ../src/Testbed II.cpp >> g++ -L/home/tjisana/Downloads/boost_1_78_0/stage/lib -fsanitize=address >> -o Testbed II src/Testbed II.o -lboost_context -lboost_coroutine >> /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: >> /home/tjisana/Downloads/boost_1_78_0/stage/lib/libboost_coroutine.so: >> undefined reference to `jump_fcontext' >> /usr/lib64/gcc/x86_64-suse-linux/11/../../../../x86_64-suse-linux/bin/ld: >> /home/tjisana/Downloads/boost_1_78_0/stage/lib/libboost_coroutine.so: >> undefined reference to `make_fcontext' >> collect2: error: ld returned 1 exit status >> >> >> #include <queue> >> >> #include <memory> >> >> #include "boost/coroutine2/coroutine.hpp" >> >> >> typedef boost::coroutines2::coroutine<int> coro_t; >> >> >> >> int main() { >> >> int l = 0; >> >> std::queue<int> y({1,2,3,4}); >> >> std::queue<std::unique_ptr<int>> w; >> >> >> >> coro_t::push_type sink([&](coro_t::pull_type& source) { >> >> for (const auto& i : source) { >> >> while (!w.empty()) { >> >> auto ptr >> = std::move(w.front()); >> >> w.pop(); >> >> if >> (*ptr == 1) { >> >> >> std::cout << "first: " << i << std::endl; >> >> >> >> >> auto item = 21; >> >> >> w.push(std::move(std::make_unique<int>(item))); >> >> } >> >> else if >> (*ptr == 21) { >> >> >> std::cout << "second: " << i+2*i << std::endl; >> >> >> >> >> auto item = 32; >> >> >> w.push(std::move(std::make_unique<int>(item))); >> >> } >> >> else if >> (*ptr == 32) { >> >> >> std::cout << "third: " << i*i << std::endl; >> >> } >> >> } >> >> } >> >> source(); >> >> }); >> >> >> >> while (!y.empty()) { >> >> if (!y.empty()) { >> >> l = y.front(); >> >> y.pop(); >> >> >> >> >> w.push(std::move(std::make_unique<int>(1))); >> >> sink(l); >> >> } >> >> } >> >> >> >> return 0; >> >> } >> _______________________________________________ >> Boost-users mailing list >> Boost-users@lists.boost.org >> https://lists.boost.org/mailman/listinfo.cgi/boost-users >> > _______________________________________________ > Boost-users mailing list > Boost-users@lists.boost.org > https://lists.boost.org/mailman/listinfo.cgi/boost-users >
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users