This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch gentoo/2.22 updated. glibc-2.22-45-g3f749c2
- From: vapier at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 7 Mar 2016 18:04:15 -0000
- Subject: GNU C Library master sources branch gentoo/2.22 updated. glibc-2.22-45-g3f749c2
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, gentoo/2.22 has been updated
via 3f749c2e7b8226eb8c6f16fb180987dc7efe35ba (commit)
via 1fd66a522e9262d7ff36b015090f3989f93ba468 (commit)
via 78b80a22769f07fcd83763d5b8b3625fe4920574 (commit)
via e012eafca47020da292f828fe128f3aca50026e1 (commit)
from 258e9043d8f1a2dafac3754c651b46da1ccb7dba (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3f749c2e7b8226eb8c6f16fb180987dc7efe35ba
commit 3f749c2e7b8226eb8c6f16fb180987dc7efe35ba
Author: Hongjiu Zhang <noctuorare@gmail.com>
Date: Sun Mar 6 20:18:21 2016 -0500
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)
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))
{
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=1fd66a522e9262d7ff36b015090f3989f93ba468
commit 1fd66a522e9262d7ff36b015090f3989f93ba468
Author: Stefan Liebler <stli@linux.vnet.ibm.com>
Date: Thu Mar 3 08:17:09 2016 +0100
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)
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
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=78b80a22769f07fcd83763d5b8b3625fe4920574
commit 78b80a22769f07fcd83763d5b8b3625fe4920574
Author: Paul E. Murphy <murphyp@linux.vnet.ibm.com>
Date: Wed Jan 20 10:33:19 2016 -0600
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)
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
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=e012eafca47020da292f828fe128f3aca50026e1
commit e012eafca47020da292f828fe128f3aca50026e1
Author: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
Date: Mon Dec 28 12:24:43 2015 -0200
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)
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__ */
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 5 +++
elf/sln.c | 4 +-
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 ++++++++++++++++++--
sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list | 19 ----------
9 files changed, 53 insertions(+), 36 deletions(-)
hooks/post-receive
--
GNU C Library master sources