Skip to content

Commit 2aae214

Browse files
committed
Add BOOST_COROSIO_DECL to service classes for symbol visibility
The old per-backend service classes had BOOST_COROSIO_DECL which ensures RTTI typeinfo symbols are exported with correct visibility. Without it, find_service<>() fails on FreeBSD (clang) because typeid comparisons across translation units don't match.
1 parent 6976711 commit 2aae214

3 files changed

Lines changed: 21 additions & 18 deletions

File tree

include/boost/corosio/native/detail/epoll/epoll_types.hpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
so the concrete layer never pulls in platform headers.
2222
*/
2323

24+
#include <boost/corosio/detail/config.hpp>
2425
#include <boost/corosio/native/detail/epoll/epoll_traits.hpp>
2526
#include <boost/corosio/native/detail/epoll/epoll_scheduler.hpp>
2627
#include <boost/corosio/native/detail/reactor/reactor_backend.hpp>
@@ -170,7 +171,7 @@ class epoll_local_stream_acceptor final
170171

171172
// --- Services ---
172173

173-
class epoll_tcp_service final
174+
class BOOST_COROSIO_DECL epoll_tcp_service final
174175
: public reactor_tcp_service_impl<
175176
epoll_tcp_service, epoll_traits, epoll_tcp_socket>
176177
{
@@ -181,7 +182,7 @@ class epoll_tcp_service final
181182
: base_type(ctx) {}
182183
};
183184

184-
class epoll_local_stream_service final
185+
class BOOST_COROSIO_DECL epoll_local_stream_service final
185186
: public reactor_local_stream_service_impl<
186187
epoll_local_stream_service, epoll_traits,
187188
epoll_local_stream_socket>
@@ -194,7 +195,7 @@ class epoll_local_stream_service final
194195
: base_type(ctx) {}
195196
};
196197

197-
class epoll_udp_service final
198+
class BOOST_COROSIO_DECL epoll_udp_service final
198199
: public reactor_udp_service_impl<
199200
epoll_udp_service, epoll_traits, epoll_udp_socket>
200201
{
@@ -205,7 +206,7 @@ class epoll_udp_service final
205206
: base_type(ctx) {}
206207
};
207208

208-
class epoll_local_datagram_service final
209+
class BOOST_COROSIO_DECL epoll_local_datagram_service final
209210
: public reactor_local_dgram_service_impl<
210211
epoll_local_datagram_service, epoll_traits,
211212
epoll_local_datagram_socket>
@@ -218,7 +219,7 @@ class epoll_local_datagram_service final
218219
: base_type(ctx) {}
219220
};
220221

221-
class epoll_tcp_acceptor_service final
222+
class BOOST_COROSIO_DECL epoll_tcp_acceptor_service final
222223
: public reactor_acceptor_service_impl<
223224
epoll_tcp_acceptor_service, epoll_traits,
224225
tcp_acceptor_service, epoll_tcp_acceptor,
@@ -233,7 +234,7 @@ class epoll_tcp_acceptor_service final
233234
: base_type(ctx) {}
234235
};
235236

236-
class epoll_local_stream_acceptor_service final
237+
class BOOST_COROSIO_DECL epoll_local_stream_acceptor_service final
237238
: public reactor_acceptor_service_impl<
238239
epoll_local_stream_acceptor_service, epoll_traits,
239240
local_stream_acceptor_service,

include/boost/corosio/native/detail/kqueue/kqueue_types.hpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
so the concrete layer never pulls in platform headers.
2222
*/
2323

24+
#include <boost/corosio/detail/config.hpp>
2425
#include <boost/corosio/native/detail/kqueue/kqueue_traits.hpp>
2526
#include <boost/corosio/native/detail/kqueue/kqueue_scheduler.hpp>
2627
#include <boost/corosio/native/detail/reactor/reactor_backend.hpp>
@@ -170,7 +171,7 @@ class kqueue_local_stream_acceptor final
170171

171172
// --- Services ---
172173

173-
class kqueue_tcp_service final
174+
class BOOST_COROSIO_DECL kqueue_tcp_service final
174175
: public reactor_tcp_service_impl<
175176
kqueue_tcp_service, kqueue_traits, kqueue_tcp_socket>
176177
{
@@ -181,7 +182,7 @@ class kqueue_tcp_service final
181182
: base_type(ctx) {}
182183
};
183184

184-
class kqueue_local_stream_service final
185+
class BOOST_COROSIO_DECL kqueue_local_stream_service final
185186
: public reactor_local_stream_service_impl<
186187
kqueue_local_stream_service, kqueue_traits,
187188
kqueue_local_stream_socket>
@@ -194,7 +195,7 @@ class kqueue_local_stream_service final
194195
: base_type(ctx) {}
195196
};
196197

197-
class kqueue_udp_service final
198+
class BOOST_COROSIO_DECL kqueue_udp_service final
198199
: public reactor_udp_service_impl<
199200
kqueue_udp_service, kqueue_traits, kqueue_udp_socket>
200201
{
@@ -205,7 +206,7 @@ class kqueue_udp_service final
205206
: base_type(ctx) {}
206207
};
207208

208-
class kqueue_local_datagram_service final
209+
class BOOST_COROSIO_DECL kqueue_local_datagram_service final
209210
: public reactor_local_dgram_service_impl<
210211
kqueue_local_datagram_service, kqueue_traits,
211212
kqueue_local_datagram_socket>
@@ -218,7 +219,7 @@ class kqueue_local_datagram_service final
218219
: base_type(ctx) {}
219220
};
220221

221-
class kqueue_tcp_acceptor_service final
222+
class BOOST_COROSIO_DECL kqueue_tcp_acceptor_service final
222223
: public reactor_acceptor_service_impl<
223224
kqueue_tcp_acceptor_service, kqueue_traits,
224225
tcp_acceptor_service, kqueue_tcp_acceptor,
@@ -233,7 +234,7 @@ class kqueue_tcp_acceptor_service final
233234
: base_type(ctx) {}
234235
};
235236

236-
class kqueue_local_stream_acceptor_service final
237+
class BOOST_COROSIO_DECL kqueue_local_stream_acceptor_service final
237238
: public reactor_acceptor_service_impl<
238239
kqueue_local_stream_acceptor_service, kqueue_traits,
239240
local_stream_acceptor_service,

include/boost/corosio/native/detail/select/select_types.hpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
so the concrete layer never pulls in platform headers.
2222
*/
2323

24+
#include <boost/corosio/detail/config.hpp>
2425
#include <boost/corosio/native/detail/select/select_traits.hpp>
2526
#include <boost/corosio/native/detail/select/select_scheduler.hpp>
2627
#include <boost/corosio/native/detail/reactor/reactor_backend.hpp>
@@ -170,7 +171,7 @@ class select_local_stream_acceptor final
170171

171172
// --- Services ---
172173

173-
class select_tcp_service final
174+
class BOOST_COROSIO_DECL select_tcp_service final
174175
: public reactor_tcp_service_impl<
175176
select_tcp_service, select_traits, select_tcp_socket>
176177
{
@@ -181,7 +182,7 @@ class select_tcp_service final
181182
: base_type(ctx) {}
182183
};
183184

184-
class select_local_stream_service final
185+
class BOOST_COROSIO_DECL select_local_stream_service final
185186
: public reactor_local_stream_service_impl<
186187
select_local_stream_service, select_traits,
187188
select_local_stream_socket>
@@ -194,7 +195,7 @@ class select_local_stream_service final
194195
: base_type(ctx) {}
195196
};
196197

197-
class select_udp_service final
198+
class BOOST_COROSIO_DECL select_udp_service final
198199
: public reactor_udp_service_impl<
199200
select_udp_service, select_traits, select_udp_socket>
200201
{
@@ -205,7 +206,7 @@ class select_udp_service final
205206
: base_type(ctx) {}
206207
};
207208

208-
class select_local_datagram_service final
209+
class BOOST_COROSIO_DECL select_local_datagram_service final
209210
: public reactor_local_dgram_service_impl<
210211
select_local_datagram_service, select_traits,
211212
select_local_datagram_socket>
@@ -218,7 +219,7 @@ class select_local_datagram_service final
218219
: base_type(ctx) {}
219220
};
220221

221-
class select_tcp_acceptor_service final
222+
class BOOST_COROSIO_DECL select_tcp_acceptor_service final
222223
: public reactor_acceptor_service_impl<
223224
select_tcp_acceptor_service, select_traits,
224225
tcp_acceptor_service, select_tcp_acceptor,
@@ -233,7 +234,7 @@ class select_tcp_acceptor_service final
233234
: base_type(ctx) {}
234235
};
235236

236-
class select_local_stream_acceptor_service final
237+
class BOOST_COROSIO_DECL select_local_stream_acceptor_service final
237238
: public reactor_acceptor_service_impl<
238239
select_local_stream_acceptor_service, select_traits,
239240
local_stream_acceptor_service,

0 commit comments

Comments
 (0)