[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