Updated to fedora-glibc-20070331T1609 fedora-glibc-2_5_90-20
authorjakub <jakub>
Sat, 31 Mar 2007 17:23:53 +0000 (17:23 +0000)
committerjakub <jakub>
Sat, 31 Mar 2007 17:23:53 +0000 (17:23 +0000)
48 files changed:
ChangeLog
config.h.in
configure
configure.in
fedora/branch.mk
fedora/glibc.spec.in
nis/nis_call.c
nis/nis_lookup.c
nis/nis_table.c
nis/nss_nisplus/nisplus-ethers.c
nis/nss_nisplus/nisplus-network.c
nis/nss_nisplus/nisplus-pwd.c
nis/nss_nisplus/nisplus-rpc.c
nis/nss_nisplus/nisplus-service.c
nis/nss_nisplus/nisplus-spwd.c
nis/rpcsvc/nislib.h
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
nscd/gai.c
nscd/selinux.c
nscd/selinux.h
scripts/check-local-headers.sh
soft-fp/double.h
soft-fp/extended.h
soft-fp/quad.h
sysdeps/powerpc/bits/atomic.h
sysdeps/powerpc/powerpc32/bits/atomic.h
sysdeps/powerpc/powerpc32/dl-machine.c
sysdeps/powerpc/powerpc32/memset.S
sysdeps/powerpc/powerpc64/bits/atomic.h
sysdeps/powerpc/powerpc64/memset.S
sysdeps/unix/sysv/linux/Makefile
sysdeps/unix/sysv/linux/Versions
sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
sysdeps/unix/sysv/linux/powerpc/libc-start.c
timezone/africa
timezone/asia
timezone/australasia
timezone/backward
timezone/europe
timezone/iso3166.tab
timezone/leapseconds
timezone/northamerica
timezone/private.h
timezone/southamerica
timezone/zdump.c
timezone/zic.c
timezone/zone.tab

index 44efc91..0eff012 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,140 @@
+2007-03-23  Jakub Jelinek  <jakub@redhat.com>
+
+       * scripts/check-local-headers.sh: Filter out sys/capability.h.
+
+2007-03-22  Jakub Jelinek  <jakub@redhat.com>
+
+       * config.h.in (HAVE_LIBCAP): Add.
+       * nscd/selinux.h: Include sys/capability.h rather than non-existent
+       sys/capabilities.h.
+       * nscd/selinux.c (preserve_capabilities): Use cap_free instead of
+       free_caps.  Cast away const from 4th cap_set_flag argument.
+
+2007-03-26  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/Versions: Move sync_file_range to
+       GLIBC_2.6.
+       * sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):
+       Add sync_file_range.
+       Reported by Atsushi Nemoto <anemo@mba.ocn.ne.jp>.
+
+2007-03-19  Steven Munroe  <sjmunroe@us.ibm.com>
+
+       * sysdeps/powerpc/bits/atomic.h
+       [!MUTEX_HINT_ACQ]: Define MUTEX_HINT_ACQ.
+       [!MUTEX_HINT_REL]: Define MUTEX_HINT_REL.
+       (__arch_compare_and_exchange_val_32_acq): Add MUTEX_HINT_ACQ to lwarx.
+       (__arch_compare_and_exchange_val_32_rel): Add MUTEX_HINT_REL to lwarx.
+       (__arch_atomic_exchange_val_32_acq): Add MUTEX_HINT_ACQ to lwarx.
+       (__arch_atomic_exchange_rel_32_rel): Add MUTEX_HINT_REL to lwarx.
+       * sysdeps/powerpc/powerpc32/bits/atomic.h [_ARCH_PWR6 || _ARCH_PWR6X]:
+       Define MUTEX_HINT_ACQ as ",1" and MUTEX_HINT_REL as ",0".
+       (__arch_compare_and_exchange_bool_32_acq): Add MUTEX_HINT_ACQ to lwarx.
+       (__arch_compare_and_exchange_bool_32_rel): Add MUTEX_HINT_REL to lwarx.
+       * sysdeps/powerpc/powerpc64/bits/atomic.h [_ARCH_PWR6 || _ARCH_PWR6D]:
+       Define MUTEX_HINT_ACQ as ",1" and MUTEX_HINT_REL as ",0".
+       (__arch_compare_and_exchange_bool_32_acq): Add MUTEX_HINT_ACQ to lwarx.
+       (__arch_compare_and_exchange_bool_32_rel): Add MUTEX_HINT_REL to lwarx.
+       (__arch_compare_and_exchange_bool_64_acq): Add MUTEX_HINT_ACQ to lwarx.
+       (__arch_compare_and_exchange_bool_64_rel): Add MUTEX_HINT_REL to lwarx.
+       (__arch_compare_and_exchange_val_64_acq): Add MUTEX_HINT_ACQ to lwarx.
+       (__arch_compare_and_exchange_val_64_rel): Add MUTEX_HINT_REL to lwarx.
+       (__arch_atomic_exchange_val_64_acq): Add MUTEX_HINT_ACQ to lwarx.
+       (__arch_atomic_exchange_rel_64_rel): Add MUTEX_HINT_REL to lwarx.
+
+2007-03-20  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/powerpc/libc-start.c
+       (__cache_line_size): Define the variable here.  Add
+       attribute_hidden, remove weak_extern.
+       (__libc_start_main): Set __cache_line_size
+       unconditionally.
+       * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
+       (__cache_line_size): Define the variable here.  Add
+       attribute_hidden, remove weak_extern.
+       (DL_PLATFORM_AUXV): Set __cache_line_size
+       unconditionally.
+       * sysdeps/powerpc/powerpc32/dl-machine.c (__cache_line_size): Remove
+       weak_extern, add attribute_hidden.
+       (__elf_machine_runtime_setup): Assume __cache_line_size is always
+       defined in ld.so.
+       * sysdeps/powerpc/powerpc32/memset.S (__cache_line_size): Remove
+       definition.
+       * sysdeps/powerpc/powerpc64/memset.S (__cache_line_size): Likewise.
+
+2007-03-26  Jakub Jelinek  <jakub@redhat.com>
+
+       [BZ #4276]
+       * timezone/africa: Update from tzdata2007d.
+       * timezone/asia: Likewise.
+       * timezone/australasia: Likewise.
+       * timezone/backward: Likewise.
+       * timezone/europe: Likewise.
+       * timezone/iso3166.tab: Likewise.
+       * timezone/leapseconds: Likewise.
+       * timezone/northamerica: Likewise.
+       * timezone/southamerica: Likewise.
+       * timezone/zone.tab: Likewise.
+
+       * timezone/private.h: Update from tzcode2007d.
+       * timezone/zdump.c: Likewise.
+       * timezone/zic.c: Likewise.
+
+2007-03-21  Jakub Jelinek  <jakub@redhat.com>
+
+       * nis/nis_call.c: Include bits/libc-lock.h, sys/stat.h, unistd.h.
+       (nis_server_cache, nis_server_cache_lock, nis_cold_start_mtime): New
+       variables.
+       (nis_server_cache_search, nis_server_cache_add): New functions.
+       (__nisfind_server): Use them.  Add dbp and flags argument, if
+       call __nisbind_create.
+       (__nisbind_create): Add server_used and current_ep arguments,
+       only call __nis_findfastest if server_used is ~0.
+       (__do_niscall2, __prepare_niscall): Adjust callers.
+       (ckey_cache, ckey_cache_size, ckey_cache_allocated, ckey_cache_pid,
+       ckey_cache_euid, ckey_cache_lock): New variables.
+       (get_ckey): New function.
+       (__nisbind_connect): If not dbp->use_udp, pass IPPROTO_TCP to
+       __pmap_getnisport.  Save __pmap_getnisport result in
+       dbp->addr.sin_port if non-zero.  Use get_ckey to create conversation
+       key.
+       * nis/nis_lookup.c (nis_lookup): Likewise.
+       * nis/nis_table.c (nis_list): Likewise.
+       * nis/rpcsvc/nislib.h (__nisbind_create, __nisfind_server): Adjust
+       prototypes.
+
+       * nis/nss_nisplus/nisplus-pwd.c (_nss_nisplus_getpwnam_r,
+       _nss_nisplus_getpwuid_r): Pass USE_DGRAM flag to nis_list.
+       * nis/nss_nisplus/nisplus-service.c (_nss_nisplus_getservbyname_r,
+       _nss_nisplus_getservbyport_r): Likewise.
+       * nis/nss_nisplus/nisplus-network.c (_nss_nisplus_getnetbyname_r,
+       _nss_nisplus_getnetbyaddr_r): Likewise.
+       * nis/nss_nisplus/nisplus-spwd.c (_nss_nisplus_getspnam_r): Likewise.
+       * nis/nss_nisplus/nisplus-ethers.c (_nss_nisplus_gethostton_r,
+       _nss_nisplus_getntohost_r): Likewise.
+       * nis/nss_nisplus/nisplus-rpc.c (_nss_nisplus_getrpcbyname_r,
+       _nss_nisplus_getrpcbynumber_r): Likewise.
+
+2007-03-20  Jakub Jelinek  <jakub@redhat.com>
+
+       * configure.in (libc_cv_gnu89_inline): Only do compile test.
+       * configure: Rebuilt.
+
+       * soft-fp/double.h (_FP_UNION_D): Use _FP_W_TYPE for frac
+       bit-fields.
+       * soft-fp/extended.h (_FP_UNION_E): Likewise.
+
+2006-06-07  Joseph Myers  <joseph@codesourcery.com>
+
+       [BZ #2831]
+       * soft-fp/quad.h (_FP_UNION_Q): Use _FP_W_TYPE for frac
+       bit-fields.
+
+2007-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+       * nscd/gai.c: Include alloca.h.
+       (__libc_use_alloca): Define.
+
 2007-03-16  Jakub Jelinek  <jakub@redhat.com>
 
        * elf/dl-open.c (dl_open_worker): Declare l in 2 different
index a46e405..b5abb10 100644 (file)
@@ -19,6 +19,9 @@
 /* Defined if building with SELinux support & audit libs are detected. */
 #undef HAVE_LIBAUDIT
 
+/* Defined if building with SELinux support & libcap libs are detected.  */
+#undef  HAVE_LIBCAP
+
 /* Define if using XCOFF. Set by --with-xcoff.  */
 #undef HAVE_XCOFF
 
index dbdf0d5..177653f 100755 (executable)
--- a/configure
+++ b/configure
@@ -5972,8 +5972,8 @@ main () { return 0;}
 #error
 #endif
 EOF
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -std=gnu99 -fgnu89-inline
-                           -o conftest conftest.c 1>&5'
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
+                           -o conftest.s conftest.c 1>&5'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
index baf3759..a9274a8 100644 (file)
@@ -1650,8 +1650,8 @@ main () { return 0;}
 #error
 #endif
 EOF
-if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -std=gnu99 -fgnu89-inline
-                           -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
+                           -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
 then
   libc_cv_gnu89_inline=yes
 else
index 00dde6b..46bd255 100644 (file)
@@ -3,5 +3,5 @@ glibc-branch := fedora
 glibc-base := HEAD
 DIST_BRANCH := devel
 COLLECTION := dist-fc7
-fedora-sync-date := 2007-03-17 21:30 UTC
-fedora-sync-tag := fedora-glibc-20070317T2130
+fedora-sync-date := 2007-03-31 16:09 UTC
+fedora-sync-tag := fedora-glibc-20070331T1609
index 80d71e4..779c17e 100644 (file)
@@ -1,4 +1,4 @@
-%define glibcrelease 19
+%define glibcrelease 20
 %define auxarches i586 i686 athlon sparcv9 alphaev6
 %define xenarches i686 athlon
 %ifarch %{xenarches}
@@ -1062,6 +1062,9 @@ ln -f ${RPM_BUILD_ROOT}%{_sbindir}/iconvconfig{,.%{_target_cpu}}
 
 rm -f $RPM_BUILD_ROOT/etc/gai.conf
 
+# In F7+ this is provided by rpcbind rpm
+rm -f $RPM_BUILD_ROOT%{_sbindir}/rpcinfo
+
 # BUILD THE FILE LIST
 find $RPM_BUILD_ROOT -type f -or -type l |
        sed -e 's|.*/etc|%config &|' \
@@ -1546,6 +1549,11 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Sat Mar 31 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-20
+- assorted NIS+ speedups (#223467)
+- fix HAVE_LIBCAP configure detection (#178934)
+- remove %{_prefix}/sbin/rpcinfo from glibc-common (#228894)
+
 * Sat Mar 17 2007 Jakub Jelinek <jakub@redhat.com> 2.5.90-19
 - fix power6 libm compat symbols on ppc32 (#232633)
 - fix child refcntr in NPTL fork (#230198)
index 928053d..32d47f8 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997,1998,2001,2004,2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2001, 2004, 2005, 2006, 2007
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
 #include <rpc/auth.h>
 #include <rpcsvc/nis.h>
 #include <sys/socket.h>
+#include <sys/stat.h>
+#include <unistd.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
+#include <bits/libc-lock.h>
 
 #include "nis_xdr.h"
 #include "nis_intern.h"
@@ -107,10 +111,79 @@ __nisbind_next (dir_binding *bind)
 }
 libnsl_hidden_def (__nisbind_next)
 
+static struct ckey_cache_entry
+{
+  struct in_addr inaddr;
+  in_port_t port;
+  unsigned int protocol;
+  des_block ckey;
+} *ckey_cache;
+static size_t ckey_cache_size;
+static size_t ckey_cache_allocated;
+static pid_t ckey_cache_pid;
+static uid_t ckey_cache_euid;
+__libc_lock_define_initialized (static, ckey_cache_lock)
+
+static bool_t
+get_ckey (des_block *ckey, struct sockaddr_in *addr, unsigned int protocol)
+{
+  size_t i;
+  pid_t pid = getpid ();
+  uid_t euid = geteuid ();
+  bool_t ret = FALSE;
+
+  __libc_lock_lock (ckey_cache_lock);
+
+  if (ckey_cache_pid != pid || ckey_cache_euid != euid)
+    {
+      ckey_cache_size = 0;
+      ckey_cache_pid = pid;
+      ckey_cache_euid = euid;
+    }
+
+  for (i = 0; i < ckey_cache_size; ++i)
+    if (ckey_cache[i].port == addr->sin_port
+       && ckey_cache[i].protocol == protocol
+       && memcmp (&ckey_cache[i].inaddr, &addr->sin_addr,
+                  sizeof (addr->sin_addr)) == 0)
+      {
+       *ckey = ckey_cache[i].ckey;
+       ret = TRUE;
+       break;
+      }
+
+  if (!ret && key_gendes (ckey) >= 0)
+    {
+      ret = TRUE;
+      /* Don't grow the cache indefinitely.  */
+      if (ckey_cache_size == 256)
+       ckey_cache_size = 0;
+      if (ckey_cache_size == ckey_cache_allocated)
+       {
+         size_t size = ckey_cache_allocated ? ckey_cache_allocated * 2 : 16;
+         struct ckey_cache_entry *new_cache
+           = realloc (ckey_cache, size * sizeof (*ckey_cache));
+         if (new_cache != NULL)
+           {
+             ckey_cache = new_cache;
+             ckey_cache_allocated = size;
+           }
+       }
+      ckey_cache[ckey_cache_size].inaddr = addr->sin_addr;
+      ckey_cache[ckey_cache_size].port = addr->sin_port;
+      ckey_cache[ckey_cache_size].protocol = protocol;
+      ckey_cache[ckey_cache_size++].ckey = *ckey;
+    }
+
+  __libc_lock_unlock (ckey_cache_lock);
+  return ret;
+}
+
 nis_error
 __nisbind_connect (dir_binding *dbp)
 {
   nis_server *serv;
+  u_short port;
 
   if (dbp == NULL)
     return NIS_FAIL;
@@ -128,9 +201,12 @@ __nisbind_connect (dir_binding *dbp)
 
   /* Check, if the host is online and rpc.nisd is running. Much faster
      then the clnt*_create functions: */
-  if (__pmap_getnisport (&dbp->addr, NIS_PROG, NIS_VERSION, IPPROTO_UDP) == 0)
+  port = __pmap_getnisport (&dbp->addr, NIS_PROG, NIS_VERSION,
+                           dbp->use_udp ? IPPROTO_UDP : IPPROTO_TCP);
+  if (port == 0)
     return NIS_RPCERROR;
 
+  dbp->addr.sin_port = htons (port);
   dbp->socket = RPC_ANYSOCK;
   if (dbp->use_udp)
     dbp->clnt = clntudp_create (&dbp->addr, NIS_PROG, NIS_VERSION,
@@ -153,17 +229,16 @@ __nisbind_connect (dir_binding *dbp)
        {
          char netname[MAXNETNAMELEN + 1];
          char *p;
+         des_block ckey;
 
-         p = stpcpy (netname, "unix.");
+         p = stpcpy (netname, "unix@");
          strncpy (p, serv->name, MAXNETNAMELEN - 5);
          netname[MAXNETNAMELEN] = '\0';
-         // XXX What is this supposed to do?  If we really want to replace
-         // XXX the first dot, then we might as well use unix@ as the
-         // XXX prefix string.  --drepper
-         p = strchr (netname, '.');
-         *p = '@';
-         dbp->clnt->cl_auth =
-           authdes_pk_create (netname, &serv->pkey, 300, NULL, NULL);
+         dbp->clnt->cl_auth = NULL;
+         if (get_ckey (&ckey, &dbp->addr,
+                       dbp->use_udp ? IPPROTO_UDP : IPPROTO_TCP))
+           dbp->clnt->cl_auth =
+             authdes_pk_create (netname, &serv->pkey, 300, NULL, &ckey);
          if (!dbp->clnt->cl_auth)
            dbp->clnt->cl_auth = authunix_create_default ();
        }
@@ -177,7 +252,8 @@ libnsl_hidden_def (__nisbind_connect)
 
 nis_error
 __nisbind_create (dir_binding *dbp, const nis_server *serv_val,
-                 unsigned int serv_len, unsigned int flags)
+                 unsigned int serv_len, unsigned int server_used,
+                 unsigned int current_ep, unsigned int flags)
 {
   dbp->clnt = NULL;
 
@@ -203,8 +279,16 @@ __nisbind_create (dir_binding *dbp, const nis_server *serv_val,
   dbp->trys = 1;
 
   dbp->class = -1;
-  if (__nis_findfastest (dbp) < 1)
-    return NIS_NAMEUNREACHABLE;
+  if (server_used == ~0)
+    {
+      if (__nis_findfastest (dbp) < 1)
+       return NIS_NAMEUNREACHABLE;
+    }
+  else
+    {
+      dbp->server_used = server_used;
+      dbp->current_ep = current_ep;
+    }
 
   return NIS_SUCCESS;
 }
@@ -306,7 +390,7 @@ __do_niscall2 (const nis_server *server, u_int server_len, u_long prog,
   if (flags & MASTER_ONLY)
     server_len = 1;
 
-  status = __nisbind_create (&dbp, server, server_len, flags);
+  status = __nisbind_create (&dbp, server, server_len, ~0, ~0, flags);
   if (status != NIS_SUCCESS)
     return status;
 
@@ -499,42 +583,221 @@ first_shoot (const_nis_name name, int search_parent_first, directory_obj *dir)
   return obj;
 }
 
+static struct nis_server_cache
+{
+  int search_parent_first;
+  int uses;
+  unsigned int size;
+  unsigned int server_used;
+  unsigned int current_ep;
+  time_t expires;
+  char name[];
+} *nis_server_cache[16];
+static time_t nis_cold_start_mtime;
+__libc_lock_define_initialized (static, nis_server_cache_lock)
+
+static directory_obj *
+nis_server_cache_search (const_nis_name name, int search_parent_first,
+                        unsigned int *server_used, unsigned int *current_ep,
+                        struct timeval *now)
+{
+  directory_obj *ret = NULL;
+  int i;
+  char *addr;
+  XDR xdrs;
+  struct stat64 st;
+
+  if (stat64 ("/var/nis/NIS_COLD_START", &st) < 0)
+    st.st_mtime = nis_cold_start_mtime + 1;
+
+  __libc_lock_lock (nis_server_cache_lock);
+
+  for (i = 0; i < 16; ++i)
+    if (nis_server_cache[i] == NULL)
+      continue;
+    else if (st.st_mtime != nis_cold_start_mtime
+            || now->tv_sec > nis_server_cache[i]->expires)
+      {
+       free (nis_server_cache[i]);
+       nis_server_cache[i] = NULL;
+      }
+    else if (nis_server_cache[i]->search_parent_first == search_parent_first
+            && strcmp (nis_server_cache[i]->name, name) == 0)
+      {
+       ret = calloc (1, sizeof (directory_obj));
+       if (ret == NULL)
+         break;
+
+       addr = rawmemchr (nis_server_cache[i]->name, '\0') + 8;
+       addr = (char *) ((uintptr_t) addr & ~(uintptr_t) 7);
+       xdrmem_create (&xdrs, addr, nis_server_cache[i]->size, XDR_DECODE);
+       if (!_xdr_directory_obj (&xdrs, ret))
+         {
+           xdr_destroy (&xdrs);
+           free (ret);
+           ret = NULL;
+           free (nis_server_cache[i]);
+           nis_server_cache[i] = NULL;
+           break;
+         }
+       xdr_destroy (&xdrs);
+       *server_used = nis_server_cache[i]->server_used;
+       *current_ep = nis_server_cache[i]->current_ep;
+       break;
+      }
+
+  nis_cold_start_mtime = st.st_mtime;
+
+  __libc_lock_unlock (nis_server_cache_lock);
+  return ret;
+}
+
+static void
+nis_server_cache_add (const_nis_name name, int search_parent_first,
+                     directory_obj *dir, unsigned int server_used,
+                     unsigned int current_ep, struct timeval *now)
+{
+  struct nis_server_cache **loc;
+  struct nis_server_cache *new;
+  struct nis_server_cache *old;
+  int i;
+  char *addr;
+  unsigned int size;
+  XDR xdrs;
+
+  if (dir == NULL)
+    return;
+
+  size = xdr_sizeof ((xdrproc_t) _xdr_directory_obj, (char *) dir);
+  new = calloc (1, sizeof (*new) + strlen (name) + 8 + size);
+  if (new == NULL)
+    return;
+  new->search_parent_first = search_parent_first;
+  new->uses = 1;
+  new->expires = now->tv_sec + dir->do_ttl;
+  new->size = size;
+  new->server_used = server_used;
+  new->current_ep = current_ep;
+  addr = stpcpy (new->name, name) + 8;
+  addr = (char *) ((uintptr_t) addr & ~(uintptr_t) 7);
+
+  xdrmem_create(&xdrs, addr, size, XDR_ENCODE);
+  if (!_xdr_directory_obj (&xdrs, dir))
+    {
+      xdr_destroy (&xdrs);
+      free (new);
+      return;
+    }
+  xdr_destroy (&xdrs);
+
+  __libc_lock_lock (nis_server_cache_lock);
+
+  /* Choose which entry should be evicted from the cache.  */
+  loc = &nis_server_cache[0];
+  if (*loc != NULL)
+    for (i = 1; i < 16; ++i)
+      if (nis_server_cache[i] == NULL)
+       {
+         loc = &nis_server_cache[i];
+         break;
+       }
+      else if ((*loc)->uses > nis_server_cache[i]->uses
+              || ((*loc)->uses == nis_server_cache[i]->uses
+                  && (*loc)->expires > nis_server_cache[i]->expires))
+       loc = &nis_server_cache[i];
+  old = *loc;
+  *loc = new;
+
+  __libc_lock_unlock (nis_server_cache_lock);
+  free (old);
+}
+
 nis_error
 __nisfind_server (const_nis_name name, int search_parent_first,
-                 directory_obj **dir)
+                 directory_obj **dir, dir_binding *dbp, unsigned int flags)
 {
+  nis_error result = NIS_SUCCESS;
+  nis_error status;
+  directory_obj *obj;
+  struct timeval now;
+  unsigned int server_used = ~0;
+  unsigned int current_ep = ~0;
+
   if (name == NULL)
     return NIS_BADNAME;
 
-#if 0
-  /* Search in local cache. In the moment, we ignore the fastest server */
-  if (!(flags & NO_CACHE))
-    dir = __nis_cache_search (name, flags, &cinfo);
-#endif
+  if (*dir != NULL)
+    return NIS_SUCCESS;
 
-  nis_error result = NIS_SUCCESS;
-  if (*dir == NULL)
+  (void) gettimeofday (&now, NULL);
+
+  if ((flags & NO_CACHE) == 0)
+    *dir = nis_server_cache_search (name, search_parent_first, &server_used,
+                                   &current_ep, &now);
+  if (*dir != NULL)
     {
-      nis_error status;
-      directory_obj *obj;
+      unsigned int server_len = (*dir)->do_servers.do_servers_len;
+      if (flags & MASTER_ONLY)
+       {
+         server_len = 1;
+         if (server_used != 0)
+           {
+             server_used = ~0;
+             current_ep = ~0;
+           }
+       }
+      result = __nisbind_create (dbp, (*dir)->do_servers.do_servers_val,
+                                server_len, server_used, current_ep, flags);
+      if (result != NIS_SUCCESS)
+       {
+         nis_free_directory (*dir);
+         *dir = NULL;
+       }
+      return result;
+    }
 
-      *dir = readColdStartFile ();
-      if (*dir == NULL)
-       /* No /var/nis/NIS_COLD_START->no NIS+ installed.  */
-       return NIS_UNAVAIL;
+  *dir = readColdStartFile ();
+  if (*dir == NULL)
+    /* No /var/nis/NIS_COLD_START->no NIS+ installed.  */
+    return NIS_UNAVAIL;
 
-      /* Try at first, if servers in "dir" know our object */
-      obj = first_shoot (name, search_parent_first, *dir);
+  /* Try at first, if servers in "dir" know our object */
+  obj = first_shoot (name, search_parent_first, *dir);
+  if (obj == NULL)
+    {
+      obj = rec_dirsearch (name, *dir, &status);
       if (obj == NULL)
+       result = status;
+    }
+
+  if (result == NIS_SUCCESS)
+    {
+      unsigned int server_len = (*dir)->do_servers.do_servers_len;
+      if (flags & MASTER_ONLY)
+       server_len = 1;
+      result = __nisbind_create (dbp, (*dir)->do_servers.do_servers_val,
+                                server_len, ~0, ~0, flags);
+      if (result == NIS_SUCCESS)
        {
-         obj = rec_dirsearch (name, *dir, &status);
-         if (obj == NULL)
-           result = status;
+         if ((flags & MASTER_ONLY) == 0
+             || (*dir)->do_servers.do_servers_len == 1)
+           {
+             server_used = dbp->server_used;
+             current_ep = dbp->current_ep;
+           }
+         if ((flags & NO_CACHE) == 0)
+           nis_server_cache_add (name, search_parent_first, obj,
+                                 server_used, current_ep, &now);
+       }
+      else
+       {
+         nis_free_directory (obj);
+         obj = NULL;
        }
-
-      *dir = obj;
     }
 
+  *dir = obj;
+
   return result;
 }
 
@@ -543,38 +806,19 @@ nis_error
 __prepare_niscall (const_nis_name name, directory_obj **dirp,
                   dir_binding *bptrp, unsigned int flags)
 {
-  nis_error retcode = __nisfind_server (name, 1, dirp);
+  nis_error retcode = __nisfind_server (name, 1, dirp, bptrp, flags);
   if (__builtin_expect (retcode != NIS_SUCCESS, 0))
     return retcode;
 
-  nis_server *server;
-  u_int server_len;
-
-  if (flags & MASTER_ONLY)
-    {
-      server = (*dirp)->do_servers.do_servers_val;
-      server_len = 1;
-    }
-  else
-    {
-      server = (*dirp)->do_servers.do_servers_val;
-      server_len = (*dirp)->do_servers.do_servers_len;
-    }
-
-  retcode = __nisbind_create (bptrp, server, server_len, flags);
-  if (retcode == NIS_SUCCESS)
-    {
-      do
-       if (__nisbind_connect (bptrp) == NIS_SUCCESS)
-         return NIS_SUCCESS;
-      while (__nisbind_next (bptrp) == NIS_SUCCESS);
-
-      __nisbind_destroy (bptrp);
-      memset (bptrp, '\0', sizeof (*bptrp));
+  do
+    if (__nisbind_connect (bptrp) == NIS_SUCCESS)
+      return NIS_SUCCESS;
+  while (__nisbind_next (bptrp) == NIS_SUCCESS);
 
-      retcode = NIS_NAMEUNREACHABLE;
-    }
+  __nisbind_destroy (bptrp);
+  memset (bptrp, '\0', sizeof (*bptrp));
 
+  retcode = NIS_NAMEUNREACHABLE;
   nis_free_directory (*dirp);
   *dirp = NULL;
 
index 839ee4e..2075caa 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997-1999, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997-1999, 2004, 2005, 2006, 2007
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1997.
 
@@ -127,18 +128,10 @@ nis_lookup (const_nis_name name, const unsigned int flags)
                        /* Otherwise __nisfind_server will not do anything.  */
                        dir = NULL;
 
-                       if (__nisfind_server (req.ns_name, 1, &dir)
+                       if (__nisfind_server (req.ns_name, 1, &dir, &bptr,
+                                             flags & ~MASTER_ONLY)
                            != NIS_SUCCESS)
                          goto out;
-
-                       if (__nisbind_create (&bptr,
-                                             dir->do_servers.do_servers_val,
-                                             dir->do_servers.do_servers_len,
-                                             flags) != NIS_SUCCESS)
-                         {
-                           nis_free_directory (dir);
-                           goto out;
-                         }
                      }
                    else
                      if (__nisbind_next (&bptr) != NIS_SUCCESS)
index cb25be6..70b4701 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (c) 1997-1999,2003,2004,2005,2006 Free Software Foundation, Inc.
+/* Copyright (c) 1997-1999, 2003, 2004, 2005, 2006, 2007
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -274,21 +275,14 @@ nis_list (const_nis_name name, unsigned int flags,
       memset (res, '\0', sizeof (nis_result));
 
       status = __nisfind_server (ibreq->ibr_name,
-                                ibreq->ibr_srch.ibr_srch_val != NULL, &dir);
+                                ibreq->ibr_srch.ibr_srch_val != NULL,
+                                &dir, &bptr, flags & ~MASTER_ONLY);
       if (status != NIS_SUCCESS)
        {
           NIS_RES_STATUS (res) = status;
           goto fail3;
        }
 
-      status = __nisbind_create (&bptr, dir->do_servers.do_servers_val,
-                                dir->do_servers.do_servers_len, flags);
-      if (__builtin_expect (status != NIS_SUCCESS, 0))
-        {
-          NIS_RES_STATUS (res) = status;
-         goto fail2;
-        }
-
       while (__nisbind_connect (&bptr) != NIS_SUCCESS)
        if (__builtin_expect (__nisbind_next (&bptr) != NIS_SUCCESS, 0))
          {
@@ -338,7 +332,6 @@ nis_list (const_nis_name name, unsigned int flags,
                    NIS_RES_STATUS (res) = NIS_NOMEMORY;
                  fail:
                    __nisbind_destroy (&bptr);
-                 fail2:
                    nis_free_directory (dir);
                  fail3:
                    free (tablepath);
index 8d69ad9..298869f 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997,1998,2000-2003,2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000-2003,2005,2006,2007
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -256,7 +257,8 @@ _nss_nisplus_gethostton_r (const char *name, struct etherent *eth,
 
   snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
 
-  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM,
+                                NULL, NULL);
 
   if (result == NULL)
     {
@@ -322,7 +324,8 @@ _nss_nisplus_getntohost_r (const struct ether_addr *addr, struct etherent *eth,
            addr->ether_addr_octet[4], addr->ether_addr_octet[5],
            tablename_val);
 
-  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM,
+                                NULL, NULL);
 
   if (result == NULL)
     {
index 286a4cc..1cf652f 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997,1998,2000-2003,2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000-2003,2005,2006,2007
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -338,7 +339,7 @@ _nss_nisplus_getnetbyname_r (const char *name, struct netent *network,
   /* Search at first in the alias list, and use the correct name
      for the next search */
   snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
-  result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+  result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH | USE_DGRAM, NULL, NULL);
 
   if (result != NULL)
     {
@@ -366,7 +367,8 @@ _nss_nisplus_getnetbyname_r (const char *name, struct netent *network,
        }
 
       nis_freeresult (result);
-      result = nis_list (bufptr, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+      result = nis_list (bufptr, FOLLOW_LINKS | FOLLOW_PATH | USE_DGRAM,
+                        NULL, NULL);
     }
 
   if (result == NULL)
@@ -438,7 +440,8 @@ _nss_nisplus_getnetbyaddr_r (uint32_t addr, const int type,
     while (1)
       {
        snprintf (buf, sizeof (buf), "[addr=%s],%s", buf2, tablename_val);
-       nis_result *result = nis_list (buf, EXPAND_NAME, NULL, NULL);
+       nis_result *result = nis_list (buf, EXPAND_NAME | USE_DGRAM,
+                                      NULL, NULL);
 
        if (result == NULL)
          {
index 93e37dd..cd33aeb 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1999, 2001, 2002, 2003, 2005, 2006
+/* Copyright (C) 1997, 1999, 2001, 2002, 2003, 2005, 2006, 2007
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
@@ -311,7 +311,7 @@ _nss_nisplus_getpwnam_r (const char *name, struct passwd *pw,
 
   snprintf (buf, sizeof (buf), "[name=%s],%s", name, pwd_tablename_val);
 
-  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM, NULL, NULL);
 
   if (result == NULL)
     {
@@ -370,7 +370,7 @@ _nss_nisplus_getpwuid_r (const uid_t uid, struct passwd *pw,
   snprintf (buf, sizeof (buf), "[uid=%lu],%s",
            (unsigned long int) uid, pwd_tablename_val);
 
-  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM, NULL, NULL);
 
   if (result == NULL)
     {
index 5875bbe..711c6bc 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2001, 2002, 2003, 2005, 2006
+/* Copyright (C) 1997, 1998, 2001, 2002, 2003, 2005, 2006, 2007
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
@@ -315,7 +315,8 @@ _nss_nisplus_getrpcbyname_r (const char *name, struct rpcent *rpc,
   /* Search at first in the alias list, and use the correct name
      for the next search */
   snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
-  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM,
+                                NULL, NULL);
 
   if (result != NULL)
     {
@@ -342,7 +343,8 @@ _nss_nisplus_getrpcbyname_r (const char *name, struct rpcent *rpc,
        }
 
       nis_freeresult (result);
-      result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS , NULL, NULL);
+      result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM,
+                        NULL, NULL);
     }
 
   if (result == NULL)
@@ -402,7 +404,8 @@ _nss_nisplus_getrpcbynumber_r (const int number, struct rpcent *rpc,
 
   snprintf (buf, sizeof (buf), "[number=%d],%s", number, tablename_val);
 
-  nis_result *result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+  nis_result *result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH | USE_DGRAM,
+                                NULL, NULL);
 
   if (result == NULL)
     {
index 51c1956..607ce80 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2005, 2006
+/* Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2005, 2006, 2007
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
@@ -322,7 +322,8 @@ _nss_nisplus_getservbyname_r (const char *name, const char *protocol,
      for the next search */
   snprintf (buf, sizeof (buf), "[name=%s,proto=%s],%s", name, protocol,
            tablename_val);
-  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM,
+                                NULL, NULL);
 
   if (result != NULL)
     {
@@ -351,7 +352,8 @@ _nss_nisplus_getservbyname_r (const char *name, const char *protocol,
        }
 
       nis_freeresult (result);
-      result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+      result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM,
+                        NULL, NULL);
     }
 
   if (result == NULL)
@@ -420,7 +422,8 @@ _nss_nisplus_getservbyport_r (const int number, const char *protocol,
   snprintf (buf, sizeof (buf), "[port=%d,proto=%s],%s",
            number, protocol, tablename_val);
 
-  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM,
+                                NULL, NULL);
 
   if (result == NULL)
     {
index e63e1ee..f256f3e 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2001, 2002, 2003, 2005, 2007
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
 
@@ -182,7 +183,7 @@ _nss_nisplus_getspnam_r (const char *name, struct spwd *sp,
 
   snprintf (buf, sizeof (buf), "[name=%s],%s", name, pwd_tablename_val);
 
-  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+  result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS | USE_DGRAM, NULL, NULL);
 
   if (result == NULL)
     {
index c993bac..c8927ec 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
 
@@ -272,12 +272,13 @@ struct dir_binding
 typedef struct dir_binding dir_binding;
 
 extern nis_error __nisbind_create (dir_binding *, const nis_server *,
-                                  unsigned int, unsigned int) __THROW;
+                                  unsigned int, unsigned int, unsigned int,
+                                  unsigned int) __THROW;
 extern nis_error __nisbind_connect (dir_binding *) __THROW;
 extern nis_error __nisbind_next (dir_binding *) __THROW;
 extern void __nisbind_destroy (dir_binding *) __THROW;
-extern nis_error __nisfind_server (const_nis_name, int, directory_obj **)
-     __THROW;
+extern nis_error __nisfind_server (const_nis_name, int, directory_obj **,
+                                  dir_binding *, unsigned int) __THROW;
 
 #endif
 
index 38dd8d0..eb35a94 100644 (file)
@@ -1,3 +1,8 @@
+2007-03-19  Steven Munroe  <sjmunroe@us.ibm.com>
+
+       * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
+       (__lll_robust_trylock): Add MUTEX_HINT_ACQ to lwarx instruction.
+
 2007-03-16  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/pthread/bits/libc-lock.h: Use __extern_inline and
index 0136b97..239f4dd 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
 
@@ -25,7 +25,6 @@
 #include <bits/pthreadtypes.h>
 #include <atomic.h>
 
-
 #ifndef __NR_futex
 # define __NR_futex            221
 #endif
 /* Set *futex to ID if it is 0, atomically.  Returns the old value */
 #define __lll_robust_trylock(futex, id) \
   ({ int __val;                                                                      \
-     __asm __volatile ("1:     lwarx   %0,0,%2\n"                            \
+     __asm __volatile ("1:     lwarx   %0,0,%2" MUTEX_HINT_ACQ "\n"          \
                       "        cmpwi   0,%0,0\n"                             \
                       "        bne     2f\n"                                 \
                       "        stwcx.  %3,0,%2\n"                            \
index 46f8b8b..1233590 100644 (file)
@@ -15,6 +15,7 @@
    along with this program; if not, write to the Free Software Foundation,
    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
+#include <alloca.h>
 /* This file uses the getaddrinfo code but it compiles it without NSCD
    support.  We just need a few symbol renames.  */
 #define __inet_aton inet_aton
@@ -25,6 +26,8 @@
 #define __sendto sendto
 #define __strchrnul strchrnul
 #define __getline getline
+/* nscd uses 1MB or 2MB thread stacks.  */
+#define __libc_use_alloca(size) (size <= __MAX_ALLOCA_CUTOFF)
 
 #include <getaddrinfo.c>
 
index 4a46222..f2dbcee 100644 (file)
@@ -187,18 +187,22 @@ preserve_capabilities (void)
   if (tmp_caps == NULL || new_caps == NULL)
     {
       if (tmp_caps != NULL)
-       free_caps (tmp_caps);
+       cap_free (tmp_caps);
 
       dbg_log (_("Failed to initialize drop of capabilities"));
       error (EXIT_FAILURE, 0, _("cap_init failed"));
     }
 
   /* There is no reason why these should not work.  */
-  cap_set_flag (new_caps, CAP_PERMITTED, nnew_cap_list, new_cap_list, CAP_SET);
-  cap_set_flag (new_caps, CAP_EFFECTIVE, nnew_cap_list, new_cap_list, CAP_SET);
-
-  cap_set_flag (tmp_caps, CAP_PERMITTED, ntmp_cap_list, tmp_cap_list, CAP_SET);
-  cap_set_flag (tmp_caps, CAP_EFFECTIVE, ntmp_cap_list, tmp_cap_list, CAP_SET);
+  cap_set_flag (new_caps, CAP_PERMITTED, nnew_cap_list,
+               (cap_value_t *) new_cap_list, CAP_SET);
+  cap_set_flag (new_caps, CAP_EFFECTIVE, nnew_cap_list,
+               (cap_value_t *) new_cap_list, CAP_SET);
+
+  cap_set_flag (tmp_caps, CAP_PERMITTED, ntmp_cap_list,
+               (cap_value_t *) tmp_cap_list, CAP_SET);
+  cap_set_flag (tmp_caps, CAP_EFFECTIVE, ntmp_cap_list,
+               (cap_value_t *) tmp_cap_list, CAP_SET);
 
   int res = cap_set_proc (tmp_caps);
 
index 9ce0628..27afcd6 100644 (file)
@@ -1,5 +1,5 @@
 /* Header for nscd SELinux access controls.
-   Copyright (C) 2004, 2006 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Matthew Rickard <mjricka@epoch.ncsc.mil>, 2004.
 
@@ -23,7 +23,7 @@
 
 #include "nscd.h"
 #ifdef HAVE_LIBCAP
-# include <sys/capabilities.h>
+# include <sys/capability.h>
 #endif
 
 #ifdef HAVE_SELINUX
index c2d6ba4..a945ffb 100755 (executable)
@@ -30,6 +30,7 @@ if fgrep "$includedir" */*.{o,os,oS}.d |
 fgrep -v "$includedir/asm" |
 fgrep -v "$includedir/linux" |
 fgrep -v "$includedir/selinux" |
+fgrep -v "$includedir/sys/capability.h" |
 fgrep -v "$includedir/gd"; then
   # If we found a match something is wrong.
   exit 1
index c8f4420..b012d9d 100644 (file)
@@ -1,6 +1,6 @@
 /* Software floating-point emulation.
    Definitions for IEEE Double Precision
-   Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson (rth@cygnus.com),
                  Jakub Jelinek (jj@ultra.linux.cz),
@@ -168,13 +168,13 @@ union _FP_UNION_D
   DFtype flt;
   struct {
 #if __BYTE_ORDER == __BIG_ENDIAN
-    unsigned sign : 1;
-    unsigned exp  : _FP_EXPBITS_D;
-    unsigned long frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
+    unsigned sign   : 1;
+    unsigned exp    : _FP_EXPBITS_D;
+    _FP_W_TYPE frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
 #else
-    unsigned long frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
-    unsigned exp  : _FP_EXPBITS_D;
-    unsigned sign : 1;
+    _FP_W_TYPE frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
+    unsigned exp    : _FP_EXPBITS_D;
+    unsigned sign   : 1;
 #endif
   } bits __attribute__((packed));
 };
index bbf3942..0e2a90c 100644 (file)
@@ -1,6 +1,6 @@
 /* Software floating-point emulation.
    Definitions for IEEE Extended Precision.
-   Copyright (C) 1999,2006 Free Software Foundation, Inc.
+   Copyright (C) 1999,2006,2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek (jj@ultra.linux.cz).
 
@@ -277,14 +277,14 @@ union _FP_UNION_E
   XFtype flt;
   struct {
 #if __BYTE_ORDER == __BIG_ENDIAN
-    unsigned long pad : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E);
-    unsigned sign  : 1;
-    unsigned exp   : _FP_EXPBITS_E;
-    unsigned long frac : _FP_W_TYPE_SIZE;
+    _FP_W_TYPE pad  : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E);
+    unsigned sign   : 1;
+    unsigned exp    : _FP_EXPBITS_E;
+    _FP_W_TYPE frac : _FP_W_TYPE_SIZE;
 #else
-    unsigned long frac : _FP_W_TYPE_SIZE;
-    unsigned exp   : _FP_EXPBITS_E;
-    unsigned sign  : 1;
+    _FP_W_TYPE frac : _FP_W_TYPE_SIZE;
+    unsigned exp    : _FP_EXPBITS_E;
+    unsigned sign   : 1;
 #endif
   } bits;
 };
index d7840ff..c22e944 100644 (file)
@@ -1,6 +1,6 @@
 /* Software floating-point emulation.
    Definitions for IEEE Quad Precision.
-   Copyright (C) 1997,1998,1999,2006 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,1999,2006,2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson (rth@cygnus.com),
                  Jakub Jelinek (jj@ultra.linux.cz),
@@ -176,15 +176,15 @@ union _FP_UNION_Q
   } longs;
   struct {
 #if __BYTE_ORDER == __BIG_ENDIAN
-    unsigned sign  : 1;
-    unsigned exp   : _FP_EXPBITS_Q;
-    unsigned long frac1 : _FP_FRACBITS_Q-(_FP_IMPLBIT_Q != 0)-_FP_W_TYPE_SIZE;
-    unsigned long frac0 : _FP_W_TYPE_SIZE;
+    unsigned sign    : 1;
+    unsigned exp     : _FP_EXPBITS_Q;
+    _FP_W_TYPE frac1 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0) - _FP_W_TYPE_SIZE;
+    _FP_W_TYPE frac0 : _FP_W_TYPE_SIZE;
 #else
-    unsigned long frac0 : _FP_W_TYPE_SIZE;
-    unsigned long frac1 : _FP_FRACBITS_Q-(_FP_IMPLBIT_Q != 0)-_FP_W_TYPE_SIZE;
-    unsigned exp   : _FP_EXPBITS_Q;
-    unsigned sign  : 1;
+    _FP_W_TYPE frac0 : _FP_W_TYPE_SIZE;
+    _FP_W_TYPE frac1 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0) - _FP_W_TYPE_SIZE;
+    unsigned exp     : _FP_EXPBITS_Q;
+    unsigned sign    : 1;
 #endif
   } bits;
 };
index 31f27e9..d71f64e 100644 (file)
@@ -70,6 +70,13 @@ typedef uintmax_t uatomic_max_t;
 # endif
 #endif
 
+#ifndef MUTEX_HINT_ACQ
+# define MUTEX_HINT_ACQ
+#endif
+#ifndef MUTEX_HINT_REL
+# define MUTEX_HINT_REL
+#endif
+
 #define atomic_full_barrier()  __asm ("sync" ::: "memory")
 #define atomic_write_barrier() __asm ("eieio" ::: "memory")
 
@@ -78,7 +85,7 @@ typedef uintmax_t uatomic_max_t;
       __typeof (*(mem)) __tmp;                                               \
       __typeof (mem)  __memp = (mem);                                        \
       __asm __volatile (                                                     \
-                       "1:     lwarx   %0,0,%1\n"                            \
+                       "1:     lwarx   %0,0,%1" MUTEX_HINT_ACQ "\n"          \
                        "       cmpw    %0,%2\n"                              \
                        "       bne     2f\n"                                 \
                        "       stwcx.  %3,0,%1\n"                            \
@@ -95,7 +102,7 @@ typedef uintmax_t uatomic_max_t;
       __typeof (*(mem)) __tmp;                                               \
       __typeof (mem)  __memp = (mem);                                        \
       __asm __volatile (__ARCH_REL_INSTR "\n"                                \
-                       "1:     lwarx   %0,0,%1\n"                            \
+                       "1:     lwarx   %0,0,%1" MUTEX_HINT_REL "\n"          \
                        "       cmpw    %0,%2\n"                              \
                        "       bne     2f\n"                                 \
                        "       stwcx.  %3,0,%1\n"                            \
@@ -111,7 +118,7 @@ typedef uintmax_t uatomic_max_t;
   ({                                                                         \
     __typeof (*mem) __val;                                                   \
     __asm __volatile (                                                       \
-                     "1:       lwarx   %0,0,%2\n"                            \
+                     "1:       lwarx   %0,0,%2" MUTEX_HINT_ACQ "\n"          \
                      "         stwcx.  %3,0,%2\n"                            \
                      "         bne-    1b\n"                                 \
                      "   " __ARCH_ACQ_INSTR                                  \
@@ -125,7 +132,7 @@ typedef uintmax_t uatomic_max_t;
   ({                                                                         \
     __typeof (*mem) __val;                                                   \
     __asm __volatile (__ARCH_REL_INSTR "\n"                                  \
-                     "1:       lwarx   %0,0,%2\n"                            \
+                     "1:       lwarx   %0,0,%2" MUTEX_HINT_REL "\n"          \
                      "         stwcx.  %3,0,%2\n"                            \
                      "         bne-    1b"                                   \
                      : "=&r" (__val), "=m" (*mem)                            \
index 6fcc669..62cf991 100644 (file)
@@ -1,5 +1,5 @@
 /* Atomic operations.  PowerPC32 version.
-   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
 
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+/*  POWER6 adds a "Mutex Hint" to the Load and Reserve instruction.
+    This is a hint to the hardware to expect additional updates adjacent
+    to the lock word or not.  If we are acquiring a Mutex, the hint
+    should be true. Otherwise we releasing a Mutex or doing a simple
+    atomic operation.  In that case we don't expect addtional updates
+    adjacent to the lock word after the Store Conditional and the hint
+    should be false.  */
+    
+#if defined _ARCH_PWR6 || defined _ARCH_PWR6X
+# define MUTEX_HINT_ACQ        ",1"
+# define MUTEX_HINT_REL        ",0"
+#else
+# define MUTEX_HINT_ACQ
+# define MUTEX_HINT_REL
+#endif
+
 /*
  * The 32-bit exchange_bool is different on powerpc64 because the subf
  * does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
  * (a load word and zero (high 32) form).  So powerpc64 has a slightly
  * different version in sysdeps/powerpc/powerpc64/bits/atomic.h.
  */
-# define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval)         \
+#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval)         \
 ({                                                                           \
   unsigned int __tmp;                                                        \
   __asm __volatile (                                                         \
-                   "1: lwarx   %0,0,%1\n"                                    \
+                   "1: lwarx   %0,0,%1" MUTEX_HINT_ACQ "\n"                  \
                    "   subf.   %0,%2,%0\n"                                   \
                    "   bne     2f\n"                                         \
                    "   stwcx.  %3,0,%1\n"                                    \
   __tmp != 0;                                                                \
 })
 
-# define __arch_compare_and_exchange_bool_32_rel(mem, newval, oldval)        \
+#define __arch_compare_and_exchange_bool_32_rel(mem, newval, oldval)         \
 ({                                                                           \
   unsigned int __tmp;                                                        \
   __asm __volatile (__ARCH_REL_INSTR "\n"                                    \
-                   "1: lwarx   %0,0,%1\n"                                    \
+                   "1: lwarx   %0,0,%1" MUTEX_HINT_REL "\n"                  \
                    "   subf.   %0,%2,%0\n"                                   \
                    "   bne     2f\n"                                         \
                    "   stwcx.  %3,0,%1\n"                                    \
 /* Powerpc32 processors don't implement the 64-bit (doubleword) forms of
    load and reserve (ldarx) and store conditional (stdcx.) instructions.
    So for powerpc32 we stub out the 64-bit forms.  */
-# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
+#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
   (abort (), 0)
 
-# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
   (abort (), (__typeof (*mem)) 0)
 
-# define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
+#define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
   (abort (), 0)
 
-# define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
+#define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
   (abort (), (__typeof (*mem)) 0)
 
-# define __arch_atomic_exchange_64_acq(mem, value) \
+#define __arch_atomic_exchange_64_acq(mem, value) \
     ({ abort (); (*mem) = (value); })
 
-# define __arch_atomic_exchange_64_rel(mem, value) \
+#define __arch_atomic_exchange_64_rel(mem, value) \
     ({ abort (); (*mem) = (value); })
 
-# define __arch_atomic_exchange_and_add_64(mem, value) \
+#define __arch_atomic_exchange_and_add_64(mem, value) \
     ({ abort (); (*mem) = (value); })
 
-# define __arch_atomic_increment_val_64(mem) \
+#define __arch_atomic_increment_val_64(mem) \
     ({ abort (); (*mem)++; })
 
-# define __arch_atomic_decrement_val_64(mem) \
+#define __arch_atomic_decrement_val_64(mem) \
     ({ abort (); (*mem)--; })
 
-# define __arch_atomic_decrement_if_positive_64(mem) \
+#define __arch_atomic_decrement_if_positive_64(mem) \
     ({ abort (); (*mem)--; })
 
 #ifdef _ARCH_PWR4
index fc46099..fc2ce7c 100644 (file)
 #include <dl-machine.h>
 #include <stdio-common/_itoa.h>
 
-/* The value __cache_line_size is defined in memset.S and is initialised
+/* The value __cache_line_size is defined in dl-sysdep.c and is initialised
    by _dl_sysdep_start via DL_PLATFORM_INIT.  */
-extern int __cache_line_size;
-weak_extern (__cache_line_size)
+extern int __cache_line_size attribute_hidden;
 
 /* Because ld.so is now versioned, these functions can be in their own file;
    no relocations need to be done to call them.
@@ -318,15 +317,9 @@ __elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
       /* Default minimum 4 words per cache line.  */
       int line_size_words = 4;
 
-      /* Don't try this until ld.so has relocated itself!  */
-      int *line_size_ptr = &__cache_line_size;
-      if (lazy && line_size_ptr != NULL)
-       {
-         /*  Verify that __cache_line_size is defined and set.  */
-         if (*line_size_ptr != 0)
-           /* Convert bytes to words.  */
-           line_size_words = *line_size_ptr / 4;
-       }
+      if (lazy && __cache_line_size != 0)
+       /* Convert bytes to words.  */
+       line_size_words = __cache_line_size / 4;
 
       size_modified = lazy ? rel_offset_words : 6;
       for (i = 0; i < size_modified; i += line_size_words)
index f09c294..454abb2 100644 (file)
@@ -1,5 +1,5 @@
 /* Optimized memset implementation for PowerPC.
-   Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1999, 2000, 2003, 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
 #include <bp-sym.h>
 #include <bp-asm.h>
 
-/* Define a global static that can hold the cache line size.  The
-   assumption is that startup code will access the "aux vector" to
-   to obtain the value set by the kernel and store it into this
-   variable.  */
-
-       .globl __cache_line_size
-       .lcomm __cache_line_size,4,4
-
 /* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
    Returns 's'.
 
index e46dc1e..3465bb3 100644 (file)
@@ -1,5 +1,5 @@
 /* Atomic operations.  PowerPC64 version.
-   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
 
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+/*  POWER6 adds a "Mutex Hint" to the Load and Reserve instruction.
+    This is a hint to the hardware to expect additional updates adjacent
+    to the lock word or not.  If we are acquiring a Mutex, the hint
+    should be true. Otherwise we releasing a Mutex or doing a simple
+    atomic operation.  In that case we don't expect addtional updates
+    adjacent to the lock word after the Store Conditional and the hint
+    should be false.  */
+
+#if defined _ARCH_PWR6 || defined _ARCH_PWR6X
+# define MUTEX_HINT_ACQ        ",1"
+# define MUTEX_HINT_REL        ",0"
+#else
+# define MUTEX_HINT_ACQ
+# define MUTEX_HINT_REL
+#endif
+
 /* The 32-bit exchange_bool is different on powerpc64 because the subf
    does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
    (a load word and zero (high 32) form) load.
    In powerpc64 register values are 64-bit by default,  including oldval.
    The value in old val unknown sign extension, lwarx loads the 32-bit
    value as unsigned.  So we explicitly clear the high 32 bits in oldval.  */
-# define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
+#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
 ({                                                                           \
   unsigned int __tmp, __tmp2;                                                \
   __asm __volatile ("   clrldi  %1,%1,32\n"                                  \
-                   "1: lwarx   %0,0,%2\n"                                    \
+                   "1: lwarx   %0,0,%2" MUTEX_HINT_ACQ "\n"                  \
                    "   subf.   %0,%1,%0\n"                                   \
                    "   bne     2f\n"                                         \
                    "   stwcx.  %4,0,%2\n"                                    \
   __tmp != 0;                                                                \
 })
 
-# define __arch_compare_and_exchange_bool_32_rel(mem, newval, oldval) \
+#define __arch_compare_and_exchange_bool_32_rel(mem, newval, oldval) \
 ({                                                                           \
   unsigned int __tmp, __tmp2;                                                \
   __asm __volatile (__ARCH_REL_INSTR "\n"                                    \
                    "   clrldi  %1,%1,32\n"                                   \
-                   "1: lwarx   %0,0,%2\n"                                    \
+                   "1: lwarx   %0,0,%2" MUTEX_HINT_REL "\n"                  \
                    "   subf.   %0,%1,%0\n"                                   \
                    "   bne     2f\n"                                         \
                    "   stwcx.  %4,0,%2\n"                                    \
  * and Store doubleword conditional indexed (stdcx) instructions.  So here
  * we define the 64-bit forms.
  */
-# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
+#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
 ({                                                                           \
   unsigned long        __tmp;                                                        \
   __asm __volatile (                                                         \
-                   "1: ldarx   %0,0,%1\n"                                    \
+                   "1: ldarx   %0,0,%1" MUTEX_HINT_ACQ "\n"                  \
                    "   subf.   %0,%2,%0\n"                                   \
                    "   bne     2f\n"                                         \
                    "   stdcx.  %3,0,%1\n"                                    \
   __tmp != 0;                                                                \
 })
 
-# define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
+#define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
 ({                                                                           \
   unsigned long        __tmp;                                                        \
   __asm __volatile (__ARCH_REL_INSTR "\n"                                    \
-                   "1: ldarx   %0,0,%1\n"                                    \
+                   "1: ldarx   %0,0,%2" MUTEX_HINT_REL "\n"                  \
                    "   subf.   %0,%2,%0\n"                                   \
                    "   bne     2f\n"                                         \
                    "   stdcx.  %3,0,%1\n"                                    \
       __typeof (*(mem)) __tmp;                                               \
       __typeof (mem)  __memp = (mem);                                        \
       __asm __volatile (                                                     \
-                       "1:     ldarx   %0,0,%1\n"                            \
+                       "1:     ldarx   %0,0,%1" MUTEX_HINT_ACQ "\n"          \
                        "       cmpd    %0,%2\n"                              \
                        "       bne     2f\n"                                 \
                        "       stdcx.  %3,0,%1\n"                            \
       __typeof (*(mem)) __tmp;                                               \
       __typeof (mem)  __memp = (mem);                                        \
       __asm __volatile (__ARCH_REL_INSTR "\n"                                \
-                       "1:     ldarx   %0,0,%1\n"                            \
+                       "1:     ldarx   %0,0,%1" MUTEX_HINT_REL "\n"          \
                        "       cmpd    %0,%2\n"                              \
                        "       bne     2f\n"                                 \
                        "       stdcx.  %3,0,%1\n"                            \
       __tmp;                                                                 \
   })
 
-# define __arch_atomic_exchange_64_acq(mem, value) \
+#define __arch_atomic_exchange_64_acq(mem, value) \
     ({                                                                       \
       __typeof (*mem) __val;                                                 \
       __asm __volatile (__ARCH_REL_INSTR "\n"                                \
-                       "1:     ldarx   %0,0,%2\n"                            \
+                       "1:     ldarx   %0,0,%2" MUTEX_HINT_ACQ "\n"          \
                        "       stdcx.  %3,0,%2\n"                            \
                        "       bne-    1b\n"                                 \
                  " " __ARCH_ACQ_INSTR                                        \
       __val;                                                                 \
     })
 
-# define __arch_atomic_exchange_64_rel(mem, value) \
+#define __arch_atomic_exchange_64_rel(mem, value) \
     ({                                                                       \
       __typeof (*mem) __val;                                                 \
       __asm __volatile (__ARCH_REL_INSTR "\n"                                \
-                       "1:     ldarx   %0,0,%2\n"                            \
+                       "1:     ldarx   %0,0,%2" MUTEX_HINT_REL "\n"          \
                        "       stdcx.  %3,0,%2\n"                            \
                        "       bne-    1b"                                   \
                        : "=&r" (__val), "=m" (*mem)                          \
       __val;                                                                 \
     })
 
-# define __arch_atomic_exchange_and_add_64(mem, value) \
+#define __arch_atomic_exchange_and_add_64(mem, value) \
     ({                                                                       \
       __typeof (*mem) __val, __tmp;                                          \
       __asm __volatile ("1:    ldarx   %0,0,%3\n"                            \
       __val;                                                                 \
     })
 
-# define __arch_atomic_increment_val_64(mem) \
+#define __arch_atomic_increment_val_64(mem) \
     ({                                                                       \
       __typeof (*(mem)) __val;                                               \
       __asm __volatile ("1:    ldarx   %0,0,%2\n"                            \
       __val;                                                                 \
     })
 
-# define __arch_atomic_decrement_val_64(mem) \
+#define __arch_atomic_decrement_val_64(mem) \
     ({                                                                       \
       __typeof (*(mem)) __val;                                               \
       __asm __volatile ("1:    ldarx   %0,0,%2\n"                            \
       __val;                                                                 \
     })
 
-# define __arch_atomic_decrement_if_positive_64(mem) \
+#define __arch_atomic_decrement_if_positive_64(mem) \
   ({ int __val, __tmp;                                                       \
      __asm __volatile ("1:     ldarx   %0,0,%3\n"                            \
                       "        cmpdi   0,%0,0\n"                             \
 /*
  * All powerpc64 processors support the new "light weight"  sync (lwsync).
  */
-# define atomic_read_barrier() __asm ("lwsync" ::: "memory")
+#define atomic_read_barrier()  __asm ("lwsync" ::: "memory")
 /*
  * "light weight" sync can also be used for the release barrier.
  */
-# ifndef UP
-#  define __ARCH_REL_INSTR     "lwsync"
-# endif
+#ifndef UP
+# define __ARCH_REL_INSTR      "lwsync"
+#endif
 
 /*
  * Include the rest of the atomic ops macros which are common to both
index 09c79fc..e0742ea 100644 (file)
@@ -1,5 +1,6 @@
 /* Optimized memset implementation for PowerPC64.
-   Copyright (C) 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1999, 2000, 2002, 2003, 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
 #include <bp-sym.h>
 #include <bp-asm.h>
 
-/* Define a global static that can hold the cache line size.  The
-   assumption is that startup code will access the "aux vector" to
-   to obtain the value set by the kernel and store it into this
-   variable.  */
-       .globl __cache_line_size
-       .lcomm __cache_line_size,4,4
        .section        ".toc","aw"
 .LC0:
        .tc __cache_line_size[TC],__cache_line_size
index 8bec6cd..1d9443a 100644 (file)
@@ -134,7 +134,8 @@ CFLAGS-ypclnt.c = -DUSE_BINDINGDIR=1
 endif
 
 ifeq ($(subdir),io)
-sysdep_routines += xstatconv internal_statvfs internal_statvfs64
+sysdep_routines += xstatconv internal_statvfs internal_statvfs64 \
+                  sync_file_range
 endif
 
 ifeq ($(subdir),elf)
index 137b44c..bb5b862 100644 (file)
@@ -124,10 +124,10 @@ libc {
     _sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
   }
   GLIBC_2.5 {
-    splice; sync_file_range; tee; vmsplice;
+    splice; tee; vmsplice;
   }
   GLIBC_2.6 {
-    epoll_pwait;
+    epoll_pwait; sync_file_range;
   }
   GLIBC_PRIVATE {
     # functions used in other libraries
index 7c02c68..9bb8ec3 100644 (file)
@@ -1,5 +1,6 @@
 /* Operating system support for run-time dynamic linker.  Linux/PPC version.
-   Copyright (C) 1997, 1998, 2001, 2003, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 2001, 2003, 2006, 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
@@ -21,8 +22,7 @@
 #include <kernel-features.h>
 #include <ldsodefs.h>
 
-extern int __cache_line_size;
-weak_extern (__cache_line_size)
+int __cache_line_size attribute_hidden;
 
 /* Scan the Aux Vector for the "Data Cache Block Size" entry.  If found
    verify that the static extern __cache_line_size is defined by checking
@@ -30,12 +30,8 @@ weak_extern (__cache_line_size)
    value to __cache_line_size.  */
 #define DL_PLATFORM_AUXV                                                     \
       case AT_DCACHEBSIZE:                                                   \
-       {                                                                     \
-         int *cls = & __cache_line_size;                                     \
-         if (cls != NULL)                                                    \
-           *cls = av->a_un.a_val;                                            \
-       }                                                                     \
-      break;
+       __cache_line_size = av->a_un.a_val;                                   \
+       break;
 
 #ifndef __ASSUME_STD_AUXV
 
index a8005c1..923eab9 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 1998,2000,2001,2002,2003,2004,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 2005, 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
@@ -22,8 +23,7 @@
 #include <bp-start.h>
 #include <bp-sym.h>
 
-extern int __cache_line_size;
-weak_extern (__cache_line_size)
+int __cache_line_size attribute_hidden;
 /* The main work is done in the generic function.  */
 #define LIBC_START_MAIN generic_start_main
 #define LIBC_START_DISABLE_INLINE
@@ -113,11 +113,7 @@ int
     switch (av->a_type)
       {
       case AT_DCACHEBSIZE:
-       {
-         int *cls = &__cache_line_size;
-         if (cls != NULL)
-           *cls = av->a_un.a_val;
-       }
+       __cache_line_size = av->a_un.a_val;
        break;
       }
 #ifdef SHARED
index d73d340..141365c 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)africa   8.5
+# @(#)africa   8.7
 # <pre>
 
 # This data is by no means authoritative; if you think you know better,
@@ -232,8 +232,8 @@ Zone        Africa/Malabo   0:35:08 -       LMT     1912
 
 # Eritrea
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
-Zone   Africa/Asmera   2:35:32 -       LMT     1870
-                       2:35:32 -       AMT     1890          # Asmera Mean Time
+Zone   Africa/Asmara   2:35:32 -       LMT     1870
+                       2:35:32 -       AMT     1890          # Asmara Mean Time
                        2:35:20 -       ADMT    1936 May 5    # Adis Dera MT
                        3:00    -       EAT
 
index 04ddc86..78c2cf5 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)asia     8.8
+# @(#)asia     8.10
 # <pre>
 
 # This data is by no means authoritative; if you think you know better,
@@ -217,7 +217,7 @@ Rule        PRC     1987    1991    -       Apr     Sun>=10 0:00    1:00    D
 # BTW, I did some research on-line and found some info regarding these five
 # historic timezones from some Taiwan websites.  And yes, there are official
 # Chinese names for these locales (before 1949).
-# 
+#
 # From Jesper Norgaard Welen (2006-07-14):
 # I have investigated the timezones around 1970 on the
 # http://www.astro.com/atlas site [with provinces and county
@@ -413,6 +413,8 @@ Zone        Asia/Tbilisi    2:59:16 -       LMT     1880
 
 # East Timor
 
+# See Indonesia for the 1945 transition.
+
 # From Joao Carrascalao, brother of the former governor of East Timor, in
 # <a href="http://etan.org/et99c/december/26-31/30ETMAY.htm">
 # East Timor may be late for its millennium
@@ -437,7 +439,7 @@ Zone        Asia/Tbilisi    2:59:16 -       LMT     1880
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Asia/Dili       8:22:20 -       LMT     1912
                        8:00    -       TLT     1942 Feb 21 23:00 # E Timor Time
-                       9:00    -       JST     1945 Aug
+                       9:00    -       JST     1945 Sep 23
                        9:00    -       TLT     1976 May  3
                        8:00    -       CIT     2000 Sep 17 00:00
                        9:00    -       TLT
@@ -463,6 +465,19 @@ Zone       Asia/Calcutta   5:53:28 -       LMT     1880    # Kolkata
 # time zone maps, I think that must refer to Western Borneo (Kalimantan Barat
 # and Kalimantan Tengah) switching from UTC+8 to UTC+7.
 #
+# From Paul Eggert (2007-03-10):
+# Here is another correction to Shanks & Pottenger.
+# JohnTWB writes that Japanese forces did not surrender control in
+# Indonesia until 1945-09-01 00:00 at the earliest (in Jakarta) and
+# other formal surrender ceremonies were September 9, 11, and 13, plus
+# September 12 for the regional surrender to Mountbatten in Singapore.
+# These would be the earliest possible times for a change.
+# Regimes horaires pour le monde entier, by Henri Le Corre, (Editions
+# Traditionnelles, 1987, Paris) says that Java and Madura switched
+# from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura
+# (Hollandia).  For now, assume all Indonesian locations other than Jayapura
+# switched on 1945-09-23.
+#
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone Asia/Jakarta      7:07:12 -       LMT     1867 Aug 10
 # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
@@ -470,7 +485,7 @@ Zone Asia/Jakarta   7:07:12 -       LMT     1867 Aug 10
                        7:07:12 -       JMT     1923 Dec 31 23:47:12 # Jakarta
                        7:20    -       JAVT    1932 Nov         # Java Time
                        7:30    -       WIT     1942 Mar 23
-                       9:00    -       JST     1945 Aug
+                       9:00    -       JST     1945 Sep 23
                        7:30    -       WIT     1948 May
                        8:00    -       WIT     1950 May
                        7:30    -       WIT     1964
@@ -478,7 +493,7 @@ Zone Asia/Jakarta   7:07:12 -       LMT     1867 Aug 10
 Zone Asia/Pontianak    7:17:20 -       LMT     1908 May
                        7:17:20 -       PMT     1932 Nov    # Pontianak MT
                        7:30    -       WIT     1942 Jan 29
-                       9:00    -       JST     1945 Aug
+                       9:00    -       JST     1945 Sep 23
                        7:30    -       WIT     1948 May
                        8:00    -       WIT     1950 May
                        7:30    -       WIT     1964
@@ -487,10 +502,10 @@ Zone Asia/Pontianak       7:17:20 -       LMT     1908 May
 Zone Asia/Makassar     7:57:36 -       LMT     1920
                        7:57:36 -       MMT     1932 Nov    # Macassar MT
                        8:00    -       CIT     1942 Feb  9
-                       9:00    -       JST     1945 Aug
+                       9:00    -       JST     1945 Sep 23
                        8:00    -       CIT
 Zone Asia/Jayapura     9:22:48 -       LMT     1932 Nov
-                       9:00    -       EIT     1944
+                       9:00    -       EIT     1944 Sep  1
                        9:30    -       CST     1964
                        9:00    -       EIT
 
@@ -614,7 +629,7 @@ Rule        Iraq    1985    1990    -       Sep     lastSun 1:00s   0       S
 Rule   Iraq    1986    1990    -       Mar     lastSun 1:00s   1:00    D
 # IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.
 # Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.
-# 
+#
 Rule   Iraq    1991    max     -       Apr      1      3:00s   1:00    D
 Rule   Iraq    1991    max     -       Oct      1      3:00s   0       S
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
@@ -1293,6 +1308,11 @@ Zone     Indian/Maldives 4:54:00 -       LMT     1880    # Male
 # parliament passed during the tumultuous winter session."
 # For now, let's ignore this information, until we have more confirmation.
 
+# From Ganbold Ts. (2007-02-26):
+# Parliament of Mongolia has just changed the daylight-saving rule in February.
+# They decided not to adopt daylight-saving time....
+# http://www.mongolnews.mn/index.php?module=unuudur&sec=view&id=15742
+
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   Mongol  1983    1984    -       Apr     1       0:00    1:00    S
 Rule   Mongol  1983    only    -       Oct     1       0:00    0       -
@@ -1311,8 +1331,8 @@ Rule      Mongol  1985    1998    -       Mar     lastSun 0:00    1:00    S
 Rule   Mongol  1984    1998    -       Sep     lastSun 0:00    0       -
 # IATA SSIM (1999-09) says Mongolia no longer observes DST.
 Rule   Mongol  2001    only    -       Apr     lastSat 2:00    1:00    S
-Rule   Mongol  2001    max     -       Sep     lastSat 2:00    0       -
-Rule   Mongol  2002    max     -       Mar     lastSat 2:00    1:00    S
+Rule   Mongol  2001    2006    -       Sep     lastSat 2:00    0       -
+Rule   Mongol  2002    2006    -       Mar     lastSat 2:00    1:00    S
 
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 # Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
index 2e17bcc..40b0bf6 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)australasia      8.3
+# @(#)australasia      8.6
 # <pre>
 
 # This file also includes Pacific islands.
@@ -29,15 +29,24 @@ Zone Australia/Darwin        8:43:20 -      LMT     1895 Feb
                         9:00   -       CST     1899 May
                         9:30   Aus     CST
 # Western Australia
+#
+# Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
+Rule   AW      1974    only    -       Oct     lastSun 2:00s   1:00    -
+Rule   AW      1975    only    -       Mar     Sun>=1  2:00s   0       -
+Rule   AW      1983    only    -       Oct     lastSun 2:00s   1:00    -
+Rule   AW      1984    only    -       Mar     Sun>=1  2:00s   0       -
+Rule   AW      1991    only    -       Nov     17      2:00s   1:00    -
+Rule   AW      1992    only    -       Mar     Sun>=1  2:00s   0       -
+Rule   AW      2006    only    -       Dec      3      2:00s   1:00    -
+Rule   AW      2007    2009    -       Mar     lastSun 2:00s   0       -
+Rule   AW      2007    2008    -       Oct     lastSun 2:00s   1:00    -
 Zone Australia/Perth    7:43:24 -      LMT     1895 Dec
                         8:00   Aus     WST     1943 Jul
-                        8:00   -       WST     1974 Oct lastSun 2:00s
-                        8:00   1:00    WST     1975 Mar Sun>=1 2:00s
-                        8:00   -       WST     1983 Oct lastSun 2:00s
-                        8:00   1:00    WST     1984 Mar Sun>=1 2:00s
-                        8:00   -       WST     1991 Nov 17 2:00s
-                        8:00   1:00    WST     1992 Mar Sun>=1 2:00s
-                        8:00   -       WST
+                        8:00   AW      WST
+Zone Australia/Eucla    8:35:28 -      LMT     1895 Dec
+                        8:45   Aus     CWST    1943 Jul
+                        8:45   AW      CWST
+
 # Queensland
 #
 # From Alex Livingston (1996-11-01):
@@ -193,16 +202,16 @@ Zone Australia/Lord_Howe 10:36:20 -       LMT     1895 Feb
 #
 # Ashmore Is, Cartier
 # no indigenous inhabitants; only seasonal caretakers
-# like Australia/Perth, says Turner
+# no times are set
 #
 # Coral Sea Is
 # no indigenous inhabitants; only meteorologists
-# no information
+# no times are set
 #
 # Macquarie
 # permanent occupation (scientific station) since 1948;
 # sealing and penguin oil station operated 1888/1917
-# like Australia/Hobart, says Turner
+# like Australia/Hobart
 
 # Christmas
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
@@ -534,6 +543,7 @@ Zone        Pacific/Wallis  12:15:20 -      LMT     1901
 #              std dst
 #              LMT     Local Mean Time
 #        8:00  WST WST Western Australia
+#        8:45  CWST CWST Central Western Australia*
 #        9:00  JST     Japan
 #        9:30  CST CST Central Australia
 #       10:00  EST EST Eastern Australia
@@ -806,37 +816,51 @@ Zone      Pacific/Wallis  12:15:20 -      LMT     1901
 # From Arthur David Olson (1992-03-08):
 # The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
 
+# From Christopher Hunt (2006-11-21), after an advance warning
+# from Jesper Norgaard Welen (2006-11-01):
+# WA are trialing DST for three years.
+# <http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf>
+
 # From Rives McDow (2002-04-09):
 # The most interesting region I have found consists of three towns on the
-# southern coast of Australia, population 10 at last report, along with
-# 50,000 sheep, about 100 kilometers long and 40 kilometers into the
-# continent.  The primary town is Madura, with the other towns being
-# Mundrabilla and Eucla.  According to the sheriff of Madura, the
-# residents got tired of having to change the time so often, as they are
-# located in a strip overlapping the border of South Australia and Western
-# Australia.  South Australia observes daylight saving time; Western
+# southern coast....  South Australia observes daylight saving time; Western
 # Australia does not.  The two states are one and a half hours apart.  The
 # residents decided to forget about this nonsense of changing the clock so
 # much and set the local time 20 hours and 45 minutes from the
 # international date line, or right in the middle of the time of South
-# Australia and Western Australia.  As it only affects about 10 people and
-# tourists staying at the Madura Motel, it has never really made as big an
-# impact as Broken Hill.  However, as tourist visiting there or anyone
-# calling the local sheriff will attest, they do keep time in this way.
+# Australia and Western Australia....
 #
 # From Paul Eggert (2002-04-09):
 # This is confirmed by the section entitled
 # "What's the deal with time zones???" in
-# <http://www.earthsci.unimelb.edu.au/~awatkins/null.html>,
-# which says a few other things:
-#
-# * Border Village, SA also is 45 minutes ahead of Perth.
-# * The locals call this time zone "central W.A. Time" (presumably "CWAT").
-# * The locals also call Western Australia time "Perth time".
-#
-# It's not clear from context whether everyone in Western Australia
-# knows of this naming convention, or whether it's just the people in
-# this subregion.
+# <http://www.earthsci.unimelb.edu.au/~awatkins/null.html>.
+#
+# From Alex Livingston (2006-12-07):
+# ... it was just on four years ago that I drove along the Eyre Highway,
+# which passes through eastern Western Australia close to the southern
+# coast of the continent.
+#
+# I paid particular attention to the time kept there. There can be no
+# dispute that UTC+08:45 was considered "the time" from the border
+# village just inside the border with South Australia to as far west
+# as just east of Caiguna. There can also be no dispute that Eucla is
+# the largest population centre in this zone....
+#
+# Now that Western Australia is observing daylight saving, the
+# question arose whether this part of the state would follow suit. I
+# just called the border village and confirmed that indeed they have,
+# meaning that they are now observing UTC+09:45.
+#
+# (2006-12-09):
+# I personally doubt that either experimentation with daylight saving
+# in WA or its introduction in SA had anything to do with the genesis
+# of this time zone.  My hunch is that it's been around since well
+# before 1975.  I remember seeing it noted on road maps decades ago.
+
+# From Paul Eggert (2006-12-15):
+# For lack of better info, assume the tradition dates back to the
+# introduction of standard time in 1895.
+
 
 # South Australia, Tasmania, Victoria
 
index 0082440..7c92260 100644 (file)
@@ -1,8 +1,9 @@
-# @(#)backward 8.2
+# @(#)backward 8.3
 
 # This file provides links between current names for time zones
 # and their old names.  Many names changed in late 1993.
 
+Link   Africa/Asmara           Africa/Asmera
 Link   Africa/Bamako           Africa/Timbuktu
 Link   America/Argentina/Catamarca     America/Argentina/ComodRivadavia
 Link   America/Adak            America/Atka
@@ -28,6 +29,7 @@ Link  Asia/Jerusalem          Asia/Tel_Aviv
 Link   Asia/Thimphu            Asia/Thimbu
 Link   Asia/Makassar           Asia/Ujung_Pandang
 Link   Asia/Ulaanbaatar        Asia/Ulan_Bator
+Link   Atlantic/Faroe          Atlantic/Faeroe
 Link   Australia/Sydney        Australia/ACT
 Link   Australia/Sydney        Australia/Canberra
 Link   Australia/Lord_Howe     Australia/LHI
index b3a3b26..79c068e 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)europe   8.6
+# @(#)europe   8.10
 # <pre>
 
 # This data is by no means authoritative; if you think you know better,
 #   -- James Joyce, Ulysses
 
 # From Joseph S. Myers (2005-01-26):
-# Irish laws are available online at www.irishstatutebook.ie.  These include 
+# Irish laws are available online at www.irishstatutebook.ie.  These include
 # various relating to legal time, for example:
-# 
+#
 # ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html
-# 
+#
 # ZZSI71Y1947.html ZZSI128Y1948.html ZZSI23Y1949.html ZZSI41Y1950.html
 # ZZSI27Y1951.html ZZSI73Y1952.html
-# 
+#
 # ZZSI11Y1961.html ZZSI232Y1961.html ZZSI182Y1962.html
 # ZZSI167Y1963.html ZZSI257Y1964.html ZZSI198Y1967.html
 # ZZA23Y1968.html ZZA17Y1971.html
-# 
+#
 # ZZSI67Y1981.html ZZSI212Y1982.html ZZSI45Y1986.html
 # ZZSI264Y1988.html ZZSI52Y1990.html ZZSI371Y1992.html
 # ZZSI395Y1994.html ZZSI484Y1997.html ZZSI506Y2001.html
 #
 # [These are all relative to the root, e.g., the first is
 # <http://www.irishstatutebook.ie/ZZA13Y1923.html>.]
-# 
-# (These are those I found, but there could be more.  In any case these 
-# should allow various updates to the comments in the europe file to cover 
+#
+# (These are those I found, but there could be more.  In any case these
+# should allow various updates to the comments in the europe file to cover
 # the laws applicable in Ireland.)
-# 
-# (Note that the time in the Republic of Ireland since 1968 has been defined 
-# in terms of standard time being GMT+1 with a period of winter time when it 
-# is GMT, rather than standard time being GMT with a period of summer time 
+#
+# (Note that the time in the Republic of Ireland since 1968 has been defined
+# in terms of standard time being GMT+1 with a period of winter time when it
+# is GMT, rather than standard time being GMT with a period of summer time
 # being GMT+1.)
 
 # From Paul Eggert (1999-03-28):
@@ -754,7 +754,7 @@ Zone        Europe/Prague   0:57:44 -       LMT     1850
                        1:00    Czech   CE%sT   1979
                        1:00    EU      CE%sT
 
-# Denmark, Faeroe Islands, and Greenland
+# Denmark, Faroe Islands, and Greenland
 
 # From Jesper Norgaard Welen (2005-04-26):
 # http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
@@ -809,7 +809,7 @@ Zone Europe/Copenhagen       0:50:20 -      LMT     1890
                         1:00   C-Eur   CE%sT   1945 Apr  2 2:00
                         1:00   Denmark CE%sT   1980
                         1:00   EU      CE%sT
-Zone Atlantic/Faeroe   -0:27:04 -      LMT     1908 Jan 11     # Torshavn
+Zone Atlantic/Faroe    -0:27:04 -      LMT     1908 Jan 11     # Torshavn
                         0:00   -       WET     1981
                         0:00   EU      WE%sT
 #
@@ -2278,6 +2278,34 @@ Zone     Europe/Zurich   0:34:08 -       LMT     1848 Sep 12
                        1:00    EU      CE%sT
 
 # Turkey
+
+# From Amar Devegowda (2007-01-03):
+# The time zone rules for Istanbul, Turkey have not been changed for years now.
+# ... The latest rules are available at -
+# http://www.timeanddate.com/worldclock/timezone.html?n=107
+# From Steffen Thorsen (2007-01-03):
+# I have been able to find press records back to 1996 which all say that
+# DST started 01:00 local time and end at 02:00 local time.  I am not sure
+# what happened before that.  One example for each year from 1996 to 2001:
+# http://newspot.byegm.gov.tr/arsiv/1996/21/N4.htm
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING97/03/97X03X25.TXT
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING98/03/98X03X02.HTM
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING99/10/99X10X26.HTM#%2016
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2000/03/00X03X06.HTM#%2021
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2001/03/23x03x01.HTM#%2027
+# From Paul Eggert (2007-01-03):
+# Prefer the above source to Shanks & Pottenger for time stamps after 1990.
+
+# From Steffen Thorsen (2007-03-09):
+# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC
+# start/end time, according to the following page (2007-03-07):
+# http://www.ntvmsnbc.com/news/402029.asp
+# The official document is located here - it is in Turkish...:
+# http://rega.basbakanlik.gov.tr/eskiler/2007/03/20070307-7.htm
+# I was able to locate the following seemingly official document
+# (on a non-government server though) describing dates between 2002 and 2006:
+# http://www.alomaliye.com/bkk_2002_3769.htm
+
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   Turkey  1916    only    -       May      1      0:00    1:00    S
 Rule   Turkey  1916    only    -       Oct      1      0:00    0       -
@@ -2332,13 +2360,17 @@ Rule    Turkey  1983    only    -       Jul     31      0:00    1:00    S
 Rule   Turkey  1983    only    -       Oct      2      0:00    0       -
 Rule   Turkey  1985    only    -       Apr     20      0:00    1:00    S
 Rule   Turkey  1985    only    -       Sep     28      0:00    0       -
+Rule   Turkey  1986    1990    -       Mar     lastSun 2:00s   1:00    S
+Rule   Turkey  1986    1990    -       Sep     lastSun 2:00s   0       -
+Rule   Turkey  1991    2006    -       Mar     lastSun 1:00s   1:00    S
+Rule   Turkey  1991    1995    -       Sep     lastSun 1:00s   0       -
+Rule   Turkey  1996    2006    -       Oct     lastSun 1:00s   0       -
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   Europe/Istanbul 1:55:52 -       LMT     1880
                        1:56:56 -       IMT     1910 Oct # Istanbul Mean Time?
                        2:00    Turkey  EE%sT   1978 Oct 15
                        3:00    Turkey  TR%sT   1985 Apr 20 # Turkey Time
-                       2:00    Turkey  EE%sT   1986
-                       2:00    C-Eur   EE%sT   1991
+                       2:00    Turkey  EE%sT   2007
                        2:00    EU      EE%sT
 Link   Europe/Istanbul Asia/Istanbul   # Istanbul is in both continents.
 
index 8bb8231..0e985e9 100644 (file)
@@ -1,6 +1,6 @@
 # ISO 3166 alpha-2 country codes
 #
-# @(#)iso3166.tab      8.3
+# @(#)iso3166.tab      8.4
 #
 # From Paul Eggert (2006-09-27):
 #
@@ -92,7 +92,7 @@ FI    Finland
 FJ     Fiji
 FK     Falkland Islands
 FM     Micronesia
-FO     Faeroe Islands
+FO     Faroe Islands
 FR     France
 GA     Gabon
 GB     Britain (UK)
index d2b506b..6b99037 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)leapseconds      8.1
+# @(#)leapseconds      8.3
 
 # Allowance for leapseconds added to each timezone file.
 
@@ -45,48 +45,38 @@ Leap        1997    Jun     30      23:59:60        +       S
 Leap   1998    Dec     31      23:59:60        +       S
 Leap   2005    Dec     31      23:59:60        +       S
 
-#      INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
+# ...
+# Sent: Thursday, February 01, 2007 9:49 AM
+# ...
+# Subject: Bulletin C number 33
+#
+#      INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
 #
 # SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
 #
 # SERVICE DE LA ROTATION TERRESTRE
 # OBSERVATOIRE DE PARIS
 # 61, Av. de l'Observatoire 75014 PARIS (France)
-# Tel.      : 33 (0) 1 40 51 22 26
-# FAX       : 33 (0) 1 40 51 22 91
 # ...
-# http://hpiers.obspm.fr/eop-pc
-#
-#                                              Paris, 4 July 2005
-#                                                      
-#                                              Bulletin C 30
-#
-#                                              To authorities responsible
-#                                              for the measurement and
-#                                              distribution of time
-#
-#
-#                                    UTC TIME STEP
-#                             on the 1st of January 2006
-#
-# A positive leap second will be introduced at the end of December 2005.
-# The sequence of dates of the UTC second markers will be:
-#
-#                      2005 December 31,     23h 59m 59s
-#                      2005 December 31,     23h 59m 60s
-#                      2006 January   1,      0h  0m  0s
 #
-# The difference between UTC and the International Atomic Time TAI is:
+#                                                Paris, 1 February 2007
+#                                                Bulletin C 33
+#                                                To authorities responsible
+#                                                for the measurement and
+#                                                distribution of time
 #
-# from 1999 January 1, 0h UTC, to 2006 January 1  0h UTC  : UTC-TAI = - 32s
-# from 2006 January 1, 0h UTC, until further notice       : UTC-TAI = - 33s
+#                           INFORMATION ON UTC - TAI
 #
-# Leap seconds can be introduced in UtC at the end of the months of December
-# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
-# six months, either to announce a time step in UTC or to confirm that there
-# will be no time step at the next possible date.
+# NO positive leap second will be introduced at the end of June 2007.
+# The difference between Coordinated Universal Time UTC and the
+# International Atomic Time TAI is:
+#      from 2006 January 1, 0h UTC, until further notice : UTC-TAI = -33 s
+# Leap seconds can be introduced in UTC at the end of the months of
+# December  or June,  depending on the evolution of UT1-TAI. Bulletin C is
+# mailed every  six months, either to announce a time step in UTC, or to
+# confirm that there  will be no time step at the next possible date.
 #
-#                                      Daniel GAMBIS
-#                                      Head
-#                                      Earth Orientation Center of IERS
-#                                      Observatoire de Paris, France
+#                              Daniel GAMBIS
+#                              Director
+#                              Earth Orientation Center of IERS
+#                              Observatoire de Paris, France
index 3d80c5e..3184b7b 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)northamerica     8.10
+# @(#)northamerica     8.15
 # <pre>
 
 # also includes Central America and the Caribbean
@@ -307,6 +307,11 @@ Zone America/New_York      -4:56:02 -      LMT     1883 Nov 18 12:03:58
 # "bar time" in the state corresponds to 02:00, a number of citations
 # are issued for the "sale of class 'B' alcohol after prohibited
 # hours" within the deviated hour of this change every year....
+#
+# From Douglas R. Bomberg (2007-03-12):
+# Wisconsin has enacted (nearly eleventh-hour) legislation to get WI
+# Statue 175 closer in synch with the US Congress' intent....
+# http://www.legis.state.wi.us/2007/data/acts/07Act3.pdf
 
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
 Rule   Chicago 1920    only    -       Jun     13      2:00    1:00    D
@@ -583,6 +588,11 @@ Zone America/Boise -7:44:49 -      LMT     1883 Nov 18 12:15:11
 # clocks twice that night, but this obviously is in error.  The intent
 # is that 01:59:59 EST be followed by 02:00:00 CDT.
 
+# From Gwillim Law (2007-02-10):
+# The Associated Press has been reporting that Pulaski County, Indiana is
+# going to switch from Central to Eastern Time on March 11, 2007....
+# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
+
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
 Rule Indianapolis 1941 only    -       Jun     22      2:00    1:00    D
 Rule Indianapolis 1941 1954    -       Sep     lastSun 2:00    0       S
@@ -618,7 +628,7 @@ Zone America/Indiana/Marengo -5:45:23 -     LMT     1883 Nov 18 12:14:37
                        -5:00   -       EST     2006
                        -5:00   US      E%sT
 #
-# Daviess, Dubois, Knox, Martin, Perry, and Pulaski Counties, Indiana,
+# Daviess, Dubois, Knox, Martin, and Perry Counties, Indiana,
 # switched from eastern to central time in April 2006.
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
 Rule Vincennes 1946    only    -       Apr     lastSun 2:00    1:00    D
@@ -676,6 +686,23 @@ Zone America/Indiana/Knox -5:46:30 -       LMT     1883 Nov 18 12:13:30
                        -5:00   -       EST     2006 Apr  2 2:00
                        -6:00   US      C%sT
 #
+# Pulaski County, Indiana, switched from eastern to central time in
+# April 2006 and then switched back in March 2007.
+# Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
+Rule   Pulaski 1946    1960    -       Apr     lastSun 2:00    1:00    D
+Rule   Pulaski 1946    1954    -       Sep     lastSun 2:00    0       S
+Rule   Pulaski 1955    1956    -       Oct     lastSun 2:00    0       S
+Rule   Pulaski 1957    1960    -       Sep     lastSun 2:00    0       S
+# Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
+Zone America/Indiana/Winamac -5:46:25 - LMT    1883 Nov 18 12:13:35
+                       -6:00   US      C%sT    1946
+                       -6:00   Pulaski C%sT    1961 Apr 30 2:00
+                       -5:00   -       EST     1969
+                       -5:00   US      E%sT    1971
+                       -5:00   -       EST     2006 Apr  2 2:00
+                       -6:00   US      C%sT    2007 Mar 11 2:00
+                       -5:00   US      E%sT
+#
 # Switzerland County, Indiana, did not observe DST from 1973 through 2005.
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone America/Indiana/Vevay -5:40:16 -  LMT     1883 Nov 18 12:19:44
@@ -894,18 +921,17 @@ Zone America/Menominee    -5:50:27 -      LMT     1885 Sep 18 12:00
 # Unless otherwise specified, the data for Canada are all from Shanks
 # & Pottenger.
 
-# From Chris Walton (2006-04-01):
+# From Chris Walton (2006-04-01, 2006-04-25, 2006-06-26, 2007-01-31,
+# 2007-03-01):
 # The British Columbia government announced yesterday that it will
 # adjust daylight savings next year to align with changes in the
 # U.S. and the rest of Canada....
 # http://www2.news.gov.bc.ca/news_releases_2005-2009/2006AG0014-000330.htm
-
-# From Chris Walton (2006-04-25):
+# ...
+# Nova Scotia
 # Daylight saving time will be extended by four weeks starting in 2007....
-# Here is a news release which was issued today by the Nova Scotia government:
-# http://www.gov.ns.ca/news/details.asp?id=20060425004
-
-# From Chris Walton (2006-06-26):
+# http://www.gov.ns.ca/just/regulations/rg2/2006/ma1206.pdf
+#
 # [For New Brunswick] the new legislation dictates that the time change is to
 # be done at 02:00 instead of 00:01.
 # http://www.gnb.ca/0062/acts/BBA-2006/Chap-19.pdf
@@ -915,16 +941,18 @@ Zone America/Menominee    -5:50:27 -      LMT     1885 Sep 18 12:00
 # http://web2.gov.mb.ca/laws/statutes/ccsm/o030e.php
 # ...
 # [Alberta, Ontario, Quebec] will follow US rules.
-# http://www.qp.gov.ab.ca/documents/Acts/2006CH03_UNPR.cfm?frm_isbn=0779744934
+# http://www.qp.gov.ab.ca/documents/spring/CH03_06.CFM
 # http://www.e-laws.gov.on.ca/DBLaws/Source/Regs/English/2006/R06111_e.htm
-# http://www.assnat.qc.ca/eng/37legislature2/Projets-loi/Publics/06-a002.htm
+# http://www2.publicationsduquebec.gouv.qc.ca/dynamicSearch/telecharge.php?type=5&file=2006C39A.PDF
 # ...
-# P.E.I. will follow US rules.  The new legislation is not law yet.
-# It passed first reading on April 20....
-# http://www.assembly.pe.ca/bills/pdf_first/62/3/bill-101.pdf
+# P.E.I. will follow US rules....
+# http://www.assembly.pe.ca/bills/pdf_chapter/62/3/chapter-41.pdf
 # ...
-# Province of Newfoundland and Labrador.... The change is being considered.
-# http://www.releases.gov.nl.ca/releases/2006/mpa/0331n01.htm
+# Province of Newfoundland and Labrador....
+# http://www.hoa.gov.nl.ca/hoa/bills/Bill0634.htm
+# ...
+# Yukon
+# http://www.gov.yk.ca/legislation/regs/oic2006_127.pdf
 # ...
 # N.W.T. will follow US rules.  Whoever maintains the government web site
 # does not seem to believe in bookmarks.  To see the news release, click the
@@ -932,8 +960,10 @@ Zone America/Menominee     -5:50:27 -      LMT     1885 Sep 18 12:00
 # "Daylight Savings Time Change" link; it will fire off a popup using
 # JavaScript.
 # http://www.exec.gov.nt.ca/currentnews/currentPR.asp?mode=archive
-
-
+# ...
+# Nunavut
+# An amendment to the Interpretation Act was registered on February 19/2007....
+# http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
 
 # From Paul Eggert (2006-04-25):
 # H. David Matthews and Mary Vincent's map
@@ -1100,11 +1130,11 @@ Zone America/Glace_Bay  -3:59:48 -      LMT     1902 Jun 15
 
 # New Brunswick
 
-# From Paul Eggert (2006-01-20):
-# New Brunswick's Time Definition Act
-# <http://www.gnb.ca/0062/PDF-acts/t-06.pdf> says they change at 00:01, and
+# From Paul Eggert (2007-01-31):
+# The Time Definition Act <http://www.gnb.ca/0062/PDF-acts/t-06.pdf>
+# says they changed at 00:01 through 2006, and
 # <http://www.canlii.org/nb/laws/sta/t-6/20030127/whole.html> makes it
-# clear that this has been the case since at least 1993.
+# clear that this was the case since at least 1993.
 # For now, assume it started in 1993.
 
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
@@ -1676,9 +1706,23 @@ Zone America/Dawson_Creek -8:00:56 -     LMT     1884
 # For lack of better information, assume that Southampton Island observed
 # daylight saving only during wartime.
 
-# From Chris Walton (2006-07-19):
-# The government of Yukon Territory ... recently announced it will extend
-# daylight saving in 2007....  http://www.gov.yk.ca/news/2006/06-164.html
+# From Chris Walton (2007-03-01):
+# ... the community of Resolute (located on Cornwallis Island in
+# Nunavut) moved from Central Time to Eastern Time last November.
+# Basically the community did not change its clocks at the end of
+# daylight saving....
+# http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html
+
+# From Chris Walton (2007-03-14):
+# Today I phoned the "hamlet office" to find out what Resolute was doing with
+# its clocks.
+#
+# The individual that answered the phone confirmed that the clocks did not
+# move at the end of daylight saving on October 29/2006.  He also told me that
+# the clocks did not move this past weekend (March 11/2007)....
+#
+# America/Resolute should use the "Canada" Rule up to October 29/2006.
+# After that it should be fixed on Eastern Standard Time until further notice.
 
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   NT_YK   1918    only    -       Apr     14      2:00    1:00    D
@@ -1694,33 +1738,39 @@ Rule    NT_YK   1980    1986    -       Apr     lastSun 2:00    1:00    D
 Rule   NT_YK   1980    2006    -       Oct     lastSun 2:00    0       S
 Rule   NT_YK   1987    2006    -       Apr     Sun>=1  2:00    1:00    D
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
-Zone America/Pangnirtung -4:22:56 -    LMT     1884
+# aka Panniqtuuq
+Zone America/Pangnirtung 0     -       zzz     1921 # trading post est.
                        -4:00   NT_YK   A%sT    1995 Apr Sun>=1 2:00
                        -5:00   Canada  E%sT    1999 Oct 31 2:00
                        -6:00   Canada  C%sT    2000 Oct 29 2:00
                        -5:00   Canada  E%sT
-Zone America/Iqaluit   -4:33:52 -      LMT     1884 # Frobisher Bay before 1987
+# formerly Frobisher Bay
+Zone America/Iqaluit   0       -       zzz     1942 Aug # Frobisher Bay est.
                        -5:00   NT_YK   E%sT    1999 Oct 31 2:00
                        -6:00   Canada  C%sT    2000 Oct 29 2:00
                        -5:00   Canada  E%sT
-# Now subsumed by America/Atikokan.
-#Zone America/Coral_Harbour -5:32:40 - LMT     1884
-#                      -5:00   NT_YK   E%sT    1946
-#                      -5:00   -       EST
-Zone America/Rankin_Inlet -6:08:20 -   LMT     1884
+# aka Qausuittuq
+Zone America/Resolute  0       -       zzz     1947 Aug 31 # Resolute founded
+                       -6:00   NT_YK   C%sT    2000 Oct 29 2:00
+                       -5:00   -       EST     2001 Apr  1 3:00
+                       -6:00   Canada  C%sT    2006 Oct 29 2:00
+                       -5:00   -       EST
+# aka Kangiqiniq
+Zone America/Rankin_Inlet 0    -       zzz     1957 # Rankin Inlet founded
                        -6:00   NT_YK   C%sT    2000 Oct 29 2:00
                        -5:00   -       EST     2001 Apr  1 3:00
                        -6:00   Canada  C%sT
-Zone America/Cambridge_Bay -7:00:20 -  LMT     1884
+# aka Iqaluktuuttiaq
+Zone America/Cambridge_Bay 0   -       zzz     1920 # trading post est.?
                        -7:00   NT_YK   M%sT    1999 Oct 31 2:00
                        -6:00   Canada  C%sT    2000 Oct 29 2:00
                        -5:00   -       EST     2000 Nov  5 0:00
                        -6:00   -       CST     2001 Apr  1 3:00
                        -7:00   Canada  M%sT
-Zone America/Yellowknife -7:37:24 -    LMT     1884
+Zone America/Yellowknife 0     -       zzz     1935 # Yellowknife founded?
                        -7:00   NT_YK   M%sT    1980
                        -7:00   Canada  M%sT
-Zone America/Inuvik    -8:54:52 -      LMT     1884
+Zone America/Inuvik    0       -       zzz     1953 # Inuvik founded
                        -8:00   NT_YK   P%sT    1979 Apr lastSun 2:00
                        -7:00   NT_YK   M%sT    1980
                        -7:00   Canada  M%sT
@@ -1997,13 +2047,19 @@ Zone    America/Antigua -4:07:12 -      LMT     1912 Mar 2
                        -4:00   -       AST
 
 # Bahamas
+#
+# From Sue Williams (2006-12-07):
+# The Bahamas announced about a month ago that they plan to change their DST
+# rules to sync with the U.S. starting in 2007....
+# http://www.jonesbahamas.com/?c=45&a=10412
+
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
-Rule   Bahamas 1964    max     -       Oct     lastSun 2:00    0       S
+Rule   Bahamas 1964    2006    -       Oct     lastSun 2:00    0       S
 Rule   Bahamas 1964    1986    -       Apr     lastSun 2:00    1:00    D
-Rule   Bahamas 1987    max     -       Apr     Sun>=1  2:00    1:00    D
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   America/Nassau  -5:09:24 -      LMT     1912 Mar 2
-                       -5:00   Bahamas E%sT
+                       -5:00   Bahamas E%sT    1976
+                       -5:00   US      E%sT
 
 # Barbados
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
@@ -2104,6 +2160,12 @@ Zone America/Costa_Rica  -5:36:20 -      LMT     1890            # San Jose
 # watches should be set back one hour -- going back to 00:00 hours -- returning
 # to the normal schedule....
 
+# From Paul Eggert (2007-03-02):
+# http://www.granma.cubaweb.cu/english/news/art89.html, dated yesterday,
+# says Cuban clocks will advance at midnight on March 10.
+# For lack of better information, assume Cuba will use US rules,
+# except that it switches at midnight standard time as usual.
+
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   Cuba    1928    only    -       Jun     10      0:00    1:00    D
 Rule   Cuba    1928    only    -       Oct     10      0:00    0       S
@@ -2133,8 +2195,10 @@ Rule     Cuba    1996    only    -       Oct      6      0:00s   0       S
 Rule   Cuba    1997    only    -       Oct     12      0:00s   0       S
 Rule   Cuba    1998    1999    -       Mar     lastSun 0:00s   1:00    D
 Rule   Cuba    1998    2003    -       Oct     lastSun 0:00s   0       S
-Rule   Cuba    2000    max     -       Apr     Sun>=1  0:00s   1:00    D
-Rule   Cuba    2006    max     -       Oct     lastSun 0:00s   0       S
+Rule   Cuba    2000    2006    -       Apr     Sun>=1  0:00s   1:00    D
+Rule   Cuba    2006    only    -       Oct     lastSun 0:00s   0       S
+Rule   Cuba    2007    max     -       Mar     Sun>=8  0:00s   1:00    D
+Rule   Cuba    2007    max     -       Nov     Sun>=1  0:00s   0       S
 
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   America/Havana  -5:29:28 -      LMT     1890
index 2837b70..d64c724 100644 (file)
@@ -21,7 +21,7 @@
 
 #ifndef lint
 #ifndef NOID
-static char    privatehid[] = "@(#)private.h   8.2";
+static char    privatehid[] = "@(#)private.h   8.3";
 #endif /* !defined NOID */
 #endif /* !defined lint */
 
@@ -356,7 +356,7 @@ char *ctime_r P((time_t const *, char *));
 #ifndef SECSPERREPEAT
 #define SECSPERREPEAT          ((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR)
 #endif /* !defined SECSPERREPEAT */
+
 #ifndef SECSPERREPEAT_BITS
 #define SECSPERREPEAT_BITS     34      /* ceil(log2(SECSPERREPEAT)) */
 #endif /* !defined SECSPERREPEAT_BITS */
index ca6c492..7aec8b6 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)southamerica     8.6
+# @(#)southamerica     8.11
 # <pre>
 
 # This data is by no means authoritative; if you think you know better,
@@ -714,8 +714,13 @@ Zone America/Rio_Branco    -4:31:12 -      LMT     1914
 # (they should have been 1990-09-15 and 1990-09-16 respectively), but
 # anyhow it clears up some doubts too.
 
-# The following data are from <http://www.horaoficial.cl/horaof.htm>
-# (2006-09-20), transcribed by Jesper Norgaard Welen.
+# From Paul Eggert (2006-12-27):
+# The following data for Chile and America/Santiago are from
+# <http://www.horaoficial.cl/horaof.htm> (2006-09-20), transcribed by
+# Jesper Norgaard Welen.  The data for Pacific/Easter are from Shanks
+# & Pottenger, except with DST transitions after 1932 cloned from
+# America/Santiago.  The pre-1980 Pacific/Easter data are dubious,
+# but we have no other source.
 
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule   Chile   1927    1932    -       Sep      1      0:00    1:00    S
@@ -759,9 +764,9 @@ Zone America/Santiago       -4:42:46 -      LMT     1890
                        -4:42:46 -      SMT     1927 Sep  1 # Santiago Mean Time
                        -5:00   Chile   CL%sT   1947 May 22 # Chile Time
                        -4:00   Chile   CL%sT
-Zone Pacific/Easter    -7:17:28 -      LMT     1890        # Mataveri
-                       -7:17:28 -      MMT     1932 Sep    # Mataveri Mean Time
-                       -7:00   Chile   EAS%sT  1982 Jan 18 21:00 # Easter I Time
+Zone Pacific/Easter    -7:17:44 -      LMT     1890
+                       -7:17:28 -      EMT     1932 Sep    # Easter Mean Time
+                       -7:00   Chile   EAS%sT  1982 Mar 13 21:00 # Easter I Time
                        -6:00   Chile   EAS%sT
 #
 # Sala y Gomez Island is like Pacific/Easter.
@@ -781,26 +786,33 @@ Zone      America/Bogota  -4:56:20 -      LMT     1884 Mar 13
 
 # Curacao
 #
-# From Paul Eggert (2006-03-22): 
+# From Paul Eggert (2006-03-22):
 # Shanks & Pottenger say that The Bottom and Philipsburg have been at
 # -4:00 since standard time was introduced on 1912-03-02; and that
 # Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
 # 1912-02-02 to 1965-01-01.  The former is dubious, since S&P also say
 # Saba Island has been like Curacao.
-# This all predates our 1970 cutoff, though.  
+# This all predates our 1970 cutoff, though.
 #
 # By July 2007 Curacao and St Maarten are planned to become
 # associated states within the Netherlands, much like Aruba;
 # Bonaire, Saba and St Eustatius would become directly part of the
 # Netherlands as Kingdom Islands.  This won't affect their time zones
 # though, as far as we know.
-# 
+#
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone   America/Curacao -4:35:44 -      LMT     1912 Feb 12     # Willemstad
                        -4:30   -       ANT     1965 # Netherlands Antilles Time
                        -4:00   -       AST
 
 # Ecuador
+#
+# From Paul Eggert (2007-03-04):
+# Apparently Ecuador had a failed experiment with DST in 1992.
+# <http://midena.gov.ec/content/view/1261/208/> (2007-02-27) and
+# <http://www.hoy.com.ec/NoticiaNue.asp?row_id=249856> (2006-11-06) both
+# talk about "hora Sixto".  Leave this alone for now, as we have no data.
+#
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone America/Guayaquil -5:19:20 -      LMT     1890
                        -5:14:00 -      QMT     1931 # Quito Mean Time
index ae4d286..6bf540a 100644 (file)
@@ -1,4 +1,4 @@
-static char    elsieid[] = "@(#)zdump.c        8.2";
+static char    elsieid[] = "@(#)zdump.c        8.4";
 
 /*
 ** This code has been made independent of the rest of the time
index f7393ea..592dfe5 100644 (file)
@@ -3,7 +3,7 @@
 ** 2006-07-17 by Arthur David Olson.
 */
 
-static char    elsieid[] = "@(#)zic.c  8.7";
+static char    elsieid[] = "@(#)zic.c  8.11";
 
 #include "private.h"
 #include "locale.h"
@@ -2024,7 +2024,7 @@ const int                 zonecount;
 
 wp = ecpyalloc(_("no POSIX environment variable for zone"));
                wp = ecatalloc(wp, " ");
-               wp = ecatalloc(wp, zpfirst->z_name); 
+               wp = ecatalloc(wp, zpfirst->z_name);
                warning(wp);
                ifree(wp);
        }
@@ -2451,9 +2451,12 @@ register char *  cp;
                        else while ((*dp = *cp++) != '"')
                                if (*dp != '\0')
                                        ++dp;
-                               else    error(_(
+                               else {
+                                       error(_(
                                                "Odd number of quotation marks"
                                                ));
+                                       exit(1);
+                               }
                } while (*cp != '\0' && *cp != '#' &&
                        (!isascii(*cp) || !isspace((unsigned char) *cp)));
                if (isascii(*cp) && isspace((unsigned char) *cp))
@@ -2641,7 +2644,7 @@ wp = _("time zone abbreviation differs from POSIX standard");
 
 static int
 mkdirs(argname)
-char * const   argname;
+char *         argname;
 {
        register char * name;
        register char * cp;
index aecb5bb..ace7b57 100644 (file)
@@ -1,4 +1,4 @@
-# @(#)zone.tab 8.5
+# @(#)zone.tab 8.10
 #
 # TZ zone descriptions
 #
@@ -63,7 +63,8 @@ AU    -2728+15302     Australia/Brisbane      Queensland - most locations
 AU     -2016+14900     Australia/Lindeman      Queensland - Holiday Islands
 AU     -3455+13835     Australia/Adelaide      South Australia
 AU     -1228+13050     Australia/Darwin        Northern Territory
-AU     -3157+11551     Australia/Perth Western Australia
+AU     -3157+11551     Australia/Perth Western Australia - most locations
+AU     -3143+12852     Australia/Eucla Western Australia - Eucla area
 AW     +1230-06858     America/Aruba
 AX     +6006+01957     Europe/Mariehamn
 AZ     +4023+04951     Asia/Baku
@@ -109,8 +110,9 @@ CA  +4531-07334     America/Montreal        Eastern Time - Quebec - most locations
 CA     +4339-07923     America/Toronto Eastern Time - Ontario - most locations
 CA     +4901-08816     America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
 CA     +4823-08915     America/Thunder_Bay     Eastern Time - Thunder Bay, Ontario
+CA     +6344-06828     America/Iqaluit Eastern Time - east Nunavut - most locations
 CA     +6608-06544     America/Pangnirtung     Eastern Time - Pangnirtung, Nunavut
-CA     +6344-06828     America/Iqaluit Eastern Time - east Nunavut
+CA     +744144-0944945 America/Resolute        Eastern Time - Resolute, Nunavut
 CA     +484531-0913718 America/Atikokan        Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
 CA     +624900-0920459 America/Rankin_Inlet    Central Time - central Nunavut
 CA     +4953-09709     America/Winnipeg        Central Time - Manitoba & west Ontario
@@ -134,7 +136,7 @@ CH  +4723+00832     Europe/Zurich
 CI     +0519-00402     Africa/Abidjan
 CK     -2114-15946     Pacific/Rarotonga
 CL     -3327-07040     America/Santiago        most locations
-CL     -2710-10927     Pacific/Easter  Easter Island & Sala y Gomez
+CL     -2709-10926     Pacific/Easter  Easter Island & Sala y Gomez
 CM     +0403+00942     Africa/Douala
 CN     +3114+12128     Asia/Shanghai   east China - Beijing, Guangdong, Shanghai, etc.
 CN     +4545+12641     Asia/Harbin     Heilongjiang (except Mohe), Jilin
@@ -159,7 +161,7 @@ EC  -0054-08936     Pacific/Galapagos       Galapagos Islands
 EE     +5925+02445     Europe/Tallinn
 EG     +3003+03115     Africa/Cairo
 EH     +2709-01312     Africa/El_Aaiun
-ER     +1520+03853     Africa/Asmera
+ER     +1520+03853     Africa/Asmara
 ES     +4024-00341     Europe/Madrid   mainland
 ES     +3553-00519     Africa/Ceuta    Ceuta & Melilla
 ES     +2806-01524     Atlantic/Canary Canary Islands
@@ -170,7 +172,7 @@ FK  -5142-05751     Atlantic/Stanley
 FM     +0725+15147     Pacific/Truk    Truk (Chuuk) and Yap
 FM     +0658+15813     Pacific/Ponape  Ponape (Pohnpei)
 FM     +0519+16259     Pacific/Kosrae  Kosrae
-FO     +6201-00646     Atlantic/Faeroe
+FO     +6201-00646     Atlantic/Faroe
 FR     +4852+00220     Europe/Paris
 GA     +0023+00927     Africa/Libreville
 GB     +512830-0001845 Europe/London
@@ -212,7 +214,7 @@ IQ  +3321+04425     Asia/Baghdad
 IR     +3540+05126     Asia/Tehran
 IS     +6409-02151     Atlantic/Reykjavik
 IT     +4154+01229     Europe/Rome
-JE     +4912-00237     Europe/Jersey
+JE     +4912-00207     Europe/Jersey
 JM     +1800-07648     America/Jamaica
 JO     +3157+03556     Asia/Amman
 JP     +353916+1394441 Asia/Tokyo
@@ -247,7 +249,7 @@ LY  +3254+01311     Africa/Tripoli
 MA     +3339-00735     Africa/Casablanca
 MC     +4342+00723     Europe/Monaco
 MD     +4700+02850     Europe/Chisinau
-ME     +4247+01928     Europe/Podgorica
+ME     +4226+01916     Europe/Podgorica
 MG     -1855+04731     Indian/Antananarivo
 MH     +0709+17112     Pacific/Majuro  most locations
 MH     +0905+16720     Pacific/Kwajalein       Kwajalein
@@ -378,11 +380,12 @@ US        +421953-0830245 America/Detroit Eastern Time - Michigan - most locations
 US     +381515-0854534 America/Kentucky/Louisville     Eastern Time - Kentucky - Louisville area
 US     +364947-0845057 America/Kentucky/Monticello     Eastern Time - Kentucky - Wayne County
 US     +394606-0860929 America/Indiana/Indianapolis    Eastern Time - Indiana - most locations
-US     +382232-0862041 America/Indiana/Marengo Eastern Time - Indiana - Crawford County
 US     +411745-0863730 America/Indiana/Knox    Eastern Time - Indiana - Starke County
+US     +410305-0863611 America/Indiana/Winamac Eastern Time - Indiana - Pulaski County
+US     +382232-0862041 America/Indiana/Marengo Eastern Time - Indiana - Crawford County
 US     +384452-0850402 America/Indiana/Vevay   Eastern Time - Indiana - Switzerland County
 US     +415100-0873900 America/Chicago Central Time
-US     +384038-0873143 America/Indiana/Vincennes       Central Time - Indiana - Daviess, Dubois, Knox, Martin, Perry & Pulaski Counties
+US     +384038-0873143 America/Indiana/Vincennes       Central Time - Indiana - Daviess, Dubois, Knox, Martin & Perry Counties
 US     +382931-0871643 America/Indiana/Petersburg      Central Time - Indiana - Pike County
 US     +450628-0873651 America/Menominee       Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
 US     +470659-1011757 America/North_Dakota/Center     Central Time - North Dakota - Oliver County