]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/dll/doc/limitations.qbk
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / dll / doc / limitations.qbk
CommitLineData
7c673cae
FG
1[/
2 Copyright 2014 Renato Tegon Forti, Antony Polukhin
3 Copyright 2015 Antony Polukhin
4 Distributed under the Boost Software License, Version 1.0.
5 (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6/]
7
8[section:limitations Limitations]
9
10Some platforms and compilers do not provide all the required functionality to have a fully functional Boost.DLL.
11Such compilers are mentioned in this section along with possible workarounds for those limitations.
12
13[section Exporting weak symbols (Fails on MinGW, Android)]
14Some versions of Android, `MinGW` and `ld` on Windows platform fail to mix `__dllexport__` and `weak` attributes. This leads us to situation,
15where we must explicitly specify translation unit in which [macroref BOOST_DLL_ALIAS] is instantiated, making all other
16[macroref BOOST_DLL_ALIAS] declarations with that alias name an `extern` variable.
17
18Unit that must hold an instance of [macroref BOOST_DLL_ALIAS] must define [macroref BOOST_DLL_FORCE_ALIAS_INSTANTIATION]
19before including any of the Boost.DLL library headers.
20
21You may explicitly disable export of weak symbols using [macroref BOOST_DLL_FORCE_NO_WEAK_EXPORTS]. This may be usefull for working
22around linker problems or to test your program for compatability with linkers that do not support exporting weak symbols.
23[endsect]
24
25[section User defined section names (Fails on SunOS + Oracle Solaris Studio Compilers)]
26Some platforms ignore section attributes, so that querying for a symbols in a specified section using [classref boost::dll::library_info] may return nothing.
27[endsect]
28
29[section:multithread Thread safe library loading (Fails on FreeBSD, MacOS, iOS and some other)]
30On some platforms `dlopen`,`dlclose` and some other functions assume that they won't be called concurrently.
31
32Platforms that certaly have that issue are FreeBSD, MacOS, iOS.
33
34Platforms that certaly do not have such issue are Windows, Linux+glibc, Android, QNX.
35
36Other platforms are under question. If you're using one of the platforms that are not listed (for example Linux+busybox),
37you may run the `shared_library_concurrent_load_test` test to detect the issue:
38```
39cd boost_folder/libs/dll/test
40../../../b2 -a shared_library_concurrent_load_test
41```
42[endsect]
43
44[section:nested Nested Function Definitions]
45
46If a function is defined inside the class-definition it may be interpreted as always-inline which can lead to the function not being exported at all. This does however differ between between compilers.
47
48[endsect]
49
50[endsect]
51
52