diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | nptl/ChangeLog | 4 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S | 16 | ||||
-rw-r--r-- | timezone/leapseconds | 33 | ||||
-rw-r--r-- | timezone/zdump.c | 13 | ||||
-rw-r--r-- | timezone/zic.c | 30 |
6 files changed, 58 insertions, 44 deletions
diff --git a/ChangeLog b/ChangeLog index 753cd4162f..31bc91cdd5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-09-22 Ulrich Drepper <drepper@redhat.com> + + * timezone/zdump.c: Update from tzcode2003c. + * timezone/zic.c: Likewise. + * timezone/leapseconds: Update from tzdata2003c. + 2003-09-19 Ulrich Drepper <drepper@redhat.com> * elf/Makefile ($(objpfx)librtld.os): Create link map also for diff --git a/nptl/ChangeLog b/nptl/ChangeLog index cda72ea2bd..e74dec5c36 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,9 @@ 2003-09-22 Ulrich Drepper <drepper@redhat.com> + * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S + (__lll_mutex_lock_wait): Minor optimization to avoid one atomic + operation if possible. + * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Don't play tricks like jumping over the lock prefix. diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S index c73970d45f..c5ec154af2 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S @@ -41,16 +41,18 @@ .hidden __lll_mutex_lock_wait .align 16 __lll_mutex_lock_wait: - pushl %esi - pushl %ebx pushl %edx + pushl %ebx + pushl %esi + movl $2, %edx movl %ecx, %ebx xorl %esi, %esi /* No timeout. */ xorl %ecx, %ecx /* movl $FUTEX_WAIT, %ecx */ - movl $2, %edx -1: +1: cmpl %edx, %eax /* NB: %edx == 2 */ + je 3f + movl $1, %eax LOCK cmpxchgl %edx, (%ebx) @@ -58,7 +60,7 @@ __lll_mutex_lock_wait: testl %eax, %eax je 2f - movl $SYS_futex, %eax +3: movl $SYS_futex, %eax ENTER_KERNEL xorl %eax, %eax @@ -67,9 +69,9 @@ __lll_mutex_lock_wait: jnz,pn 1b - popl %edx - popl %ebx popl %esi + popl %ebx + popl %edx ret .size __lll_mutex_lock_wait,.-__lll_mutex_lock_wait diff --git a/timezone/leapseconds b/timezone/leapseconds index c5306a68ae..0e7d8c8454 100644 --- a/timezone/leapseconds +++ b/timezone/leapseconds @@ -1,4 +1,4 @@ -# @(#)leapseconds 7.15 +# @(#)leapseconds 7.16 # Allowance for leapseconds added to each timezone file. @@ -44,8 +44,8 @@ Leap 1995 Dec 31 23:59:60 + S Leap 1997 Jun 30 23:59:60 + S Leap 1998 Dec 31 23:59:60 + S -# INTERNATIONAL EARTH ROTATION SERVICE (IERS) -# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE +# INTERNATIONAL EARTH ROTATION SERVICE (IERS) +# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE # # SERVICE DE LA ROTATION TERRESTRE # OBSERVATOIRE DE PARIS @@ -54,27 +54,26 @@ Leap 1998 Dec 31 23:59:60 + S # FAX : 33 (0) 1 40 51 22 91 # Internet : iers@obspm.fr # -# Paris, 14 January 2002 +# Paris, 1 July 2003 # -# Bulletin C 23 +# Bulletin C 26 # -# To authorities responsible -# for the measurement and -# distribution of time +# To authorities responsible +# for the measurement and +# distribution of time # -# INFORMATION ON UTC - TAI +# INFORMATION ON UTC - TAI # -# NO positive leap second will be introduced at the end of June 2002. -# The difference between UTC and the International Atomic Time TAI is : +# NO positive leap second will be introduced at the end of December 2003. +# The difference between UTC and the International Atomic Time TAI is: # -# from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s +# from 1999 January 1, 0h UTC, until further notice: UTC-TAI = -32 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 +# 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 -# Director -# Earth Orientation Center of IERS -# Observatoire de Paris, France +# Daniel GAMBIS +# Director +# Earth Orientation Center of IERS diff --git a/timezone/zdump.c b/timezone/zdump.c index cc27d758fb..9faeaf21b2 100644 --- a/timezone/zdump.c +++ b/timezone/zdump.c @@ -1,8 +1,4 @@ -#ifndef lint -#ifndef NOID -static char elsieid[] = "@(#)zdump.c 7.29"; -#endif /* !defined NOID */ -#endif /* !defined lint */ +static char elsieid[] = "@(#)zdump.c 7.31"; /* ** This code has been made independent of the rest of the time @@ -163,6 +159,11 @@ char * argv[]; (void) textdomain(TZ_DOMAIN); #endif /* HAVE_GETTEXT - 0 */ progname = argv[0]; + for (i = 1; i < argc; ++i) + if (strcmp(argv[i], "--version") == 0) { + (void) printf("%s\n", elsieid); + (void) exit(EXIT_SUCCESS); + } vflag = 0; cutoff = NULL; while ((c = getopt(argc, argv, "c:v")) == 'c' || c == 'v') @@ -172,7 +173,7 @@ char * argv[]; if ((c != EOF && c != -1) || (optind == argc - 1 && strcmp(argv[optind], "=") == 0)) { (void) fprintf(stderr, -_("%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"), +_("%s: usage is %s [ --version ] [ -v ] [ -c cutoff ] zonename ...\n"), argv[0], argv[0]); (void) exit(EXIT_FAILURE); } diff --git a/timezone/zic.c b/timezone/zic.c index 26d0041296..b164b36738 100644 --- a/timezone/zic.c +++ b/timezone/zic.c @@ -1,8 +1,4 @@ -#ifndef lint -#ifndef NOID -static char elsieid[] = "@(#)zic.c 7.107"; -#endif /* !defined NOID */ -#endif /* !defined lint */ +static char elsieid[] = "@(#)zic.c 7.113"; #include "private.h" #include "locale.h" @@ -446,7 +442,7 @@ const char * const string; static void usage P((void)) { - (void) fprintf(stderr, _("%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"), + (void) fprintf(stderr, _("%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"), progname, progname); (void) exit(EXIT_FAILURE); } @@ -479,6 +475,11 @@ char * argv[]; (void) textdomain(TZ_DOMAIN); #endif /* HAVE_GETTEXT - 0 */ progname = argv[0]; + for (i = 1; i < argc; ++i) + if (strcmp(argv[i], "--version") == 0) { + (void) printf("%s\n", elsieid); + (void) exit(EXIT_SUCCESS); + } while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1) switch (c) { default: @@ -1165,14 +1166,15 @@ const int nfields; error(_("time before zero")); return; } - t = (time_t) dayoff * SECSPERDAY; - /* - ** Cheap overflow check. - */ - if (t / SECSPERDAY != dayoff) { - error(_("time overflow")); + if (dayoff < min_time / SECSPERDAY) { + error(_("time too small")); return; } + if (dayoff > max_time / SECSPERDAY) { + error(_("time too large")); + return; + } + t = (time_t) dayoff * SECSPERDAY; tod = gethms(fields[LP_TIME], _("invalid time of day"), FALSE); cp = fields[LP_CORR]; { @@ -1325,9 +1327,9 @@ const char * const timep; return; } else if (noise) { if (rp->r_loyear < min_year_representable) - warning(_("starting year too low to be represented")); + warning(_("ending year too low to be represented")); else if (rp->r_loyear > max_year_representable) - warning(_("starting year too high to be represented")); + warning(_("ending year too high to be represented")); } if (rp->r_loyear > rp->r_hiyear) { error(_("starting year greater than ending year")); |