summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog27
-rw-r--r--NEWS5
-rw-r--r--nscd/grpcache.c9
-rw-r--r--nscd/hstcache.c8
-rw-r--r--nscd/nscd-client.h46
-rw-r--r--nscd/nscd_getgr_r.c8
-rw-r--r--nscd/nscd_gethst_r.c8
-rw-r--r--sysdeps/unix/sysv/linux/i386/bits/fcntl.h22
-rw-r--r--sysdeps/unix/sysv/linux/ia64/setjmp.S5
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sysdep.S17
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sysdep.h24
11 files changed, 121 insertions, 58 deletions
diff --git a/ChangeLog b/ChangeLog
index 43db7507af..94d441b55a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2000-09-29  David Mosberger  <davidm@hpl.hp.com>
+
+	* sysdeps/unix/sysv/linux/ia64/sysdep.S (__ia64_syscall): Cleanup.
+
+	* sysdeps/unix/sysv/linux/ia64/sysdep.h (CALL_MCOUNT): Implement.
+
+2000-06-10  David Mosberger  <davidm@hpl.hp.com>
+
+	* sysdeps/unix/sysv/linux/ia64/setjmp.S: Fix it so it actually
+	works: call to __sigjmp_save must be done unconditionally to
+	ensure jmp_buf is initialized properly.
+
+2000-09-27  Andreas Jaeger  <aj@suse.de>
+
+	* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Synch with Linux
+	2.4.0-test9-pre7.
+
+2000-09-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* nscd/nscd-client.h (NSCD_VERSION): Bump to 3.
+	Use int32_t where appropriate.
+	* nscd/nscd_gethst_r.c (nscd_gethst_r): Use uint32_t instead of size_t
+	where appropriate.
+	* nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise.
+	* nscd/hstcache.c (cache_addhst): Likewise.
+	* nscd/grpcache.c (cache_addgr): Likewise.
+
 2000-09-29  Ulrich Drepper  <drepper@redhat.com>
 
 	* inet/getnameinfo.c (nrl_domainname): Use symbolic constant
diff --git a/NEWS b/NEWS
index c9be96877d..086877f571 100644
--- a/NEWS
+++ b/NEWS
@@ -75,6 +75,11 @@ Version 2.2
   compatibility for kernel versions before X.Y.Z.  This is currently only
   implemented for Linux.
 
+* the sockaddr_in6 structure changed.  The IPv6 working group added a new
+  field sin6_scope_id.  This means that all programs using IPv6 should be
+  recompiled.  Don't expect binary compatibility with previous glibc
+  versions.
+
 * IA-64 port by Jes Sorensen and HJ Lu.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
index 983b297ad2..b1634a1009 100644
--- a/nscd/grpcache.c
+++ b/nscd/grpcache.c
@@ -23,6 +23,7 @@
 #include <grp.h>
 #include <stddef.h>
 #include <stdio.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
@@ -117,7 +118,7 @@ cache_addgr (struct database *db, int fd, request_header *req, void *key,
       size_t gr_name_len = strlen (grp->gr_name) + 1;
       size_t gr_passwd_len = strlen (grp->gr_passwd) + 1;
       size_t gr_mem_cnt = 0;
-      size_t *gr_mem_len;
+      uint32_t *gr_mem_len;
       size_t gr_mem_len_total = 0;
       char *gr_name;
       char *cp;
@@ -131,7 +132,7 @@ cache_addgr (struct database *db, int fd, request_header *req, void *key,
       /* Determine the length of all members.  */
       while (grp->gr_mem[gr_mem_cnt])
 	++gr_mem_cnt;
-      gr_mem_len = (size_t *) alloca (gr_mem_cnt * sizeof (size_t));
+      gr_mem_len = (uint32_t *) alloca (gr_mem_cnt * sizeof (uint32_t));
       for (gr_mem_cnt = 0; grp->gr_mem[gr_mem_cnt]; ++gr_mem_cnt)
 	{
 	  gr_mem_len[gr_mem_cnt] = strlen (grp->gr_mem[gr_mem_cnt]) + 1;
@@ -141,7 +142,7 @@ cache_addgr (struct database *db, int fd, request_header *req, void *key,
       /* We allocate all data in one memory block: the iov vector,
 	 the response header and the dataset itself.  */
       total = (sizeof (struct groupdata)
-	       + gr_mem_cnt * sizeof (size_t)
+	       + gr_mem_cnt * sizeof (uint32_t)
 	       + gr_name_len + gr_passwd_len + gr_mem_len_total);
       data = (struct groupdata *) malloc (total + n);
       if (data == NULL)
@@ -157,7 +158,7 @@ cache_addgr (struct database *db, int fd, request_header *req, void *key,
       cp = data->strdata;
 
       /* This is the member string length array.  */
-      cp = mempcpy (cp, gr_mem_len, gr_mem_cnt * sizeof (size_t));
+      cp = mempcpy (cp, gr_mem_len, gr_mem_cnt * sizeof (uint32_t));
       gr_name = cp;
       cp = mempcpy (cp, grp->gr_name, gr_name_len);
       cp = mempcpy (cp, grp->gr_passwd, gr_passwd_len);
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
index 31afbdddda..e8444d825f 100644
--- a/nscd/hstcache.c
+++ b/nscd/hstcache.c
@@ -125,7 +125,7 @@ cache_addhst (struct database *db, int fd, request_header *req, void *key,
       struct hostdata *data;
       size_t h_name_len = strlen (hst->h_name) + 1;
       size_t h_aliases_cnt;
-      size_t *h_aliases_len;
+      uint32_t *h_aliases_len;
       size_t h_addr_list_cnt;
       int addr_list_type;
       char *addresses;
@@ -139,7 +139,7 @@ cache_addhst (struct database *db, int fd, request_header *req, void *key,
       for (cnt = 0; hst->h_aliases[cnt] != NULL; ++cnt)
 	++h_aliases_cnt;
       /* Determine the length of all aliases.  */
-      h_aliases_len = alloca (h_aliases_cnt * sizeof (size_t));
+      h_aliases_len = (uint32_t *) alloca (h_aliases_cnt * sizeof (uint32_t));
       total = 0;
       for (cnt = 0; cnt < h_aliases_cnt; ++cnt)
 	{
@@ -156,7 +156,7 @@ cache_addhst (struct database *db, int fd, request_header *req, void *key,
 	 the response header and the dataset itself.  */
       total += (sizeof (struct hostdata)
 		+ h_name_len
-		+ h_aliases_cnt * sizeof (size_t)
+		+ h_aliases_cnt * sizeof (uint32_t)
 		+ h_addr_list_cnt * hst->h_length);
 
       data = (struct hostdata *) malloc (total + req->key_len);
@@ -175,7 +175,7 @@ cache_addhst (struct database *db, int fd, request_header *req, void *key,
       cp = data->strdata;
 
       cp = mempcpy (cp, hst->h_name, h_name_len);
-      cp = mempcpy (cp, h_aliases_len, h_aliases_cnt * sizeof (size_t));
+      cp = mempcpy (cp, h_aliases_len, h_aliases_cnt * sizeof (uint32_t));
 
       /* The normal addresses first.  */
       addresses = cp;
diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h
index 33c4845aee..97b0baf629 100644
--- a/nscd/nscd-client.h
+++ b/nscd/nscd-client.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
 
@@ -24,7 +24,7 @@
 #define _NSCD_CLIENT_H	1
 
 /* Version number of the daemon interface */
-#define NSCD_VERSION 2
+#define NSCD_VERSION 3
 
 /* Path of the file where the PID of the running system is stored.  */
 #define _PATH_NSCDPID	 "/var/run/nscd.pid"
@@ -60,7 +60,7 @@ typedef struct
 {
   int version;		/* Version number of the daemon interface.  */
   request_type type;	/* Service requested.  */
-  ssize_t key_len;	/* Key length.  */
+  int32_t key_len;	/* Key length.  */
 } request_header;
 
 
@@ -68,15 +68,15 @@ typedef struct
    sent also if the service is disabled or there is no record found.  */
 typedef struct
 {
-  int version;
-  int found;
-  ssize_t pw_name_len;
-  ssize_t pw_passwd_len;
+  int32_t version;
+  int32_t found;
+  int32_t pw_name_len;
+  int32_t pw_passwd_len;
   uid_t pw_uid;
   gid_t pw_gid;
-  ssize_t pw_gecos_len;
-  ssize_t pw_dir_len;
-  ssize_t pw_shell_len;
+  int32_t pw_gecos_len;
+  int32_t pw_dir_len;
+  int32_t pw_shell_len;
 } pw_response_header;
 
 
@@ -84,12 +84,12 @@ typedef struct
    sent also if the service is disabled or there is no record found.  */
 typedef struct
 {
-  int version;
-  int found;
-  ssize_t gr_name_len;
-  ssize_t gr_passwd_len;
+  int32_t version;
+  int32_t found;
+  int32_t gr_name_len;
+  int32_t gr_passwd_len;
   gid_t gr_gid;
-  ssize_t gr_mem_cnt;
+  int32_t gr_mem_cnt;
 } gr_response_header;
 
 
@@ -97,14 +97,14 @@ typedef struct
    sent also if the service is disabled or there is no record found.  */
 typedef struct
 {
-  int version;
-  int found;
-  ssize_t h_name_len;
-  ssize_t h_aliases_cnt;
-  int h_addrtype;
-  int h_length;
-  ssize_t h_addr_list_cnt;
-  int error;
+  int32_t version;
+  int32_t found;
+  int32_t h_name_len;
+  int32_t h_aliases_cnt;
+  int32_t h_addrtype;
+  int32_t h_length;
+  int32_t h_addr_list_cnt;
+  int32_t error;
 } hst_response_header;
 
 
diff --git a/nscd/nscd_getgr_r.c b/nscd/nscd_getgr_r.c
index aa9c3fddcc..97f7f711a7 100644
--- a/nscd/nscd_getgr_r.c
+++ b/nscd/nscd_getgr_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1998.
 
@@ -137,7 +137,7 @@ nscd_getgr_r (const char *key, size_t keylen, request_type type,
 
   if (gr_resp.found == 1)
     {
-      size_t *len;
+      uint32_t *len;
       char *p = buffer;
       size_t total_len;
       uintptr_t align;
@@ -172,9 +172,9 @@ nscd_getgr_r (const char *key, size_t keylen, request_type type,
       resultbuf->gr_gid = gr_resp.gr_gid;
 
       /* Allocate array to store lengths.  */
-      len = alloca (gr_resp.gr_mem_cnt * sizeof (size_t));
+      len = (uint32_t *) alloca (gr_resp.gr_mem_cnt * sizeof (uint32_t));
 
-      total_len = gr_resp.gr_mem_cnt * sizeof (size_t);
+      total_len = gr_resp.gr_mem_cnt * sizeof (uint32_t);
       vec[0].iov_base = len;
       vec[0].iov_len = total_len;
       vec[1].iov_base = resultbuf->gr_name;
diff --git a/nscd/nscd_gethst_r.c b/nscd/nscd_gethst_r.c
index cf6a569516..13a1da85f7 100644
--- a/nscd/nscd_gethst_r.c
+++ b/nscd/nscd_gethst_r.c
@@ -165,7 +165,7 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
   if (hst_resp.found == 1)
     {
       struct iovec vec[4];
-      size_t *aliases_len;
+      uint32_t *aliases_len;
       char *cp = buffer;
       uintptr_t align1;
       uintptr_t align2;
@@ -206,12 +206,12 @@ nscd_gethst_r (const char *key, size_t keylen, request_type type,
       vec[0].iov_base = resultbuf->h_name;
       vec[0].iov_len = hst_resp.h_name_len;
 
-      aliases_len = alloca (hst_resp.h_aliases_cnt * sizeof (size_t));
+      aliases_len = alloca (hst_resp.h_aliases_cnt * sizeof (uint32_t));
       vec[1].iov_base = aliases_len;
-      vec[1].iov_len = hst_resp.h_aliases_cnt * sizeof (size_t);
+      vec[1].iov_len = hst_resp.h_aliases_cnt * sizeof (uint32_t);
 
       total_len = (hst_resp.h_name_len
-		   + hst_resp.h_aliases_cnt * sizeof (size_t));
+		   + hst_resp.h_aliases_cnt * sizeof (uint32_t));
 
       n = 2;
       if (type == GETHOSTBYADDR || type == GETHOSTBYNAME)
diff --git a/sysdeps/unix/sysv/linux/i386/bits/fcntl.h b/sysdeps/unix/sysv/linux/i386/bits/fcntl.h
index ba15580277..407ae7621a 100644
--- a/sysdeps/unix/sysv/linux/i386/bits/fcntl.h
+++ b/sysdeps/unix/sysv/linux/i386/bits/fcntl.h
@@ -88,6 +88,12 @@
 # define F_GETSIG	11	/* Get number of signal to be sent.  */
 #endif
 
+#ifdef __USE_GNU
+# define F_SETLEASE     1024	/* Set a lease.  */
+# define F_GETLEASE     1025	/* Enquire what lease is active.  */
+# define F_NOTIFY       1026	/* Request notfications on a directory.  */
+#endif
+
 /* For F_[GET|SET]FL.  */
 #define FD_CLOEXEC	1	/* actually anything with low bit set goes */
 
@@ -109,6 +115,22 @@
 # define LOCK_UN	8	/* remove lock */
 #endif
 
+#ifdef __USE_GNU
+# define LOCK_MAND	32	/* This is a mandatory flock:	*/
+# define LOCK_READ	64	/* ... which allows concurrent read operations.  */
+# define LOCK_WRITE	128	/* ... which allows concurrent write operations.  */
+# define LOCK_RW	192	/* ... Which allows concurrent read & write operations.  */
+#endif
+
+/* Types of directory notifications that may be requested with F_NOTIFY.  */
+#define DN_ACCESS      0x00000001      /* File accessed.  */
+#define DN_MODIFY      0x00000002      /* File modified.  */
+#define DN_CREATE      0x00000004      /* File created.  */
+#define DN_DELETE      0x00000008      /* File removed.  */
+#define DN_RENAME      0x00000010      /* File renamed.  */
+#define DN_ATTRIB      0x00000020      /* File changed attibutes.  */
+#define DN_MULTISHOT   0x80000000      /* Don't remove notifier.  */
+
 struct flock
   {
     short int l_type;	/* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
diff --git a/sysdeps/unix/sysv/linux/ia64/setjmp.S b/sysdeps/unix/sysv/linux/ia64/setjmp.S
index e5bf667d45..05f47bc46e 100644
--- a/sysdeps/unix/sysv/linux/ia64/setjmp.S
+++ b/sysdeps/unix/sysv/linux/ia64/setjmp.S
@@ -152,15 +152,14 @@ __sigsetjmp:
 
 	st8.spill.nta [r2]=r6,16	// r6
 	st8.spill.nta [r3]=r7,16	// r7
-	cmp.ne p8,p0=0,in1
 	;;
 	mov r23=ar.bsp
 	mov r25=ar.unat
 	mov out0=in0
-	mov out1=in1
 
 	st8.nta [r2]=loc1,16		// b0
 	st8.nta [r3]=r17,16		// b1
+	mov out1=in1
 	;;
 	st8.nta [r2]=r18,16		// b2
 	st8.nta [r3]=r19,16		// b3
@@ -176,7 +175,7 @@ __sigsetjmp:
 	;;
 	st8.nta [r2]=r25		// ar.unat
 	st8.nta [r3]=in0		// &__jmp_buf
-(p8)	br.call.dpnt.few rp=__sigjmp_save
+	br.call.dpnt.few rp=__sigjmp_save
 .ret0:					// force a new bundle ::q
 	mov r8=0
 	mov rp=loc1
diff --git a/sysdeps/unix/sysv/linux/ia64/sysdep.S b/sysdeps/unix/sysv/linux/ia64/sysdep.S
index dcf9803044..e327e1fa30 100644
--- a/sysdeps/unix/sysv/linux/ia64/sysdep.S
+++ b/sysdeps/unix/sysv/linux/ia64/sysdep.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Hewlett-Packard Co.
+/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -74,11 +74,10 @@ __syscall_error:
 	.endp __syscall_error
 
 
-        .global __ia64_syscall
-        .proc __ia64_syscall
-__ia64_syscall:
-        break __BREAK_SYSCALL
-        cmp.eq p6,p0=-1,r10
-(p6)    br.cond.spnt.few __syscall_error
-        ret
-        .endp __ia64_syscall
+ENTRY(__ia64_syscall)
+	mov r15=r37		/* syscall number */
+	break __BREAK_SYSCALL
+	cmp.eq p6,p0=-1,r10	/* r10 = -1 on error */
+(p6)	br.cond.spnt.few __syscall_error
+	ret
+PSEUDO_END(__ia64_syscall)
diff --git a/sysdeps/unix/sysv/linux/ia64/sysdep.h b/sysdeps/unix/sysv/linux/ia64/sysdep.h
index bb4ab29eba..5f7f3fe3eb 100644
--- a/sysdeps/unix/sysv/linux/ia64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/ia64/sysdep.h
@@ -34,6 +34,23 @@
 
 #ifdef __ASSEMBLER__
 
+#undef CALL_MCOUNT
+#ifdef PROF
+# define CALL_MCOUNT				\
+	.data;					\
+1:	data8 0;				\
+	.previous;				\
+	alloc out0 = ar.pfs, 8, 0, 4, 0;	\
+	mov out1 = gp;				\
+	mov out2 = rp;				\
+	;;					\
+	addl out3 = @ltoff(1b), gp;		\
+	br.call.sptk.many rp = _mcount		\
+	;;
+#else
+# define CALL_MCOUNT	/* Do nothing. */
+#endif
+
 /* Linux uses a negative return value to indicate syscall errors, unlike
    most Unices, which use the condition codes' carry flag.
 
@@ -48,13 +65,6 @@
    table when we define it here.  */
 #define SYSCALL_ERROR_LABEL __syscall_error
 
-#ifdef PROF
-#error "define CALL_MCOUNT"
-#else
-#define CALL_MCOUNT
-#endif
-
-
 #undef PSEUDO
 #define	PSEUDO(name, syscall_name, args)	\
   ENTRY(name)					\