Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#11246 closed Bugs (fixed)

boost.coroutine 1.58 fails to build for mingw because of undefined symbols

Reported by: anonymous Owned by: olli
Milestone: To Be Determined Component: context
Version: Boost 1.58.0 Severity: Problem
Keywords: Cc:

Description

Hello,

I'm trying to cross-compile boost 1.58 from linux for mingw from tarball for archlinux (aur.archlinux.org/packages/mingw-w64-boost/).

I'm stuck when linking boost.coroutine because I've got undefined references to symbols in boost.context (make_fcontext, jump_fcontext):

gcc.link.dll bin.v2/libs/coroutine/build/gcc-mingw-mingw64/release/binary-format-pe/target-os-windows/threadapi-win32/threading-multi/libboost_coroutine-mt.dll.a
bin.v2/libs/coroutine/build/gcc-mingw-mingw64/release/binary-format-pe/target-os-windows/threadapi-win32/threading-multi/detail/coroutine_context.o:coroutine_context.cpp:(.text+0x4a): undefined reference to `_imp__make_fcontext'
bin.v2/libs/coroutine/build/gcc-mingw-mingw64/release/binary-format-pe/target-os-windows/threadapi-win32/threading-multi/detail/coroutine_context.o:coroutine_context.cpp:(.text+0xc7): undefined reference to `_imp__jump_fcontext'

It looks exactly like this issue github.com/boostorg/context/pull/12 that was fixed for AIX.

Prior to the build I applied the fedora patch used to successfully build previous versions of boost for mingw: pkgs.fedoraproject.org/cgit/mingw-boost.git/tree/boost-mingw.patch, but maybe it needs updating. Also I wonder why it wasn't submited or accepted upstream.

Regards, xan

Change History (5)

comment:1 by anonymous, 7 years ago

Component: contextBuilding Boost
Summary: boost.coroutine 1.58 fails to build for mingw because of undefined symbols in boost.contextboost.coroutine 1.58 fails to build for mingw because of undefined symbols

comment:2 by anonymous, 7 years ago

Component: Building Boostcoroutine

comment:3 by stellarpower@…, 7 years ago

I have the same here, Boost 1.58, using mingw32 4.9.1 on Windows x86 (toolchain provided by Qt 5.4 package)

gcc.link.dll bin.v2\libs\context\build\gcc-mingw-4.9.1\release\threading-multi\libboost_context-mgw49-mt-1_58.dll.a
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
gcc.link.dll bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\libboost_coroutine-mgw49-1_58.dll.a
bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\detail\coroutine_context.o:coroutine_context.cpp:(.text+0x4a): undefined reference to `_imp__make_fcontext'
bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\detail\coroutine_context.o:coroutine_context.cpp:(.text+0xc7): undefined reference to `_imp__jump_fcontext'
c:/qt5/Tools/mingw491_32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/bin/ld.exe: bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\detail\coroutine_context.o: bad reloc address 0x20 in section `.eh_frame'
collect2.exe: error: ld returned 1 exit status

    "g++"   "-Wl,--out-implib,bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\libboost_coroutine-mgw49-1_58.dll.a" -o "bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\libboost_coroutine-mgw49-1_58.dll"  -shared -Wl,--start-group "bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\detail\coroutine_context.o" "bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\exceptions.o" "bin.v2\libs\coroutine\build\gcc-mingw-4.9.1\release\windows\stack_traits.o" "bin.v2\libs\context\build\gcc-mingw-4.9.1\release\threading-multi\libboost_context-mgw49-mt-1_58.dll.a" "bin.v2\libs\thread\build\gcc-mingw-4.9.1\release\threading-multi\libboost_thread-mgw49-mt-1_58.dll.a" "bin.v2\libs\chrono\build\gcc-mingw-4.9.1\release\threading-multi\libboost_chrono-mgw49-mt-1_58.dll.a" "bin.v2\libs\system\build\gcc-mingw-4.9.1\release\threading-multi\libboost_system-mgw49-mt-1_58.dll.a" "bin.v2\libs\system\build\gcc-mingw-4.9.1\release\libboost_system-mgw49-1_58.dll.a"  -Wl,-Bstatic  -Wl,-Bdynamic  -Wl,--end-group -march=i686 -m32 

...failed

I haven't used any patches, just following the build instructions on the 'Getting Started' page.

comment:4 by olli, 7 years ago

Resolution: fixed
Status: newclosed

comment:5 by olli, 7 years ago

Component: coroutinecontext
Note: See TracTickets for help on using tickets.