summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2016-03-07 17:59:32 +0000
committerMike Frysinger <vapier@gentoo.org>2016-03-07 17:59:32 +0000
commit6c15ed31ccbd1352dfbe706dbbcc41aaa183320d (patch)
treea9cb26cf1e081ea9231641c13926f2518e447376 /src/patchsets/glibc
parenttry to reset CVS keywords to disable $Id expansion (diff)
downloadgentoo-6c15ed31ccbd1352dfbe706dbbcc41aaa183320d.tar.gz
gentoo-6c15ed31ccbd1352dfbe706dbbcc41aaa183320d.tar.bz2
gentoo-6c15ed31ccbd1352dfbe706dbbcc41aaa183320d.zip
pull few more fixes from upstream
Diffstat (limited to 'src/patchsets/glibc')
-rw-r--r--src/patchsets/glibc/2.22/00_all_0042-powerpc-Enforce-compiler-barriers-on-hardware-transa.patch194
-rw-r--r--src/patchsets/glibc/2.22/00_all_0043-powerpc-Fix-macro-usage-of-htm-builtins.patch35
-rw-r--r--src/patchsets/glibc/2.22/00_all_0044-S390-Do-not-use-direct-socket-syscalls-if-build-on-k.patch74
-rw-r--r--src/patchsets/glibc/2.22/00_all_0045-sln-use-stat64.patch56
-rw-r--r--src/patchsets/glibc/2.22/README.history6
5 files changed, 364 insertions, 1 deletions
diff --git a/src/patchsets/glibc/2.22/00_all_0042-powerpc-Enforce-compiler-barriers-on-hardware-transa.patch b/src/patchsets/glibc/2.22/00_all_0042-powerpc-Enforce-compiler-barriers-on-hardware-transa.patch
new file mode 100644
index 0000000000..5d3c703f4b
--- /dev/null
+++ b/src/patchsets/glibc/2.22/00_all_0042-powerpc-Enforce-compiler-barriers-on-hardware-transa.patch
@@ -0,0 +1,194 @@
+From e012eafca47020da292f828fe128f3aca50026e1 Mon Sep 17 00:00:00 2001
+From: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
+Date: Mon, 28 Dec 2015 12:24:43 -0200
+Subject: [PATCH] powerpc: Enforce compiler barriers on hardware transactions
+
+Work around a GCC behavior with hardware transactional memory built-ins.
+GCC doesn't treat the PowerPC transactional built-ins as compiler
+barriers, moving instructions past the transaction boundaries and
+altering their atomicity.
+
+(cherry picked from commit 42bf1c897170ff951c7fd0ee9da25f97ff787396)
+
+Conflicts:
+ sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
+
+(cherry picked from commit 3803874b4a368eb8245fbf091651b6c8edd90b23)
+---
+ sysdeps/powerpc/nptl/elide.h | 8 ++---
+ sysdeps/powerpc/sysdep.h | 2 +-
+ sysdeps/unix/sysv/linux/powerpc/elision-lock.c | 4 +--
+ sysdeps/unix/sysv/linux/powerpc/elision-trylock.c | 6 ++--
+ sysdeps/unix/sysv/linux/powerpc/elision-unlock.c | 2 +-
+ sysdeps/unix/sysv/linux/powerpc/htm.h | 39 ++++++++++++++++++++---
+ 6 files changed, 46 insertions(+), 15 deletions(-)
+
+diff --git a/sysdeps/powerpc/nptl/elide.h b/sysdeps/powerpc/nptl/elide.h
+index 2e1e443..02f8f3b 100644
+--- a/sysdeps/powerpc/nptl/elide.h
++++ b/sysdeps/powerpc/nptl/elide.h
+@@ -68,14 +68,14 @@ __get_new_count (uint8_t *adapt_count, int attempt)
+ else \
+ for (int i = __elision_aconf.try_tbegin; i > 0; i--) \
+ { \
+- if (__builtin_tbegin (0)) \
++ if (__libc_tbegin (0)) \
+ { \
+ if (is_lock_free) \
+ { \
+ ret = 1; \
+ break; \
+ } \
+- __builtin_tabort (_ABORT_LOCK_BUSY); \
++ __libc_tabort (_ABORT_LOCK_BUSY); \
+ } \
+ else \
+ if (!__get_new_count (&adapt_count,i)) \
+@@ -90,7 +90,7 @@ __get_new_count (uint8_t *adapt_count, int attempt)
+ if (__elision_aconf.try_tbegin > 0) \
+ { \
+ if (write) \
+- __builtin_tabort (_ABORT_NESTED_TRYLOCK); \
++ __libc_tabort (_ABORT_NESTED_TRYLOCK); \
+ ret = ELIDE_LOCK (adapt_count, is_lock_free); \
+ } \
+ ret; \
+@@ -102,7 +102,7 @@ __elide_unlock (int is_lock_free)
+ {
+ if (is_lock_free)
+ {
+- __builtin_tend (0);
++ __libc_tend (0);
+ return true;
+ }
+ return false;
+diff --git a/sysdeps/powerpc/sysdep.h b/sysdeps/powerpc/sysdep.h
+index e32168e..f424fe4 100644
+--- a/sysdeps/powerpc/sysdep.h
++++ b/sysdeps/powerpc/sysdep.h
+@@ -180,7 +180,7 @@
+ # define ABORT_TRANSACTION \
+ ({ \
+ if (THREAD_GET_TM_CAPABLE ()) \
+- __builtin_tabort (_ABORT_SYSCALL); \
++ __libc_tabort (_ABORT_SYSCALL); \
+ })
+ #else
+ # define ABORT_TRANSACTION
+diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-lock.c b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
+index c6731ca..e11ad1d 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
++++ b/sysdeps/unix/sysv/linux/powerpc/elision-lock.c
+@@ -74,12 +74,12 @@ __lll_lock_elision (int *lock, short *adapt_count, EXTRAARG int pshared)
+
+ for (int i = aconf.try_tbegin; i > 0; i--)
+ {
+- if (__builtin_tbegin (0))
++ if (__libc_tbegin (0))
+ {
+ if (*lock == 0)
+ return 0;
+ /* Lock was busy. Fall back to normal locking. */
+- __builtin_tabort (_ABORT_LOCK_BUSY);
++ __libc_tabort (_ABORT_LOCK_BUSY);
+ }
+ else
+ {
+diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c b/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
+index 7b6d1b9..edec155 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
++++ b/sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
+@@ -31,7 +31,7 @@ int
+ __lll_trylock_elision (int *futex, short *adapt_count)
+ {
+ /* Implement POSIX semantics by forbiding nesting elided trylocks. */
+- __builtin_tabort (_ABORT_NESTED_TRYLOCK);
++ __libc_tabort (_ABORT_NESTED_TRYLOCK);
+
+ /* Only try a transaction if it's worth it. */
+ if (*adapt_count > 0)
+@@ -40,13 +40,13 @@ __lll_trylock_elision (int *futex, short *adapt_count)
+ goto use_lock;
+ }
+
+- if (__builtin_tbegin (0))
++ if (__libc_tbegin (0))
+ {
+ if (*futex == 0)
+ return 0;
+
+ /* Lock was busy. Fall back to normal locking. */
+- __builtin_tabort (_ABORT_LOCK_BUSY);
++ __libc_tabort (_ABORT_LOCK_BUSY);
+ }
+ else
+ {
+diff --git a/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
+index f04c339..7234db6 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
++++ b/sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
+@@ -25,7 +25,7 @@ __lll_unlock_elision(int *lock, int pshared)
+ {
+ /* When the lock was free we're in a transaction. */
+ if (*lock == 0)
+- __builtin_tend (0);
++ __libc_tend (0);
+ else
+ lll_unlock ((*lock), pshared);
+ return 0;
+diff --git a/sysdeps/unix/sysv/linux/powerpc/htm.h b/sysdeps/unix/sysv/linux/powerpc/htm.h
+index 57d5cd6..f9a2587 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/htm.h
++++ b/sysdeps/unix/sysv/linux/powerpc/htm.h
+@@ -118,13 +118,44 @@
+ __ret; \
+ })
+
+-#define __builtin_tbegin(tdb) _tbegin ()
+-#define __builtin_tend(nested) _tend ()
+-#define __builtin_tabort(abortcode) _tabort (abortcode)
+-#define __builtin_get_texasru() _texasru ()
++#define __libc_tbegin(tdb) _tbegin ()
++#define __libc_tend(nested) _tend ()
++#define __libc_tabort(abortcode) _tabort (abortcode)
++#define __builtin_get_texasru() _texasru ()
+
+ #else
+ # include <htmintrin.h>
++
++# ifdef __TM_FENCE__
++ /* New GCC behavior. */
++# define __libc_tbegin(R) __builtin_tbegin (R);
++# define __libc_tend(R) __builtin_tend (R);
++# define __libc_tabort(R) __builtin_tabort (R);
++# else
++ /* Workaround an old GCC behavior. Earlier releases of GCC 4.9 and 5.0,
++ didn't use to treat __builtin_tbegin, __builtin_tend and
++ __builtin_tabort as compiler barriers, moving instructions into and
++ out the transaction.
++ Remove this when glibc drops support for GCC 5.0. */
++# define __libc_tbegin(R) \
++ ({ __asm__ volatile("" ::: "memory"); \
++ unsigned int __ret = __builtin_tbegin (R); \
++ __asm__ volatile("" ::: "memory"); \
++ __ret; \
++ })
++# define __libc_tabort(R) \
++ ({ __asm__ volatile("" ::: "memory"); \
++ unsigned int __ret = __builtin_tabort (R); \
++ __asm__ volatile("" ::: "memory"); \
++ __ret; \
++ })
++# define __libc_tend(R) \
++ ({ __asm__ volatile("" ::: "memory"); \
++ unsigned int __ret = __builtin_tend (R); \
++ __asm__ volatile("" ::: "memory"); \
++ __ret; \
++ })
++# endif /* __TM_FENCE__ */
+ #endif /* __HTM__ */
+
+ #endif /* __ASSEMBLER__ */
+--
+2.6.2
+
diff --git a/src/patchsets/glibc/2.22/00_all_0043-powerpc-Fix-macro-usage-of-htm-builtins.patch b/src/patchsets/glibc/2.22/00_all_0043-powerpc-Fix-macro-usage-of-htm-builtins.patch
new file mode 100644
index 0000000000..9fb9c0def2
--- /dev/null
+++ b/src/patchsets/glibc/2.22/00_all_0043-powerpc-Fix-macro-usage-of-htm-builtins.patch
@@ -0,0 +1,35 @@
+From 78b80a22769f07fcd83763d5b8b3625fe4920574 Mon Sep 17 00:00:00 2001
+From: "Paul E. Murphy" <murphyp@linux.vnet.ibm.com>
+Date: Wed, 20 Jan 2016 10:33:19 -0600
+Subject: [PATCH] powerpc: Fix macro usage of htm builtins
+
+Some extraneous semicolons were included in a
+recent patch which causes a build failure with
+newer compilers.
+
+(cherry picked from commit af8ea0f449af7d3847351a4a5bafcd435a22ac31)
+(cherry picked from commit a33d347c181cfa0d84c37e9961ebf030495ed248)
+---
+ sysdeps/unix/sysv/linux/powerpc/htm.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/sysdeps/unix/sysv/linux/powerpc/htm.h b/sysdeps/unix/sysv/linux/powerpc/htm.h
+index f9a2587..7b49817 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/htm.h
++++ b/sysdeps/unix/sysv/linux/powerpc/htm.h
+@@ -128,9 +128,9 @@
+
+ # ifdef __TM_FENCE__
+ /* New GCC behavior. */
+-# define __libc_tbegin(R) __builtin_tbegin (R);
+-# define __libc_tend(R) __builtin_tend (R);
+-# define __libc_tabort(R) __builtin_tabort (R);
++# define __libc_tbegin(R) __builtin_tbegin (R)
++# define __libc_tend(R) __builtin_tend (R)
++# define __libc_tabort(R) __builtin_tabort (R)
+ # else
+ /* Workaround an old GCC behavior. Earlier releases of GCC 4.9 and 5.0,
+ didn't use to treat __builtin_tbegin, __builtin_tend and
+--
+2.6.2
+
diff --git a/src/patchsets/glibc/2.22/00_all_0044-S390-Do-not-use-direct-socket-syscalls-if-build-on-k.patch b/src/patchsets/glibc/2.22/00_all_0044-S390-Do-not-use-direct-socket-syscalls-if-build-on-k.patch
new file mode 100644
index 0000000000..1fc675d87d
--- /dev/null
+++ b/src/patchsets/glibc/2.22/00_all_0044-S390-Do-not-use-direct-socket-syscalls-if-build-on-k.patch
@@ -0,0 +1,74 @@
+From 1fd66a522e9262d7ff36b015090f3989f93ba468 Mon Sep 17 00:00:00 2001
+From: Stefan Liebler <stli@linux.vnet.ibm.com>
+Date: Thu, 3 Mar 2016 08:17:09 +0100
+Subject: [PATCH] S390: Do not use direct socket syscalls if build on kernels
+ >= 4.3. [BZ #19682]
+
+Beginning with Linux 4.3, the kernel headers contain direct
+system call numbers __NR_socket etc. on s390x. On older kernels,
+the socket-multiplexer syscall __NR_socketcall was used.
+
+To enable these new syscalls, the patch
+"S390: Call direct system calls for socket operations."
+(https://sourceware.org/git/?p=glibc.git;a=commit;h=016495b818cb61df7d0d10e6db54074271b3e3a5)
+was applied upstream.
+
+If glibc 2.23 is configured with --enable-kernel=4.3 and newer,
+the direct socket syscalls are used.
+For older kernels, the socket-multiplexer syscall is used instead.
+
+In glibc 2.22 and earlier, this patch is not applied.
+If you build glibc on a kernel < 4.3, the socket-multiplexer
+syscall is used. But if you build glibc on kernel >= 4.3, the
+direct socket-syscalls are used. If you install this glibc on a
+kernel < 4.3, all socket operations will fail.
+See "Bug 19682 - s390x: Incorrect syscall definitions cause
+breakage with Linux 4.3 headers"
+(https://sourceware.org/bugzilla/show_bug.cgi?id=19682)
+The configure switch --enable-kernel does not influence this
+behaviour on older glibc-releases.
+
+The solution is to remove the direct socket-syscalls in
+sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
+(this patch) on older glibc-releases as it was done by the
+upstream patch, too. These entries were never used on s390x,
+but the c-files in sysdeps/unix/sysv/linux/.
+After this removal, the behaviour of the socket functions are
+not changed compared to the original glibc release version
+and the socket-multiplexer-syscall is always used.
+
+(cherry picked from commit 425c48c217ef93c2c4f81f9f3bb2fdba096877a2)
+---
+ sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list | 19 -------------------
+ 1 file changed, 19 deletions(-)
+
+diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
+index 5b8c102..9f03d26 100644
+--- a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
++++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
+@@ -12,22 +12,3 @@ shmget - shmget i:iii __shmget shmget
+ semop - semop i:ipi __semop semop
+ semget - semget i:iii __semget semget
+ semctl - semctl i:iiii __semctl semctl
+-
+-# proper socket implementations:
+-accept - accept Ci:iBN __libc_accept __accept accept
+-bind - bind i:ipi __bind bind
+-connect - connect Ci:ipi __libc_connect __connect connect
+-getpeername - getpeername i:ipp __getpeername getpeername
+-getsockname - getsockname i:ipp __getsockname getsockname
+-getsockopt - getsockopt i:iiiBN __getsockopt getsockopt
+-listen - listen i:ii __listen listen
+-recv - recv Ci:ibni __libc_recv __recv recv
+-recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
+-recvmsg - recvmsg Ci:ipi __libc_recvmsg __recvmsg recvmsg
+-send - send Ci:ibni __libc_send __send send
+-sendmsg - sendmsg Ci:ipi __libc_sendmsg __sendmsg sendmsg
+-sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto
+-setsockopt - setsockopt i:iiibn __setsockopt setsockopt
+-shutdown - shutdown i:ii __shutdown shutdown
+-socket - socket i:iii __socket socket
+-socketpair - socketpair i:iiif __socketpair socketpair
+--
+2.6.2
+
diff --git a/src/patchsets/glibc/2.22/00_all_0045-sln-use-stat64.patch b/src/patchsets/glibc/2.22/00_all_0045-sln-use-stat64.patch
new file mode 100644
index 0000000000..b12a257960
--- /dev/null
+++ b/src/patchsets/glibc/2.22/00_all_0045-sln-use-stat64.patch
@@ -0,0 +1,56 @@
+From 3f749c2e7b8226eb8c6f16fb180987dc7efe35ba Mon Sep 17 00:00:00 2001
+From: Hongjiu Zhang <noctuorare@gmail.com>
+Date: Sun, 6 Mar 2016 20:18:21 -0500
+Subject: [PATCH] sln: use stat64
+
+When using sln on some filesystems which return 64-bit inodes,
+the stat call might fail during install like so:
+ .../elf/sln .../elf/symlink.list
+ /lib32/libc.so.6: invalid destination: Value too large for defined data type
+ /lib32/ld-linux.so.2: invalid destination: Value too large for defined data type
+ Makefile:104: recipe for target 'install-symbolic-link' failed
+
+Switch to using stat64 all the time to avoid this.
+
+URL: https://bugs.gentoo.org/576396
+(cherry picked from commit f5e753c8c3a18a1e3c715dd11bf4dc341b5c481f)
+(cherry picked from commit d6778fc4b0039b2116f88218212618ca357fee2f)
+---
+ ChangeLog | 5 +++++
+ elf/sln.c | 4 ++--
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 95cc5a2..7663053 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2016-03-07 Hongjiu Zhang <noctuorare@gmail.com>
++
++ * elf/sln.c (makesymlink): Change struct stat to stat64, and lstat
++ to lstat64.
++
+ 2015-08-05 Mike Frysinger <vapier@gentoo.org>
+
+ * nptl/allocatestack.c (allocate_stack): Move stacktop decl down to
+diff --git a/elf/sln.c b/elf/sln.c
+index 1a7d24e..c6601fd 100644
+--- a/elf/sln.c
++++ b/elf/sln.c
+@@ -167,11 +167,11 @@ makesymlink (src, dest)
+ const char *src;
+ const char *dest;
+ {
+- struct stat stats;
++ struct stat64 stats;
+ const char *error;
+
+ /* Destination must not be a directory. */
+- if (lstat (dest, &stats) == 0)
++ if (lstat64 (dest, &stats) == 0)
+ {
+ if (S_ISDIR (stats.st_mode))
+ {
+--
+2.6.2
+
diff --git a/src/patchsets/glibc/2.22/README.history b/src/patchsets/glibc/2.22/README.history
index eeca4fb76e..d4d29ca342 100644
--- a/src/patchsets/glibc/2.22/README.history
+++ b/src/patchsets/glibc/2.22/README.history
@@ -1,5 +1,9 @@
-11 [pending]
+11 07 Mar 2016
+ 00_all_0041-CVE-2015-7547-getaddrinfo-stack-based-buffer-overflo.patch
+ + 00_all_0042-powerpc-Enforce-compiler-barriers-on-hardware-transa.patch
+ + 00_all_0043-powerpc-Fix-macro-usage-of-htm-builtins.patch
+ + 00_all_0044-S390-Do-not-use-direct-socket-syscalls-if-build-on-k.patch
+ + 00_all_0045-sln-use-stat64.patch
D 10_all_glibc-CVE-2015-7547.patch
10 16 Feb 2016