Boost C++ Libraries: Ticket #11398: boost log should allow setting BOOST_LOG_EVENT_USE_BOOST_CONDITION manually https://svn.boost.org/trac10/ticket/11398 <p> boost.log uses a different event mechanism depending on the version of GCC, for users wishing to use from GCC 4.4 a version of log compiled with GCC 4.1, linking fails because they're set to use different event mechanisms. </p> <p> This could be fixed by simply allowing the user to define himself BOOST_LOG_EVENT_USE_BOOST_CONDITION which should disable attempting to use semaphores. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/11398 Trac 1.4.3 Mathias Gaunard Mon, 15 Jun 2015 10:03:20 GMT <link>https://svn.boost.org/trac10/ticket/11398#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/11398#comment:1</guid> <description> <blockquote> <p> Pull request here: </p> </blockquote> <p> <a class="ext-link" href="https://github.com/boostorg/log/pull/6"><span class="icon">​</span>https://github.com/boostorg/log/pull/6</a> </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Andrey Semashev</dc:creator> <pubDate>Mon, 15 Jun 2015 14:36:31 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/11398#comment:2 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/11398#comment:2</guid> <description> <p> I don't want to make BOOST_LOG_EVENT_USE_BOOST_CONDITION a public macro. The long term plan is to remove event implementation from Boost.Log and move to Boost.Sync. Until that happens, I could use Boost.Atomic for atomic ops instead of <code></code><code>__sync*</code><code></code> intrinsics directly. I believe, lack of those intrinsics in gcc 4.1 is what makes the condition variable version to be selected? </p> <p> BTW, ABI compatibility between different compilers is not guaranteed - not only because Boost.Log can contain different versions of the code (like in the case of event) but because this can be the case in other libraries. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Mathias Gaunard</dc:creator> <pubDate>Mon, 15 Jun 2015 18:46:02 GMT</pubDate> <title/> <link>https://svn.boost.org/trac10/ticket/11398#comment:3 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/11398#comment:3</guid> <description> <p> GCC has had a stable ABI since 4.0. Since it has many versions, it is very common for libraries that are shipped in binary form to be linked against code that uses a different version of GCC. Boost.Log is the only Boost library with this issue as far as I know, and the fix is quite simple, so I don't see a good reason not to include it if it fixes real deployment problems in the industry. </p> <p> Arguably a better fix would be to have a sane ABI that doesn't change depending on compiler version, but that's more work. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Andrey Semashev</dc:creator> <pubDate>Sun, 05 Jul 2015 19:04:36 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/11398#comment:4 https://svn.boost.org/trac10/ticket/11398#comment:4 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> Done in <a class="ext-link" href="https://github.com/boostorg/log/commit/30e7f036316d20285f8cecea36ca6a8ac0190125"><span class="icon">​</span>https://github.com/boostorg/log/commit/30e7f036316d20285f8cecea36ca6a8ac0190125</a>. BOOST_LOG_EVENT_USE_BOOST_CONDITION is still a private macro, it should not be used by users. </p> Ticket