Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 29 Sep 2000 16:45:44 +0000 (16:45 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 29 Sep 2000 16:45:44 +0000 (16:45 +0000)
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.

ChangeLog
NEWS
nscd/grpcache.c
nscd/hstcache.c
nscd/nscd-client.h
nscd/nscd_getgr_r.c
nscd/nscd_gethst_r.c
sysdeps/unix/sysv/linux/i386/bits/fcntl.h
sysdeps/unix/sysv/linux/ia64/setjmp.S
sysdeps/unix/sysv/linux/ia64/sysdep.S
sysdeps/unix/sysv/linux/ia64/sysdep.h

index 43db750..94d441b 100644 (file)
--- 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 c9be968..086877f 100644 (file)
--- 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.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
index 983b297..b1634a1 100644 (file)
@@ -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);
index 31afbdd..e8444d8 100644 (file)
@@ -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;
index 33c4845..97b0baf 100644 (file)
@@ -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;
 
 
index aa9c3fd..97f7f71 100644 (file)
@@ -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;
index cf6a569..13a1da8 100644 (file)
@@ -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)
index ba15580..407ae76 100644 (file)
 # 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 */
 
 # 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.  */
index e5bf667..05f47bc 100644 (file)
@@ -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
index dcf9803..e327e1f 100644 (file)
@@ -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)
index bb4ab29..5f7f3fe 100644 (file)
 
 #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.
 
    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)                                  \