From 6d8225fe1a3277273c245ceb1b35fd536300f649 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 20 Oct 2008 07:21:57 +0000 Subject: Updated to fedora-glibc-20081019T1815 --- ChangeLog | 104 ++++++++++- NEWS | 6 +- dlfcn/dlopen.c | 3 +- elf/Makefile | 12 +- elf/dl-tls.c | 2 +- elf/elf.h | 13 +- elf/tst-tls17.c | 28 +++ elf/tst-tlsmod17a.c | 23 +++ elf/tst-tlsmod17b.c | 15 ++ fedora/branch.mk | 4 +- fedora/glibc.spec.in | 20 +- localedata/ChangeLog | 43 ++++- localedata/SUPPORTED | 6 + localedata/locales/de_DE | 2 +- localedata/locales/en_AG | 99 ++++++++++ localedata/locales/en_GB | 6 +- localedata/locales/ht_HT | 178 ++++++++++++++++++ localedata/locales/ks_IN@devanagari | 204 ++++++++++++++++++++ localedata/locales/nl_AW | 100 ++++++++++ localedata/locales/sd_IN | 206 +++++++++++++++++++++ localedata/locales/sd_IN@devanagari | 206 +++++++++++++++++++++ malloc/malloc.c | 57 +++++- nptl/ChangeLog | 12 ++ nptl/sysdeps/unix/sysv/linux/fork.c | 5 +- nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h | 19 +- nscd/connections.c | 4 +- po/sv.po | 33 ++-- resolv/res_send.c | 14 +- socket/Makefile | 2 +- socket/Versions | 3 - socket/sys/socket.h | 12 -- stdlib/divmod_1.c | 2 +- stdlib/longlong.h | 157 +++++++++++++--- stdlib/mod_1.c | 2 +- sunrpc/rpc/svc.h | 5 + sysdeps/s390/s390-64/s390x-mcount.S | 2 +- sysdeps/sparc/sparc64/sparcv9v/memcpy.S | 5 +- sysdeps/sparc/sparc64/sparcv9v/memset.S | 8 +- sysdeps/sparc/sparc64/sparcv9v2/memcpy.S | 5 +- sysdeps/unix/sysv/linux/alpha/sys/signalfd.h | 2 +- .../unix/sysv/linux/s390/s390-32/utmp-convert.h | 71 +++++++ sysdeps/unix/sysv/linux/s390/s390-64/socket.S | 2 +- sysdeps/unix/sysv/linux/sparc/sys/signalfd.h | 2 +- sysdeps/unix/sysv/linux/sys/signalfd.h | 2 +- timezone/africa | 165 ++++++++++++++++- timezone/asia | 118 +++++++++++- timezone/australasia | 6 +- timezone/europe | 97 ++++++++-- timezone/leapseconds | 41 ++-- timezone/northamerica | 6 +- timezone/southamerica | 152 ++++++++++++--- timezone/zone.tab | 5 +- 52 files changed, 2119 insertions(+), 177 deletions(-) create mode 100644 elf/tst-tls17.c create mode 100644 elf/tst-tlsmod17a.c create mode 100644 elf/tst-tlsmod17b.c create mode 100644 localedata/locales/en_AG create mode 100644 localedata/locales/ht_HT create mode 100644 localedata/locales/ks_IN@devanagari create mode 100644 localedata/locales/nl_AW create mode 100644 localedata/locales/sd_IN create mode 100644 localedata/locales/sd_IN@devanagari diff --git a/ChangeLog b/ChangeLog index 8bb37744d6..b771d0faed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,109 @@ +2008-10-17 Jakub Jelinek + + * elf/Makefile: Add rules to build and run tst-tls17. + * elf/tst-tls17.c: New test. + * elf/tst-tlsmod17a.c: New file. + * elf/tst-tlsmod17b.c: Likewise. + +2008-10-17 Ulrich Drepper + + * stdlib/divmod_1.c: Use correct type for dummy variable. + * stdlib/mod_1.c: Likewise. + +2008-10-16 Ulrich Drepper + + * elf/dl-tls.c (_dl_update_slotinfo): Copy all of the initial DTV. + +2008-10-16 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sys/signalfd.h (signalfd): Fix __THROW vs. + __nonnull order for C++. + * sysdeps/unix/sysv/linux/alpha/sys/signalfd.h (signalfd): Likewise. + * sysdeps/unix/sysv/linux/sparc/sys/signalfd.h (signalfd): Likewise. + +2008-10-01 Daniel Jacobowitz + + * stdlib/longlong.h: Update from GCC. + +2008-10-09 Jakub Jelinek + David S. Miller + + * sysdeps/sparc/sparc64/sparcv9v/memcpy.S: When not USE_BPR, + make sure any registers used with 64-bit 'branch-on-register' + instructions have their top 32-bits clear. + * sysdeps/sparc/sparc64/sparcv9v/memset.S: Likewise. + * sysdeps/sparc/sparc64/sparcv9v2/memcpy.S: Likewise. + +2008-09-18 Andreas Schwab + + [BZ #6942] + * resolv/res_send.c (send_vc): Fix use of unaligned address. + Properly handle partial reads. + +2008-10-01 Mark Shinwell + + * elf/elf.h (STO_MIPS_PLT): New. + (R_MIPS_COPY): New. + (R_MIPS_JUMP_SLOT): New. + (R_MIPS_NUM): Redefine to 128. + (DT_MIPS_PLTGOT): New. + (DT_MIPS_RWPLT): New. + (DT_MIPS_NUM): Redefine to 0x35. + +2008-10-01 Ulrich Drepper + + * timezone/africa: Update from tzdata2008f. + * timezone/asia: Likewise. + * timezone/australasia: Likewise. + * timezone/europe: Likewise. + * timezone/leapseconds: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone.tab: Likewise. + +2008-09-30 Ulrich Drepper + + * nscd/connections.c: Disable use of paccept for now. + +2008-09-29 Ulrich Drepper + + * socket/Versions: Remove paccept export for GLIBC_2.9. + * socket/Makefile (routines): Remove paccept. + * socket/sys/socket.h: Remove paccept declaration. + + * po/sv.po: Update from translation team. + +2008-09-22 Deborah S. Townsend + + * sysdeps/s390/s390-64/s390x-mcount.S: Replace ahi with aghi. + * sysdeps/unix/sysv/linux/s390/s390-64/socket.S: Likewise. + +2008-09-16 Ulrich Drepper + + * dlfcn/dlopen.c (dlopen_doit): Allow __RTLD_SPROF flag. + Patch by Olivier Fourdan . + +2008-09-15 Ulrich Drepper + + * sunrpc/rpc/svc.h: Declare svcfd_create. + Patch by Michael Solberg . + +2008-09-12 Flavio Leitner + Ulrich Drepper + + * malloc/malloc.c (public_vALLOc): Try other arenas in case + _int_valloc fails. + (public_pVALLOc): Likewise. + +2008-09-02 Andreas Jaeger + + * sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h: Fix last + commit. + 2008-08-26 Aurelien Jarno [BZ #6860] - * hurd/hurd/signal.h (HURD_MSGPORT_RPC): Fix a typo. + * hurd/hurd/signal.h (HURD_MSGPORT_RPC): Fix a typo. 2008-07-18 Daniel Jacobowitz diff --git a/NEWS b/NEWS index c3ceaba42e..b17f053c00 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -GNU C Library NEWS -- history of user-visible changes. 2008-8-2 +GNU C Library NEWS -- history of user-visible changes. 2008-9-29 Copyright (C) 1992-2007, 2008 Free Software Foundation, Inc. See the end for copying conditions. @@ -23,7 +23,7 @@ Version 2.9 * New implementation of memmem, strstr, and strcasestr which is O(n). Implemented by Eric Blake. -* New Linux interfaces: inotify_init1, paccept, dup3, epoll_create1, pipe2 +* New Linux interfaces: inotify_init1, dup3, epoll_create1, pipe2 * Implement "e" option for popen to open file descriptor with the close-on-exec flag set. Implemented by Ulrich Drepper. @@ -38,6 +38,8 @@ Version 2.9 * Sorting rules for some Indian languages (Kannada, Gurumukhi, Telugu) Implemented by Pravin Satpute. + +* New locales: sd_IN, sd_IN@devanagari, ks_IN@devanagari, ht_HT, en_AG, nl_AW. Version 2.8 diff --git a/dlfcn/dlopen.c b/dlfcn/dlopen.c index bffb512aa3..e93a584e81 100644 --- a/dlfcn/dlopen.c +++ b/dlfcn/dlopen.c @@ -60,7 +60,8 @@ dlopen_doit (void *a) struct dlopen_args *args = (struct dlopen_args *) a; if (args->mode & ~(RTLD_BINDING_MASK | RTLD_NOLOAD | RTLD_DEEPBIND - | RTLD_GLOBAL | RTLD_LOCAL | RTLD_NODELETE)) + | RTLD_GLOBAL | RTLD_LOCAL | RTLD_NODELETE + | __RTLD_SPROF)) GLRO(dl_signal_error) (0, NULL, NULL, _("invalid mode parameter")); args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN, diff --git a/elf/Makefile b/elf/Makefile index c25a0c4b26..df3170c626 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -166,7 +166,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \ circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \ tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 \ - tst-tls16 tst-tls-dlinfo \ + tst-tls16 tst-tls17 tst-tls-dlinfo \ tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ tst-dlmodcount tst-dlopenrpath tst-deep1 \ tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ @@ -181,6 +181,7 @@ ifeq (yesyes,$(have-fpie)$(build-shared)) tests: $(objpfx)tst-pie1.out endif tests: $(objpfx)tst-leaks1-mem +tlsmod17a-suffixes = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ testobj1_1 failobj constload2 constload3 unloadmod \ dep1 dep2 dep3 dep4 vismod1 vismod2 vismod3 \ @@ -200,6 +201,8 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ tst-tlsmod9 tst-tlsmod10 tst-tlsmod11 tst-tlsmod12 \ tst-tlsmod13 tst-tlsmod13a tst-tlsmod14a tst-tlsmod14b \ tst-tlsmod15a tst-tlsmod15b tst-tlsmod16a tst-tlsmod16b \ + $(patsubst %,tst-tlsmod17a%,$(tlsmod17a-suffixes)) \ + tst-tlsmod17b \ circlemod1 circlemod1a circlemod2 circlemod2a \ circlemod3 circlemod3a \ reldep8mod1 reldep8mod2 reldep8mod3 \ @@ -714,6 +717,13 @@ $(objpfx)tst-tls-dlinfo.out: $(objpfx)tst-tlsmod2.so $(objpfx)tst-tls16: $(libdl) $(objpfx)tst-tls16.out: $(objpfx)tst-tlsmod16a.so $(objpfx)tst-tlsmod16b.so +$(objpfx)tst-tls17: $(libdl) +$(objpfx)tst-tls17.out: $(objpfx)tst-tlsmod17b.so +$(patsubst %,$(objpfx)tst-tlsmod17a%.os,$(tlsmod17a-suffixes)): $(objpfx)tst-tlsmod17a%.os : tst-tlsmod17a.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ -DN=$* -DNOT_IN_libc=1 $< +$(patsubst %,$(objpfx)tst-tlsmod17a%.so,$(tlsmod17a-suffixes)): $(objpfx)tst-tlsmod17a%.so: $(objpfx)ld.so +$(objpfx)tst-tlsmod17b.so: $(patsubst %,$(objpfx)tst-tlsmod17a%.so,$(tlsmod17a-suffixes)) + CFLAGS-tst-align.c = $(stack-align-test-flags) CFLAGS-tst-align2.c = $(stack-align-test-flags) CFLAGS-tst-alignmod.c = $(stack-align-test-flags) diff --git a/elf/dl-tls.c b/elf/dl-tls.c index 54c3590a9d..e234a0a82a 100644 --- a/elf/dl-tls.c +++ b/elf/dl-tls.c @@ -634,7 +634,7 @@ _dl_update_slotinfo (unsigned long int req_modid) newp = malloc ((2 + newsize) * sizeof (dtv_t)); if (newp == NULL) oom (); - memcpy (newp, &dtv[-1], oldsize * sizeof (dtv_t)); + memcpy (newp, &dtv[-1], (2 + oldsize) * sizeof (dtv_t)); } else { diff --git a/elf/elf.h b/elf/elf.h index a4134462ac..51d4e6cca7 100644 --- a/elf/elf.h +++ b/elf/elf.h @@ -1397,6 +1397,7 @@ typedef struct #define STO_MIPS_INTERNAL 0x1 #define STO_MIPS_HIDDEN 0x2 #define STO_MIPS_PROTECTED 0x3 +#define STO_MIPS_PLT 0x8 #define STO_MIPS_SC_ALIGN_UNUSED 0xff /* MIPS specific values for `st_info'. */ @@ -1543,8 +1544,10 @@ typedef struct #define R_MIPS_TLS_TPREL_HI16 49 /* TP-relative offset, high 16 bits */ #define R_MIPS_TLS_TPREL_LO16 50 /* TP-relative offset, low 16 bits */ #define R_MIPS_GLOB_DAT 51 +#define R_MIPS_COPY 126 +#define R_MIPS_JUMP_SLOT 127 /* Keep this the last entry. */ -#define R_MIPS_NUM 52 +#define R_MIPS_NUM 128 /* Legal values for p_type field of Elf32_Phdr. */ @@ -1610,7 +1613,13 @@ typedef struct #define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ #define DT_MIPS_GP_VALUE 0x70000030 /* GP value for aux GOTs. */ #define DT_MIPS_AUX_DYNAMIC 0x70000031 /* Address of aux .dynamic. */ -#define DT_MIPS_NUM 0x32 +/* The address of .got.plt in an executable using the new non-PIC ABI. */ +#define DT_MIPS_PLTGOT 0x70000032 +/* The base of the PLT in an executable using the new non-PIC ABI if that + PLT is writable. For a non-writable PLT, this is omitted or has a zero + value. */ +#define DT_MIPS_RWPLT 0x70000034 +#define DT_MIPS_NUM 0x35 /* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry. */ diff --git a/elf/tst-tls17.c b/elf/tst-tls17.c new file mode 100644 index 0000000000..c768fb6a5b --- /dev/null +++ b/elf/tst-tls17.c @@ -0,0 +1,28 @@ +#include +#include + +static int +do_test (void) +{ + void *h = dlopen ("tst-tlsmod17b.so", RTLD_LAZY); + if (h == NULL) + { + puts ("unexpectedly failed to open tst-tlsmod17b.so"); + exit (1); + } + + int (*fp) (void) = (int (*) (void)) dlsym (h, "tlsmod17b"); + if (fp == NULL) + { + puts ("cannot find tlsmod17b"); + exit (1); + } + + if (fp ()) + exit (1); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/elf/tst-tlsmod17a.c b/elf/tst-tlsmod17a.c new file mode 100644 index 0000000000..24c84a1590 --- /dev/null +++ b/elf/tst-tlsmod17a.c @@ -0,0 +1,23 @@ +#include + +#ifndef N +#define N 0 +#endif +#define CONCAT1(s, n) s##n +#define CONCAT(s, n) CONCAT1(s, n) + +__thread int CONCAT (v, N) = 4; + +int +CONCAT (tlsmod17a, N) (void) +{ + int *p = &CONCAT (v, N); + /* GCC assumes &var is never NULL, add optimization barrier. */ + asm volatile ("" : "+r" (p)); + if (p == NULL || *p != 4) + { + printf ("fail %d %p\n", N, p); + return 1; + } + return 0; +} diff --git a/elf/tst-tlsmod17b.c b/elf/tst-tlsmod17b.c new file mode 100644 index 0000000000..6178828737 --- /dev/null +++ b/elf/tst-tlsmod17b.c @@ -0,0 +1,15 @@ +#define P(N) extern int tlsmod17a##N (void); +#define PS P(0) P(1) P(2) P(3) P(4) P(5) P(6) P(7) P(8) P(9) \ + P(10) P(12) P(13) P(14) P(15) P(16) P(17) P(18) P(19) +PS +#undef P + +int +tlsmod17b (void) +{ + int res = 0; +#define P(N) res |= tlsmod17a##N (); + PS +#undef P + return res; +} diff --git a/fedora/branch.mk b/fedora/branch.mk index dd9d94907e..0f773217de 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -3,5 +3,5 @@ glibc-branch := fedora glibc-base := HEAD DIST_BRANCH := devel COLLECTION := dist-f8 -fedora-sync-date := 2008-08-28 16:23 UTC -fedora-sync-tag := fedora-glibc-20080828T1623 +fedora-sync-date := 2008-10-19 18:15 UTC +fedora-sync-tag := fedora-glibc-20081019T1815 diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in index 85ed84d256..291854f728 100644 --- a/fedora/glibc.spec.in +++ b/fedora/glibc.spec.in @@ -19,7 +19,7 @@ Summary: The GNU libc libraries Name: glibc Version: @glibcversion@ -Release: 12 +Release: 14 # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries. # Things that are linked directly into dynamically linked programs # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional @@ -221,6 +221,12 @@ package or when debugging this package. # memmove. The memcpy implementation below is not tolerant at # all. rm -f sysdeps/alpha/alphaev6/memcpy.S +%if %{buildpower6} +# On powerpc32, hp timing is only available in power4/power6 +# libs, not in base, so pre-power4 dynamic linker is incompatible +# with power6 libs. +rm -f sysdeps/powerpc/powerpc32/power4/hp-timing.[ch] +%endif find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \; cat > find_provides.sh < 2.8.90-14 +- update from trunk + - fix dynamic TLS handling (#467309) + - fix sys/signalfd.h for C++ (#467172) + - fix sprof (#458861) + - fix _mcount and socket syscalls on s390x (#464146) + - try harder to allocate memory in valloc and pvalloc (#461481) +- fix power6 32-bit libs (#467311) + +* Fri Oct 10 2008 Dennis Gilmore 2.8.90-13 +- apply sparcv9v memset patch from jakub and davem + * Fri Aug 29 2008 Jakub Jelinek 2.8.90-12 - update from trunk - revert origin changes (#457849) diff --git a/localedata/ChangeLog b/localedata/ChangeLog index 2bc9e89975..9e09641efe 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,8 +1,49 @@ +2008-09-17 Ulrich Drepper + + * locales/en_GB: Set first weekday and workday to 2. + +2008-09-16 Ulrich Drepper + + * locales/nl_AW: New file. + * SUPPORTED (SUPPORTED-LOCALES): Add nl_AW.UTF-8. + + * locales/en_AG: New file. + * SUPPORTED (SUPPORTED-LOCALES): Add en_AG.UTF-8. + +2008-09-15 Ulrich Drepper + + * locales/ht_HT: New file. + * SUPPORTED: Add ht_HT.UTF-8. + + * locales/en_GB: Change dom_tel_fmt to %A %l. + * locales/de_DE: Likewise. + + * SUPPORTED (SUPPORTED-LOCALES): Add sd_IN. + + * locales/sd_IN: New file. + Contributed by Pravin Satpute . + + * locales/sd_IN@devanagari: Fix locale name. + * locales/ks_IN@devanagari: Likewise. + +2008-09-01 Ulrich Drepper + + * SUPPORTED (SUPPORTED-LOCALES): Add ks_IN@devnagari and + sd_IN@devanagari. + + [BZ #6857] + * locales/sd_IN@devanagari: New file. + Contributed by Pravin Satpute . + + [BZ #6856] + * locales/ks_IN@devanagari: New file. + Contributed by Pravin Satpute . + 2008-07-11 Ulrich Drepper * locales/iso14651_t1_common: Add Kannada collation support. Patch by Pravin Satpute . - + 2008-07-08 Ulrich Drepper [BZ #6713] diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED index d6d684e6d0..787d03f1cf 100644 --- a/localedata/SUPPORTED +++ b/localedata/SUPPORTED @@ -104,6 +104,7 @@ el_GR.UTF-8/UTF-8 \ el_GR/ISO-8859-7 \ el_CY.UTF-8/UTF-8 \ el_CY/ISO-8859-7 \ +en_AG/UTF-8 \ en_AU.UTF-8/UTF-8 \ en_AU/ISO-8859-1 \ en_BW.UTF-8/UTF-8 \ @@ -228,6 +229,7 @@ hr_HR.UTF-8/UTF-8 \ hr_HR/ISO-8859-2 \ hsb_DE/ISO-8859-2 \ hsb_DE.UTF-8/UTF-8 \ +ht_HT/UTF-8 \ hu_HU.UTF-8/UTF-8 \ hu_HU/ISO-8859-2 \ hy_AM/UTF-8 \ @@ -258,6 +260,7 @@ km_KH/UTF-8 \ kn_IN/UTF-8 \ ko_KR.EUC-KR/EUC-KR \ ko_KR.UTF-8/UTF-8 \ +ks_IN@devanagari/UTF-8 \ ku_TR.UTF-8/UTF-8 \ ku_TR/ISO-8859-9 \ kw_GB.UTF-8/UTF-8 \ @@ -291,6 +294,7 @@ nb_NO/ISO-8859-1 \ nds_DE/UTF-8 \ nds_NL/UTF-8 \ ne_NP/UTF-8 \ +nl_AW/UTF-8 \ nl_BE.UTF-8/UTF-8 \ nl_BE/ISO-8859-1 \ nl_BE@euro/ISO-8859-15 \ @@ -329,6 +333,8 @@ ru_UA/KOI8-U \ rw_RW/UTF-8 \ sa_IN/UTF-8 \ sc_IT/UTF-8 \ +sd_IN/UTF-8 \ +sd_IN@devanagari/UTF-8 \ se_NO/UTF-8 \ shs_CA/UTF-8 \ si_LK/UTF-8 \ diff --git a/localedata/locales/de_DE b/localedata/locales/de_DE index a694dc2888..a40facc850 100644 --- a/localedata/locales/de_DE +++ b/localedata/locales/de_DE @@ -203,7 +203,7 @@ END LC_ADDRESS LC_TELEPHONE tel_int_fmt "/ " -tel_dom_fmt "" +tel_dom_fmt "" int_select "" int_prefix "" END LC_TELEPHONE diff --git a/localedata/locales/en_AG b/localedata/locales/en_AG new file mode 100644 index 0000000000..f39c410acb --- /dev/null +++ b/localedata/locales/en_AG @@ -0,0 +1,99 @@ +escape_char / +comment_char % +% English language locale for Antigua and Barbuda. +% Contributed by Ulrich Drepper , 2008 + +LC_IDENTIFICATION +title "English language locale for Antigua and Barbuda" +source "Free Software Foundation, Inc." +address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" +contact "" +email "bug-glibc-locales@gnu.org" +tel "" +fax "" +language "English" +territory "Antigua and Barbuda" +revision "1.0" +date "2008-09-16" +% +category "en_AG:2008";LC_IDENTIFICATION +category "en_AG:2008";LC_CTYPE +category "en_AG:2008";LC_COLLATE +category "en_AG:2008";LC_TIME +category "en_AG:2008";LC_NUMERIC +category "en_AG:2008";LC_MONETARY +category "en_AG:2008";LC_MESSAGES +category "en_AG:2008";LC_PAPER +category "en_AG:2008";LC_NAME +category "en_AG:2008";LC_ADDRESS +category "en_AG:2008";LC_TELEPHONE + +END LC_IDENTIFICATION + +LC_CTYPE +copy "en_GB" +END LC_CTYPE + +LC_COLLATE +copy "en_GB" +END LC_COLLATE + +LC_MONETARY +int_curr_symbol "" +currency_symbol "" +mon_decimal_point "" +mon_thousands_sep "" +mon_grouping 3;3 +positive_sign "" +negative_sign "" +int_frac_digits 2 +frac_digits 2 +p_cs_precedes 1 +p_sep_by_space 0 +n_cs_precedes 1 +n_sep_by_space 0 +p_sign_posn 1 +n_sign_posn 1 +END LC_MONETARY + +LC_NUMERIC +copy "en_GB" +END LC_NUMERIC + +LC_TIME +copy "en_GB" +END LC_TIME + +LC_MESSAGES +copy "en_GB" +END LC_MESSAGES + +LC_PAPER +copy "en_US" +END LC_PAPER + +LC_NAME +copy "en_GB" +END LC_NAME + +LC_ADDRESS +postal_fmt "/ +/ +/ +/ +" +country_ab2 "" +country_ab3 "" +country_num 28 +END LC_ADDRESS + +LC_TELEPHONE +tel_int_fmt "/ +" +int_prefix "" +int_select "" +END LC_TELEPHONE + +LC_MEASUREMENT +copy "en_US" +END LC_MEASUREMENT diff --git a/localedata/locales/en_GB b/localedata/locales/en_GB index d984f42ca8..e12f887548 100644 --- a/localedata/locales/en_GB +++ b/localedata/locales/en_GB @@ -122,8 +122,8 @@ date_fmt "/ / " week 7;19971201;4 -first_weekday 1 -first_workday 1 +first_weekday 2 +first_workday 2 END LC_TIME LC_MESSAGES @@ -139,7 +139,7 @@ END LC_PAPER LC_TELEPHONE tel_int_fmt "/ " -tel_dom_fmt "" +tel_dom_fmt "" int_select "" int_prefix "" END LC_TELEPHONE diff --git a/localedata/locales/ht_HT b/localedata/locales/ht_HT new file mode 100644 index 0000000000..37ba0a56b7 --- /dev/null +++ b/localedata/locales/ht_HT @@ -0,0 +1,178 @@ +comment_char % +escape_char / +% +% U006Breyol Language Locale for Haiti +% Source: OLPC +% Language: ht +% Contact: olpchaiti.org +% Address: 22 rue 2, Port-au-Prince +% Email: contact@olpchaiti.org +% Territory: HT +% Revision: 1.0 +% Date: 2008-08-17 +% Users: general +% Charset: ISO-8859-1 +% Authors: +% 2008-08-17, bzg@laptop.org +% +% Distribution and use is free, also +% for commercial purposes. + +LC_IDENTIFICATION +title "Kreyol locale for Haiti" +source "OLPC" +address "" +contact "olpchaiti.org" +email "contact@olpchaiti.org" +tel "" +fax "" +language "U006Breyol" +territory "Haiti" +revision "1.0" +date "2008-08-17" +% +category "ht_HT:2000";LC_IDENTIFICATION +category "ht_HT:2000";LC_CTYPE +category "ht_HT:2000";LC_COLLATE +category "ht_HT:2000";LC_TIME +category "ht_HT:2000";LC_NUMERIC +category "ht_HT:2000";LC_MONETARY +category "ht_HT:2000";LC_MESSAGES +category "ht_HT:2000";LC_PAPER +category "ht_HT:2000";LC_NAME +category "ht_HT:2000";LC_ADDRESS +category "ht_HT:2000";LC_TELEPHONE + +END LC_IDENTIFICATION + +LC_CTYPE +copy "i18n" + +translit_start + +% In Haiti, accents are simply omitted if they cannot be represented. +include "translit_combining";"" + +translit_end + +END LC_CTYPE + +LC_COLLATE +% Copy the template from ISO/IEC 14651 +copy "iso14651_t1" +END LC_COLLATE + +LC_MESSAGES +yesexpr "" +noexpr "" +END LC_MESSAGES + +LC_MONETARY +int_curr_symbol "" +currency_symbol "" +mon_decimal_point "" +mon_thousands_sep "" +mon_grouping 3 +positive_sign "" +negative_sign "" +int_frac_digits 2 +frac_digits 2 +p_cs_precedes 0 +p_sep_by_space 1 +n_cs_precedes 0 +n_sep_by_space 1 +p_sign_posn 1 +n_sign_posn 1 +END LC_MONETARY + +LC_NUMERIC +decimal_point "" +thousands_sep "" +grouping 3 +END LC_NUMERIC + +LC_TIME +abday "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +day "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +abmon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +d_t_fmt "" +d_fmt "" +t_fmt "" +am_pm "";"" +t_fmt_ampm "" +date_fmt "/ +/ +" + +week 7;19971201;4 +first_weekday 1 +first_workday 1 +END LC_TIME + +LC_PAPER +height 297 +width 210 +END LC_PAPER + +LC_TELEPHONE +tel_int_fmt "/ +" +tel_dom_fmt "" +int_prefix "" +int_select "" +END LC_TELEPHONE + +LC_MEASUREMENT +measurement 1 +END LC_MEASUREMENT + +LC_NAME +name_fmt "/ +" +END LC_NAME + +LC_ADDRESS +postal_fmt "/ +/ +/ +/ +" +country_ab2 "" +country_ab3 "" +%country_num 332 +END LC_ADDRESS diff --git a/localedata/locales/ks_IN@devanagari b/localedata/locales/ks_IN@devanagari new file mode 100644 index 0000000000..2e55de75bf --- /dev/null +++ b/localedata/locales/ks_IN@devanagari @@ -0,0 +1,204 @@ +comment_char % +escape_char / +% Kashmiri language locale for India. +% Contributed by Rakesh Pandit and +% Pravin Satpute + +LC_IDENTIFICATION +title "Kashmiri language locale for India" +source "" +address "" +contact "" +email "ks-gnome-trans-commits@lists.code.indlinux.net" +tel "" +fax "" +language "Kashmiri" +territory "India" +revision "0.1" +date "2008-08-26" +% +category "ks_IN@devanagari:2008";LC_IDENTIFICATION +category "ks_IN@devanagari:2008";LC_CTYPE +category "ks_IN@devanagari:2008";LC_COLLATE +category "ks_IN@devanagari:2008";LC_TIME +category "ks_IN@devanagari:2008";LC_NUMERIC +category "ks_IN@devanagari:2008";LC_MONETARY +category "ks_IN@devanagari:2008";LC_MESSAGES +category "ks_IN@devanagari:2008";LC_PAPER +category "ks_IN@devanagari:2008";LC_NAME +category "ks_IN@devanagari:2008";LC_ADDRESS +category "ks_IN@devanagari:2008";LC_TELEPHONE + +END LC_IDENTIFICATION + +LC_CTYPE +copy "i18n" + +translit_start +include "translit_combining";"" +translit_end +END LC_CTYPE + +LC_COLLATE + +% Copy the template from ISO/IEC 14651 +copy "iso14651_t1" + +END LC_COLLATE + +LC_MONETARY +% This is the POSIX Locale definition the LC_MONETARY category. +% These are generated based on XML base Locale difintion file +% for IBM Class for Unicode/Java +% +int_curr_symbol "" +currency_symbol "" +mon_decimal_point "" +mon_thousands_sep "" +mon_grouping 3 +positive_sign "" +negative_sign "" +int_frac_digits 2 +frac_digits 2 +p_cs_precedes 1 +p_sep_by_space 1 +n_cs_precedes 1 +n_sep_by_space 1 +p_sign_posn 1 +n_sign_posn 1 +% +END LC_MONETARY + + +LC_NUMERIC +% This is the POSIX Locale definition for the LC_NUMERIC category. +% +decimal_point "" +thousands_sep "" +grouping 3 +% +END LC_NUMERIC + + +LC_TIME +% This is the POSIX Locale definition for the LC_TIME category. +% These are generated based on XML base Locale difintion file +% for IBM Class for Unicode/Java +% +% Abbreviated weekday names (%a) +abday "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% Full weekday names (%A) +day "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% Abbreviated month names (%b) +abmon "";/ + "";/ + "";/ + "";/ + "";"";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% Full month names (%B) +mon "";/ + "";/ + "";/ + "";/ + "";"";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% Equivalent of AM PM +am_pm "";/ + "" +% +% Appropriate date and time representation +% %A %d %b %Y%I:%M:%S %Z +d_t_fmt "/ +/ +" +% +% Appropriate date representation +% %A %d %b %Y +d_fmt "/ +" +% +% Appropriate time representation +% %I:%M:%S %Z +t_fmt "/ +" +% +% Appropriate 12 h time representation (%r) +t_fmt_ampm "/ +" +% +date_fmt "/ +/ +" +% +first_weekday 1 +END LC_TIME + + +LC_MESSAGES +yesexpr "" +noexpr "" +END LC_MESSAGES + + +LC_PAPER +copy "hi_IN" +END LC_PAPER + + +LC_NAME +name_fmt "/ +" +name_gen "" +name_mr "" +name_mrs "" +name_miss "" +name_ms "" + +END LC_NAME + + +LC_ADDRESS +postal_fmt "/ +" + +country_ab2 "" +country_ab3 "" +country_num 356 +END LC_ADDRESS + + +LC_TELEPHONE +copy "hi_IN" +END LC_TELEPHONE + + +LC_MEASUREMENT +copy "hi_IN" +END LC_MEASUREMENT diff --git a/localedata/locales/nl_AW b/localedata/locales/nl_AW new file mode 100644 index 0000000000..9161977f0d --- /dev/null +++ b/localedata/locales/nl_AW @@ -0,0 +1,100 @@ +escape_char / +comment_char % +% Dutch language locale for Aruba. +% Contributed by Ulrich Drepper , 2008 + +LC_IDENTIFICATION +title "Dutch language locale for Aruba" +source "Free Software Foundation, Inc." +address "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA" +contact "" +email "bug-glibc-locales@gnu.org" +tel "" +fax "" +language "Dutch" +territory "Aruba" +revision "1.0" +date "2008-09-16" +% +category "nl_AW:2008";LC_IDENTIFICATION +category "nl_AW:2008";LC_CTYPE +category "nl_AW:2008";LC_COLLATE +category "nl_AW:2008";LC_TIME +category "nl_AW:2008";LC_NUMERIC +category "nl_AW:2008";LC_MONETARY +category "nl_AW:2008";LC_MESSAGES +category "nl_AW:2008";LC_PAPER +category "nl_AW:2008";LC_NAME +category "nl_AW:2008";LC_ADDRESS +category "nl_AW:2008";LC_TELEPHONE + +END LC_IDENTIFICATION + +LC_CTYPE +copy "nl_NL" +END LC_CTYPE + +LC_COLLATE +copy "nl_NL" +END LC_COLLATE + +LC_MONETARY +int_curr_symbol "" +currency_symbol "" +mon_decimal_point "" +mon_thousands_sep "" +mon_grouping 3;3 +positive_sign "" +negative_sign "" +int_frac_digits 2 +frac_digits 2 +p_cs_precedes 1 +p_sep_by_space 1 +n_cs_precedes 1 +n_sep_by_space 1 +p_sign_posn 1 +n_sign_posn 2 +END LC_MONETARY + +LC_NUMERIC +copy "nl_NL" +END LC_NUMERIC + +LC_TIME +copy "nl_NL" +END LC_TIME + +LC_MESSAGES +copy "nl_NL" +END LC_MESSAGES + +LC_PAPER +copy "en_US" +END LC_PAPER + +LC_NAME +copy "nl_NL" +END LC_NAME + +LC_ADDRESS +postal_fmt "/ +/ +/ +/ +" +country_ab2 "" +country_ab3 "" +country_num 533 +END LC_ADDRESS + +LC_TELEPHONE +% FIXME +tel_int_fmt "/ +" +int_prefix "" +int_select "" +END LC_TELEPHONE + +LC_MEASUREMENT +copy "en_US" +END LC_MEASUREMENT diff --git a/localedata/locales/sd_IN b/localedata/locales/sd_IN new file mode 100644 index 0000000000..52f069b004 --- /dev/null +++ b/localedata/locales/sd_IN @@ -0,0 +1,206 @@ +comment_char % +escape_char / +% Sindhi language locale for India. +% Contributed by Pravin Satpute and +% DR K.P. LEKHWANI + +LC_IDENTIFICATION + +title "Sindhi language locale for India" +source "Redhat, Pune" +address "Marisfot III, Marigold Premises, East-Wing, Kalyaninagar, Pune, India-411014" +contact "" +email "bug-glibc-locales@gnu.org" +tel "" +fax "" +language "Sindhi" +territory "India" +revision "1.0" +date "2008,September,09" +% +category "sd_IN:2008";LC_IDENTIFICATION +category "sd_IN:2008";LC_CTYPE +category "sd_IN:2008";LC_COLLATE +category "sd_IN:2008";LC_TIME +category "sd_IN:2008";LC_NUMERIC +category "sd_IN:2008";LC_MONETARY +category "sd_IN:2008";LC_MESSAGES +category "sd_IN:2008";LC_PAPER +category "sd_IN:2008";LC_NAME +category "sd_IN:2008";LC_ADDRESS +category "sd_IN:2008";LC_TELEPHONE + + +END LC_IDENTIFICATION + + +LC_CTYPE +copy "i18n" + +translit_start +include "translit_combining";"" +translit_end +END LC_CTYPE + + +LC_COLLATE +% Copy the template from ISO/IEC 14651 +copy "iso14651_t1" + +END LC_COLLATE + + +LC_MONETARY +% This is the POSIX Locale definition the LC_MONETARY category +% generated by IBM Basic CountryPack Transformer. +% These are generated based on XML base Locale defintion file +% for IBM Class for Unicode. +% +int_curr_symbol "" +currency_symbol "" +mon_decimal_point "" +mon_thousands_sep "" +mon_grouping 3 +positive_sign "" +negative_sign "" +int_frac_digits 2 +frac_digits 2 +p_cs_precedes 1 +p_sep_by_space 1 +n_cs_precedes 1 +n_sep_by_space 1 +p_sign_posn 1 +n_sign_posn 1 +% +END LC_MONETARY + + +LC_NUMERIC +copy "hi_IN" +END LC_NUMERIC + + +LC_TIME +% This is the POSIX Locale definition for the LC_TIME category +% generated by IBM Basic CountryPack Transformer. +% These are generated based on XML base Locale definition file +% for IBM Class for Unicode. +% +% Abbreviated weekday names (%a) +abday "";/ + "";/ + "";/ + "";/ + "";/ + "";"" +% +% Full weekday names (%A) +day "";/ + "";/ + "";/ + "";/ + "";/ + "";"" +% +% Abbreviated month names (%b) +abmon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% Full month names (%B) +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% Equivalent of AM PM +am_pm "";"" +% +% Appropriate date and time representation +% %A %d %b %Y%I:%M:%S %Z +d_t_fmt "/ +/ +" +% +% Appropriate date representation +% %A %d %b %Y +d_fmt "/ +" +% +% Appropriate time representation +% %I:%M:%S %Z +t_fmt "/ +" +% +% Appropriate 12 h time representation (%r) +t_fmt_ampm "/ +" +% +% Appropriate date representation (date(1)) "%a %b %e %H:%M:%S %Z %Y" +date_fmt "/ +/ +" +END LC_TIME + + +LC_MESSAGES +copy "ar_EG" +END LC_MESSAGES + + +LC_PAPER +copy "hi_IN" +END LC_PAPER + + +LC_NAME +% This is the ISO_IEC TR14652 Locale definition for the LC_NAME category +% generated by IBM Basic CountryPack Transformer. +% +% +name_fmt "" +name_gen "" +name_mr "" +name_mrs "" +name_miss "" +name_ms "" + +END LC_NAME + + +LC_ADDRESS +% This is the ISO_IEC TR14652 Locale definition for the LC_ADDRESS category +% generated by IBM Basic CountryPack Transformer. +postal_fmt "" +country_ab2 "" +country_ab3 "" +country_num 356 + +END LC_ADDRESS + + +LC_TELEPHONE +copy "hi_IN" +END LC_TELEPHONE + + +LC_MEASUREMENT +copy "hi_IN" +END LC_MEASUREMENT diff --git a/localedata/locales/sd_IN@devanagari b/localedata/locales/sd_IN@devanagari new file mode 100644 index 0000000000..ce029376e6 --- /dev/null +++ b/localedata/locales/sd_IN@devanagari @@ -0,0 +1,206 @@ +comment_char % +escape_char / +% Sindhi language locale for India. +% Contributed by Pravin Satpute and +% DR K.P. LEKHWANI + +LC_IDENTIFICATION +title "Sindhi language locale for India" +source "Redhat, Pune" +address "Marisfot III, Marigold Premises, East-Wing, Kalyaninagar, Pune, India-411014" +contact "" +email "bug-glibc-locales@gnu.org" +tel "" +fax "" +language "Sindhi" +territory "India" +revision "1.0" +date "2008-08-26" +% +category "sd_IN@devanagari:2008";LC_IDENTIFICATION +category "sd_IN@devanagari:2008";LC_CTYPE +category "sd_IN@devanagari:2008";LC_COLLATE +category "sd_IN@devanagari:2008";LC_TIME +category "sd_IN@devanagari:2008";LC_NUMERIC +category "sd_IN@devanagari:2008";LC_MONETARY +category "sd_IN@devanagari:2008";LC_MESSAGES +category "sd_IN@devanagari:2008";LC_PAPER +category "sd_IN@devanagari:2008";LC_NAME +category "sd_IN@devanagari:2008";LC_ADDRESS +category "sd_IN@devanagari:2008";LC_TELEPHONE + +END LC_IDENTIFICATION + +LC_CTYPE +copy "i18n" + +translit_start +include "translit_combining";"" +translit_end +END LC_CTYPE + +LC_COLLATE + +% Copy the template from ISO/IEC 14651 +copy "iso14651_t1" + +END LC_COLLATE + +LC_MONETARY +% This is the POSIX Locale definition the LC_MONETARY category +% generated by IBM Basic CountryPack Transformer. +% These are generated based on XML base Locale defintion file +% for IBM Class for Unicode. +% +int_curr_symbol "" +currency_symbol "" +mon_decimal_point "" +mon_thousands_sep "" +mon_grouping 3 +positive_sign "" +negative_sign "" +int_frac_digits 2 +frac_digits 2 +p_cs_precedes 1 +p_sep_by_space 1 +n_cs_precedes 1 +n_sep_by_space 1 +p_sign_posn 1 +n_sign_posn 1 +% +END LC_MONETARY + + +LC_NUMERIC +copy "hi_IN" +END LC_NUMERIC + + +LC_TIME +% This is the POSIX Locale definition for the LC_TIME category +% generated by IBM Basic CountryPack Transformer. +% These are generated based on XML base Locale difintion file +% for IBM Class for Unicode. +% +% Abbreviated weekday names (%a) +abday "";/ + "";/ + "";/ + "";/ + "";/ + "";"" +% +% Full weekday names (%A) +day "";/ + "";/ + "";/ + "";/ + "";/ + "";"" +% +% Abbreviated month names (%b) +abmon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% Full month names (%B) +mon "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "";/ + "" +% +% Equivalent of AM PM +am_pm "";/ + "" +% +% Appropriate date and time representation +% %A %d %b %Y%I:%M:%S %Z +d_t_fmt "/ +/ +" +% +% Appropriate date representation +% %A %d %b %Y +d_fmt "/ +" +% +% Appropriate time representation +% %I:%M:%S %Z +t_fmt "/ +" +% +% Appropriate 12 h time representation (%r) +t_fmt_ampm "/ +" +% +% Appropriate date representation (date(1)) "%a %b %e %H:%M:%S %Z %Y" +date_fmt "/ +/ +" +END LC_TIME + + +LC_MESSAGES +yesexpr "" +noexpr "" +END LC_MESSAGES + + +LC_PAPER +copy "hi_IN" +END LC_PAPER + + +LC_NAME +% This is the ISO_IEC TR14652 Locale definition for the LC_NAME category +% generated by IBM Basic CountryPack Transformer. +% +% +name_fmt "/ +" +name_gen "" +name_mr "" +name_mrs "" +name_miss "" +name_ms "" + +END LC_NAME + + +LC_ADDRESS +% This is the ISO_IEC TR14652 Locale definition for the LC_ADDRESS category +% generated by IBM Basic CountryPack Transformer. +postal_fmt "/ +" + +country_ab2 "" +country_ab3 "" +country_num 356 +END LC_ADDRESS + + +LC_TELEPHONE +copy "hi_IN" +END LC_TELEPHONE + + +LC_MEASUREMENT +copy "hi_IN" +END LC_MEASUREMENT diff --git a/malloc/malloc.c b/malloc/malloc.c index 7610aa444a..feca2cbea9 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -3800,17 +3800,39 @@ public_vALLOc(size_t bytes) if(__malloc_initialized < 0) ptmalloc_init (); + size_t pagesz = mp_.pagesize; + __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t, __const __malloc_ptr_t)) = __memalign_hook; if (hook != NULL) - return (*hook)(mp_.pagesize, bytes, RETURN_ADDRESS (0)); + return (*hook)(pagesz, bytes, RETURN_ADDRESS (0)); - arena_get(ar_ptr, bytes + mp_.pagesize + MINSIZE); + arena_get(ar_ptr, bytes + pagesz + MINSIZE); if(!ar_ptr) return 0; p = _int_valloc(ar_ptr, bytes); (void)mutex_unlock(&ar_ptr->mutex); + if(!p) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(ar_ptr != &main_arena) { + (void)mutex_lock(&main_arena.mutex); + p = _int_memalign(&main_arena, pagesz, bytes); + (void)mutex_unlock(&main_arena.mutex); + } else { +#if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ + ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, bytes); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, bytes); + (void)mutex_unlock(&ar_ptr->mutex); + } +#endif + } + } + assert(!p || chunk_is_mmapped(mem2chunk(p)) || + ar_ptr == arena_for_chunk(mem2chunk(p))); + return p; } @@ -3823,17 +3845,40 @@ public_pVALLOc(size_t bytes) if(__malloc_initialized < 0) ptmalloc_init (); + size_t pagesz = mp_.pagesize; + size_t page_mask = mp_.pagesize - 1; + size_t rounded_bytes = (bytes + page_mask) & ~(page_mask); + __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t, __const __malloc_ptr_t)) = __memalign_hook; if (hook != NULL) - return (*hook)(mp_.pagesize, - (bytes + mp_.pagesize - 1) & ~(mp_.pagesize - 1), - RETURN_ADDRESS (0)); + return (*hook)(pagesz, rounded_bytes, RETURN_ADDRESS (0)); - arena_get(ar_ptr, bytes + 2*mp_.pagesize + MINSIZE); + arena_get(ar_ptr, bytes + 2*pagesz + MINSIZE); p = _int_pvalloc(ar_ptr, bytes); (void)mutex_unlock(&ar_ptr->mutex); + if(!p) { + /* Maybe the failure is due to running out of mmapped areas. */ + if(ar_ptr != &main_arena) { + (void)mutex_lock(&main_arena.mutex); + p = _int_memalign(&main_arena, pagesz, rounded_bytes); + (void)mutex_unlock(&main_arena.mutex); + } else { +#if USE_ARENAS + /* ... or sbrk() has failed and there is still a chance to mmap() */ + ar_ptr = arena_get2(ar_ptr->next ? ar_ptr : 0, + bytes + 2*pagesz + MINSIZE); + if(ar_ptr) { + p = _int_memalign(ar_ptr, pagesz, rounded_bytes); + (void)mutex_unlock(&ar_ptr->mutex); + } +#endif + } + } + assert(!p || chunk_is_mmapped(mem2chunk(p)) || + ar_ptr == arena_for_chunk(mem2chunk(p))); + return p; } diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 15ee177611..af0d0c1d0c 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,15 @@ +2008-09-11 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Add memory barrier + to force runp->refcntr to be read from memory. + +2008-09-08 Richard Guenther + + * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_lock, + lll_robust_lock, lll_cond_lock, lll_robust_cond_lock, + lll_timedlock, lll_robust_timedlock, lll_unlock, + lll_robust_unlock): Promote private to int. + 2008-08-15 Ulrich Drepper * sysdeps/x86_64/pthreaddef.h: Remove ARCH_MAP_FLAGS and diff --git a/nptl/sysdeps/unix/sysv/linux/fork.c b/nptl/sysdeps/unix/sysv/linux/fork.c index 1683de80fd..524d72c587 100644 --- a/nptl/sysdeps/unix/sysv/linux/fork.c +++ b/nptl/sysdeps/unix/sysv/linux/fork.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -64,6 +64,9 @@ __libc_fork (void) struct fork_handler *runp; while ((runp = __fork_handlers) != NULL) { + /* Make sure we read from the current RUNP pointer. */ + atomic_full_barrier (); + unsigned int oldval = runp->refcntr; if (oldval == 0) diff --git a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h index 8f67616af7..d53559c074 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2004, 2006, 2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -323,7 +323,7 @@ LLL_STUB_UNWIND_INFO_END "=m" (futex), "=&d" (ignore3) \ : "1" (1), "m" (futex), \ "i" (MULTIPLE_THREADS_OFFSET), "0" (0), \ - "g" (private) \ + "g" ((int) (private)) \ : "memory"); \ } \ }) @@ -345,7 +345,7 @@ LLL_STUB_UNWIND_INFO_END "18:" \ : "=a" (result), "=c" (ignore1), "=m" (futex), \ "=&d" (ignore2) \ - : "0" (0), "1" (id), "m" (futex), "g" (private) \ + : "0" (0), "1" (id), "m" (futex), "g" ((int) (private))\ : "memory"); \ result; }) @@ -370,7 +370,7 @@ LLL_STUB_UNWIND_INFO_END "18:" \ : "=a" (ignore1), "=c" (ignore2), "=m" (futex), \ "=&d" (ignore3) \ - : "0" (0), "1" (2), "m" (futex), "g" (private) \ + : "0" (0), "1" (2), "m" (futex), "g" ((int) (private))\ : "memory"); \ }) @@ -393,7 +393,7 @@ LLL_STUB_UNWIND_INFO_END : "=a" (result), "=c" (ignore1), "=m" (futex), \ "=&d" (ignore2) \ : "0" (0), "1" (id | FUTEX_WAITERS), "m" (futex), \ - "g" (private) \ + "g" ((int) (private)) \ : "memory"); \ result; }) @@ -416,7 +416,7 @@ LLL_STUB_UNWIND_INFO_END : "=a" (result), "=c" (ignore1), "=&d" (ignore2), \ "=m" (futex), "=S" (ignore3) \ : "0" (0), "1" (1), "m" (futex), "m" (timeout), \ - "4" (private) \ + "4" ((int) (private)) \ : "memory"); \ result; }) @@ -439,7 +439,7 @@ LLL_STUB_UNWIND_INFO_END : "=a" (result), "=c" (ignore1), "=&d" (ignore2), \ "=m" (futex), "=S" (ignore3) \ : "0" (0), "1" (id), "m" (futex), "m" (timeout), \ - "4" (private) \ + "4" ((int) (private)) \ : "memory"); \ result; }) @@ -489,7 +489,7 @@ LLL_STUB_UNWIND_INFO_END "18:" \ : "=m" (futex), "=&a" (ignore), "=&c" (ignore2) \ : "i" (MULTIPLE_THREADS_OFFSET), "m" (futex), \ - "g" (private) \ + "g" ((int) (private)) \ : "memory"); \ } \ }) @@ -511,7 +511,8 @@ LLL_STUB_UNWIND_INFO_END LLL_STUB_UNWIND_INFO_4 \ "18:" \ : "=m" (futex), "=&a" (ignore), "=&c" (ignore2) \ - : "i" (FUTEX_WAITERS), "m" (futex), "g" (private) \ + : "i" (FUTEX_WAITERS), "m" (futex), \ + "g" ((int) (private)) \ : "memory"); \ }) diff --git a/nscd/connections.c b/nscd/connections.c index 3395e54fa1..e3a67386d0 100644 --- a/nscd/connections.c +++ b/nscd/connections.c @@ -239,7 +239,7 @@ static int resolv_conf_descr = -1; before be know the result. */ static int have_sock_cloexec; /* The paccept syscall was introduced at the same time as SOCK_CLOEXEC. */ -# define have_paccept have_sock_cloexec +# define have_paccept -1 // XXX For the time being there is no such call #endif /* Number of times clients had to wait. */ @@ -1824,11 +1824,13 @@ main_loop_poll (void) if (have_paccept >= 0) #endif { +#if 0 fd = TEMP_FAILURE_RETRY (paccept (sock, NULL, NULL, NULL, SOCK_NONBLOCK)); #ifndef __ASSUME_PACCEPT if (have_paccept == 0) have_paccept = fd != -1 || errno != ENOSYS ? 1 : -1; +#endif #endif } #ifndef __ASSUME_PACCEPT diff --git a/po/sv.po b/po/sv.po index 0d4e308115..dcbe90258d 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,13 +1,14 @@ # GNU libc message catalog for swedish -# Copyright © 1996, 1998, 2001, 2002, 2003, 2006 Free Software Foundation, Inc. -# Jan Djärv , 1996, 1998, 2001, 2002, 2003, 2006, 2007. -# Revision: 1.57 +# Copyright © 1996, 1998, 2001, 2002, 2003, 2006, 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the glibc package. +# Jan Djärv , 1996, 1998, 2001, 2002, 2003, 2006, 2007, 2008 +# Revision: 1.59 # msgid "" msgstr "" "Project-Id-Version: libc 2.7\n" "POT-Creation-Date: 2007-10-15 21:18-0700\n" -"PO-Revision-Date: 2007-11-14 21:01+0100\n" +"PO-Revision-Date: 2008-09-29 07:26+0200\n" "Last-Translator: Jan Djärv \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" @@ -2853,7 +2854,7 @@ msgstr "" "\n" " -?,--help Visa denna hjälptext och avsluta\n" " --usage Visa en kort hjälptext\n" -" -V,--version Visa versionsinformation och avluta\n" +" -V,--version Visa versionsinformation och avsluta\n" "\n" " Följande flaggor gäller bara när grafik genereras:\n" " -t,--time-based Gör grafen linjär i tiden\n" @@ -4328,59 +4329,59 @@ msgstr "Okänd variabel \"%s\"" #: posix/getopt.c:571 posix/getopt.c:587 #, c-format -msgid "%s: option '%s' is ambiguous\n" +msgid "%s: option `%s' is ambiguous\n" msgstr "%s: flaggan \"%s\" är tvetydig\n" #: posix/getopt.c:620 posix/getopt.c:624 #, c-format -msgid "%s: option '--%s' doesn't allow an argument\n" +msgid "%s: option `--%s' doesn't allow an argument\n" msgstr "%s: flaggan \"--%s\" tar inget argument\n" #: posix/getopt.c:633 posix/getopt.c:638 #, c-format -msgid "%s: option '%c%s' doesn't allow an argument\n" +msgid "%s: option `%c%s' doesn't allow an argument\n" msgstr "%s: flaggan \"%c%s\" tar inget argument\n" #: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016 #: posix/getopt.c:1035 #, c-format -msgid "%s: option '%s' requires an argument\n" +msgid "%s: option `%s' requires an argument\n" msgstr "%s: flaggan \"%s\" behöver ett argument\n" #: posix/getopt.c:738 posix/getopt.c:741 #, c-format -msgid "%s: unrecognized option '--%s'\n" +msgid "%s: unrecognized option `--%s'\n" msgstr "%s: okänd flagga \"--%s\"\n" #: posix/getopt.c:749 posix/getopt.c:752 #, c-format -msgid "%s: unrecognized option '%c%s'\n" +msgid "%s: unrecognized option `%c%s'\n" msgstr "%s: okänd flagga \"%c%s\"\n" #: posix/getopt.c:804 posix/getopt.c:807 #, c-format -msgid "%s: illegal option -- '%c'\n" +msgid "%s: illegal option -- %c\n" msgstr "%s: otillåten flagga -- %c\n" #: posix/getopt.c:813 posix/getopt.c:816 #, c-format -msgid "%s: invalid option -- '%c'\n" +msgid "%s: invalid option -- %c\n" msgstr "%s: ogiltig flagga -- %c\n" #: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088 #: posix/getopt.c:1106 #, c-format -msgid "%s: option requires an argument -- '%c'\n" +msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaggan behöver ett argument -- %c\n" #: posix/getopt.c:937 posix/getopt.c:953 #, c-format -msgid "%s: option '-W %s' is ambiguous\n" +msgid "%s: option `-W %s' is ambiguous\n" msgstr "%s: flaggan \"-W %s\" är tvetydig\n" #: posix/getopt.c:977 posix/getopt.c:995 #, c-format -msgid "%s: option '-W %s' doesn't allow an argument\n" +msgid "%s: option `-W %s' doesn't allow an argument\n" msgstr "%s: flaggan \"-W %s\" tar inget argument\n" #: posix/regcomp.c:135 diff --git a/resolv/res_send.c b/resolv/res_send.c index 3130f64281..59cdc214e2 100644 --- a/resolv/res_send.c +++ b/resolv/res_send.c @@ -734,11 +734,11 @@ send_vc(res_state statp, */ int recvresp1 = 0; int recvresp2 = buf2 == NULL; - read_len: - cp = ans; uint16_t rlen16; + read_len: + cp = (u_char *)&rlen16; len = sizeof(rlen16); - while ((n = TEMP_FAILURE_RETRY (read(statp->_vcsock, &rlen16, + while ((n = TEMP_FAILURE_RETRY (read(statp->_vcsock, cp, (int)len))) > 0) { cp += n; if ((len -= n) <= 0) @@ -778,8 +778,16 @@ send_vc(res_state statp, /* No buffer allocated for the first reply. We can try to use the rest of the user-provided buffer. */ +#ifdef _STRING_ARCH_unaligned *anssizp2 = orig_anssizp - resplen; *ansp2 = *ansp + resplen; +#else + int aligned_resplen + = ((resplen + __alignof__ (HEADER) - 1) + & (__alignof__ (HEADER) - 1)); + *anssizp2 = orig_anssizp - aligned_resplen; + *ansp2 = *ansp + aligned_resplen; +#endif } else { /* The first reply did not fit into the user-provided buffer. Maybe the second diff --git a/socket/Makefile b/socket/Makefile index e7fa589e65..92a87079e3 100644 --- a/socket/Makefile +++ b/socket/Makefile @@ -27,7 +27,7 @@ headers := sys/socket.h sys/un.h bits/sockaddr.h bits/socket.h \ routines := accept bind connect getpeername getsockname getsockopt \ listen recv recvfrom recvmsg send sendmsg sendto \ setsockopt shutdown socket socketpair isfdtype opensock \ - sockatmark paccept + sockatmark aux := have_sock_cloexec diff --git a/socket/Versions b/socket/Versions index 9764227c36..d282eff79e 100644 --- a/socket/Versions +++ b/socket/Versions @@ -31,7 +31,4 @@ libc { # Addition from P1003.1-200x sockatmark; } - GLIBC_2.9 { - paccept; - } } diff --git a/socket/sys/socket.h b/socket/sys/socket.h index ea4123d287..e0a6a5216a 100644 --- a/socket/sys/socket.h +++ b/socket/sys/socket.h @@ -214,18 +214,6 @@ extern int listen (int __fd, int __n) __THROW; extern int accept (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len); -#ifdef __USE_GNU -/* Variant of the accept function which takes additional parameters. The - MASK parameter allows to change the thread signal mask for the duration - of the call. The FLAGS parameter allows to pass additional flags. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int paccept (int __fd, __SOCKADDR_ARG __addr, - socklen_t *__restrict __addr_len, - __const __sigset_t *__restrict __ss, int __flags); -#endif - /* Shut down all or part of the connection open on socket FD. HOW determines what to shut down: SHUT_RD = No more receptions; diff --git a/stdlib/divmod_1.c b/stdlib/divmod_1.c index 51a47d85d3..0a8a77e12e 100644 --- a/stdlib/divmod_1.c +++ b/stdlib/divmod_1.c @@ -55,7 +55,7 @@ mpn_divmod_1 (quot_ptr, dividend_ptr, dividend_size, divisor_limb) { mp_size_t i; mp_limb_t n1, n0, r; - int dummy; + mp_limb_t dummy; /* ??? Should this be handled at all? Rely on callers? */ if (dividend_size == 0) diff --git a/stdlib/longlong.h b/stdlib/longlong.h index ca6285a19b..a2f38ae2a5 100644 --- a/stdlib/longlong.h +++ b/stdlib/longlong.h @@ -229,6 +229,19 @@ UDItype __umulsidi3 (USItype, USItype); #define UDIV_TIME 100 #endif /* __arm__ */ +#if defined(__arm__) +/* Let gcc decide how best to implement count_leading_zeros. */ +#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X)) +#define COUNT_LEADING_ZEROS_0 32 +#endif + +#if defined (__CRIS__) && __CRIS_arch_version >= 3 +#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clz (X)) +#if __CRIS_arch_version >= 8 +#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctz (X)) +#endif +#endif /* __CRIS__ */ + #if defined (__hppa) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add %4,%5,%1\n\taddc %2,%3,%0" \ @@ -315,7 +328,7 @@ UDItype __umulsidi3 (USItype, USItype); #if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ - __asm__ ("addl %5,%1\n\tadcl %3,%0" \ + __asm__ ("add{l} {%5,%1|%1,%5}\n\tadc{l} {%3,%0|%0,%3}" \ : "=r" ((USItype) (sh)), \ "=&r" ((USItype) (sl)) \ : "%0" ((USItype) (ah)), \ @@ -323,7 +336,7 @@ UDItype __umulsidi3 (USItype, USItype); "%1" ((USItype) (al)), \ "g" ((USItype) (bl))) #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ - __asm__ ("subl %5,%1\n\tsbbl %3,%0" \ + __asm__ ("sub{l} {%5,%1|%1,%5}\n\tsbb{l} {%3,%0|%0,%3}" \ : "=r" ((USItype) (sh)), \ "=&r" ((USItype) (sl)) \ : "0" ((USItype) (ah)), \ @@ -331,31 +344,60 @@ UDItype __umulsidi3 (USItype, USItype); "1" ((USItype) (al)), \ "g" ((USItype) (bl))) #define umul_ppmm(w1, w0, u, v) \ - __asm__ ("mull %3" \ + __asm__ ("mul{l} %3" \ : "=a" ((USItype) (w0)), \ "=d" ((USItype) (w1)) \ : "%0" ((USItype) (u)), \ "rm" ((USItype) (v))) #define udiv_qrnnd(q, r, n1, n0, dv) \ - __asm__ ("divl %4" \ + __asm__ ("div{l} %4" \ : "=a" ((USItype) (q)), \ "=d" ((USItype) (r)) \ : "0" ((USItype) (n0)), \ "1" ((USItype) (n1)), \ "rm" ((USItype) (dv))) -#define count_leading_zeros(count, x) \ - do { \ - USItype __cbtmp; \ - __asm__ ("bsrl %1,%0" \ - : "=r" (__cbtmp) : "rm" ((USItype) (x))); \ - (count) = __cbtmp ^ 31; \ - } while (0) -#define count_trailing_zeros(count, x) \ - __asm__ ("bsfl %1,%0" : "=r" (count) : "rm" ((USItype)(x))) +#define count_leading_zeros(count, x) ((count) = __builtin_clz (x)) +#define count_trailing_zeros(count, x) ((count) = __builtin_ctz (x)) #define UMUL_TIME 40 #define UDIV_TIME 40 #endif /* 80x86 */ +#if (defined (__x86_64__) || defined (__i386__)) && W_TYPE_SIZE == 64 +#define add_ssaaaa(sh, sl, ah, al, bh, bl) \ + __asm__ ("add{q} {%5,%1|%1,%5}\n\tadc{q} {%3,%0|%0,%3}" \ + : "=r" ((UDItype) (sh)), \ + "=&r" ((UDItype) (sl)) \ + : "%0" ((UDItype) (ah)), \ + "rme" ((UDItype) (bh)), \ + "%1" ((UDItype) (al)), \ + "rme" ((UDItype) (bl))) +#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ + __asm__ ("sub{q} {%5,%1|%1,%5}\n\tsbb{q} {%3,%0|%0,%3}" \ + : "=r" ((UDItype) (sh)), \ + "=&r" ((UDItype) (sl)) \ + : "0" ((UDItype) (ah)), \ + "rme" ((UDItype) (bh)), \ + "1" ((UDItype) (al)), \ + "rme" ((UDItype) (bl))) +#define umul_ppmm(w1, w0, u, v) \ + __asm__ ("mul{q} %3" \ + : "=a" ((UDItype) (w0)), \ + "=d" ((UDItype) (w1)) \ + : "%0" ((UDItype) (u)), \ + "rm" ((UDItype) (v))) +#define udiv_qrnnd(q, r, n1, n0, dv) \ + __asm__ ("div{q} %4" \ + : "=a" ((UDItype) (q)), \ + "=d" ((UDItype) (r)) \ + : "0" ((UDItype) (n0)), \ + "1" ((UDItype) (n1)), \ + "rm" ((UDItype) (dv))) +#define count_leading_zeros(count, x) ((count) = __builtin_clzl (x)) +#define count_trailing_zeros(count, x) ((count) = __builtin_ctzl (x)) +#define UMUL_TIME 40 +#define UDIV_TIME 40 +#endif /* x86_64 */ + #if defined (__i960__) && W_TYPE_SIZE == 32 #define umul_ppmm(w1, w0, u, v) \ ({union {UDItype __ll; \ @@ -523,6 +565,11 @@ UDItype __umulsidi3 (USItype, USItype); __asm__ ("bfffo %1{%b2:%b2},%0" \ : "=d" ((USItype) (count)) \ : "od" ((USItype) (x)), "n" (0)) +/* Some ColdFire architectures have a ff1 instruction supported via + __builtin_clz. */ +#elif defined (__mcfisaaplus__) || defined (__mcfisac__) +#define count_leading_zeros(count,x) ((count) = __builtin_clz (x)) +#define COUNT_LEADING_ZEROS_0 32 #endif #endif /* mc68000 */ @@ -585,14 +632,19 @@ UDItype __umulsidi3 (USItype, USItype); #endif /* __m88000__ */ #if defined (__mips__) && W_TYPE_SIZE == 32 -#define umul_ppmm(w1, w0, u, v) \ - __asm__ ("multu %2,%3" \ - : "=l" ((USItype) (w0)), \ - "=h" ((USItype) (w1)) \ - : "d" ((USItype) (u)), \ - "d" ((USItype) (v))) +#define umul_ppmm(w1, w0, u, v) \ + do { \ + UDItype __x = (UDItype) (USItype) (u) * (USItype) (v); \ + (w1) = (USItype) (__x >> 32); \ + (w0) = (USItype) (__x); \ + } while (0) #define UMUL_TIME 10 #define UDIV_TIME 100 + +#if (__mips == 32 || __mips == 64) && ! __mips16 +#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X)) +#define COUNT_LEADING_ZEROS_0 32 +#endif #endif /* __mips__ */ #if defined (__ns32000__) && W_TYPE_SIZE == 32 @@ -641,7 +693,9 @@ UDItype __umulsidi3 (USItype, USItype); || defined (__powerpc__) /* gcc */ \ || defined (__POWERPC__) /* BEOS */ \ || defined (__ppc__) /* Darwin */ \ - || defined (PPC) /* GNU/Linux, SysV */ \ + || (defined (PPC) && ! defined (CPU_FAMILY)) /* gcc 2.7.x GNU&SysV */ \ + || (defined (PPC) && defined (CPU_FAMILY) /* VxWorks */ \ + && CPU_FAMILY == PPC) \ ) && W_TYPE_SIZE == 32 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ do { \ @@ -679,7 +733,10 @@ UDItype __umulsidi3 (USItype, USItype); __asm__ ("{cntlz|cntlzw} %0,%1" : "=r" (count) : "r" (x)) #define COUNT_LEADING_ZEROS_0 32 #if defined (_ARCH_PPC) || defined (__powerpc__) || defined (__POWERPC__) \ - || defined (__ppc__) || defined (PPC) + || defined (__ppc__) \ + || (defined (PPC) && ! defined (CPU_FAMILY)) /* gcc 2.7.x GNU&SysV */ \ + || (defined (PPC) && defined (CPU_FAMILY) /* VxWorks */ \ + && CPU_FAMILY == PPC) #define umul_ppmm(ph, pl, m0, m1) \ do { \ USItype __m0 = (m0), __m1 = (m1); \ @@ -828,18 +885,51 @@ UDItype __umulsidi3 (USItype, USItype); } while (0) #endif -#if defined (__sh2__) && W_TYPE_SIZE == 32 +#if defined(__sh__) && !__SHMEDIA__ && W_TYPE_SIZE == 32 +#ifndef __sh1__ #define umul_ppmm(w1, w0, u, v) \ __asm__ ( \ - "dmulu.l %2,%3\n\tsts macl,%1\n\tsts mach,%0" \ - : "=r" ((USItype)(w1)), \ - "=r" ((USItype)(w0)) \ + "dmulu.l %2,%3\n\tsts%M1 macl,%1\n\tsts%M0 mach,%0" \ + : "=r<" ((USItype)(w1)), \ + "=r<" ((USItype)(w0)) \ : "r" ((USItype)(u)), \ "r" ((USItype)(v)) \ : "macl", "mach") #define UMUL_TIME 5 #endif +/* This is the same algorithm as __udiv_qrnnd_c. */ +#define UDIV_NEEDS_NORMALIZATION 1 + +#define udiv_qrnnd(q, r, n1, n0, d) \ + do { \ + extern UWtype __udiv_qrnnd_16 (UWtype, UWtype) \ + __attribute__ ((visibility ("hidden"))); \ + /* r0: rn r1: qn */ /* r0: n1 r4: n0 r5: d r6: d1 */ /* r2: __m */ \ + __asm__ ( \ + "mov%M4 %4,r5\n" \ +" swap.w %3,r4\n" \ +" swap.w r5,r6\n" \ +" jsr @%5\n" \ +" shll16 r6\n" \ +" swap.w r4,r4\n" \ +" jsr @%5\n" \ +" swap.w r1,%0\n" \ +" or r1,%0" \ + : "=r" (q), "=&z" (r) \ + : "1" (n1), "r" (n0), "rm" (d), "r" (&__udiv_qrnnd_16) \ + : "r1", "r2", "r4", "r5", "r6", "pr"); \ + } while (0) + +#define UDIV_TIME 80 + +#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ + __asm__ ("clrt;subc %5,%1; subc %4,%0" \ + : "=r" (sh), "=r" (sl) \ + : "0" (ah), "1" (al), "r" (bh), "r" (bl)) + +#endif /* __sh__ */ + #if defined (__SH5__) && __SHMEDIA__ && W_TYPE_SIZE == 32 #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v) #define count_leading_zeros(count, x) \ @@ -1153,6 +1243,23 @@ UDItype __umulsidi3 (USItype, USItype); } while (0) #endif /* __vax__ */ +#if defined (__xtensa__) && W_TYPE_SIZE == 32 +/* This code is not Xtensa-configuration-specific, so rely on the compiler + to expand builtin functions depending on what configuration features + are available. This avoids library calls when the operation can be + performed in-line. */ +#define umul_ppmm(w1, w0, u, v) \ + do { \ + DWunion __w; \ + __w.ll = __builtin_umulsidi3 (u, v); \ + w1 = __w.s.high; \ + w0 = __w.s.low; \ + } while (0) +#define __umulsidi3(u, v) __builtin_umulsidi3 (u, v) +#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clz (X)) +#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctz (X)) +#endif /* __xtensa__ */ + #if defined (__z8000__) && W_TYPE_SIZE == 16 #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("add %H1,%H5\n\tadc %H0,%H3" \ diff --git a/stdlib/mod_1.c b/stdlib/mod_1.c index 3273c9222d..f4cfa6933f 100644 --- a/stdlib/mod_1.c +++ b/stdlib/mod_1.c @@ -50,7 +50,7 @@ mpn_mod_1 (dividend_ptr, dividend_size, divisor_limb) { mp_size_t i; mp_limb_t n1, n0, r; - int dummy; + mp_limb_t dummy; /* Botch: Should this be handled at all? Rely on callers? */ if (dividend_size == 0) diff --git a/sunrpc/rpc/svc.h b/sunrpc/rpc/svc.h index 3ffca50bd0..171231919a 100644 --- a/sunrpc/rpc/svc.h +++ b/sunrpc/rpc/svc.h @@ -303,6 +303,11 @@ extern SVCXPRT *svcudp_bufcreate (int __sock, u_int __sendsz, u_int __recvsz) extern SVCXPRT *svctcp_create (int __sock, u_int __sendsize, u_int __recvsize) __THROW; +/* + * FD based rpc. + */ +extern SVCXPRT *svcfd_create (int __sock, u_int __sendsize, u_int __recvsize) + __THROW; /* * Unix based rpc. diff --git a/sysdeps/s390/s390-64/s390x-mcount.S b/sysdeps/s390/s390-64/s390x-mcount.S index 0fa614cbf4..78b55218a9 100644 --- a/sysdeps/s390/s390-64/s390x-mcount.S +++ b/sysdeps/s390/s390-64/s390x-mcount.S @@ -64,7 +64,7 @@ C_LABEL(_mcount) /* Pop the saved registers. Please note that `mcount' has no return value. */ lmg %r14,%r5,160(%r15) - ahi %r15,224 + aghi %r15,224 br %r14 ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount)) diff --git a/sysdeps/sparc/sparc64/sparcv9v/memcpy.S b/sysdeps/sparc/sparc64/sparcv9v/memcpy.S index 05c837fa25..ad2b0f742c 100644 --- a/sysdeps/sparc/sparc64/sparcv9v/memcpy.S +++ b/sysdeps/sparc/sparc64/sparcv9v/memcpy.S @@ -1,5 +1,5 @@ /* Copy SIZE bytes from SRC to DEST. For SUN4V Niagara. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David S. Miller (davem@davemloft.net) @@ -61,6 +61,9 @@ END(bcopy) .align 32 ENTRY(memcpy) +#ifndef USE_BPR + srl %o2, 0, %o2 +#endif 100: /* %o0=dst, %o1=src, %o2=len */ mov %o0, %g5 cmp %o2, 0 diff --git a/sysdeps/sparc/sparc64/sparcv9v/memset.S b/sysdeps/sparc/sparc64/sparcv9v/memset.S index ac0a50cf8e..64817b8871 100644 --- a/sysdeps/sparc/sparc64/sparcv9v/memset.S +++ b/sysdeps/sparc/sparc64/sparcv9v/memset.S @@ -1,5 +1,5 @@ /* Set a block of memory to some byte value. For SUN4V Niagara. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David S. Miller (davem@davemloft.net) @@ -49,7 +49,11 @@ END(memset) ENTRY(__bzero) clr %o2 -1: brz,pn %o1, 90f +1: +#ifndef USE_BRP + srl %o1, 0, %o1 +#endif + brz,pn %o1, 90f mov %o0, %o3 wr %g0, ASI_P, %asi diff --git a/sysdeps/sparc/sparc64/sparcv9v2/memcpy.S b/sysdeps/sparc/sparc64/sparcv9v2/memcpy.S index d94dd4701e..b261f461a4 100644 --- a/sysdeps/sparc/sparc64/sparcv9v2/memcpy.S +++ b/sysdeps/sparc/sparc64/sparcv9v2/memcpy.S @@ -1,5 +1,5 @@ /* Copy SIZE bytes from SRC to DEST. For SUN4V Niagara-2. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David S. Miller (davem@davemloft.net) @@ -163,6 +163,9 @@ END(bcopy) .align 32 ENTRY(memcpy) +#ifndef USE_BPR + srl %o2, 0, %o2 +#endif 100: /* %o0=dst, %o1=src, %o2=len */ mov %o0, %g5 cmp %o2, 0 diff --git a/sysdeps/unix/sysv/linux/alpha/sys/signalfd.h b/sysdeps/unix/sysv/linux/alpha/sys/signalfd.h index a820eafe79..4cbe977768 100644 --- a/sysdeps/unix/sysv/linux/alpha/sys/signalfd.h +++ b/sysdeps/unix/sysv/linux/alpha/sys/signalfd.h @@ -59,7 +59,7 @@ __BEGIN_DECLS /* Request notification for delivery of signals in MASK to be performed using descriptor FD.*/ extern int signalfd (int __fd, const sigset_t *__mask, int __flags) - __nonnull ((2)) __THROW; + __THROW __nonnull ((2)); __END_DECLS diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h b/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h index 177da80f00..4fb77faa9a 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/utmp-convert.h @@ -15,3 +15,74 @@ You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + + +/* This file provides functions converting between the 32 and 64 bit + struct utmp variants. */ + +#ifndef _UTMP_CONVERT_H +#define _UTMP_CONVERT_H 1 + +#include + +#include "utmp32.h" + +/* Convert the 64 bit struct utmp value in FROM to the 32 bit version + returned in TO. */ +static inline void +utmp_convert64to32 (__const struct utmp *from, struct utmp32 *to) +{ +#if _HAVE_UT_TYPE - 0 + to->ut_type = from->ut_type; +#endif +#if _HAVE_UT_PID - 0 + to->ut_pid = from->ut_pid; +#endif + memcpy (to->ut_line, from->ut_line, UT_LINESIZE); + memcpy (to->ut_user, from->ut_user, UT_NAMESIZE); +#if _HAVE_UT_ID - 0 + memcpy (to->ut_id, from->ut_id, 4); +#endif +#if _HAVE_UT_HOST - 0 + memcpy (to->ut_host, from->ut_host, UT_HOSTSIZE); +#endif + to->ut_exit = from->ut_exit; + to->ut_session = (int32_t) from->ut_session; +#if _HAVE_UT_TV - 0 + to->ut_tv.tv_sec = (int32_t) from->ut_tv.tv_sec; + to->ut_tv.tv_usec = (int32_t) from->ut_tv.tv_usec; +#endif + memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4); +} + +/* Convert the 32 bit struct utmp value in FROM to the 64 bit version + returned in TO. */ +static inline void +utmp_convert32to64 (__const struct utmp32 *from, struct utmp *to) +{ +#if _HAVE_UT_TYPE - 0 + to->ut_type = from->ut_type; +#endif +#if _HAVE_UT_PID - 0 + to->ut_pid = from->ut_pid; +#endif + memcpy (to->ut_line, from->ut_line, UT_LINESIZE); + memcpy (to->ut_user, from->ut_user, UT_NAMESIZE); +#if _HAVE_UT_ID - 0 + memcpy (to->ut_id, from->ut_id, 4); +#endif +#if _HAVE_UT_HOST - 0 + memcpy (to->ut_host, from->ut_host, UT_HOSTSIZE); +#endif + to->ut_exit = from->ut_exit; + to->ut_session = (int64_t) from->ut_session; +#if _HAVE_UT_TV - 0 + to->ut_tv.tv_sec = (int64_t) from->ut_tv.tv_sec; + to->ut_tv.tv_usec = (int64_t) from->ut_tv.tv_usec; +#endif + memcpy (to->ut_addr_v6, from->ut_addr_v6, 4 * 4); +} + +#endif /* utmp-convert.h */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/socket.S b/sysdeps/unix/sysv/linux/s390/s390-64/socket.S index d4c3a1c4e1..91c2a8031e 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/socket.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/socket.S @@ -61,7 +61,7 @@ ENTRY(__socket) cfi_offset (%r6,-112) lgr %r1,%r15 lg %r0,8(%r15) /* Load eos. */ - ahi %r15,-208 /* Buy stack space. */ + aghi %r15,-208 /* Buy stack space. */ cfi_adjust_cfa_offset (208) stg %r1,0(%r15) /* Store back chain. */ stg %r0,8(%r15) /* Store eos. */ diff --git a/sysdeps/unix/sysv/linux/sparc/sys/signalfd.h b/sysdeps/unix/sysv/linux/sparc/sys/signalfd.h index a134cc7bab..bd380c29f0 100644 --- a/sysdeps/unix/sysv/linux/sparc/sys/signalfd.h +++ b/sysdeps/unix/sysv/linux/sparc/sys/signalfd.h @@ -59,7 +59,7 @@ __BEGIN_DECLS /* Request notification for delivery of signals in MASK to be performed using descriptor FD.*/ extern int signalfd (int __fd, const sigset_t *__mask, int __flags) - __nonnull ((2)) __THROW; + __THROW __nonnull ((2)); __END_DECLS diff --git a/sysdeps/unix/sysv/linux/sys/signalfd.h b/sysdeps/unix/sysv/linux/sys/signalfd.h index dae71a400e..eeb27ee03c 100644 --- a/sysdeps/unix/sysv/linux/sys/signalfd.h +++ b/sysdeps/unix/sysv/linux/sys/signalfd.h @@ -59,7 +59,7 @@ __BEGIN_DECLS /* Request notification for delivery of signals in MASK to be performed using descriptor FD.*/ extern int signalfd (int __fd, const sigset_t *__mask, int __flags) - __nonnull ((2)) __THROW; + __THROW __nonnull ((2)); __END_DECLS diff --git a/timezone/africa b/timezone/africa index 434110ccd7..304e7d3b77 100644 --- a/timezone/africa +++ b/timezone/africa @@ -1,4 +1,4 @@ -# @(#)africa 8.10 +# @(#)africa 8.16 #
 
 # This data is by no means authoritative; if you think you know better,
@@ -387,9 +387,80 @@ Zone Africa/Nouakchott	-1:03:48 -	LMT	1912
 			 0:00	-	GMT
 
 # Mauritius
+
+# From Steffen Thorsen (2008-06-25):
+# Mauritius plans to observe DST from 2008-11-01 to 2009-03-31 on a trial
+# basis....
+# It seems that Mauritius observed daylight saving time from 1982-10-10 to 
+# 1983-03-20 as well, but that was not successful....
+# http://www.timeanddate.com/news/time/mauritius-daylight-saving-time.html
+
+# From Alex Krivenyshev (2008-06-25):
+# http://economicdevelopment.gov.mu/portal/site/Mainhomepage/menuitem.a42b24128104d9845dabddd154508a0c/?content_id=0a7cee8b5d69a110VgnVCM1000000a04a8c0RCRD
+
+# From Arthur David Olson (2008-06-30):
+# The www.timeanddate.com article cited by Steffen Thorsen notes that "A
+# final decision has yet to be made on the times that daylight saving
+# would begin and end on these dates." As a place holder, use midnight.
+
+# From Paul Eggert (2008-06-30):
+# Follow Thorsen on DST in 1982/1983, instead of Shanks & Pottenger.
+
+# From Steffen Thorsen (2008-07-10):
+# According to
+# 
+# http://www.lexpress.mu/display_article.php?news_id=111216
+# 
+# (in French), Mauritius will start and end their DST a few days earlier
+# than previously announced (2008-11-01 to 2009-03-31).  The new start
+# date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
+# given, but it is probably at either 2 or 3 wall clock time).
+# 
+# A little strange though, since the article says that they moved the date 
+# to align itself with Europe and USA which also change time on that date, 
+# but that means they have not paid attention to what happened in 
+# USA/Canada last year (DST ends first Sunday in November). I also wonder 
+# why that they end on a Friday, instead of aligning with Europe which 
+# changes two days later.
+
+# From Alex Krivenyshev (2008-07-11):
+# Seems that English language article "The revival of daylight saving
+# time:  Energy conservation?"-# No. 16578 (07/11/2008) was originally
+# published on Monday, June 30, 2008...
+#
+# I guess that article in French "Le gouvernement avance l'introduction
+# de l'heure d'ete" stating that DST in Mauritius starting on October 26
+# and ending on March 27, 2009 is the most recent one.
+# ...
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html
+# 
+
+# From Riad M. Hossen Ally (2008-08-03):
+# The Government of Mauritius weblink
+# 
+# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=3D4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD
+# 
+# Cabinet Decision of July 18th, 2008 states as follows:
+#
+# 4. ...Cabinet has agreed to the introduction into the National Assembly
+# of the Time Bill which provides for the introduction of summer time in
+# Mauritius. The summer time period which will be of one hour ahead of
+# the standard time, will be aligned with that in Europe and the United
+# States of America. It will start at two o'clock in the morning on the
+# last Sunday of October and will end at two o'clock in the morning on
+# the last Sunday of March the following year. The summer time for the
+# year 2008 - 2009 will, therefore, be effective as from 26 October 2008
+# and end on 29 March 2009.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule Mauritius	1982	only	-	Oct	10	0:00	1:00	S
+Rule Mauritius	1983	only	-	Mar	21	0:00	0	-
+Rule Mauritius	2008	max	-	Oct	lastSun	2:00	1:00	S
+Rule Mauritius	2009	max	-	Mar	lastSun	2:00	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Indian/Mauritius	3:50:00 -	LMT	1907		# Port Louis
-			4:00	-	MUT	# Mauritius Time
+			4:00 Mauritius	MU%sT	# Mauritius Time
 # Agalega Is, Rodriguez
 # no information; probably like Indian/Mauritius
 
@@ -400,7 +471,93 @@ Zone	Indian/Mayotte	3:00:56 -	LMT	1911 Jul	# Mamoutzou
 
 # Morocco
 # See the `europe' file for Spanish Morocco (Africa/Ceuta).
+
+# From Alex Krivenyshev (2008-05-09):
+# Here is an article that Morocco plan to introduce Daylight Saving Time between
+# 1 June, 2008 and 27 September, 2008.
+#
+# "... Morocco is to save energy by adjusting its clock during summer so it will
+# be one hour ahead of GMT between 1 June and 27 September, according to
+# Communication Minister and Gov ernment Spokesman, Khalid Naciri...."
+#
+# 
+# http://www.worldtimezone.net/dst_news/dst_news_morocco01.html
+# 
+# OR
+# 
+# http://en.afrik.com/news11892.html
+# 
+
+# From Alex Krivenyshev (2008-05-09):
+# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe Presse:
+# 
+# http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view
+# 
+#
+# Morocco shifts to daylight time on June 1st through September 27, Govt.
+# spokesman.
+
+# From Patrice Scattolin (2008-05-09):
+# According to this article:
+# 
+# http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html
+# 
+# (and republished here:
+# 
+# http://www.actu.ma/heure-dete-comment_i127896_0.html
+# 
+# )
+# the changes occurs at midnight:
+#
+# saturday night may 31st at midnight (which in french is to be
+# intrepreted as the night between saturday and sunday)
+# sunday night the 28th  at midnight
+#
+# Seeing that the 28th is monday, I am guessing that she intends to say
+# the midnight of the 28th which is the midnight between sunday and
+# monday, which jives with other sources that say that it's inclusive
+# june1st to sept 27th.
+#
+# The decision was taken by decree *2-08-224 *but I can't find the decree
+# published on the web.
+#
+# It's also confirmed here:
+# 
+# http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm
+# 
+# on a government portal as being  between june 1st and sept 27th (not yet
+# posted in english).
+#
+# The following google query will generate many relevant hits:
+# 
+# http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search
+# 
+
+# From Alex Krivenyshev (2008-05-09):
+# Is Western Sahara (part which administrated by Morocco) going to follow
+# Morocco DST changes?  Any information?  What about other part of
+# Western Sahara - under administration of POLISARIO Front (also named
+# SADR Saharawi Arab Democratic Republic)?
+
+# From Arthur David Olson (2008-05-09):
+# XXX--guess that it is only Morocco for now; guess only 2008 for now.
+
+# From Steffen Thorsen (2008-08-27):
+# Morocco will change the clocks back on the midnight between August 31 
+# and September 1. They originally planned to observe DST to near the end 
+# of September:
+#
+# One article about it (in French):
+# 
+# http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default
+# 
+#
+# We have some further details posted here:
+# 
+# http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html
+# 
 # RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+
 Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
 Rule	Morocco	1939	only	-	Nov	19	 0:00	0	-
 Rule	Morocco	1940	only	-	Feb	25	 0:00	1:00	S
@@ -416,11 +573,13 @@ Rule	Morocco	1976	only	-	Aug	 1	 0:00	0	-
 Rule	Morocco	1977	only	-	Sep	28	 0:00	0	-
 Rule	Morocco	1978	only	-	Jun	 1	 0:00	1:00	S
 Rule	Morocco	1978	only	-	Aug	 4	 0:00	0	-
+Rule	Morocco	2008	only	-	Jun	 1	 0:00	1:00	S
+Rule	Morocco	2008	only	-	Sep	 1	 0:00	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
 			 0:00	Morocco	WE%sT	1984 Mar 16
 			 1:00	-	CET	1986
-			 0:00	-	WET
+			 0:00	Morocco	WE%sT
 # Western Sahara
 Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan
 			-1:00	-	WAT	1976 Apr 14
diff --git a/timezone/asia b/timezone/asia
index 70f1515321..768850f3df 100644
--- a/timezone/asia
+++ b/timezone/asia
@@ -1,4 +1,4 @@
-# @(#)asia	8.18
+# @(#)asia	8.23
 # 
 
 # This data is by no means authoritative; if you think you know better,
@@ -229,6 +229,28 @@ Rule	PRC	1987	1991	-	Apr	Sun>=10	0:00	1:00	D
 # (could be true), for the moment I am assuming that those two
 # counties are mistakes in the astro.com data.
 
+# From Paul Eggert (2008-02-11):
+# I just now checked Google News for western news sources that talk
+# about China's single time zone, and couldn't find anything before 1986
+# talking about China being in one time zone.  (That article was: Jim
+# Mann, "A clumsy embrace for another western custom: China on daylight
+# time--sort of", Los Angeles Times, 1986-05-05.  By the way, this
+# article confirms the tz database's data claiming that China began
+# observing daylight saving time in 1986.
+#
+# From Thomas S. Mullaney (2008-02-11):
+# I think you're combining two subjects that need to treated 
+# separately: daylight savings (which, you're correct, wasn't 
+# implemented until the 1980s) and the unified time zone centered near 
+# Beijing (which was implemented in 1949). Briefly, there was also a 
+# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was 
+# ceased, and the second eventually recognized (again, in the 1980s).
+#
+# From Paul Eggert (2008-06-30):
+# There seems to be a good chance China switched to a single time zone in 1949
+# rather than in 1980 as Shanks & Pottenger have it, but we don't have a
+# reliable documentary source saying so yet, so for now we still go with
+# Shanks & Pottenger.
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 # Changbai Time ("Long-white Time", Long-white = Heilongjiang area)
@@ -1376,6 +1398,42 @@ Zone	Indian/Maldives	4:54:00 -	LMT	1880	# Male
 # They decided not to adopt daylight-saving time....
 # http://www.mongolnews.mn/index.php?module=unuudur&sec=view&id=15742
 
+# From Deborah Goldsmith (2008-03-30):
+# We received a bug report claiming that the tz database UTC offset for
+# Asia/Choibalsan (GMT+09:00) is incorrect, and that it should be GMT
+# +08:00 instead. Different sources appear to disagree with the tz
+# database on this, e.g.:
+#
+# 
+# http://www.timeanddate.com/worldclock/city.html?n=1026
+# 
+# 
+# http://www.worldtimeserver.com/current_time_in_MN.aspx
+# 
+#
+# both say GMT+08:00.
+
+# From Steffen Thorsen (2008-03-31):
+# eznis airways, which operates several domestic flights, has a flight
+# schedule here:
+# 
+# http://www.eznis.com/Container.jsp?id=112
+# 
+# (click the English flag for English)
+#
+# There it appears that flights between Choibalsan and Ulaanbatar arrive
+# about 1:35 - 1:50 hours later in local clock time, no matter the
+# direction, while Ulaanbaatar-Khvod takes 2 hours in the Eastern
+# direction and 3:35 back, which indicates that Ulaanbatar and Khvod are
+# in different time zones (like we know about), while Choibalsan and
+# Ulaanbatar are in the same time zone (correction needed).
+
+# From Arthur David Olson (2008-05-19):
+# Assume that Choibalsan is indeed offset by 8:00.
+# XXX--in the absence of better information, assume that transition
+# was at the start of 2008-03-31 (the day of Steffen Thorsen's report);
+# this is almost surely wrong.
+
 # 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	-
@@ -1411,7 +1469,8 @@ Zone	Asia/Ulaanbaatar 7:07:32 -	LMT	1905 Aug
 Zone	Asia/Choibalsan	7:38:00 -	LMT	1905 Aug
 			7:00	-	ULAT	1978
 			8:00	-	ULAT	1983 Apr
-			9:00	Mongol	CHO%sT	# Choibalsan Time
+			9:00	Mongol	CHO%sT	2008 Mar 31 # Choibalsan Time
+			8:00	Mongol	CHO%sT
 
 # Nepal
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -1461,10 +1520,45 @@ Zone	Asia/Muscat	3:54:20 -	LMT	1920
 # The minister told a news conference that the experiment had rather
 # shown 8 per cent higher consumption of electricity.
 
+# From Alex Krivenyshev (2008-05-15):
+# 
+# Here is an article that Pakistan plan to introduce Daylight Saving Time 
+# on June 1, 2008 for 3 months.
+# 
+# "... The federal cabinet on Wednesday announced a new conservation plan to help 
+# reduce load shedding by approving the closure of commercial centres at 9pm and 
+# moving clocks forward by one hour for the next three months. 
+# ...."
+# 
+# 
+# http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html
+# 
+# OR
+# 
+# http://www.dailytimes.com.pk/default.asp?page=2008%5C05%5C15%5Cstory_15-5-2008_pg1_4
+# 
+
+# From Arthur David Olson (2008-05-19):
+# XXX--midnight transitions is a guess; 2008 only is a guess.
+
+# From Alexander Krivenyshev (2008-08-28):
+# Pakistan government has decided to keep the watches one-hour advanced
+# for another 2 months--plan to return to Standard Time on October 31
+# instead of August 31.
+#
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html
+# 
+# OR
+# 
+# http://dailymailnews.com/200808/28/news/dmbrn03.html
+# 
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule Pakistan	2002	only	-	Apr	Sun>=2	0:01	1:00	S
 Rule Pakistan	2002	only	-	Oct	Sun>=2	0:01	0	-
+Rule Pakistan	2008	only	-	Jun	1	0:00	1:00	S
+Rule Pakistan	2008	only	-	Nov	1	0:00	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Karachi	4:28:12 -	LMT	1907
 			5:30	-	IST	1942 Sep
@@ -1584,6 +1678,23 @@ Zone	Asia/Karachi	4:28:12 -	LMT	1907
 # For lack of better information, predict that future changes will be
 # the 2nd Thursday of September at 02:00.
 
+# From Alexander Krivenyshev (2008-08-28):
+# Here is an article, that Mideast running on different clocks at Ramadan.
+#
+# Gaza Strip (as Egypt) ended DST at midnight Thursday (Aug 28, 2008), while
+# the West Bank will end Daylight Saving Time at midnight Sunday (Aug 31, 2008).
+#
+# 
+# http://www.guardian.co.uk/world/feedarticle/7759001
+# 
+# 
+# http://www.abcnews.go.com/International/wireStory?id=5676087
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html
+# 
+
 # The rules for Egypt are stolen from the `africa' file.
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
@@ -1599,7 +1710,8 @@ Rule Palestine	2004	only	-	Oct	 1	1:00	0	-
 Rule Palestine	2005	only	-	Oct	 4	2:00	0	-
 Rule Palestine	2006	max	-	Apr	 1	0:00	1:00	S
 Rule Palestine	2006	only	-	Sep	22	0:00	0	-
-Rule Palestine	2007	max	-	Sep	Thu>=8	2:00	0	-
+Rule Palestine	2007	only	-	Sep	Thu>=8	2:00	0	-
+Rule Palestine	2008	max	-	Aug	lastThu	2:00	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
diff --git a/timezone/australasia b/timezone/australasia
index 30d695ff5a..41608cdc34 100644
--- a/timezone/australasia
+++ b/timezone/australasia
@@ -1,4 +1,4 @@
-# @(#)australasia	8.8
+# @(#)australasia	8.9
 # 
 
 # This file also includes Pacific islands.
@@ -1346,7 +1346,7 @@ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
 # * Tonga will introduce DST in November
 #
 # I was given this link by John Letts:
-# 
+# 
 # http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm
 # 
 #
@@ -1356,7 +1356,7 @@ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
 # (12 + 1 hour DST).
 
 # From Arthur David Olson (1999-09-20):
-# According to 
 # http://www.tongaonline.com/news/sept1799.html
 # :
 # "Daylight Savings Time will take effect on Oct. 2 through April 15, 2000
diff --git a/timezone/europe b/timezone/europe
index 73eed00fc2..7bb9864733 100644
--- a/timezone/europe
+++ b/timezone/europe
@@ -1,4 +1,4 @@
-# @(#)europe	8.12
+# @(#)europe	8.18
 # 
 
 # This data is by no means authoritative; if you think you know better,
@@ -457,7 +457,7 @@ Rule	EU	1979	1995	-	Sep	lastSun	 1:00u	0	-
 Rule	EU	1981	max	-	Mar	lastSun	 1:00u	1:00	S
 Rule	EU	1996	max	-	Oct	lastSun	 1:00u	0	-
 # The most recent directive covers the years starting in 2002.  See:
-# 
 # Directive 2000/84/EC of the European Parliament and of the Council
 # of 19 January 2001 on summer-time arrangements.
 # 
@@ -480,9 +480,48 @@ Rule	C-Eur	1940	only	-	Apr	 1	 2:00s	1:00	S
 Rule	C-Eur	1942	only	-	Nov	 2	 2:00s	0	-
 Rule	C-Eur	1943	only	-	Mar	29	 2:00s	1:00	S
 Rule	C-Eur	1943	only	-	Oct	 4	 2:00s	0	-
-Rule	C-Eur	1944	only	-	Apr	 3	 2:00s	1:00	S
+Rule	C-Eur	1944	1945	-	Apr	Mon>=1	 2:00s	1:00	S
 # Whitman gives 1944 Oct 7; go with Shanks & Pottenger.
 Rule	C-Eur	1944	only	-	Oct	 2	 2:00s	0	-
+# From Jesper Norgaard Welen (2008-07-13):
+#
+# I found what is probably a typo of 2:00 which should perhaps be 2:00s
+# in the C-Eur rule from tz database version 2008d (this part was
+# corrected in version 2008d). The circumstancial evidence is simply the
+# tz database itself, as seen below:
+#
+# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15  0:01
+#    0:00 France WE%sT 1945 Sep 16  3:00
+#
+# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+#    0:00 France WE%sT 1945 Sep 16 3:00
+#
+# Zone Europe/Belgrade 1:22:00 - LMT 1884
+#    1:00 1:00 CEST 1945 Sep 16  2:00s
+#
+# Rule France 1945 only - Sep 16  3:00 0 -
+# Rule Belgium 1945 only - Sep 16  2:00s 0 -
+# Rule Neth 1945 only - Sep 16 2:00s 0 -
+#
+# The rule line to be changed is:
+#
+# Rule C-Eur 1945 only - Sep 16  2:00 0 -
+#
+# It seems that Paris, Monaco, Rule France, Rule Belgium all agree on
+# 2:00 standard time, e.g. 3:00 local time.  However there are no
+# countries that use C-Eur rules in September 1945, so the only items
+# affected are apparently these ficticious zones that translates acronyms
+# CET and MET:
+#
+# Zone CET  1:00 C-Eur CE%sT
+# Zone MET  1:00 C-Eur ME%sT
+#
+# It this is right then the corrected version would look like:
+#
+# Rule C-Eur 1945 only - Sep 16  2:00s 0 -
+#
+# A small step for mankind though 8-)
+Rule	C-Eur	1945	only	-	Sep	16	 2:00s	0	-
 Rule	C-Eur	1977	1980	-	Apr	Sun>=1	 2:00s	1:00	S
 Rule	C-Eur	1977	only	-	Sep	lastSun	 2:00s	0	-
 Rule	C-Eur	1978	only	-	Oct	 1	 2:00s	0	-
@@ -725,7 +764,8 @@ Rule	Bulg	1981	only	-	Sep	27	 2:00	0	-
 Zone	Europe/Sofia	1:33:16 -	LMT	1880
 			1:56:56	-	IMT	1894 Nov 30 # Istanbul MT?
 			2:00	-	EET	1942 Nov  2  3:00
-			1:00	C-Eur	CE%sT	1945 Apr  2  3:00
+			1:00	C-Eur	CE%sT	1945
+			1:00	-	CET	1945 Apr 2 3:00
 			2:00	-	EET	1979 Mar 31 23:00
 			2:00	Bulg	EE%sT	1982 Sep 26  2:00
 			2:00	C-Eur	EE%sT	1991
@@ -1093,33 +1133,40 @@ Zone	Europe/Paris	0:09:21 -	LMT	1891 Mar 15  0:01
 # [See tz-link.htm for the URL.]
 
 # From Joerg Schilling (2002-10-23):
-# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by 
+# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by
+# 
 # General [Nikolai] Bersarin.
 
 # From Paul Eggert (2003-03-08):
 # 
+# http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf
+# 
 # says that Bersarin issued an order to use Moscow time on May 20.
 # However, Moscow did not observe daylight saving in 1945, so
 # this was equivalent to CEMT (GMT+3), not GMT+4.
 
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Germany	1945	only	-	Apr	 2	2:00s	1:00	S
-Rule	Germany	1945	only	-	May	24	2:00	2:00	M # Midsummer
-Rule	Germany	1945	only	-	Sep	24	3:00	1:00	S
-Rule	Germany	1945	only	-	Nov	18	2:00s	0	-
 Rule	Germany	1946	only	-	Apr	14	2:00s	1:00	S
 Rule	Germany	1946	only	-	Oct	 7	2:00s	0	-
 Rule	Germany	1947	1949	-	Oct	Sun>=1	2:00s	0	-
-Rule	Germany	1947	only	-	Apr	 6	2:00s	1:00	S
+# http://www.ptb.de/de/org/4/44/441/salt.htm says the following transition
+# occurred at 3:00 MEZ, not the 2:00 MEZ given in Shanks & Pottenger.
+# Go with the PTB.
+Rule	Germany	1947	only	-	Apr	 6	3:00s	1:00	S
 Rule	Germany	1947	only	-	May	11	2:00s	2:00	M
 Rule	Germany	1947	only	-	Jun	29	3:00	1:00	S
 Rule	Germany	1948	only	-	Apr	18	2:00s	1:00	S
 Rule	Germany	1949	only	-	Apr	10	2:00s	1:00	S
+
+Rule SovietZone	1945	only	-	May	24	2:00	2:00	M # Midsummer
+Rule SovietZone	1945	only	-	Sep	24	3:00	1:00	S
+Rule SovietZone	1945	only	-	Nov	18	2:00s	0	-
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Europe/Berlin	0:53:28 -	LMT	1893 Apr
-			1:00	C-Eur	CE%sT	1945 Apr 2 2:00
+			1:00	C-Eur	CE%sT	1945 May 24 2:00
+			1:00 SovietZone	CE%sT	1946
 			1:00	Germany	CE%sT	1980
 			1:00	EU	CE%sT
 
@@ -1196,7 +1243,7 @@ Rule	Hungary	1980	only	-	Apr	 6	 1:00	1:00	S
 Zone	Europe/Budapest	1:16:20 -	LMT	1890 Oct
 			1:00	C-Eur	CE%sT	1918
 			1:00	Hungary	CE%sT	1941 Apr  6  2:00
-			1:00	C-Eur	CE%sT	1945 May  1 23:00
+			1:00	C-Eur	CE%sT	1945
 			1:00	Hungary	CE%sT	1980 Sep 28  2:00s
 			1:00	EU	CE%sT
 
@@ -2113,7 +2160,8 @@ Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Europe/Belgrade	1:22:00	-	LMT	1884
 			1:00	-	CET	1941 Apr 18 23:00
-			1:00	C-Eur	CE%sT	1945 May  8  2:00s
+			1:00	C-Eur	CE%sT	1945
+			1:00	-	CET	1945 May 8 2:00s
 			1:00	1:00	CEST	1945 Sep 16  2:00s
 # Metod Kozelj reports that the legal date of
 # transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
@@ -2305,6 +2353,27 @@ Zone	Europe/Zurich	0:34:08 -	LMT	1848 Sep 12
 # (on a non-government server though) describing dates between 2002 and 2006:
 # http://www.alomaliye.com/bkk_2002_3769.htm
 
+# From Sue Williams (2008-08-11):
+# I spotted this news article about a potential change in Turkey.
+#
+# 
+# http://www.hurriyet.com.tr/english/domestic/9626174.asp?scr=1
+# 
+
+# From Sue Williams (2008-08-20):
+# This article says that around the end of March 2011, Turkey wants to
+# adjust the clocks forward by 1/2 hour and stay that way permanently.
+# The article indicates that this is a change in timezone offset in addition
+# to stopping observance of DST.
+# This proposal has not yet been approved.
+#
+# Read more here...
+#
+# Turkey to abandon daylight saving time in 2011
+# 
+# http://www.turkishdailynews.com.tr/article.php?enewsid=112989
+# 
+
 # 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	-
diff --git a/timezone/leapseconds b/timezone/leapseconds
index 35df858d79..a2f4f0be37 100644
--- a/timezone/leapseconds
+++ b/timezone/leapseconds
@@ -1,4 +1,4 @@
-# @(#)leapseconds	8.5
+# @(#)leapseconds	8.6
 
 # Allowance for leapseconds added to each timezone file.
 
@@ -44,40 +44,49 @@ Leap	1995	Dec	31	23:59:60	+	S
 Leap	1997	Jun	30	23:59:60	+	S
 Leap	1998	Dec	31	23:59:60	+	S
 Leap	2005	Dec	31	23:59:60	+	S
+Leap	2008	Dec	31	23:59:60	+	S
 
 # 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				
+# 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
-# Internet  : services.iers@obspm.fr
+# e-mail    : services.iers@obspm.fr
+# http://hpiers.obspm.fr/eop-pc
 #
-# Paris, 18 January 2008
+# Paris, 4 July 2008
 #
-# Bulletin C 35
+# Bulletin C 36
 #
-# To authorities responsible		
+# To authorities responsible
 # for the measurement and
-# distribution of time	
+# distribution of time
 #
-# INFORMATION ON UTC - TAI
+# UTC TIME STEP
+# on the 1st of January 2009
 #
-# NO positive leap second will be introduced at the end of June 2008.
-# The difference between Coordinated Universal Time UTC and the
-# International Atomic Time TAI is :		
+# A positive leap second will be introduced at the end of December 2008.
+# The sequence of dates of the UTC second markers will be:		
 #
-# from 2006 January 1, 0h UTC, until further notice : UTC-TAI = -33 s
+# 2008 December 31,     23h 59m 59s
+# 2008 December 31,     23h 59m 60s
+# 2009 January   1,      0h  0m  0s
+#
+# The difference between UTC and the International Atomic Time TAI is:
+#
+# from 2006 January 1, 0h UTC, to 2009 January 1  0h UTC  : UTC-TAI = - 33s
+# from 2009 January 1, 0h UTC, until further notice       : UTC-TAI = - 34s
 #
 # 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
+# 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 the IERS
+# Head		
+# Earth Orientation Center of IERS
 # Observatoire de Paris, France
diff --git a/timezone/northamerica b/timezone/northamerica
index 60e5d51e00..b8b333cc56 100644
--- a/timezone/northamerica
+++ b/timezone/northamerica
@@ -1,4 +1,4 @@
-# @(#)northamerica	8.23
+# @(#)northamerica	8.24
 # 
 
 # also includes Central America and the Caribbean
@@ -2076,8 +2076,8 @@ Zone	America/Antigua	-4:07:12 -	LMT	1912 Mar 2
 # http://www.jonesbahamas.com/?c=45&a=10412
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Bahamas	1964	2006	-	Oct	lastSun	2:00	0	S
-Rule	Bahamas	1964	1986	-	Apr	lastSun	2:00	1:00	D
+Rule	Bahamas	1964	1975	-	Oct	lastSun	2:00	0	S
+Rule	Bahamas	1964	1975	-	Apr	lastSun	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	1976
diff --git a/timezone/southamerica b/timezone/southamerica
index 43f73d3238..e2244cf237 100644
--- a/timezone/southamerica
+++ b/timezone/southamerica
@@ -1,4 +1,4 @@
-# @(#)southamerica	8.19
+# @(#)southamerica	8.27
 # 
 
 # This data is by no means authoritative; if you think you know better,
@@ -164,9 +164,22 @@ Rule	Arg	2000	only	-	Mar	3	0:00	0	-
 # From Paul Eggert (2007-12-22):
 # For dates after mid-2008, the following rules are my guesses and
 # are quite possibly wrong, but are more likely than no DST at all.
+
+# From Alexander Krivenyshev (2008-09-05):
+# As per message from Carlos Alberto Fonseca Arauz (Nicaragua),
+# Argentina will start DST on Sunday October 19, 2008.
+#
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_argentina03.html
+# 
+# OR
+# 
+# http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)
+# 
+
 Rule	Arg	2007	only	-	Dec	30	0:00	1:00	S
 Rule	Arg	2008	max	-	Mar	Sun>=15	0:00	0	-
-Rule	Arg	2008	max	-	Oct	Sun>=1	0:00	1:00	S
+Rule	Arg	2008	max	-	Oct	Sun>=15	0:00	1:00	S
  
 # From Mariano Absatz (2004-05-21):
 # Today it was officially published that the Province of Mendoza is changing
@@ -294,14 +307,14 @@ Rule	Arg	2008	max	-	Oct	Sun>=1	0:00	1:00	S
 # back in 2004, when these provinces changed to UTC-4 for a few days, I
 # mailed them personally and never got an answer).
 
-# From Arthur David Olson (2008-03-15):
-# Until there's better information, asssume San Luis was like San Juan
-# rather than Mendoza (since San Juan has a simpler DST history).
-
+# From Paul Eggert (2008-06-30):
 # Unless otherwise specified, data are from Shanks & Pottenger through 1992,
 # from the IATA otherwise.  As noted below, Shanks & Pottenger say that
-# America/Cordoba split into 6 subregions during 1991/1992, but we
-# haven't verified this yet so for now we'll keep it a single region.
+# America/Cordoba split into 6 subregions during 1991/1992, one of which
+# was America/San_Luis, but we haven't verified this yet so for now we'll
+# keep America/Cordoba a single region rather than splitting it into the
+# other 5 subregions.
+
 #
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 #
@@ -316,14 +329,12 @@ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
 #
 # Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC),
 # Formosa (FM), Salta (SA), Santiago del Estero (SE), Cordoba (CB),
-# San Luis (SL), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
+# La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
 #
 # Shanks & Pottenger also make the following claims, which we haven't verified:
 # - Formosa switched to -3:00 on 1991-01-07.
 # - Misiones switched to -3:00 on 1990-12-29.
 # - Chaco switched to -3:00 on 1991-01-04.
-# - San Luis switched to -4:00 on 1990-03-14, then to -3:00 on 1990-10-15,
-#   then to -4:00 on 1991-03-01, then to -3:00 on 1991-06-01.
 # - Santiago del Estero switched to -4:00 on 1991-04-01,
 #   then to -3:00 on 1991-04-26.
 #
@@ -425,10 +436,13 @@ Zone America/Argentina/San_Luis -4:25:24 - LMT	1894 Oct 31
 			-4:16:48 -	CMT	1920 May
 			-4:00	-	ART	1930 Dec
 			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1991 Mar  1
-			-4:00	-	WART	1991 May  7
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
+			-3:00	Arg	AR%sT	1990
+			-3:00	1:00	ARST	1990 Mar 14
+			-4:00	-	WART	1990 Oct 15
+			-4:00	1:00	WARST	1991 Mar  1
+			-4:00	-	WART	1991 Jun  1
+			-3:00	-	ART	1999 Oct  3
+			-4:00	1:00	WARST	2000 Mar  3
 			-3:00	-	ART	2004 May 31
 			-4:00	-	WART	2004 Jul 25
 			-3:00	Arg	AR%sT	2008 Jan 21
@@ -540,12 +554,86 @@ Zone	America/La_Paz	-4:32:36 -	LMT	1890
 # Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:
 # http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975
 
+# From Paul Schulze (2008-06-24):
+# ...by law number 11.662 of April 24, 2008 (published in the "Diario
+# Oficial da Uniao"...) in Brazil there are changes in the timezones,
+# effective today (00:00am at June 24, 2008) as follows:
+#
+# a) The timezone UTC+5 is e[x]tinguished, with all the Acre state and the
+# part of the Amazonas state that had this timezone now being put to the
+# timezone UTC+4
+# b) The whole Para state now is put at timezone UTC+3, instead of just
+# part of it, as was before.
+#
+# This change follows a proposal of senator Tiao Viana of Acre state, that
+# proposed it due to concerns about open television channels displaying
+# programs inappropriate to youths in the states that had the timezone
+# UTC+5 too early in the night. In the occasion, some more corrections
+# were proposed, trying to unify the timezones of any given state. This
+# change modifies timezone rules defined in decree 2.784 of 18 June,
+# 1913.
+
+# From Rodrigo Severo (2008-06-24):
+# Just correcting the URL:
+# 
+# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=3Ddo&secao=3D1&pagina=3D1&data=3D25/04/2008
+# 
+#
+# As a result of the above Decree I believe the America/Rio_Branco
+# timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
+# be created to represent the the west side of the Para State. I
+# suggest this new timezone be called Santarem as the most
+# important/populated city in the affected area.
+#
+# This new timezone would be the same as the Rio_Branco timezone up to
+# the 2008/06/24 change which would be to UTC-3 instead of UTC-4.
+
+# From Alex Krivenyshev (2008-06-24):
+# This is a quick reference page for New and Old Brazil Time Zones map.
+# 
+# http://www.worldtimezone.com/brazil-time-new-old.php
+# 
+#
+# - 4 time zones replaced by 3 time zones-eliminating time zone UTC- 05
+# (state Acre and the part of the Amazonas will be UTC/GMT- 04) - western
+# part of Par state is moving to one timezone UTC- 03 (from UTC -04).
+
 # From Paul Eggert (2002-10-10):
 # The official decrees referenced below are mostly taken from
 # 
 # Decretos sobre o Horario de Verao no Brasil
 # .
 
+# From Steffen Thorsen (2008-08-29):
+# As announced by the government and many newspapers in Brazil late
+# yesterday, Brazil will start DST on 2008-10-19 (need to change rule) and
+# it will end on 2009-02-15 (current rule for Brazil is fine). Based on
+# past years experience with the elections, there was a good chance that
+# the start was postponed to November, but it did not happen this year.
+#
+# It has not yet been posted to http://pcdsh01.on.br/DecHV.html
+#
+# An official page about it:
+# 
+# http://www.mme.gov.br/site/news/detail.do?newsId=16722
+# 
+# Note that this link does not always work directly, but must be accessed
+# by going to
+# 
+#
+# One example link that works directly:
+# 
+# http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54
+# (Portuguese)
+# 
+#
+# We have a written a short article about it as well:
+# 
+# http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
+# 
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 # Decree 20,466 (1931-10-01)
 # Decree 21,896 (1932-01-10)
@@ -662,13 +750,13 @@ Rule	Brazil	2000	only	-	Feb	27	 0:00	0	-
 Rule	Brazil	2000	2001	-	Oct	Sun>=8	 0:00	1:00	S
 Rule	Brazil	2001	2006	-	Feb	Sun>=15	 0:00	0	-
 # Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
-# 
+# 4,399
 Rule	Brazil	2002	only	-	Nov	 3	 0:00	1:00	S
 # Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
-# 
+# 4,844
 Rule	Brazil	2003	only	-	Oct	19	 0:00	1:00	S
 # Decree 5,223 (2004-10-01) reestablishes DST in MT.
-# 
+# 5,223
 Rule	Brazil	2004	only	-	Nov	 2	 0:00	1:00	S
 # Decree 5,539 (2005-09-19),
 # adopted by the same states as before.
@@ -677,17 +765,16 @@ Rule	Brazil	2005	only	-	Oct	16	 0:00	1:00	S
 # adopted by the same states as before.
 Rule	Brazil	2006	only	-	Nov	 5	 0:00	1:00	S
 Rule	Brazil	2007	only	-	Feb	25	 0:00	0	-
-# (Decree number not yet known)
-# http://www.brasil.gov.br/noticias/ultimas_noticias/horario_verao070920/
-# (2007-09-20) after a heads-up from Steffen Thorsen:
-Rule	Brazil	2007	max	-	Oct	Sun>=8	 0:00	1:00	S
+# Decree 6,212 (2007-09-26),
+# adopted by the same states as before.
+Rule	Brazil	2007	only	-	Oct	Sun>=8	 0:00	1:00	S
 Rule	Brazil	2008	max	-	Feb	Sun>=15	 0:00	0	-
+Rule	Brazil	2008	max	-	Oct	Sun>=15	 0:00	1:00	S
 # The latest ruleset listed above says that the following states observe DST:
 # DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
 # For dates after mid-2008, the above rules with TO="max" are guesses
 # and are quite possibly wrong, but are more likely than no DST at all.
 
-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 #
 # Fernando de Noronha (administratively part of PE)
@@ -713,6 +800,13 @@ Zone America/Belem	-3:13:56 -	LMT	1914
 			-3:00	Brazil	BR%sT	1988 Sep 12
 			-3:00	-	BRT
 #
+# west Para (PA)
+# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
+Zone America/Santarem	-3:38:48 -	LMT	1914
+			-4:00	Brazil	AM%sT	1988 Sep 12
+			-4:00	-	AMT	2008 Jun 24 00:00
+			-3:00	-	BRT
+#
 # Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),
 # Paraiba (PB)
 Zone America/Fortaleza	-2:34:00 -	LMT	1914
@@ -775,8 +869,7 @@ Zone America/Cuiaba	-3:44:20 -	LMT	1914
 			-4:00	-	AMT	2004 Oct  1
 			-4:00	Brazil	AM%sT
 #
-# west Para (PA), Rondonia (RO)
-# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
+# Rondonia (RO)
 Zone America/Porto_Velho -4:15:36 -	LMT	1914
 			-4:00	Brazil	AM%sT	1988 Sep 12
 			-4:00	-	AMT
@@ -803,13 +896,14 @@ Zone America/Eirunepe	-4:39:28 -	LMT	1914
 			-5:00	Brazil	AC%sT	1988 Sep 12
 			-5:00	-	ACT	1993 Sep 28
 			-5:00	Brazil	AC%sT	1994 Sep 22
-			-5:00	-	ACT
+			-5:00	-	ACT	2008 Jun 24 00:00
+			-4:00	-	AMT
 #
 # Acre (AC)
 Zone America/Rio_Branco	-4:31:12 -	LMT	1914
 			-5:00	Brazil	AC%sT	1988 Sep 12
-			-5:00	-	ACT
-
+			-5:00	-	ACT	2008 Jun 24 00:00
+			-4:00	-	AMT
 
 # Chile
 
@@ -856,7 +950,7 @@ Zone America/Rio_Branco	-4:31:12 -	LMT	1914
 # http://www.horaoficial.cl/cambio.htm
 # .
 
-# From José Miguel Garrido (2008-03-05):
+# From Jose Miguel Garrido (2008-03-05):
 # ...
 # You could see the announces of the change on 
 # 
diff --git a/timezone/zone.tab b/timezone/zone.tab
index 1647036c0e..39cc55f816 100644
--- a/timezone/zone.tab
+++ b/timezone/zone.tab
@@ -1,4 +1,4 @@
-# @(#)zone.tab	8.16
+# @(#)zone.tab	8.18
 #
 # TZ zone descriptions
 #
@@ -92,7 +92,8 @@ BR	-1259-03831	America/Bahia	Bahia
 BR	-2332-04637	America/Sao_Paulo	S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
 BR	-2027-05437	America/Campo_Grande	Mato Grosso do Sul
 BR	-1535-05605	America/Cuiaba	Mato Grosso
-BR	-0846-06354	America/Porto_Velho	W Para, Rondonia
+BR	-0226-05452	America/Santarem	W Para
+BR	-0846-06354	America/Porto_Velho	Rondonia
 BR	+0249-06040	America/Boa_Vista	Roraima
 BR	-0308-06001	America/Manaus	E Amazonas
 BR	-0640-06952	America/Eirunepe	W Amazonas
-- 
cgit 1.4.1