[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r4319 - in /fsf/trunk/libc: ./ nptl/ nptl/sysdeps/unix/sysv/linux/ nptl/sysdeps/unix/sysv/linux/i386/i486/ nptl/sysdeps/unix...
- To: commits@xxxxxxxxxx
- Subject: [commits] r4319 - in /fsf/trunk/libc: ./ nptl/ nptl/sysdeps/unix/sysv/linux/ nptl/sysdeps/unix/sysv/linux/i386/i486/ nptl/sysdeps/unix...
- From: eglibc@xxxxxxxxxx
- Date: Sat, 24 Nov 2007 08:03:48 -0000
Author: eglibc
Date: Sat Nov 24 00:03:44 2007
New Revision: 4319
Log:
Import glibc-mainline for 2007-11-24
Added:
fsf/trunk/libc/sysdeps/unix/sysv/linux/netiucv/
fsf/trunk/libc/sysdeps/unix/sysv/linux/netiucv/iucv.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/opensock.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/sa_len.c
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/nptl/ChangeLog
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
fsf/trunk/libc/sysdeps/s390/bits/string.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/Makefile
fsf/trunk/libc/sysdeps/unix/sysv/linux/check_native.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/opensock.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
fsf/trunk/libc/sysdeps/unix/sysv/linux/sa_len.c
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sat Nov 24 00:03:44 2007
@@ -1,14 +1,40 @@
+2007-11-23 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list: Add open
+ and creat system calls.
+
+ * sysdeps/unix/sysv/linux/check_native.c: Include <asm/types.h>.
+
+2007-11-23 Martin Schwidefsky <schwidefsky@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/Makefile [subdir=inet] (sysdep_headers):
+ Add netiucv/iucv.h.
+ * sysdeps/unix/sysv/linux/netiucv/iucv.h: New file.
+ * sysdeps/unix/sysv/linux/opensock.c (__opensock): Add AF_IUCV
+ protocol.
+ * sysdeps/unix/sysv/linux/sa_len.c (__libc_sa_len): Likewise.
+ * sysdeps/unix/sysv/linux/s390/opensock.c: New file.
+ * sysdeps/unix/sysv/linux/s390/sa_len.c: New file.
+
+2007-11-22 Martin Schwidefsky <schwidefsky@xxxxxxxxxx>
+
+ * sysdeps/s390/bits/string.h (strlen, strcpy, strncpy, strcat,
+ strncat): Define as macros to avoid compile errors.
+
+ * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Add open and
+ creat entries.
+
2007-11-22 Ulrich Drepper <drepper@xxxxxxxxxx>
[BZ #5382]
* nscd/nscd.h (NSCD_THREAD_STACKSIZE): Define.
* nscd/connections.c (start_threads): Use NSCD_THREAD_STACKSIZE.
- * nscd/mem.c (gc): Don't allocate arrays on stack if it can
+ * nscd/mem.c (gc): Don't allocate arrays on the stack if they can
overflow it.
Partially based on a patch by Petr Baudis <pasky@xxxxxxx>.
* sysdeps/unix/sysv/linux/nscd_setup_thread.c (setup_thread):
- Return zero in case thread library is not NPTL.
+ Return zero in case the thread library is not NPTL.
[BZ #5375]
* resolv/res_hconf.c (_res_hconf_reorder_addrs): Fix locking when
Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Sat Nov 24 00:03:44 2007
@@ -1,3 +1,12 @@
+2007-11-23 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedlock_wait):
+ Store 2 before returning ETIMEDOUT.
+ * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise
+ * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise.
+ (__lll_lock_wait_private): Optimize.
+ (__lll_lock_wait): Likewise.
+
2007-11-20 Jakub Jelinek <jakub@xxxxxxxxxx>
* sysdeps/pthread/pthread.h (pthread_cleanup_push,
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S Sat Nov 24 00:03:44 2007
@@ -184,6 +184,12 @@
movl %ecx, %ebp
movl %edx, %edi
+ movl $2, %edx
+ xchgl %edx, (%ebp)
+
+ test %edx, %edx
+ je 6f
+
1:
/* Get current time. */
movl %esp, %ebx
@@ -203,36 +209,30 @@
addl $1000000000, %edx
subl $1, %ecx
4: testl %ecx, %ecx
- js 9f /* Time is already up. */
+ js 2f /* Time is already up. */
/* Store relative timeout. */
movl %ecx, (%esp)
movl %edx, 4(%esp)
+ /* Futex call. */
movl %ebp, %ebx
-
- movl $1, %eax
movl $2, %edx
- LOCK
- cmpxchgl %edx, (%ebx)
-
- testl %eax, %eax
- je 8f
-
- /* Futex call. */
movl %esp, %esi
movl 16(%esp), %ecx
LOAD_FUTEX_WAIT (%ecx)
movl $SYS_futex, %eax
ENTER_KERNEL
- movl %eax, %ecx
-
-8: /* NB: %edx == 2 */
- xorl %eax, %eax
- LOCK
- cmpxchgl %edx, (%ebx)
-
- jnz 7f
+
+ /* NB: %edx == 2 */
+ xchgl %edx, (%ebp)
+
+ testl %edx, %edx
+ je 6f
+
+ cmpl $-ETIMEDOUT, %eax
+ jne 1b
+2: movl $ETIMEDOUT, %edx
6: addl $8, %esp
cfi_adjust_cfa_offset(-8)
@@ -248,33 +248,11 @@
popl %edi
cfi_adjust_cfa_offset(-4)
cfi_restore(%edi)
+ movl %edx, %eax
ret
3: movl $EINVAL, %eax
ret
-
- cfi_adjust_cfa_offset(24)
- cfi_offset(%edi, -8)
- cfi_offset(%esi, -12)
- cfi_offset(%ebx, -16)
- cfi_offset(%ebp, -20)
- /* Check whether the time expired. */
-7: cmpl $-ETIMEDOUT, %ecx
- je 5f
-
- /* Make sure the current holder knows we are going to sleep. */
- movl %edx, %eax
- xchgl %eax, (%ebx)
- testl %eax, %eax
- jz 6b
- jmp 1b
-
-5: movl $ETIMEDOUT, %eax
- jmp 6b
-
-9: movl $-ETIMEDOUT, %ecx
- movl $2, %edx
- jmp 8b
cfi_endproc
.size __lll_timedlock_wait,.-__lll_timedlock_wait
#endif
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/lowlevellock.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/lowlevellock.c Sat Nov 24 00:03:44 2007
@@ -27,13 +27,11 @@
void
__lll_lock_wait_private (int *futex)
{
- do
- {
- int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
- if (oldval != 0)
- lll_futex_wait (futex, 2, LLL_PRIVATE);
- }
- while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
+ if (*futex == 2)
+ lll_futex_wait (futex, 2, LLL_PRIVATE);
+
+ while (atomic_exchange_acq (futex, 2) != 0)
+ lll_futex_wait (futex, 2, LLL_PRIVATE);
}
@@ -42,13 +40,11 @@
void
__lll_lock_wait (int *futex, int private)
{
- do
- {
- int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
- if (oldval != 0)
- lll_futex_wait (futex, 2, private);
- }
- while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
+ if (*futex == 2)
+ lll_futex_wait (futex, 2, private);
+
+ while (atomic_exchange_acq (futex, 2) != 0)
+ lll_futex_wait (futex, 2, private);
}
@@ -59,8 +55,8 @@
if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
return EINVAL;
- struct timespec rt;
- do
+ /* Try locking. */
+ while (atomic_exchange_acq (futex, 2) != 0)
{
struct timeval tv;
@@ -68,6 +64,7 @@
(void) __gettimeofday (&tv, NULL);
/* Compute relative timeout. */
+ struct timespec rt;
rt.tv_sec = abstime->tv_sec - tv.tv_sec;
rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
if (rt.tv_nsec < 0)
@@ -76,21 +73,14 @@
--rt.tv_sec;
}
- /* If timed out do not go to sleep. */
- if (__builtin_expect (rt.tv_sec >= 0, 1))
- {
- /* Wait. */
- int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
- if (oldval != 0)
- lll_futex_timed_wait (futex, 2, &rt, private);
- }
+ if (rt.tv_sec < 0)
+ return ETIMEDOUT;
- if (atomic_compare_and_exchange_bool_acq (futex, 2, 0) == 0)
- return 0;
+ /* Wait. */
+ lll_futex_timed_wait (futex, 2, &rt, private);
}
- while (rt.tv_sec >= 0);
- return ETIMEDOUT;
+ return 0;
}
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S Sat Nov 24 00:03:44 2007
@@ -178,6 +178,12 @@
movq %rdi, %r12
movq %rdx, %r13
+ movl $2, %edx
+ xchgl %edx, (%r12)
+
+ testl %edx, %edx
+ je 6f
+
1:
/* Get current time. */
movq %rsp, %rdi
@@ -199,35 +205,31 @@
addq $1000000000, %rsi
decq %rdi
4: testq %rdi, %rdi
- movq $-ETIMEDOUT, %rcx
+ js 2f /* Time is already up. */
+
+ /* Store relative timeout. */
+ movq %rdi, (%rsp)
+ movq %rsi, 8(%rsp)
+
+ /* Futex call. */
movl $2, %edx
- js 8f /* Time is already up. */
-
- /* Futex call. */
- movq %rdi, (%rsp) /* Store relative timeout. */
- movq %rsi, 8(%rsp)
-
movl $1, %eax
- /* NB: $edx has been loaded early. */
- LOCK
- cmpxchgl %edx, (%r12)
-
- testl %eax, %eax
- je 8f
-
movq %rsp, %r10
movl 24(%rsp), %esi
LOAD_FUTEX_WAIT (%esi)
movq %r12, %rdi
movl $SYS_futex, %eax
syscall
- movq %rax, %rcx
-
-8: /* NB: %edx == 2 */
- xorl %eax, %eax
- LOCK
- cmpxchgl %edx, (%r12)
- jnz 7f
+
+ /* NB: %edx == 2 */
+ xchgl %edx, (%r12)
+
+ testl %edx, %edx
+ je 6f
+
+ cmpl $-ETIMEDOUT, %eax
+ jne 1b
+2: movl $ETIMEDOUT, %edx
6: addq $32, %rsp
cfi_adjust_cfa_offset(-32)
@@ -246,30 +248,11 @@
popq %r8
cfi_adjust_cfa_offset(-8)
cfi_restore(%r8)
+ movl %edx, %eax
retq
3: movl $EINVAL, %eax
retq
-
- cfi_adjust_cfa_offset(72)
- cfi_offset(%r8, -16)
- cfi_offset(%r9, -24)
- cfi_offset(%r12, -32)
- cfi_offset(%r13, -40)
- cfi_offset(%r14, -48)
- /* Check whether the time expired. */
-7: cmpq $-ETIMEDOUT, %rcx
- je 5f
-
- /* Make sure the current holder knows we are going to sleep. */
- movl %edx, %eax
- xchgl %eax, (%rdi)
- testl %eax, %eax
- jz 6b
- jmp 1b
-
-5: movl $ETIMEDOUT, %eax
- jmp 6b
cfi_endproc
.size __lll_timedlock_wait,.-__lll_timedlock_wait
#endif
Modified: fsf/trunk/libc/sysdeps/s390/bits/string.h
==============================================================================
--- fsf/trunk/libc/sysdeps/s390/bits/string.h (original)
+++ fsf/trunk/libc/sysdeps/s390/bits/string.h Sat Nov 24 00:03:44 2007
@@ -40,8 +40,10 @@
#define _HAVE_STRING_ARCH_strlen 1
#ifndef _FORCE_INLINES
+#define strlen(str) __strlen_g ((str))
+
__STRING_INLINE size_t
-strlen (__const char *__str)
+__strlen_g (__const char *__str)
{
char *__ptr, *__tmp;
@@ -59,8 +61,10 @@
/* Copy SRC to DEST. */
#define _HAVE_STRING_ARCH_strcpy 1
#ifndef _FORCE_INLINES
-__STRING_INLINE char *
-strcpy (char *__dest, __const char *__src)
+#define strcpy(dest, src) __strcpy_g ((dest), (src))
+
+__STRING_INLINE char *
+__strcpy_g (char *__dest, __const char *__src)
{
char *tmp = __dest;
@@ -75,8 +79,10 @@
#define _HAVE_STRING_ARCH_strncpy 1
#ifndef _FORCE_INLINES
-__STRING_INLINE char *
-strncpy (char *__dest, __const char *__src, size_t __n)
+#define strncpy(dest, src, n) __strncpy_g ((dest), (src), (n))
+
+__STRING_INLINE char *
+__strncpy_g (char *__dest, __const char *__src, size_t __n)
{
char *__ret = __dest;
char *__ptr;
@@ -114,8 +120,10 @@
/* Append SRC onto DEST. */
#define _HAVE_STRING_ARCH_strcat 1
#ifndef _FORCE_INLINES
-__STRING_INLINE char *
-strcat(char *__dest, const char *__src)
+#define strcat(dest, src) __strcat_g ((dest), (src))
+
+__STRING_INLINE char *
+__strcat_g(char *__dest, const char *__src)
{
char *__ret = __dest;
char *__ptr, *__tmp;
@@ -142,8 +150,10 @@
/* Append no more than N characters from SRC onto DEST. */
#define _HAVE_STRING_ARCH_strncat 1
#ifndef _FORCE_INLINES
-__STRING_INLINE char *
-strncat (char *__dest, __const char *__src, size_t __n)
+#define strncat(dest, src, n) __strncat_g ((dest), (src), (n))
+
+__STRING_INLINE char *
+__strncat_g (char *__dest, __const char *__src, size_t __n)
{
char *__ret = __dest;
char *__ptr, *__tmp;
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/Makefile
==============================================================================
Binary files - no diff available.
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/check_native.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/check_native.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/check_native.c Sat Nov 24 00:03:44 2007
@@ -29,6 +29,7 @@
#include <net/if_arp.h>
#include <sys/ioctl.h>
+#include <asm/types.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/netiucv/iucv.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/netiucv/iucv.h (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/netiucv/iucv.h Sat Nov 24 00:03:44 2007
@@ -1,0 +1,39 @@
+/* Copyright (C) 2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef __NETIUCV_IUCV_H
+#define __NETIUCV_IUCV_H 1
+
+#include <features.h>
+#include <bits/sockaddr.h>
+
+__BEGIN_DECLS
+
+struct sockaddr_iucv
+ {
+ __SOCKADDR_COMMON (siucv_);
+ unsigned short siucv_port; /* Reserved */
+ unsigned int siucv_addr; /* Reserved */
+ char siucv_nodeid[8]; /* Reserved */
+ char siucv_user_id[8]; /* Guest User Id */
+ char siucv_name[8]; /* Application Name */
+ };
+
+__END_DECLS
+
+#endif
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/opensock.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/opensock.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/opensock.c Sat Nov 24 00:03:44 2007
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2002, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -53,7 +53,10 @@
{ AF_APPLETALK, "net/appletalk" },
{ AF_ECONET, "sys/net/econet" },
{ AF_ASH, "sys/net/ash" },
- { AF_X25, "net/x25" }
+ { AF_X25, "net/x25" },
+#ifdef NEED_AF_IUCV
+ { AF_IUCV, "net/iucv" }
+#endif
};
#define nafs (sizeof (afs) / sizeof (afs[0]))
char fname[sizeof "/proc/" + 14];
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list Sat Nov 24 00:03:44 2007
@@ -1,3 +1,5 @@
# File name Caller Syscall name # args Strong name Weak names
+creat - creat Ci:si __libc_creat creat creat64
getrlimit - ugetrlimit i:ip __getrlimit getrlimit getrlimit64
+open - open Ci:siv __libc_open __open open __open64 open64
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/opensock.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/opensock.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/opensock.c Sat Nov 24 00:03:44 2007
@@ -1,0 +1,2 @@
+#define NEED_AF_IUCV 1
+#include "../opensock.c"
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list Sat Nov 24 00:03:44 2007
@@ -1,6 +1,9 @@
# File name Caller Syscall name # args Strong name Weak names
vfork - vfork 0 __vfork vfork
+
+creat - creat Ci:si __libc_creat creat creat64
+open - open Ci:siv __libc_open __open open __open64 open64
# semaphore and shm system calls
msgctl - msgctl i:iip __msgctl msgctl
Added: fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/sa_len.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/sa_len.c (added)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/sa_len.c Sat Nov 24 00:03:44 2007
@@ -1,0 +1,2 @@
+#define NEED_AF_IUCV 1
+#include "../sa_len.c"
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/sa_len.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/sa_len.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/sa_len.c Sat Nov 24 00:03:44 2007
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2002, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -26,6 +26,7 @@
#include <netipx/ipx.h>
#include <netpacket/packet.h>
#include <netrose/rose.h>
+#include <netiucv/iucv.h>
#include <sys/un.h>
int
@@ -47,6 +48,10 @@
return sizeof (struct sockaddr_in6);
case AF_IPX:
return sizeof (struct sockaddr_ipx);
+#ifdef NEED_AF_IUCV
+ case AF_IUCV:
+ return sizeof (struct sockaddr_iucv);
+#endif
case AF_LOCAL:
return sizeof (struct sockaddr_un);
case AF_PACKET: