[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