[Libreoffice-commits] core.git: external/breakpad

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Mon Oct 28 09:32:54 UTC 2019


 external/breakpad/UnpackedTarball_breakpad.mk |    1 +
 external/breakpad/c++20-allocator.patch       |   11 +++++++++++
 2 files changed, 12 insertions(+)

New commits:
commit 245c2c463186189636f548d278250ca71beee21c
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Mon Oct 28 09:26:41 2019 +0100
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Mon Oct 28 10:32:18 2019 +0100

    external/breakpad: Adapt to std::allocator parts removed in C++20
    
    <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html#4.2>
    "Deprecating Vestigial Library Parts in C++17" deprecated, among others,
    std::allocator::pointer, and
    <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r4.html#3.9>
    "Reviewing Deprecated Facilities of C++17 for C++20" removed it completely.
    (And <https://gcc.gnu.org/git/?p=gcc.git;a=commit;
    h=954026a7a4e6a1affd1ac5db237ccd75a3316760> "Remove redundant std::allocator
    members for C++20" removed it from libstdc++ now for -std=c++2a.)
    
    The change to src/common/memory.h was necessary in Library_crashreport:
    
    > In file included from workdir/UnpackedTarball/breakpad/src/client/linux/dump_writer_common/thread_info.h:37,
    >                  from workdir/UnpackedTarball/breakpad/src/client/linux/minidump_writer/linux_dumper.h:51,
    >                  from workdir/UnpackedTarball/breakpad/src/client/linux/minidump_writer/minidump_writer.h:41,
    >                  from workdir/UnpackedTarball/breakpad/src/client/linux/handler/exception_handler.h:42,
    >                  from desktop/source/app/crashreport.cxx:29:
    > workdir/UnpackedTarball/breakpad/src/common/memory.h: In instantiation of ‘struct google_breakpad::PageStdAllocator<int>’:
    > gcc/trunk/inst/include/c++/10.0.0/bits/stl_vector.h:84:21:   required from ‘struct std::__cxx1998::_Vector_base<int, google_breakpad::PageStdAllocator<int> >’
    > gcc/trunk/inst/include/c++/10.0.0/bits/stl_vector.h:386:11:   required from ‘class std::__cxx1998::vector<int, google_breakpad::PageStdAllocator<int> >’
    > gcc/trunk/inst/include/c++/10.0.0/debug/vector:118:11:   required from ‘class std::__debug::vector<int, google_breakpad::PageStdAllocator<int> >’
    > workdir/UnpackedTarball/breakpad/src/common/memory.h:197:7:   required from ‘class google_breakpad::wasteful_vector<int>’
    > workdir/UnpackedTarball/breakpad/src/client/linux/minidump_writer/linux_dumper.h:187:26:   required from here
    > workdir/UnpackedTarball/breakpad/src/common/memory.h:165:47: error: no type named ‘pointer’ in ‘class std::allocator<int>’
    >   165 |   typedef typename std::allocator<T>::pointer pointer;
    >       |                                               ^~~~~~~
    
    Change-Id: Id7559456cc75311837aaa9f3a531f8820d5f593d
    Reviewed-on: https://gerrit.libreoffice.org/81585
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/external/breakpad/UnpackedTarball_breakpad.mk b/external/breakpad/UnpackedTarball_breakpad.mk
index 633574cd34a7..b9e14874d72d 100644
--- a/external/breakpad/UnpackedTarball_breakpad.mk
+++ b/external/breakpad/UnpackedTarball_breakpad.mk
@@ -24,6 +24,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,breakpad,\
 	external/breakpad/ucontext.patch \
 	external/breakpad/0001-Handle-race-between-ExceptionHandler-SignalHandler-a.patch.1 \
 	external/breakpad/0001-Fix-double-declaration-of-tgkill-when-using-Android-.patch.1 \
+	external/breakpad/c++20-allocator.patch \
 ))
 
 ifeq ($(COM_IS_CLANG),TRUE)
diff --git a/external/breakpad/c++20-allocator.patch b/external/breakpad/c++20-allocator.patch
new file mode 100644
index 000000000000..588d7db4dc7c
--- /dev/null
+++ b/external/breakpad/c++20-allocator.patch
@@ -0,0 +1,11 @@
+--- src/common/memory.h
++++ src/common/memory.h
+@@ -162,7 +162,7 @@
+ // Wrapper to use with STL containers
+ template <typename T>
+ struct PageStdAllocator : public std::allocator<T> {
+-  typedef typename std::allocator<T>::pointer pointer;
++  typedef T* pointer;
+   typedef typename std::allocator<T>::size_type size_type;
+ 
+   explicit PageStdAllocator(PageAllocator& allocator): allocator_(allocator) {}


More information about the Libreoffice-commits mailing list