[Libreoffice-commits] .: 2 commits - boost/aliasing.patch boost/makefile.mk
Caolán McNamara
caolan at kemper.freedesktop.org
Mon Oct 18 11:52:21 PDT 2010
boost/aliasing.patch | 43 +++++++++++++++++++++++++++++++++++++++++++
boost/makefile.mk | 2 ++
2 files changed, 45 insertions(+)
New commits:
commit b0dc55ff5db4a9f55186e50614cf91b5eb056b58
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Oct 18 16:25:10 2010 +0100
tweak this to patch
diff --git a/boost/aliasing.patch b/boost/aliasing.patch
index ce6baaf..07840a4 100644
--- a/boost/aliasing.patch
+++ b/boost/aliasing.patch
@@ -1,5 +1,5 @@
---- misc/boost_1_43_0/boost/function/function_base.hpp
-+++ misc/build/boost_1_43_0/boost/function/function_base.hpp
+--- misc/boost_1_39_0/boost/function/function_base.hpp
++++ misc/build/boost_1_39_0/boost/function/function_base.hpp
@@ -2,6 +2,7 @@
// Copyright Douglas Gregor 2001-2006
@@ -41,17 +41,3 @@
} else if (op == check_functor_type_tag) {
const detail::sp_typeinfo& check_type
= *out_buffer.type.type;
-@@ -714,8 +722,11 @@
-
- public: // should be protected, but GCC 2.95.3 will fail to allow access
- detail::function::vtable_base* get_vtable() const {
-- return reinterpret_cast<detail::function::vtable_base*>(
-- reinterpret_cast<std::size_t>(vtable) & ~(std::size_t)0x01);
-+ return static_cast<detail::function::vtable_base*>(
-+ (void*)(
-+ (std::size_t(static_cast<void*>(vtable)) & ~(std::size_t(0x01)))
-+ )
-+ );
- }
-
- bool has_trivial_copy_and_destroy() const {
commit 468c3bbe0bb79bbd5c3a070bb2cb7b31f4270023
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Oct 18 16:09:04 2010 +0100
#i113177# remove strict-aliasing warning from boost headers
diff --git a/boost/aliasing.patch b/boost/aliasing.patch
new file mode 100644
index 0000000..ce6baaf
--- /dev/null
+++ b/boost/aliasing.patch
@@ -0,0 +1,57 @@
+--- misc/boost_1_43_0/boost/function/function_base.hpp
++++ misc/build/boost_1_43_0/boost/function/function_base.hpp
+@@ -2,6 +2,7 @@
+
+ // Copyright Douglas Gregor 2001-2006
+ // Copyright Emil Dotchevski 2007
++// Copyright Dean Michael Berris 2009
+ // Use, modification and distribution is subject to the Boost Software License, Version 1.0.
+ // (See accompanying file LICENSE_1_0.txt or copy at
+ // http://www.boost.org/LICENSE_1_0.txt)
+@@ -44,6 +45,13 @@
+ # pragma warning( disable : 4127 ) // "conditional expression is constant"
+ #endif
+
++#if defined(__GNUC__)
++// Because GCC complains of strict aliasing problems, we make it
++// treat the header as a system header, becoming more forgiving with
++// treating implementation details that may be potentially harmful.
++# pragma GCC system_header
++#endif
++
+ // Define BOOST_FUNCTION_STD_NS to the namespace that contains type_info.
+ #ifdef BOOST_NO_STD_TYPEINFO
+ // Embedded VC++ does not have type_info in namespace std
+@@ -314,15 +322,15 @@
+ {
+ if (op == clone_functor_tag || op == move_functor_tag) {
+ const functor_type* in_functor =
+- reinterpret_cast<const functor_type*>(&in_buffer.data);
++ static_cast<const functor_type*>(static_cast<void*>(&in_buffer.data));
+ new ((void*)&out_buffer.data) functor_type(*in_functor);
+
+ if (op == move_functor_tag) {
+- reinterpret_cast<functor_type*>(&in_buffer.data)->~Functor();
++ static_cast<functor_type*>(static_cast<void*>(&in_buffer.data))->~Functor();
+ }
+ } else if (op == destroy_functor_tag) {
+ // Some compilers (Borland, vc6, ...) are unhappy with ~functor_type.
+- reinterpret_cast<functor_type*>(&out_buffer.data)->~Functor();
++ static_cast<functor_type*>(static_cast<void*>(&out_buffer.data))->~Functor();
+ } else if (op == check_functor_type_tag) {
+ const detail::sp_typeinfo& check_type
+ = *out_buffer.type.type;
+@@ -714,8 +722,11 @@
+
+ public: // should be protected, but GCC 2.95.3 will fail to allow access
+ detail::function::vtable_base* get_vtable() const {
+- return reinterpret_cast<detail::function::vtable_base*>(
+- reinterpret_cast<std::size_t>(vtable) & ~(std::size_t)0x01);
++ return static_cast<detail::function::vtable_base*>(
++ (void*)(
++ (std::size_t(static_cast<void*>(vtable)) & ~(std::size_t(0x01)))
++ )
++ );
+ }
+
+ bool has_trivial_copy_and_destroy() const {
diff --git a/boost/makefile.mk b/boost/makefile.mk
index 1f430d7..8602cf9 100644
--- a/boost/makefile.mk
+++ b/boost/makefile.mk
@@ -51,6 +51,8 @@ all:
TARFILE_NAME=boost_1_39_0
TARFILE_MD5=fcc6df1160753d0b8c835d17fdeeb0a7
PATCH_FILES=$(TARFILE_NAME).patch
+# See https://svn.boost.org/trac/boost/ticket/3780
+PATCH_FILES+=aliasing.patch
#https://svn.boost.org/trac/boost/ticket/4713
PATCH_FILES+=boost.4713.warnings.patch
More information about the Libreoffice-commits
mailing list