summaryrefslogtreecommitdiff
path: root/packages/glibc/2.20
diff options
context:
space:
mode:
Diffstat (limited to 'packages/glibc/2.20')
-rw-r--r--packages/glibc/2.20/0017-Fix-cmpli-usage-in-power6-memset.patch49
-rw-r--r--packages/glibc/2.20/0017-fix-GCC-10-detection.patch25
2 files changed, 74 insertions, 0 deletions
diff --git a/packages/glibc/2.20/0017-Fix-cmpli-usage-in-power6-memset.patch b/packages/glibc/2.20/0017-Fix-cmpli-usage-in-power6-memset.patch
new file mode 100644
index 0000000..5213378
--- /dev/null
+++ b/packages/glibc/2.20/0017-Fix-cmpli-usage-in-power6-memset.patch
@@ -0,0 +1,49 @@
+Author: Joseph Myers <joseph@codesourcery.com>
+Date: 2016-10-24
+
+Building glibc for powerpc64 with recent (2.27.51.20161012) binutils,
+with multi-arch enabled, I get the error:
+
+../sysdeps/powerpc/powerpc64/power6/memset.S: Assembler messages:
+../sysdeps/powerpc/powerpc64/power6/memset.S:254: Error: operand out of range (5 is not between 0 and 1)
+../sysdeps/powerpc/powerpc64/power6/memset.S:254: Error: operand out of range (128 is not between 0 and 31)
+../sysdeps/powerpc/powerpc64/power6/memset.S:254: Error: missing operand
+
+Indeed, cmpli is documented as a four-operand instruction, and looking
+at nearby code it seems likely cmpldi was intended. This patch fixes
+this powerpc64 code accordingly, and makes a corresponding change to
+the powerpc32 code.
+
+Note: this patch is not tested beyond verifying that the powerpc64
+code builds where it failed to build before the patch. In particular,
+I have not done execution testing (the systems I usually use for
+testing powerpc are pre-power6 so wouldn't use this code) or tested
+the powerpc32 change.
+
+---
+ sysdeps/powerpc/powerpc32/power6/memset.S (memset): Use cmplwi instead of cmpli.
+ sysdeps/powerpc/powerpc64/power6/memset.S (memset): Use cmpldi instead of cmpli.
+
+--- a/sysdeps/powerpc/powerpc32/power6/memset.S
++++ b/sysdeps/powerpc/powerpc32/power6/memset.S
+@@ -394,7 +394,7 @@ L(cacheAlignedx):
+ /* A simple loop for the longer (>640 bytes) lengths. This form limits
+ the branch miss-predicted to exactly 1 at loop exit.*/
+ L(cacheAligned512):
+- cmpli cr1,rLEN,128
++ cmplwi cr1,rLEN,128
+ blt cr1,L(cacheAligned1)
+ dcbz 0,rMEMP
+ addi rLEN,rLEN,-128
+
+--- a/sysdeps/powerpc/powerpc64/power6/memset.S
++++ b/sysdeps/powerpc/powerpc64/power6/memset.S
+@@ -251,7 +251,7 @@ L(cacheAlignedx):
+ /* A simple loop for the longer (>640 bytes) lengths. This form limits
+ the branch miss-predicted to exactly 1 at loop exit.*/
+ L(cacheAligned512):
+- cmpli cr1,rLEN,128
++ cmpldi cr1,rLEN,128
+ blt cr1,L(cacheAligned1)
+ dcbz 0,rMEMP
+ addi rLEN,rLEN,-128
diff --git a/packages/glibc/2.20/0017-fix-GCC-10-detection.patch b/packages/glibc/2.20/0017-fix-GCC-10-detection.patch
new file mode 100644
index 0000000..c2afc77
--- /dev/null
+++ b/packages/glibc/2.20/0017-fix-GCC-10-detection.patch
@@ -0,0 +1,25 @@
+From 0991846fc6d5d0ef3800391bd29f2759780a3041 Mon Sep 17 00:00:00 2001
+From: Jakub Labenski <kuba@parasoft.com>
+Date: Fri, 5 Jun 2020 09:11:40 +0200
+Subject: [PATCH] Fix GCC 10+ detection
+
+---
+ configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure b/configure
+index 86ba30774b..b22ad9cb07 100755
+--- a/configure
++++ b/configure
+@@ -4661,7 +4661,7 @@ $as_echo_n "checking version of $CC... " >&6; }
+ ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+- 4.[4-9].* | 4.[1-9][0-9].* | [5-9].* )
++ 4.[4-9].* | 4.[1-9][0-9].* | [5-9].* | [1-9][0-9].* )
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+--
+2.25.1
+