[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...



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: