hhorak pushed to community-mysql (f22). "Fix for big integers on gcc5"
notifications at fedoraproject.org
notifications at fedoraproject.org
Fri Apr 10 14:04:43 UTC 2015
>From 51a58b521603381a2e945d9c84e931bdb97c17fb Mon Sep 17 00:00:00 2001
From: Honza Horak <hhorak at redhat.com>
Date: Fri, 10 Apr 2015 13:09:48 +0200
Subject: Fix for big integers on gcc5
diff --git a/community-mysql-gcc5.patch b/community-mysql-gcc5.patch
new file mode 100644
index 0000000..679f6d8
--- /dev/null
+++ b/community-mysql-gcc5.patch
@@ -0,0 +1,60 @@
+commit b377595b246be1de01c37f1d0269b5821e19b3fb
+Author: Tor Didriksen <tor.didriksen at oracle.com>
+Date: Wed Apr 8 16:53:55 2015 +0200
+
+ Bug#20768820 MAIN.BIGINT TEST FAILS WHEN BUILT WITH GCC 5 IN RELEASE BUILD
+
+ Problem: with gcc5 in optmized mode, (- LLONG_MIN ) yields integer overflow.
+ Fix: In ull2dec() change the loop which counts the number of decimal_digit_t's
+ (cherry picked from commit b37d8bcc24f82f8e15c5f6e2243c8937af74acb7)
+
+diff --git a/strings/decimal.c b/strings/decimal.c
+index 0d47241..ccb4a6b 100644
+--- a/strings/decimal.c
++++ b/strings/decimal.c
+@@ -1064,26 +1064,34 @@ int double2decimal(double from, decimal_t *to)
+
+ static int ull2dec(ulonglong from, decimal_t *to)
+ {
+- int intg1, error=E_DEC_OK;
+- ulonglong x=from;
++ int intg1;
++ int error= E_DEC_OK;
++ ulonglong x= from;
+ dec1 *buf;
+
+ sanity(to);
+
+- for (intg1=1; from >= DIG_BASE; intg1++, from/=DIG_BASE) ;
++ if (from == 0)
++ intg1= 1;
++ else
++ {
++ /* Count the number of decimal_digit_t's we need. */
++ for (intg1= 0; from != 0; intg1++, from/= DIG_BASE)
++ ;
++ }
+ if (unlikely(intg1 > to->len))
+ {
+- intg1=to->len;
+- error=E_DEC_OVERFLOW;
++ intg1= to->len;
++ error= E_DEC_OVERFLOW;
+ }
+- to->frac=0;
+- to->intg=intg1*DIG_PER_DEC1;
++ to->frac= 0;
++ to->intg= intg1 * DIG_PER_DEC1;
+
+- for (buf=to->buf+intg1; intg1; intg1--)
++ for (buf= to->buf + intg1; intg1; intg1--)
+ {
+- ulonglong y=x/DIG_BASE;
+- *--buf=(dec1)(x-y*DIG_BASE);
+- x=y;
++ ulonglong y= x / DIG_BASE;
++ *--buf=(dec1)(x - y * DIG_BASE);
++ x= y;
+ }
+ return error;
+ }
diff --git a/community-mysql.spec b/community-mysql.spec
index 7d0f7f2..6712999 100644
--- a/community-mysql.spec
+++ b/community-mysql.spec
@@ -78,7 +78,7 @@
Name: community-mysql
Version: 5.6.24
-Release: 1%{?with_debug:.debug}%{?dist}
+Release: 2%{?with_debug:.debug}%{?dist}
Summary: MySQL client programs and shared libraries
Group: Applications/Databases
URL: http://www.mysql.com
@@ -119,6 +119,7 @@ Patch7: %{pkgnamepatch}-dh1024.patch
Patch8: %{pkgnamepatch}-scripts.patch
Patch9: %{pkgnamepatch}-install-db-sharedir.patch
Patch10: %{pkgnamepatch}-paths.patch
+Patch11: %{pkgnamepatch}-gcc5.patch
# Patches specific for this mysql package
Patch51: %{pkgnamepatch}-chain-certs.patch
@@ -392,6 +393,7 @@ the MySQL sources.
%patch8 -p1
%patch9 -p1
%patch10 -p1
+%patch11 -p1
%patch51 -p1
%patch52 -p1
%patch53 -p1
@@ -949,6 +951,9 @@ fi
%endif
%changelog
+* Fri Apr 10 2015 Honza Horak <hhorak at redhat.com> - 5.6.24-2
+- Fix for big integers on gcc5
+
* Thu Apr 09 2015 Honza Horak <hhorak at redhat.com> - 5.6.24-1
- Update to 5.6.24
--
cgit v0.10.2
http://pkgs.fedoraproject.org/cgit/community-mysql.git/commit/?h=f22&id=51a58b521603381a2e945d9c84e931bdb97c17fb
More information about the scm-commits
mailing list