|
Boost Users : |
From: Oliver Kowalke (oliver.kowalke_at_[hidden])
Date: 2022-02-16 12:57:33
It's a linker error - the linker doesn't sees the jump_fcontext().
tjisana (æ³°å¿) via Boost-users <boost-users_at_[hidden]> 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_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net