[Libreoffice-commits] core.git: include/rtl solenv/gbuild

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Tue May 5 19:43:45 UTC 2020


 include/rtl/strbuf.hxx                 |    8 --------
 include/rtl/string.hxx                 |   16 ----------------
 include/rtl/ustring.hxx                |   16 ----------------
 solenv/gbuild/platform/com_GCC_defs.mk |    3 +++
 4 files changed, 3 insertions(+), 40 deletions(-)

New commits:
commit 0613619a61c39eff4b7d47d7afdd991658986a72
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Tue May 5 14:18:02 2020 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Tue May 5 21:43:12 2020 +0200

    Disable -Wstringop-overflow in --enable-optimized builds with GCC
    
    This reverts commit e287fde52fb9de5bdf1d00c8a3fbfcca7db9892c "Silence bogus
    -Wstringop-overflow with GCC trunk towards GCC 10", as that workaround, which
    happened to work for some revisions of GCC trunk towards GCC 10, no longer works
    for GCC 10 release candidates, see
    <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92893#c9> "[10 Regression]
    Unhelpful -Wstringop-overflow warning for a trailing one-element array".
    
    (Using -Wstringop-overflow=1 instead of the -Wstringop-overflow=2 default would
    have still caused bogus warnings, requiring -Wno-stringop-overflow.)
    
    Change-Id: I9b7342748c18da32f509b4a0e0653aede8447657
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93499
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/include/rtl/strbuf.hxx b/include/rtl/strbuf.hxx
index e9a548297016..2a303ce998e6 100644
--- a/include/rtl/strbuf.hxx
+++ b/include/rtl/strbuf.hxx
@@ -569,15 +569,7 @@ public:
             return *this;
         l += pData->length;
         rtl_stringbuffer_ensureCapacity( &pData, &nCapacity, l );
-#if defined __GNUC__ && __GNUC__ == 10 && !defined __clang__
-        // Avoid some bogus GCC 10 trunk -Werror=stringop-overflow (see
-        // <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92893> "Unhelpful -Wstringop-overflow
-        // warning"):
-        struct Hack { char c; char a[]; };
-        char* end = c.addData( &reinterpret_cast<Hack *>(pData->buffer)->c + pData->length );
-#else
         char* end = c.addData( pData->buffer + pData->length );
-#endif
         *end = '\0';
         pData->length = l;
         return *this;
diff --git a/include/rtl/string.hxx b/include/rtl/string.hxx
index 4f600affdabe..809b0a11bcd5 100644
--- a/include/rtl/string.hxx
+++ b/include/rtl/string.hxx
@@ -273,15 +273,7 @@ public:
         pData = rtl_string_alloc( l );
         if (l != 0)
         {
-#if defined __GNUC__ && __GNUC__ == 10 && !defined __clang__
-            // Avoid some bogus GCC 10 trunk -Werror=stringop-overflow (see
-            // <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92893> "Unhelpful -Wstringop-overflow
-            // warning"):
-            struct Hack { char c; char a[]; };
-            char* end = c.addData( &reinterpret_cast<Hack *>(pData->buffer)->c );
-#else
             char* end = c.addData( pData->buffer );
-#endif
             pData->length = l;
             *end = '\0';
         }
@@ -389,15 +381,7 @@ public:
             return *this;
         l += pData->length;
         rtl_string_ensureCapacity( &pData, l );
-#if defined __GNUC__ && __GNUC__ == 10 && !defined __clang__
-        // Avoid some bogus GCC 10 trunk -Werror=stringop-overflow (see
-        // <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92893> "Unhelpful -Wstringop-overflow
-        // warning"):
-        struct Hack { char c; char a[]; };
-        char* end = c.addData( &reinterpret_cast<Hack *>(pData->buffer)->c + pData->length );
-#else
         char* end = c.addData( pData->buffer + pData->length );
-#endif
         *end = '\0';
         pData->length = l;
         return *this;
diff --git a/include/rtl/ustring.hxx b/include/rtl/ustring.hxx
index ffe42d139215..5f0c1032c603 100644
--- a/include/rtl/ustring.hxx
+++ b/include/rtl/ustring.hxx
@@ -401,15 +401,7 @@ public:
         pData = rtl_uString_alloc( l );
         if (l != 0)
         {
-#if defined __GNUC__ && __GNUC__ == 10 && !defined __clang__
-            // Avoid some bogus GCC 10 trunk -Werror=stringop-overflow (see
-            // <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92893> "Unhelpful -Wstringop-overflow
-            // warning"):
-            struct Hack { sal_Unicode c; sal_Unicode a[]; };
-            sal_Unicode* end = c.addData( reinterpret_cast<Hack *>(pData->buffer - 1)->a );
-#else
             sal_Unicode* end = c.addData( pData->buffer );
-#endif
             pData->length = l;
             *end = '\0';
             // TODO realloc in case pData->length is noticeably smaller than l?
@@ -638,15 +630,7 @@ public:
             return *this;
         l += pData->length;
         rtl_uString_ensureCapacity( &pData, l );
-#if defined __GNUC__ && __GNUC__ == 10 && !defined __clang__
-        // Avoid some bogus GCC 10 trunk -Werror=stringop-overflow (see
-        // <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92893> "Unhelpful -Wstringop-overflow
-        // warning"):
-        struct Hack { sal_Unicode c; sal_Unicode a[]; };
-        sal_Unicode* end = c.addData( reinterpret_cast<Hack *>(pData->buffer - 1)->a + pData->length );
-#else
         sal_Unicode* end = c.addData( pData->buffer + pData->length );
-#endif
         *end = '\0';
         pData->length = l;
         return *this;
diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk
index baeb215bfb9e..4d3602864bc8 100644
--- a/solenv/gbuild/platform/com_GCC_defs.mk
+++ b/solenv/gbuild/platform/com_GCC_defs.mk
@@ -162,6 +162,9 @@ endif
 endif
 
 gb_CFLAGS_WERROR = $(if $(ENABLE_WERROR),-Werror)
+ifeq ($(ENABLE_OPTIMIZED)-$(COM_IS_CLANG),TRUE-)
+gb_CFLAGS_WERROR += -Wno-stringop-overflow
+endif
 
 # This is the default in non-C++11 mode
 ifeq ($(COM_IS_CLANG),TRUE)


More information about the Libreoffice-commits mailing list