Opened 12 years ago
Closed 12 years ago
#4883 closed Patches (fixed)
epoll_reactor.hpp doesn`t compile with some versions of gcc
Reported by: | anonymous | Owned by: | chris_kohlhoff |
---|---|---|---|
Milestone: | To Be Determined | Component: | asio |
Version: | Boost 1.45.0 | Severity: | Problem |
Keywords: | Cc: |
Description
epoll_reactor.hpp doesn`t compile with some old versions of gcc. Actually I have 4.0.2. I have applied small patch that resolves problem.
Here is example of compilation error.
- Compile discovery_layer.cxx [class: dll] ...
/usr/bin/g++ -MT /home/esuitebuild/AV-Desk-REL-600-AV_201011220/0bld-generic-gcc/drwcs/io/discovery_layer.odll -MD -MP -MF /home/esuitebuild/AV-Desk-REL-600-AV_201011220/0bld-generic-gcc/d\
rwcs/io/discovery_layer.odll.dep -fPIC -DPIC -DNDEBUG -pipe -c -march=pentiumpro -Wall -W -Wredundant-decls -pthread -pedantic -Wno-long-long -D_REENTRANT -D_THREAD_SAFE -D_LARGEFILE64_S\
OURCE -o /home/esuitebuild/AV-Desk-REL-600-AV_201011220/0bld-generic-gcc/drwcs/io/discovery_layer.odll discovery_layer.cxx -O3 -s -I"/home/esuitebuild/AV-Desk-REL-600-AV_201011220/drwcs" \
-isystem"/home/esuitebuild/boost_1_45_0" -I"/home/esuitebuild/AV-Desk-REL-600-AV_201011220/ES-Key" -I"/home/esuitebuild/AV-Desk-REL-600-AV_201011220/0ins-generic-gcc/include" -I"/home/esui\
tebuild/AV-Desk-REL-600-AV_201011220/zlib" -I/usr/local/include -DSYSTEM=\"Linux\" -DARCH=\"x86\" -DUSE_THREADS -DBUILD_DRWCC -DBOOST_ALL_NO_LIB -DSTATIC=static
/home/esuitebuild/boost_1_45_0/boost/asio/detail/impl/epoll_reactor.ipp: In member function 'void boost::asio::detail::epoll_reactor::start_op(int, boost::asio::detail::socket_type, boost:\
:asio::detail::epoll_reactor::descriptor_state*&, boost::asio::detail::reactor_op*, bool)':
/home/esuitebuild/boost_1_45_0/boost/asio/detail/impl/epoll_reactor.ipp:140: error: 'boost::asio::detail::epoll_reactor::<anonymous enum>' is/uses anonymous type
/home/esuitebuild/boost_1_45_0/boost/asio/detail/impl/epoll_reactor.ipp:140: error: trying to instantiate 'template<class T> struct boost::is_integral'
{standard input}: Assembler messages:
{standard input}:1788: Error: Local symbol .LTHUNK0' can't be equated to undefined symbol
_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEE\
D0Ev'
{standard input}:1788: Error: Local symbol .LTHUNK1' can't be equated to undefined symbol
_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEE\
D0Ev'
{standard input}:1788: Error: Local symbol .LTHUNK2' can't be equated to undefined symbol
_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEE\
D1Ev'
{standard input}:1788: Error: Local symbol .LTHUNK3' can't be equated to undefined symbol
_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEE\
D1Ev'
{standard input}:1788: Error: Local symbol .LTHUNK4' can't be equated to undefined symbol
_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_6system12system_errorEEEED0\
Attachments (1)
Change History (3)
by , 12 years ago
Attachment: | 00-asio-anonymous-enum-fix.patch added |
---|
comment:1 by , 12 years ago
comment:2 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
(In [69680]) Merge selected bug fixes from trunk:
- Fixed a compile error on some versions of g++ due to anonymous enums. Fixes #4883.
- Fixed a bug in asio::streambuf where the consume() function did not always update the internal buffer pointers correctly. The problem may occur when the asio::streambuf is filled with data using the standard C++ member functions such as sputn(). (Note: the problem does not manifest when the streambuf is populated by the Asio free functions read(), async_read(), read_until() or async_read_until().)
- EV_ONESHOT seems to cause problems on some versions of Mac OS X, with the io_service destructor getting stuck inside the close() system call. Use EV_CLEAR instead. Fixes #5021.
- Fixed a bug on kqueue-based platforms, where reactor read operations that return false from their perform() function are not correctly re-registered with kqueue.
- Fixed the linger socket option on non-Windows platforms.
- Fixed function name in comment for asio::placeholders::iterator.
(In [69194]) Changes for asio version 1.5.0: