diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2012-09-26 01:10:42 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2018-05-31 22:51:55 +0200 |
commit | 9664bee729d487bcc0a0bc35859f8e13d5421c75 (patch) | |
tree | b428a16618e36ed864a8d76ea3435e19a452bf90 /source/l/glibc | |
parent | 75a4a592e5ccda30715f93563d741b83e0dcf39e (diff) | |
download | current-9664bee729d487bcc0a0bc35859f8e13d5421c75.tar.gz current-9664bee729d487bcc0a0bc35859f8e13d5421c75.tar.xz |
Slackware 14.0slackware-14.0
Wed Sep 26 01:10:42 UTC 2012
Slackware 14.0 x86_64 stable is released!
We're perfectionists here at Slackware, so this release has been a long
time a-brewing. But we think you'll agree that it was worth the wait.
Slackware 14.0 combines modern components, ease of use, and flexible
configuration... our "KISS" philosophy demands it.
The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a
dual-sided
32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware
project by picking up a copy from store.slackware.com. We're taking
pre-orders now, and offer a discount if you sign up for a subscription.
Thanks to everyone who helped make this happen. The Slackware team, the
upstream developers, and (of course) the awesome Slackware user
community.
Have fun! :-)
Diffstat (limited to 'source/l/glibc')
-rw-r--r-- | source/l/glibc/doinst.sh-glibc | 36 | ||||
-rw-r--r-- | source/l/glibc/doinst.sh-glibc-solibs | 36 | ||||
-rw-r--r-- | source/l/glibc/glibc-2.14-reexport-rpc-interface.patch | 26 | ||||
-rw-r--r-- | source/l/glibc/glibc-2.14-reinstall-nis-rpc-headers.patch | 27 | ||||
-rw-r--r-- | source/l/glibc/glibc-2.14.1-fixes-1.patch | 159 | ||||
-rw-r--r-- | source/l/glibc/glibc-2.15-revert-c5a0802a.diff | 226 | ||||
-rw-r--r-- | source/l/glibc/glibc-2.15.nscd-race-fix.diff | 47 | ||||
-rwxr-xr-x | source/l/glibc/glibc.SlackBuild | 34 | ||||
-rw-r--r-- | source/l/glibc/glibc.git-6ee65ed6ddbf04402fad0bec6aa9c73b9d982ae4.diff | 322 | ||||
-rw-r--r-- | source/l/glibc/glibc.strtod.CVE-2012-3480.diff | 407 | ||||
-rw-r--r-- | source/l/glibc/slack-desc.glibc-zoneinfo | 2 | ||||
-rw-r--r-- | source/l/glibc/slack-desc.glibc-zoneinfo.olson | 19 | ||||
-rw-r--r-- | source/l/glibc/timezone-scripts/timeconfig | 90 |
13 files changed, 1388 insertions, 43 deletions
diff --git a/source/l/glibc/doinst.sh-glibc b/source/l/glibc/doinst.sh-glibc index 427723c2c..1b3e03e3e 100644 --- a/source/l/glibc/doinst.sh-glibc +++ b/source/l/glibc/doinst.sh-glibc @@ -111,43 +111,43 @@ rm -f etc/profile.d/glibc.sh.new # In case there's no ldconfig, make the links manually: if [ ! -x /sbin/ldconfig ]; then ( cd lib ; rm -rf libnss_nis.so.2 ) -( cd lib ; ln -sf libnss_nis-2.13.so libnss_nis.so.2 ) +( cd lib ; ln -sf libnss_nis-2.15.so libnss_nis.so.2 ) ( cd lib ; rm -rf libm.so.6 ) -( cd lib ; ln -sf libm-2.13.so libm.so.6 ) +( cd lib ; ln -sf libm-2.15.so libm.so.6 ) ( cd lib ; rm -rf libnss_files.so.2 ) -( cd lib ; ln -sf libnss_files-2.13.so libnss_files.so.2 ) +( cd lib ; ln -sf libnss_files-2.15.so libnss_files.so.2 ) ( cd lib ; rm -rf libresolv.so.2 ) -( cd lib ; ln -sf libresolv-2.13.so libresolv.so.2 ) +( cd lib ; ln -sf libresolv-2.15.so libresolv.so.2 ) ( cd lib ; rm -rf libnsl.so.1 ) -( cd lib ; ln -sf libnsl-2.13.so libnsl.so.1 ) +( cd lib ; ln -sf libnsl-2.15.so libnsl.so.1 ) ( cd lib ; rm -rf libutil.so.1 ) -( cd lib ; ln -sf libutil-2.13.so libutil.so.1 ) +( cd lib ; ln -sf libutil-2.15.so libutil.so.1 ) ( cd lib ; rm -rf libnss_compat.so.2 ) -( cd lib ; ln -sf libnss_compat-2.13.so libnss_compat.so.2 ) +( cd lib ; ln -sf libnss_compat-2.15.so libnss_compat.so.2 ) ( cd lib ; rm -rf libthread_db.so.1 ) ( cd lib ; ln -sf libthread_db-1.0.so libthread_db.so.1 ) ( cd lib ; rm -rf libnss_hesiod.so.2 ) -( cd lib ; ln -sf libnss_hesiod-2.13.so libnss_hesiod.so.2 ) +( cd lib ; ln -sf libnss_hesiod-2.15.so libnss_hesiod.so.2 ) ( cd lib ; rm -rf libanl.so.1 ) -( cd lib ; ln -sf libanl-2.13.so libanl.so.1 ) +( cd lib ; ln -sf libanl-2.15.so libanl.so.1 ) ( cd lib ; rm -rf libcrypt.so.1 ) -( cd lib ; ln -sf libcrypt-2.13.so libcrypt.so.1 ) +( cd lib ; ln -sf libcrypt-2.15.so libcrypt.so.1 ) ( cd lib ; rm -rf libBrokenLocale.so.1 ) -( cd lib ; ln -sf libBrokenLocale-2.13.so libBrokenLocale.so.1 ) +( cd lib ; ln -sf libBrokenLocale-2.15.so libBrokenLocale.so.1 ) ( cd lib ; rm -rf ld-linux.so.2 ) -( cd lib ; ln -sf ld-2.13.so ld-linux.so.2 ) +( cd lib ; ln -sf ld-2.15.so ld-linux.so.2 ) ( cd lib ; rm -rf libdl.so.2 ) -( cd lib ; ln -sf libdl-2.13.so libdl.so.2 ) +( cd lib ; ln -sf libdl-2.15.so libdl.so.2 ) ( cd lib ; rm -rf libnss_dns.so.2 ) -( cd lib ; ln -sf libnss_dns-2.13.so libnss_dns.so.2 ) +( cd lib ; ln -sf libnss_dns-2.15.so libnss_dns.so.2 ) ( cd lib ; rm -rf libpthread.so.0 ) -( cd lib ; ln -sf libpthread-2.13.so libpthread.so.0 ) +( cd lib ; ln -sf libpthread-2.15.so libpthread.so.0 ) ( cd lib ; rm -rf libnss_nisplus.so.2 ) -( cd lib ; ln -sf libnss_nisplus-2.13.so libnss_nisplus.so.2 ) +( cd lib ; ln -sf libnss_nisplus-2.15.so libnss_nisplus.so.2 ) ( cd lib ; rm -rf libc.so.6 ) -( cd lib ; ln -sf libc-2.13.so libc.so.6 ) +( cd lib ; ln -sf libc-2.15.so libc.so.6 ) ( cd lib ; rm -rf librt.so.1 ) -( cd lib ; ln -sf librt-2.13.so librt.so.1 ) +( cd lib ; ln -sf librt-2.15.so librt.so.1 ) fi # More links: diff --git a/source/l/glibc/doinst.sh-glibc-solibs b/source/l/glibc/doinst.sh-glibc-solibs index adcb4131c..f6e41a96d 100644 --- a/source/l/glibc/doinst.sh-glibc-solibs +++ b/source/l/glibc/doinst.sh-glibc-solibs @@ -91,41 +91,41 @@ rm -f etc/profile.d/glibc.sh.new # In case there's no ldconfig, make the links manually: if [ ! -x /sbin/ldconfig ]; then ( cd lib ; rm -rf libnss_nis.so.2 ) -( cd lib ; ln -sf libnss_nis-2.13.so libnss_nis.so.2 ) +( cd lib ; ln -sf libnss_nis-2.15.so libnss_nis.so.2 ) ( cd lib ; rm -rf libm.so.6 ) -( cd lib ; ln -sf libm-2.13.so libm.so.6 ) +( cd lib ; ln -sf libm-2.15.so libm.so.6 ) ( cd lib ; rm -rf libnss_files.so.2 ) -( cd lib ; ln -sf libnss_files-2.13.so libnss_files.so.2 ) +( cd lib ; ln -sf libnss_files-2.15.so libnss_files.so.2 ) ( cd lib ; rm -rf libresolv.so.2 ) -( cd lib ; ln -sf libresolv-2.13.so libresolv.so.2 ) +( cd lib ; ln -sf libresolv-2.15.so libresolv.so.2 ) ( cd lib ; rm -rf libnsl.so.1 ) -( cd lib ; ln -sf libnsl-2.13.so libnsl.so.1 ) +( cd lib ; ln -sf libnsl-2.15.so libnsl.so.1 ) ( cd lib ; rm -rf libutil.so.1 ) -( cd lib ; ln -sf libutil-2.13.so libutil.so.1 ) +( cd lib ; ln -sf libutil-2.15.so libutil.so.1 ) ( cd lib ; rm -rf libnss_compat.so.2 ) -( cd lib ; ln -sf libnss_compat-2.13.so libnss_compat.so.2 ) +( cd lib ; ln -sf libnss_compat-2.15.so libnss_compat.so.2 ) ( cd lib ; rm -rf libthread_db.so.1 ) ( cd lib ; ln -sf libthread_db-1.0.so libthread_db.so.1 ) ( cd lib ; rm -rf libnss_hesiod.so.2 ) -( cd lib ; ln -sf libnss_hesiod-2.13.so libnss_hesiod.so.2 ) +( cd lib ; ln -sf libnss_hesiod-2.15.so libnss_hesiod.so.2 ) ( cd lib ; rm -rf libanl.so.1 ) -( cd lib ; ln -sf libanl-2.13.so libanl.so.1 ) +( cd lib ; ln -sf libanl-2.15.so libanl.so.1 ) ( cd lib ; rm -rf libcrypt.so.1 ) -( cd lib ; ln -sf libcrypt-2.13.so libcrypt.so.1 ) +( cd lib ; ln -sf libcrypt-2.15.so libcrypt.so.1 ) ( cd lib ; rm -rf libBrokenLocale.so.1 ) -( cd lib ; ln -sf libBrokenLocale-2.13.so libBrokenLocale.so.1 ) +( cd lib ; ln -sf libBrokenLocale-2.15.so libBrokenLocale.so.1 ) ( cd lib ; rm -rf ld-linux.so.2 ) -( cd lib ; ln -sf ld-2.13.so ld-linux.so.2 ) +( cd lib ; ln -sf ld-2.15.so ld-linux.so.2 ) ( cd lib ; rm -rf libdl.so.2 ) -( cd lib ; ln -sf libdl-2.13.so libdl.so.2 ) +( cd lib ; ln -sf libdl-2.15.so libdl.so.2 ) ( cd lib ; rm -rf libnss_dns.so.2 ) -( cd lib ; ln -sf libnss_dns-2.13.so libnss_dns.so.2 ) +( cd lib ; ln -sf libnss_dns-2.15.so libnss_dns.so.2 ) ( cd lib ; rm -rf libpthread.so.0 ) -( cd lib ; ln -sf libpthread-2.13.so libpthread.so.0 ) +( cd lib ; ln -sf libpthread-2.15.so libpthread.so.0 ) ( cd lib ; rm -rf libnss_nisplus.so.2 ) -( cd lib ; ln -sf libnss_nisplus-2.13.so libnss_nisplus.so.2 ) +( cd lib ; ln -sf libnss_nisplus-2.15.so libnss_nisplus.so.2 ) ( cd lib ; rm -rf libc.so.6 ) -( cd lib ; ln -sf libc-2.13.so libc.so.6 ) +( cd lib ; ln -sf libc-2.15.so libc.so.6 ) ( cd lib ; rm -rf librt.so.1 ) -( cd lib ; ln -sf librt-2.13.so librt.so.1 ) +( cd lib ; ln -sf librt-2.15.so librt.so.1 ) fi diff --git a/source/l/glibc/glibc-2.14-reexport-rpc-interface.patch b/source/l/glibc/glibc-2.14-reexport-rpc-interface.patch new file mode 100644 index 000000000..a0a381624 --- /dev/null +++ b/source/l/glibc/glibc-2.14-reexport-rpc-interface.patch @@ -0,0 +1,26 @@ +diff --git a/include/libc-symbols.h b/include/libc-symbols.h +index 67e1ca2..5e7cca5 100644 +--- a/include/libc-symbols.h ++++ b/include/libc-symbols.h +@@ -635,7 +635,7 @@ for linking") + # define libc_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) + # define libc_hidden_def(name) hidden_def (name) + # define libc_hidden_weak(name) hidden_weak (name) +-# define libc_hidden_nolink(name, version) hidden_nolink (name, libc, version) ++# define libc_hidden_nolink(name, version) hidden_def (name) + # define libc_hidden_ver(local, name) hidden_ver (local, name) + # define libc_hidden_data_def(name) hidden_data_def (name) + # define libc_hidden_data_weak(name) hidden_data_weak (name) +diff --git a/sunrpc/Makefile b/sunrpc/Makefile +index 5134ce9..40c73d1 100644 +--- a/sunrpc/Makefile ++++ b/sunrpc/Makefile +@@ -53,7 +53,7 @@ headers-in-tirpc = $(addprefix rpc/,auth.h auth_unix.h clnt.h pmap_clnt.h \ + des_crypt.h) + headers-not-in-tirpc = $(addprefix rpc/,key_prot.h rpc_des.h) \ + $(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h +-headers = rpc/netdb.h ++headers = rpc/netdb.h $(headers-in-tirpc) $(headers-not-in-tirpc) + install-others = $(inst_sysconfdir)/rpc + generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \ + $(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen
\ No newline at end of file diff --git a/source/l/glibc/glibc-2.14-reinstall-nis-rpc-headers.patch b/source/l/glibc/glibc-2.14-reinstall-nis-rpc-headers.patch new file mode 100644 index 000000000..554b9e56c --- /dev/null +++ b/source/l/glibc/glibc-2.14-reinstall-nis-rpc-headers.patch @@ -0,0 +1,27 @@ +From bdd816a366c4e5bba5de7157d948e0c0737fb4fb Mon Sep 17 00:00:00 2001 +From: Andreas Schwab <schwab@redhat.com> +Date: Tue, 17 May 2011 17:42:30 +0200 +Subject: [PATCH] Reinstall NIS RPC headers + +--- + nis/Makefile | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/nis/Makefile b/nis/Makefile +index b5c9609..d2934d9 100644 +--- a/nis/Makefile ++++ b/nis/Makefile +@@ -23,9 +23,9 @@ subdir := nis + + aux := nis_hash + ++headers := $(wildcard rpcsvc/*.[hx]) + distribute := nss-nis.h nss-nisplus.h nis_intern.h Banner \ +- nisplus-parser.h nis_xdr.h nss \ +- $(wildcard rpcsvc/*.[hx]) ++ nisplus-parser.h nis_xdr.h nss + + # These are the databases available for the nis (and perhaps later nisplus) + # service. This must be a superset of the services in nss. +-- +1.7.5.4 diff --git a/source/l/glibc/glibc-2.14.1-fixes-1.patch b/source/l/glibc/glibc-2.14.1-fixes-1.patch new file mode 100644 index 000000000..b2b87f12f --- /dev/null +++ b/source/l/glibc/glibc-2.14.1-fixes-1.patch @@ -0,0 +1,159 @@ +Submitted By: Matt Burgess <matthew_at_linuxfromscratch_dot_org> +Date: 2011-10-07 +Initial Package Version: 2.14.1 +Upstream Status: From upstream +Origin: Matt Burgess +Description: Fixes Firefox crashes and a bug when programs link to + SDL. + +diff -Naur glibc-2.14.1.orig/elf/dl-close.c glibc-2.14.1/elf/dl-close.c +--- glibc-2.14.1.orig/elf/dl-close.c 2011-10-07 09:48:55.000000000 +0000 ++++ glibc-2.14.1/elf/dl-close.c 2011-10-07 19:43:10.346411120 +0000 +@@ -119,17 +119,8 @@ + if (map->l_direct_opencount > 0 || map->l_type != lt_loaded + || dl_close_state != not_pending) + { +- if (map->l_direct_opencount == 0) +- { +- if (map->l_type == lt_loaded) +- dl_close_state = rerun; +- else if (map->l_type == lt_library) +- { +- struct link_map **oldp = map->l_initfini; +- map->l_initfini = map->l_orig_initfini; +- _dl_scope_free (oldp); +- } +- } ++ if (map->l_direct_opencount == 0 && map->l_type == lt_loaded) ++ dl_close_state = rerun; + + /* There are still references to this object. Do nothing more. */ + if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0)) +diff -Naur glibc-2.14.1.orig/elf/dl-deps.c glibc-2.14.1/elf/dl-deps.c +--- glibc-2.14.1.orig/elf/dl-deps.c 2011-10-07 09:48:55.000000000 +0000 ++++ glibc-2.14.1/elf/dl-deps.c 2011-10-07 19:43:10.348432639 +0000 +@@ -478,6 +478,7 @@ + nneeded * sizeof needed[0]); + atomic_write_barrier (); + l->l_initfini = l_initfini; ++ l->l_free_initfini = 1; + } + + /* If we have no auxiliary objects just go on to the next map. */ +@@ -678,6 +679,7 @@ + l_initfini[nlist] = NULL; + atomic_write_barrier (); + map->l_initfini = l_initfini; ++ map->l_free_initfini = 1; + if (l_reldeps != NULL) + { + atomic_write_barrier (); +@@ -686,7 +688,7 @@ + _dl_scope_free (old_l_reldeps); + } + if (old_l_initfini != NULL) +- map->l_orig_initfini = old_l_initfini; ++ _dl_scope_free (old_l_initfini); + + if (errno_reason) + _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname, +diff -Naur glibc-2.14.1.orig/elf/dl-libc.c glibc-2.14.1/elf/dl-libc.c +--- glibc-2.14.1.orig/elf/dl-libc.c 2011-10-07 09:48:55.000000000 +0000 ++++ glibc-2.14.1/elf/dl-libc.c 2011-10-07 19:43:10.352411141 +0000 +@@ -279,6 +279,10 @@ + if (! old->dont_free) + free (old); + } ++ ++ /* Free the initfini dependency list. */ ++ if (l->l_free_initfini) ++ free (l->l_initfini); + } + + if (__builtin_expect (GL(dl_ns)[ns]._ns_global_scope_alloc, 0) != 0 +diff -Naur glibc-2.14.1.orig/elf/rtld.c glibc-2.14.1/elf/rtld.c +--- glibc-2.14.1.orig/elf/rtld.c 2011-10-07 09:48:55.000000000 +0000 ++++ glibc-2.14.1/elf/rtld.c 2011-10-07 19:43:10.355406263 +0000 +@@ -2263,6 +2263,7 @@ + lnp->dont_free = 1; + lnp = lnp->next; + } ++ l->l_free_initfini = 0; + + if (l != &GL(dl_rtld_map)) + _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0, +diff -Naur glibc-2.14.1.orig/include/link.h glibc-2.14.1/include/link.h +--- glibc-2.14.1.orig/include/link.h 2011-10-07 09:48:55.000000000 +0000 ++++ glibc-2.14.1/include/link.h 2011-10-07 19:43:10.357462703 +0000 +@@ -192,6 +192,9 @@ + during LD_TRACE_PRELINKING=1 + contains any DT_SYMBOLIC + libraries. */ ++ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be ++ freed, ie. not allocated with ++ the dummy malloc in ld.so. */ + + /* Collected information about own RPATH directories. */ + struct r_search_path_struct l_rpath_dirs; +@@ -240,9 +243,6 @@ + + /* List of object in order of the init and fini calls. */ + struct link_map **l_initfini; +- /* The init and fini list generated at startup, saved when the +- object is also loaded dynamically. */ +- struct link_map **l_orig_initfini; + + /* List of the dependencies introduced through symbol binding. */ + struct link_map_reldeps +diff -Naur glibc-2.14.1.orig/resolv/res_query.c glibc-2.14.1/resolv/res_query.c +--- glibc-2.14.1.orig/resolv/res_query.c 2011-10-07 09:48:55.000000000 +0000 ++++ glibc-2.14.1/resolv/res_query.c 2011-10-07 19:43:10.361412711 +0000 +@@ -122,6 +122,7 @@ + int *resplen2) + { + HEADER *hp = (HEADER *) answer; ++ HEADER *hp2; + int n, use_malloc = 0; + u_int oflags = statp->_flags; + +@@ -239,26 +240,25 @@ + /* __libc_res_nsend might have reallocated the buffer. */ + hp = (HEADER *) *answerp; + +- /* We simplify the following tests by assigning HP to HP2. It +- is easy to verify that this is the same as ignoring all +- tests of HP2. */ +- HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp; +- +- if (n < (int) sizeof (HEADER) && answerp2 != NULL +- && *resplen2 > (int) sizeof (HEADER)) ++ /* We simplify the following tests by assigning HP to HP2 or ++ vice versa. It is easy to verify that this is the same as ++ ignoring all tests of HP or HP2. */ ++ if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER)) + { +- /* Special case of partial answer. */ +- assert (hp != hp2); +- hp = hp2; ++ hp2 = hp; + } +- else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER) +- && n > (int) sizeof (HEADER)) ++ else + { +- /* Special case of partial answer. */ +- assert (hp != hp2); +- hp2 = hp; ++ hp2 = (HEADER *) *answerp2; ++ if (n < (int) sizeof (HEADER)) ++ { ++ hp = hp2; ++ } + } + ++ /* Make sure both hp and hp2 are defined */ ++ assert((hp != NULL) && (hp2 != NULL)); ++ + if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0) + && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) { + #ifdef DEBUG diff --git a/source/l/glibc/glibc-2.15-revert-c5a0802a.diff b/source/l/glibc/glibc-2.15-revert-c5a0802a.diff new file mode 100644 index 000000000..b53581b37 --- /dev/null +++ b/source/l/glibc/glibc-2.15-revert-c5a0802a.diff @@ -0,0 +1,226 @@ +diff -rup a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S +--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:12.937212834 +0000 ++++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:42.104222278 +0000 +@@ -137,7 +137,6 @@ __pthread_cond_wait: + cmpl $PI_BIT, %eax + jne 18f + +-90: + movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx + movl %ebp, %edx + xorl %esi, %esi +@@ -151,9 +150,6 @@ __pthread_cond_wait: + sete 16(%esp) + je 19f + +- cmpl $-EAGAIN, %eax +- je 91f +- + /* Normal and PI futexes dont mix. Use normal futex functions only + if the kernel does not support the PI futex functions. */ + cmpl $-ENOSYS, %eax +@@ -398,78 +394,6 @@ __pthread_cond_wait: + #endif + call __lll_unlock_wake + jmp 11b +- +-91: +-.LcleanupSTART2: +- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to +- call it again. */ +- +- /* Get internal lock. */ +- movl $1, %edx +- xorl %eax, %eax +- LOCK +-#if cond_lock == 0 +- cmpxchgl %edx, (%ebx) +-#else +- cmpxchgl %edx, cond_lock(%ebx) +-#endif +- jz 92f +- +-#if cond_lock == 0 +- movl %ebx, %edx +-#else +- leal cond_lock(%ebx), %edx +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_lock_wait +- +-92: +- /* Increment the cond_futex value again, so it can be used as a new +- expected value. */ +- addl $1, cond_futex(%ebx) +- movl cond_futex(%ebx), %ebp +- +- /* Unlock. */ +- LOCK +-#if cond_lock == 0 +- subl $1, (%ebx) +-#else +- subl $1, cond_lock(%ebx) +-#endif +- je 93f +-#if cond_lock == 0 +- movl %ebx, %eax +-#else +- leal cond_lock(%ebx), %eax +-#endif +-#if (LLL_SHARED-LLL_PRIVATE) > 255 +- xorl %ecx, %ecx +-#endif +- cmpl $-1, dep_mutex(%ebx) +- setne %cl +- subl $1, %ecx +- andl $(LLL_SHARED-LLL_PRIVATE), %ecx +-#if LLL_PRIVATE != 0 +- addl $LLL_PRIVATE, %ecx +-#endif +- call __lll_unlock_wake +- +-93: +- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */ +- xorl %ecx, %ecx +- movl dep_mutex(%ebx), %edi +- jmp 90b +-.LcleanupEND2: +- + .size __pthread_cond_wait, .-__pthread_cond_wait + versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, + GLIBC_2_3_2) +@@ -642,10 +566,6 @@ __condvar_w_cleanup: + .long .LcleanupEND-.Lsub_cond_futex + .long __condvar_w_cleanup-.LSTARTCODE + .uleb128 0 +- .long .LcleanupSTART2-.LSTARTCODE +- .long .LcleanupEND2-.LcleanupSTART2 +- .long __condvar_w_cleanup-.LSTARTCODE +- .uleb128 0 + .long .LcallUR-.LSTARTCODE + .long .LENDCODE-.LcallUR + .long 0 +Only in b/nptl/sysdeps/unix/sysv/linux/i386/i486: pthread_cond_wait.S.orig +diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S +--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:04:12.941212837 +0000 ++++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:05:05.155229737 +0000 +@@ -23,7 +23,6 @@ + #include <lowlevelcond.h> + #include <tcb-offsets.h> + #include <pthread-pi-defines.h> +-#include <pthread-errnos.h> + + #include <kernel-features.h> + +@@ -137,14 +136,11 @@ __pthread_cond_wait: + cmpl $PI_BIT, %eax + jne 61f + +-90: + movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi + movl $SYS_futex, %eax + syscall + + movl $1, %r8d +- cmpq $-EAGAIN, %rax +- je 91f + #ifdef __ASSUME_REQUEUE_PI + jmp 62f + #else +@@ -331,70 +327,6 @@ __pthread_cond_wait: + + 13: movq %r10, %rax + jmp 14b +- +-91: +-.LcleanupSTART2: +- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to +- call it again. */ +- movq 8(%rsp), %rdi +- +- /* Get internal lock. */ +- movl $1, %esi +- xorl %eax, %eax +- LOCK +-#if cond_lock == 0 +- cmpxchgl %esi, (%rdi) +-#else +- cmpxchgl %esi, cond_lock(%rdi) +-#endif +- jz 92f +- +-#if cond_lock != 0 +- addq $cond_lock, %rdi +-#endif +- cmpq $-1, dep_mutex-cond_lock(%rdi) +- movl $LLL_PRIVATE, %eax +- movl $LLL_SHARED, %esi +- cmovne %eax, %esi +- callq __lll_lock_wait +-#if cond_lock != 0 +- subq $cond_lock, %rdi +-#endif +-92: +- /* Increment the cond_futex value again, so it can be used as a new +- expected value. */ +- incl cond_futex(%rdi) +- movl cond_futex(%rdi), %edx +- +- /* Release internal lock. */ +- LOCK +-#if cond_lock == 0 +- decl (%rdi) +-#else +- decl cond_lock(%rdi) +-#endif +- jz 93f +- +-#if cond_lock != 0 +- addq $cond_lock, %rdi +-#endif +- cmpq $-1, dep_mutex-cond_lock(%rdi) +- movl $LLL_PRIVATE, %eax +- movl $LLL_SHARED, %esi +- cmovne %eax, %esi +- /* The call preserves %rdx. */ +- callq __lll_unlock_wake +-#if cond_lock != 0 +- subq $cond_lock, %rdi +-#endif +-93: +- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */ +- xorq %r10, %r10 +- movq dep_mutex(%rdi), %r8 +- leaq cond_futex(%rdi), %rdi +- jmp 90b +-.LcleanupEND2: +- + .size __pthread_cond_wait, .-__pthread_cond_wait + versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait, + GLIBC_2_3_2) +@@ -547,15 +479,11 @@ __condvar_cleanup1: + .uleb128 .LcleanupSTART-.LSTARTCODE + .uleb128 .LcleanupEND-.LcleanupSTART + .uleb128 __condvar_cleanup1-.LSTARTCODE +- .uleb128 0 +- .uleb128 .LcleanupSTART2-.LSTARTCODE +- .uleb128 .LcleanupEND2-.LcleanupSTART2 +- .uleb128 __condvar_cleanup1-.LSTARTCODE +- .uleb128 0 ++ .uleb128 0 + .uleb128 .LcallUR-.LSTARTCODE + .uleb128 .LENDCODE-.LcallUR + .uleb128 0 +- .uleb128 0 ++ .uleb128 0 + .Lcstend: + diff --git a/source/l/glibc/glibc-2.15.nscd-race-fix.diff b/source/l/glibc/glibc-2.15.nscd-race-fix.diff new file mode 100644 index 000000000..f1323570f --- /dev/null +++ b/source/l/glibc/glibc-2.15.nscd-race-fix.diff @@ -0,0 +1,47 @@ +--- c/nscd/nscd_gethst_r.c 2012-01-01 05:16:32.000000000 -0700 ++++ c/nscd/nscd_gethst_r.c 2012-03-28 10:45:51.546600822 -0600 +@@ -101,9 +101,27 @@ libc_freeres_fn (hst_map_free) + uint32_t + __nscd_get_nl_timestamp (void) + { ++ uint32_t retval; + if (__nss_not_use_nscd_hosts != 0) + return 0; + ++ int cnt = 0; ++ /* __nscd_get_mapping can change hst_map_handle.mapped to NO_MAPPING. ++ However, __nscd_get_mapping assumes the prior value was not NO_MAPPING. ++ Thus we have to acquire the lock to prevent this thread from changing ++ hst_map_handle.mapped to NO_MAPPING while another thread is inside ++ __nscd_get_mapping. */ ++ while (__builtin_expect ++ (atomic_compare_and_exchange_val_acq (&__hst_map_handle.lock, ++ 1, 0) != 0, 0)) ++ { ++ // XXX Best number of rounds? ++ if (__builtin_expect (++cnt > 5, 0)) ++ return 0; ++ ++ atomic_delay (); ++ } ++ + struct mapped_database *map = __hst_map_handle.mapped; + + if (map == NULL +@@ -113,9 +131,14 @@ __nscd_get_nl_timestamp (void) + map = __nscd_get_mapping (GETFDHST, "hosts", &__hst_map_handle.mapped); + + if (map == NO_MAPPING) +- return 0; ++ retval = 0; ++ else ++ retval = map->head->extra_data[NSCD_HST_IDX_CONF_TIMESTAMP]; ++ ++ /* Release the lock. */ ++ __hst_map_handle.lock = 0; + +- return map->head->extra_data[NSCD_HST_IDX_CONF_TIMESTAMP]; ++ return retval; + } + + diff --git a/source/l/glibc/glibc.SlackBuild b/source/l/glibc/glibc.SlackBuild index d3f21ae54..0ab9e7143 100755 --- a/source/l/glibc/glibc.SlackBuild +++ b/source/l/glibc/glibc.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2006, 2008, 2009, 2010, 2011 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2006, 2008, 2009, 2010, 2011, 2012 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -22,9 +22,9 @@ ## build glibc-$VERSION for Slackware -VERSION=${VERSION:-2.13} +VERSION=${VERSION:-2.15} CHECKOUT=${CHECKOUT:-""} -BUILD=${BUILD:-4} +BUILD=${BUILD:-7} ## Included in glibc now: ## glibc-libidn version @@ -134,6 +134,13 @@ fix_doinst() { # This is a patch function to put all glibc patches in the build script # up near the top. apply_patches() { + # Reexport the RPC interfaces that were removed in glibc-2.14. + # Sure, it's crufy code, but stuff needs it, so rather than pull the + # rug out from under you, we'll just humbly recommend that you consider + # transitioning away from it... :-) + zcat $CWD/glibc-2.14-reexport-rpc-interface.patch.gz | patch -p1 --verbose || exit 1 + # Add back the NIS and RPC headers: + zcat $CWD/glibc-2.14-reinstall-nis-rpc-headers.patch.gz | patch -p1 --verbose || exit 1 # Use old-style locale directories rather than a single (and strangely # formatted) /usr/lib/locale/locale-archive file: zcat $CWD/glibc.locale.no-archive.diff.gz | patch -p1 --verbose || exit 1 @@ -165,7 +172,17 @@ apply_patches() { # Avoid the Intel optimized asm routines for now because they break # the flash player. We'll phase this in when it's safer to do so. zcat $CWD/glibc.disable.broken.optimized.memcpy.diff.gz | patch -p1 --verbose || exit 1 - # Update the timezone information. + # Upstream fixes to avert Firefox crashes: (still applies to 2.15... probably better not to drop it) + zcat $CWD/glibc-2.14.1-fixes-1.patch.gz | patch -p1 --verbose || exit 1 + # Upstream patch to fix relocation sorting related crashes: + zcat $CWD/glibc.git-6ee65ed6ddbf04402fad0bec6aa9c73b9d982ae4.diff.gz | patch -p1 --verbose || exit 1 + # Upstream patch to fix crashes when nscd is not running: + zcat $CWD/glibc-2.15.nscd-race-fix.diff.gz | patch -p1 --verbose || exit 1 + # Revert a patch that went into 2.15 that causes NPTL related crashes: + zcat $CWD/glibc-2.15-revert-c5a0802a.diff.gz | patch -p1 --verbose || exit 1 + # Patch integer overflows in strtod*() functions: + zcat $CWD/glibc.strtod.CVE-2012-3480.diff.gz | patch -p1 --verbose || exit 1 + # Update the timezone information: ( cd timezone tar xzf $CWD/tzdata?????.tar.gz chown root:root * @@ -175,6 +192,8 @@ apply_patches() { mkdir tzcode cd tzcode tar xzf $CWD/tzcode?????.tar.gz + # A partial build is needed here to update TZVERSION in version.h: + make -i chown -R root:root . chmod 644 * cp -a *.c *.h .. @@ -256,7 +275,7 @@ CFLAGS="-g $OPTIMIZ" \ ../configure \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ - --enable-kernel=2.6.18 \ + --enable-kernel=2.6.32 \ --with-headers=/usr/include \ --enable-add-ons=libidn,nptl \ --enable-profile \ @@ -358,6 +377,9 @@ rm $PKG/etc/ld.so.cache ################################## # glibc-zoneinfo. We will start with an easy one to avoid breaking a sweat. ;-) +cd $CWD +ZONE_VERSIONS="$(echo tzcode* | cut -f1 -d . | cut -b7-11)_$(echo tzdata* | cut -f1 -d . | cut -b7-11)" +echo $ZONE_VERSIONS cd $PZONE # Install some scripts to help select a timezone: mkdir -p $PZONE/var/log/setup @@ -379,7 +401,7 @@ mkdir -p $PZONE/etc # This is already hard-coded into doinst.sh (like it'll be there anyway ;-): rm -f etc/localtime # Wrap it up: -makepkg -l y -c n $TMP/glibc-zoneinfo-$VERSION-noarch-$BUILD.txz +makepkg -l y -c n $TMP/glibc-zoneinfo-$ZONE_VERSIONS-noarch-$BUILD.txz # glibc-profile: cd $PPROFILE diff --git a/source/l/glibc/glibc.git-6ee65ed6ddbf04402fad0bec6aa9c73b9d982ae4.diff b/source/l/glibc/glibc.git-6ee65ed6ddbf04402fad0bec6aa9c73b9d982ae4.diff new file mode 100644 index 000000000..e9b3ba400 --- /dev/null +++ b/source/l/glibc/glibc.git-6ee65ed6ddbf04402fad0bec6aa9c73b9d982ae4.diff @@ -0,0 +1,322 @@ +From 6ee65ed6ddbf04402fad0bec6aa9c73b9d982ae4 Mon Sep 17 00:00:00 2001 +From: Ulrich Drepper <drepper@gmail.com> +Date: Fri, 27 Jan 2012 15:05:19 -0500 +Subject: [PATCH] Sort objects before relocations + +--- + ChangeLog | 11 ++++ + Makeconfig | 6 ++ + NEWS | 4 +- + elf/Makefile | 15 +++++- + elf/dl-open.c | 128 ++++++++++++++++++++++++++++++++++++------------ + elf/tst-relsort1.c | 19 +++++++ + elf/tst-relsort1mod1.c | 7 +++ + elf/tst-relsort1mod2.c | 7 +++ + 8 files changed, 160 insertions(+), 37 deletions(-) + create mode 100644 elf/tst-relsort1.c + create mode 100644 elf/tst-relsort1mod1.c + create mode 100644 elf/tst-relsort1mod2.c + +#diff --git a/ChangeLog b/ChangeLog +#index 24c9550..2efe17a 100644 +#--- a/ChangeLog +#+++ b/ChangeLog +#@@ -1,3 +1,14 @@ +#+2012-01-27 Ulrich Drepper <drepper@gmail.com> +#+ +#+ [BZ #13618] +#+ * elf/dl-open.c (dl_open_worker): Sort objects by dependency before +#+ relocation. +#+ * Makeconfig (libm): Define. +#+ * elf/Makefile: Add rules to build and run tst-relsort1. +#+ * elf/tst-relsort1.c: New file. +#+ * elf/tst-relsort1mod1.c: New file. +#+ * elf/tst-relsort1mod2.c: New file. +#+ + 2012-01-26 Joseph Myers <joseph@codesourcery.com> + + * crypt/md5.h: Remove __STDC__ conditionals. +diff --git a/Makeconfig b/Makeconfig +index 2db2821..68547b2 100644 +--- a/Makeconfig ++++ b/Makeconfig +@@ -900,6 +900,12 @@ else + libdl = $(common-objpfx)dlfcn/libdl.a + endif + ++ifeq ($(build-shared),yes) ++libm = $(common-objpfx)math/libm.so$(libm.so-version) ++else ++libm = $(common-objpfx)math/libm.a ++endif ++ + # These are the subdirectories containing the library source. The order + # is more or less arbitrary. The sorting step will take care of the + # dependencies. +#diff --git a/NEWS b/NEWS +#index 42e09c1..3b502b7 100644 +#--- a/NEWS +#+++ b/NEWS +#@@ -1,4 +1,4 @@ +#-GNU C Library NEWS -- history of user-visible changes. 2012-1-26 +#+GNU C Library NEWS -- history of user-visible changes. 2012-1-27 + #Copyright (C) 1992-2009, 2010, 2011, 2012 Free Software Foundation, Inc. + #See the end for copying conditions. +# +#@@ -10,7 +10,7 @@ Version 2.16 + #* The following bugs are resolved with this release: +# + #13525, 13526, 13527, 13528, 13529, 13531, 13532, 13533, 13547, 13530, +#- 13551, 13552, 13553, 13555, 13559, 13583 +#+ 13551, 13552, 13553, 13555, 13559, 13583, 13618 +# + #* ISO C11 support: +# +diff --git a/elf/Makefile b/elf/Makefile +index 052e763..3f1772a 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -124,7 +124,8 @@ distribute := rtld-Rules \ + tst-initordera1.c tst-initordera2.c tst-initorderb1.c \ + tst-initorderb2.c tst-initordera3.c tst-initordera4.c \ + tst-initorder.c \ +- tst-initorder2.c ++ tst-initorder2.c \ ++ tst-relsort1.c tst-relsort1mod1.c tst-relsort1mod2.c + + CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables + CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables +@@ -227,7 +228,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ + tst-audit1 tst-audit2 \ + tst-stackguard1 tst-addr1 tst-thrlock \ + tst-unique1 tst-unique2 tst-unique3 tst-unique4 \ +- tst-initorder tst-initorder2 ++ tst-initorder tst-initorder2 tst-relsort1 + # reldep9 + test-srcs = tst-pathopt + selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null) +@@ -290,7 +291,9 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ + tst-initordera1 tst-initorderb1 \ + tst-initordera2 tst-initorderb2 \ + tst-initordera3 tst-initordera4 \ +- tst-initorder2a tst-initorder2b tst-initorder2c tst-initorder2d ++ tst-initorder2a tst-initorder2b tst-initorder2c \ ++ tst-initorder2d \ ++ tst-relsort1mod1 tst-relsort1mod2 + ifeq (yes,$(have-initfini-array)) + modules-names += tst-array2dep tst-array5dep + endif +@@ -1195,3 +1198,9 @@ CFLAGS-tst-auditmod6b.c += $(AVX-CFLAGS) + CFLAGS-tst-auditmod6c.c += $(AVX-CFLAGS) + CFLAGS-tst-auditmod7b.c += $(AVX-CFLAGS) + endif ++ ++$(objpfx)tst-relsort1: $(libdl) ++$(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so ++$(objpfx)tst-relsort1mod2.so: $(libm) ++$(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \ ++ $(objpfx)tst-relsort1mod2.so +diff --git a/elf/dl-open.c b/elf/dl-open.c +index a0b5c50..a56bdc1 100644 +--- a/elf/dl-open.c ++++ b/elf/dl-open.c +@@ -1,5 +1,5 @@ + /* Load a shared object at runtime, relocate it, and run its initializer. +- Copyright (C) 1996-2007, 2009, 2010, 2011 Free Software Foundation, Inc. ++ Copyright (C) 1996-2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -302,45 +302,109 @@ dl_open_worker (void *a) + if (GLRO(dl_lazy)) + reloc_mode |= mode & RTLD_LAZY; + +- /* Relocate the objects loaded. We do this in reverse order so that copy +- relocs of earlier objects overwrite the data written by later objects. */ +- ++ /* Sort the objects by dependency for the relocation process. This ++ allows IFUNC relocations to work and it also means copy ++ relocation of dependencies are if necessary overwritten. */ ++ size_t nmaps = 0; + struct link_map *l = new; +- while (l->l_next) +- l = l->l_next; +- while (1) ++ do ++ { ++ if (! l->l_real->l_relocated) ++ ++nmaps; ++ l = l->l_next; ++ } ++ while (l != NULL); ++ struct link_map *maps[nmaps]; ++ nmaps = 0; ++ l = new; ++ do + { + if (! l->l_real->l_relocated) ++ maps[nmaps++] = l; ++ l = l->l_next; ++ } ++ while (l != NULL); ++ if (nmaps > 1) ++ { ++ char seen[nmaps]; ++ memset (seen, '\0', nmaps); ++ size_t i = 0; ++ while (1) + { +-#ifdef SHARED +- if (__builtin_expect (GLRO(dl_profile) != NULL, 0)) ++ ++seen[i]; ++ struct link_map *thisp = maps[i]; ++ ++ /* Find the last object in the list for which the current one is ++ a dependency and move the current object behind the object ++ with the dependency. */ ++ size_t k = nmaps - 1; ++ while (k > i) + { +- /* If this here is the shared object which we want to profile +- make sure the profile is started. We can find out whether +- this is necessary or not by observing the `_dl_profile_map' +- variable. If was NULL but is not NULL afterwars we must +- start the profiling. */ +- struct link_map *old_profile_map = GL(dl_profile_map); ++ struct link_map **runp = maps[k]->l_initfini; ++ if (runp != NULL) ++ /* Look through the dependencies of the object. */ ++ while (*runp != NULL) ++ if (__builtin_expect (*runp++ == thisp, 0)) ++ { ++ /* Move the current object to the back past the last ++ object with it as the dependency. */ ++ memmove (&maps[i], &maps[i + 1], ++ (k - i) * sizeof (maps[0])); ++ maps[k] = thisp; ++ ++ if (seen[i + 1] > 1) ++ { ++ ++i; ++ goto next_clear; ++ } ++ ++ char this_seen = seen[i]; ++ memmove (&seen[i], &seen[i + 1], ++ (k - i) * sizeof (seen[0])); ++ seen[k] = this_seen; ++ ++ goto next; ++ } ++ ++ --k; ++ } + +- _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1); ++ if (++i == nmaps) ++ break; ++ next_clear: ++ memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0])); ++ next:; ++ } ++ } + +- if (old_profile_map == NULL && GL(dl_profile_map) != NULL) +- { +- /* We must prepare the profiling. */ +- _dl_start_profile (); ++ for (size_t i = nmaps; i-- > 0; ) ++ { ++ l = maps[i]; + +- /* Prevent unloading the object. */ +- GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE; +- } ++#ifdef SHARED ++ if (__builtin_expect (GLRO(dl_profile) != NULL, 0)) ++ { ++ /* If this here is the shared object which we want to profile ++ make sure the profile is started. We can find out whether ++ this is necessary or not by observing the `_dl_profile_map' ++ variable. If it was NULL but is not NULL afterwars we must ++ start the profiling. */ ++ struct link_map *old_profile_map = GL(dl_profile_map); ++ ++ _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1); ++ ++ if (old_profile_map == NULL && GL(dl_profile_map) != NULL) ++ { ++ /* We must prepare the profiling. */ ++ _dl_start_profile (); ++ ++ /* Prevent unloading the object. */ ++ GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE; + } +- else +-#endif +- _dl_relocate_object (l, l->l_scope, reloc_mode, 0); + } +- +- if (l == new) +- break; +- l = l->l_prev; ++ else ++#endif ++ _dl_relocate_object (l, l->l_scope, reloc_mode, 0); + } + + /* If the file is not loaded now as a dependency, add the search +diff --git a/elf/tst-relsort1.c b/elf/tst-relsort1.c +new file mode 100644 +index 0000000..972100c +--- /dev/null ++++ b/elf/tst-relsort1.c +@@ -0,0 +1,19 @@ ++#include <dlfcn.h> ++#include <stdio.h> ++ ++ ++static int ++do_test () ++{ ++ const char lib[] = "$ORIGIN/tst-relsort1mod1.so"; ++ void *h = dlopen (lib, RTLD_NOW); ++ if (h == NULL) ++ { ++ puts (dlerror ()); ++ return 1; ++ } ++ return 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff --git a/elf/tst-relsort1mod1.c b/elf/tst-relsort1mod1.c +new file mode 100644 +index 0000000..9e4a943 +--- /dev/null ++++ b/elf/tst-relsort1mod1.c +@@ -0,0 +1,7 @@ ++extern int foo (double); ++ ++int ++bar (void) ++{ ++ return foo (1.2); ++} +diff --git a/elf/tst-relsort1mod2.c b/elf/tst-relsort1mod2.c +new file mode 100644 +index 0000000..a2c3e55 +--- /dev/null ++++ b/elf/tst-relsort1mod2.c +@@ -0,0 +1,7 @@ ++#include <math.h> ++ ++int ++foo (double d) ++{ ++ return floor (d) != 0.0; ++} +-- +1.7.3.4 + diff --git a/source/l/glibc/glibc.strtod.CVE-2012-3480.diff b/source/l/glibc/glibc.strtod.CVE-2012-3480.diff new file mode 100644 index 000000000..7a7bdeb7d --- /dev/null +++ b/source/l/glibc/glibc.strtod.CVE-2012-3480.diff @@ -0,0 +1,407 @@ +From 8a780f7f68a1cd4c575bb17973a9e18826b05ef9 Mon Sep 17 00:00:00 2001 +From: Joseph Myers <joseph@codesourcery.com> +Date: Mon, 27 Aug 2012 15:59:24 +0000 +Subject: [PATCH 1/1] Fix strtod integer/buffer overflow (bug 14459). + (cherry picked from commit d6e70f4368533224e66d10b7f2126b899a3fd5e4) + +Conflicts: + + ChangeLog + NEWS + stdlib/Makefile +--- + ChangeLog | 17 +++++ + NEWS | 2 +- + stdlib/Makefile | 2 +- + stdlib/strtod_l.c | 142 ++++++++++++++++++++++++++++++++--------- + stdlib/tst-strtod-overflow.c | 48 ++++++++++++++ + 5 files changed, 178 insertions(+), 33 deletions(-) + create mode 100644 stdlib/tst-strtod-overflow.c + +diff --git a/stdlib/Makefile b/stdlib/Makefile +index 04c6ac5..b55f573 100644 +--- a/stdlib/Makefile ++++ b/stdlib/Makefile +@@ -71,7 +71,7 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \ + tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \ + tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2 \ + tst-makecontext2 tst-strtod6 tst-unsetenv1 \ +- tst-makecontext3 bug-getcontext ++ tst-makecontext3 bug-getcontext tst-strtod-overflow + + include ../Makeconfig + +diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c +index f24d4de..0deaebf 100644 +--- a/stdlib/strtod_l.c ++++ b/stdlib/strtod_l.c +@@ -62,6 +62,7 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **, + #include <math.h> + #include <stdlib.h> + #include <string.h> ++#include <stdint.h> + + /* The gmp headers need some configuration frobs. */ + #define HAVE_ALLOCA 1 +@@ -74,7 +75,6 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **, + #include "longlong.h" + #include "fpioconst.h" + +-#define NDEBUG 1 + #include <assert.h> + + +@@ -176,19 +176,19 @@ extern const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1]; + /* Return a floating point number of the needed type according to the given + multi-precision number after possible rounding. */ + static FLOAT +-round_and_return (mp_limb_t *retval, int exponent, int negative, ++round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, + mp_limb_t round_limb, mp_size_t round_bit, int more_bits) + { + if (exponent < MIN_EXP - 1) + { +- mp_size_t shift = MIN_EXP - 1 - exponent; +- +- if (shift > MANT_DIG) ++ if (exponent < MIN_EXP - 1 - MANT_DIG) + { + __set_errno (ERANGE); + return 0.0; + } + ++ mp_size_t shift = MIN_EXP - 1 - exponent; ++ + more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0; + if (shift == MANT_DIG) + /* This is a special case to handle the very seldom case where +@@ -235,6 +235,9 @@ round_and_return (mp_limb_t *retval, int exponent, int negative, + __set_errno (ERANGE); + } + ++ if (exponent > MAX_EXP) ++ goto overflow; ++ + if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0 + && (more_bits || (retval[0] & 1) != 0 + || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0)) +@@ -260,6 +263,7 @@ round_and_return (mp_limb_t *retval, int exponent, int negative, + } + + if (exponent > MAX_EXP) ++ overflow: + return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL; + + return MPN2FLOAT (retval, exponent, negative); +@@ -273,7 +277,7 @@ round_and_return (mp_limb_t *retval, int exponent, int negative, + factor for the resulting number (see code) multiply by it. */ + static const STRING_TYPE * + str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, +- int *exponent ++ intmax_t *exponent + #ifndef USE_WIDE_CHAR + , const char *decimal, size_t decimal_len, const char *thousands + #endif +@@ -303,6 +307,7 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, + cy += __mpn_add_1 (n, n, *nsize, low); + if (cy != 0) + { ++ assert (*nsize < MPNSIZE); + n[*nsize] = cy; + ++(*nsize); + } +@@ -337,7 +342,7 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, + } + while (--digcnt > 0); + +- if (*exponent > 0 && cnt + *exponent <= MAX_DIG_PER_LIMB) ++ if (*exponent > 0 && *exponent <= MAX_DIG_PER_LIMB - cnt) + { + low *= _tens_in_limb[*exponent]; + start = _tens_in_limb[cnt + *exponent]; +@@ -357,7 +362,10 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize, + cy = __mpn_mul_1 (n, n, *nsize, start); + cy += __mpn_add_1 (n, n, *nsize, low); + if (cy != 0) +- n[(*nsize)++] = cy; ++ { ++ assert (*nsize < MPNSIZE); ++ n[(*nsize)++] = cy; ++ } + } + + return str; +@@ -415,7 +423,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + { + int negative; /* The sign of the number. */ + MPN_VAR (num); /* MP representation of the number. */ +- int exponent; /* Exponent of the number. */ ++ intmax_t exponent; /* Exponent of the number. */ + + /* Numbers starting `0X' or `0x' have to be processed with base 16. */ + int base = 10; +@@ -437,7 +445,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + /* Points at the character following the integer and fractional digits. */ + const STRING_TYPE *expp; + /* Total number of digit and number of digits in integer part. */ +- int dig_no, int_no, lead_zero; ++ size_t dig_no, int_no, lead_zero; + /* Contains the last character read. */ + CHAR_TYPE c; + +@@ -769,7 +777,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + are all or any is really a fractional digit will be decided + later. */ + int_no = dig_no; +- lead_zero = int_no == 0 ? -1 : 0; ++ lead_zero = int_no == 0 ? (size_t) -1 : 0; + + /* Read the fractional digits. A special case are the 'american + style' numbers like `16.' i.e. with decimal point but without +@@ -791,12 +799,13 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + (base == 16 && ({ CHAR_TYPE lo = TOLOWER (c); + lo >= L_('a') && lo <= L_('f'); }))) + { +- if (c != L_('0') && lead_zero == -1) ++ if (c != L_('0') && lead_zero == (size_t) -1) + lead_zero = dig_no - int_no; + ++dig_no; + c = *++cp; + } + } ++ assert (dig_no <= (uintmax_t) INTMAX_MAX); + + /* Remember start of exponent (if any). */ + expp = cp; +@@ -819,24 +828,80 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + + if (c >= L_('0') && c <= L_('9')) + { +- int exp_limit; ++ intmax_t exp_limit; + + /* Get the exponent limit. */ + if (base == 16) +- exp_limit = (exp_negative ? +- -MIN_EXP + MANT_DIG + 4 * int_no : +- MAX_EXP - 4 * int_no + 4 * lead_zero + 3); ++ { ++ if (exp_negative) ++ { ++ assert (int_no <= (uintmax_t) (INTMAX_MAX ++ + MIN_EXP - MANT_DIG) / 4); ++ exp_limit = -MIN_EXP + MANT_DIG + 4 * (intmax_t) int_no; ++ } ++ else ++ { ++ if (int_no) ++ { ++ assert (lead_zero == 0 ++ && int_no <= (uintmax_t) INTMAX_MAX / 4); ++ exp_limit = MAX_EXP - 4 * (intmax_t) int_no + 3; ++ } ++ else if (lead_zero == (size_t) -1) ++ { ++ /* The number is zero and this limit is ++ arbitrary. */ ++ exp_limit = MAX_EXP + 3; ++ } ++ else ++ { ++ assert (lead_zero ++ <= (uintmax_t) (INTMAX_MAX - MAX_EXP - 3) / 4); ++ exp_limit = (MAX_EXP ++ + 4 * (intmax_t) lead_zero ++ + 3); ++ } ++ } ++ } + else +- exp_limit = (exp_negative ? +- -MIN_10_EXP + MANT_DIG + int_no : +- MAX_10_EXP - int_no + lead_zero + 1); ++ { ++ if (exp_negative) ++ { ++ assert (int_no ++ <= (uintmax_t) (INTMAX_MAX + MIN_10_EXP - MANT_DIG)); ++ exp_limit = -MIN_10_EXP + MANT_DIG + (intmax_t) int_no; ++ } ++ else ++ { ++ if (int_no) ++ { ++ assert (lead_zero == 0 ++ && int_no <= (uintmax_t) INTMAX_MAX); ++ exp_limit = MAX_10_EXP - (intmax_t) int_no + 1; ++ } ++ else if (lead_zero == (size_t) -1) ++ { ++ /* The number is zero and this limit is ++ arbitrary. */ ++ exp_limit = MAX_10_EXP + 1; ++ } ++ else ++ { ++ assert (lead_zero ++ <= (uintmax_t) (INTMAX_MAX - MAX_10_EXP - 1)); ++ exp_limit = MAX_10_EXP + (intmax_t) lead_zero + 1; ++ } ++ } ++ } ++ ++ if (exp_limit < 0) ++ exp_limit = 0; + + do + { +- exponent *= 10; +- exponent += c - L_('0'); +- +- if (__builtin_expect (exponent > exp_limit, 0)) ++ if (__builtin_expect ((exponent > exp_limit / 10 ++ || (exponent == exp_limit / 10 ++ && c - L_('0') > exp_limit % 10)), 0)) + /* The exponent is too large/small to represent a valid + number. */ + { +@@ -845,7 +910,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + /* We have to take care for special situation: a joker + might have written "0.0e100000" which is in fact + zero. */ +- if (lead_zero == -1) ++ if (lead_zero == (size_t) -1) + result = negative ? -0.0 : 0.0; + else + { +@@ -864,6 +929,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + /* NOTREACHED */ + } + ++ exponent *= 10; ++ exponent += c - L_('0'); ++ + c = *++cp; + } + while (c >= L_('0') && c <= L_('9')); +@@ -932,7 +1000,14 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + } + #endif + startp += lead_zero + decimal_len; +- exponent -= base == 16 ? 4 * lead_zero : lead_zero; ++ assert (lead_zero <= (base == 16 ++ ? (uintmax_t) INTMAX_MAX / 4 ++ : (uintmax_t) INTMAX_MAX)); ++ assert (lead_zero <= (base == 16 ++ ? ((uintmax_t) exponent ++ - (uintmax_t) INTMAX_MIN) / 4 ++ : ((uintmax_t) exponent - (uintmax_t) INTMAX_MIN))); ++ exponent -= base == 16 ? 4 * (intmax_t) lead_zero : (intmax_t) lead_zero; + dig_no -= lead_zero; + } + +@@ -974,7 +1049,10 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + } + + /* Adjust the exponent for the bits we are shifting in. */ +- exponent += bits - 1 + (int_no - 1) * 4; ++ assert (int_no <= (uintmax_t) (exponent < 0 ++ ? (INTMAX_MAX - bits + 1) / 4 ++ : (INTMAX_MAX - exponent - bits + 1) / 4)); ++ exponent += bits - 1 + ((intmax_t) int_no - 1) * 4; + + while (--dig_no > 0 && idx >= 0) + { +@@ -1014,13 +1092,15 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + really integer digits or belong to the fractional part; i.e. we normalize + 123e-2 to 1.23. */ + { +- register int incr = (exponent < 0 ? MAX (-int_no, exponent) +- : MIN (dig_no - int_no, exponent)); ++ register intmax_t incr = (exponent < 0 ++ ? MAX (-(intmax_t) int_no, exponent) ++ : MIN ((intmax_t) dig_no - (intmax_t) int_no, ++ exponent)); + int_no += incr; + exponent -= incr; + } + +- if (__builtin_expect (int_no + exponent > MAX_10_EXP + 1, 0)) ++ if (__builtin_expect (exponent > MAX_10_EXP + 1 - (intmax_t) int_no, 0)) + { + __set_errno (ERANGE); + return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL; +@@ -1205,7 +1285,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + digits we should have enough bits for the result. The remaining + decimal digits give us the information that more bits are following. + This can be used while rounding. (Two added as a safety margin.) */ +- if (dig_no - int_no > (MANT_DIG - bits + 2) / 3 + 2) ++ if ((intmax_t) dig_no > (intmax_t) int_no + (MANT_DIG - bits + 2) / 3 + 2) + { + dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2; + more_bits = 1; +@@ -1213,7 +1293,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) + else + more_bits = 0; + +- neg_exp = dig_no - int_no - exponent; ++ neg_exp = (intmax_t) dig_no - (intmax_t) int_no - exponent; + + /* Construct the denominator. */ + densize = 0; +diff --git a/stdlib/tst-strtod-overflow.c b/stdlib/tst-strtod-overflow.c +new file mode 100644 +index 0000000..668d55b +--- /dev/null ++++ b/stdlib/tst-strtod-overflow.c +@@ -0,0 +1,48 @@ ++/* Test for integer/buffer overflow in strtod. ++ Copyright (C) 2012 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ <http://www.gnu.org/licenses/>. */ ++ ++#include <stdio.h> ++#include <stdlib.h> ++#include <string.h> ++ ++#define EXPONENT "e-2147483649" ++#define SIZE 214748364 ++ ++static int ++do_test (void) ++{ ++ char *p = malloc (1 + SIZE + sizeof (EXPONENT)); ++ if (p == NULL) ++ { ++ puts ("malloc failed, cannot test for overflow"); ++ return 0; ++ } ++ p[0] = '1'; ++ memset (p + 1, '0', SIZE); ++ memcpy (p + 1 + SIZE, EXPONENT, sizeof (EXPONENT)); ++ double d = strtod (p, NULL); ++ if (d != 0) ++ { ++ printf ("strtod returned wrong value: %a\n", d); ++ return 1; ++ } ++ return 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +-- +1.7.3.4 diff --git a/source/l/glibc/slack-desc.glibc-zoneinfo b/source/l/glibc/slack-desc.glibc-zoneinfo index 24dfd0e9f..69420f78d 100644 --- a/source/l/glibc/slack-desc.glibc-zoneinfo +++ b/source/l/glibc/slack-desc.glibc-zoneinfo @@ -12,7 +12,7 @@ glibc-zoneinfo: This package allows you to configure your time zone. glibc-zoneinfo: glibc-zoneinfo: This timezone database comes from the tzdata and tzcode packages by glibc-zoneinfo: Arthur David Olson et.al. The latest version and more information -glibc-zoneinfo: may be found at ftp://elsie.nci.nih.gov/pub/ +glibc-zoneinfo: may be found at: http://www.iana.org/time-zones glibc-zoneinfo: glibc-zoneinfo: Use the timeconfig utility to set your local time zone. glibc-zoneinfo: diff --git a/source/l/glibc/slack-desc.glibc-zoneinfo.olson b/source/l/glibc/slack-desc.glibc-zoneinfo.olson new file mode 100644 index 000000000..24dfd0e9f --- /dev/null +++ b/source/l/glibc/slack-desc.glibc-zoneinfo.olson @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' on +# the right side marks the last column you can put a character in. You must make +# exactly 11 lines for the formatting to be correct. It's also customary to +# leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +glibc-zoneinfo: glibc-zoneinfo (timezone database) +glibc-zoneinfo: +glibc-zoneinfo: This package allows you to configure your time zone. +glibc-zoneinfo: +glibc-zoneinfo: This timezone database comes from the tzdata and tzcode packages by +glibc-zoneinfo: Arthur David Olson et.al. The latest version and more information +glibc-zoneinfo: may be found at ftp://elsie.nci.nih.gov/pub/ +glibc-zoneinfo: +glibc-zoneinfo: Use the timeconfig utility to set your local time zone. +glibc-zoneinfo: +glibc-zoneinfo: diff --git a/source/l/glibc/timezone-scripts/timeconfig b/source/l/glibc/timezone-scripts/timeconfig index 33dc89d46..56e786c38 100644 --- a/source/l/glibc/timezone-scripts/timeconfig +++ b/source/l/glibc/timezone-scripts/timeconfig @@ -165,6 +165,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "Africa/Gaborone" " " \ "Africa/Harare" " " \ "Africa/Johannesburg" " " \ +"Africa/Juba" " " \ "Africa/Kampala" " " \ "Africa/Khartoum" " " \ "Africa/Kigali" " " \ @@ -215,6 +216,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "America/Atikokan" " " \ "America/Atka" " " \ "America/Bahia" " " \ +"America/Bahia_Banderas" " " \ "America/Barbados" " " \ "America/Belem" " " \ "America/Belize" " " \ @@ -278,19 +280,23 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "America/Kentucky/Louisville" " " \ "America/Kentucky/Monticello" " " \ "America/Knox_IN" " " \ +"America/Kralendijk" " " \ "America/La_Paz" " " \ "America/Lima" " " \ "America/Los_Angeles" " " \ "America/Louisville" " " \ +"America/Lower_Princes" " " \ "America/Maceio" " " \ "America/Managua" " " \ "America/Manaus" " " \ "America/Marigot" " " \ "America/Martinique" " " \ +"America/Matamoros" " " \ "America/Mazatlan" " " \ "America/Mendoza" " " \ "America/Menominee" " " \ "America/Merida" " " \ +"America/Metlakatla" " " \ "America/Mexico_City" " " \ "America/Miquelon" " " \ "America/Moncton" " " \ @@ -303,8 +309,10 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "America/Nipigon" " " \ "America/Nome" " " \ "America/Noronha" " " \ +"America/North_Dakota/Beulah" " " \ "America/North_Dakota/Center" " " \ "America/North_Dakota/New_Salem" " " \ +"America/Ojinaga" " " \ "America/Panama" " " \ "America/Pangnirtung" " " \ "America/Paramaribo" " " \ @@ -321,12 +329,14 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "America/Resolute" " " \ "America/Rio_Branco" " " \ "America/Rosario" " " \ +"America/Santa_Isabel" " " \ "America/Santarem" " " \ "America/Santiago" " " \ "America/Santo_Domingo" " " \ "America/Sao_Paulo" " " \ "America/Scoresbysund" " " \ "America/Shiprock" " " \ +"America/Sitka" " " \ "America/St_Barthelemy" " " \ "America/St_Johns" " " \ "America/St_Kitts" " " \ @@ -349,6 +359,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "Antarctica/Casey" " " \ "Antarctica/Davis" " " \ "Antarctica/DumontDUrville" " " \ +"Antarctica/Macquarie" " " \ "Antarctica/Mawson" " " \ "Antarctica/McMurdo" " " \ "Antarctica/Palmer" " " \ @@ -385,6 +396,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "Asia/Dushanbe" " " \ "Asia/Gaza" " " \ "Asia/Harbin" " " \ +"Asia/Hebron" " " \ "Asia/Ho_Chi_Minh" " " \ "Asia/Hong_Kong" " " \ "Asia/Hovd" " " \ @@ -411,6 +423,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "Asia/Manila" " " \ "Asia/Muscat" " " \ "Asia/Nicosia" " " \ +"Asia/Novokuznetsk" " " \ "Asia/Novosibirsk" " " \ "Asia/Omsk" " " \ "Asia/Oral" " " \ @@ -643,6 +656,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "Pacific/Apia" " " \ "Pacific/Auckland" " " \ "Pacific/Chatham" " " \ +"Pacific/Chuuk" " " \ "Pacific/Easter" " " \ "Pacific/Efate" " " \ "Pacific/Enderbury" " " \ @@ -668,6 +682,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "Pacific/Pago_Pago" " " \ "Pacific/Palau" " " \ "Pacific/Pitcairn" " " \ +"Pacific/Pohnpei" " " \ "Pacific/Ponape" " " \ "Pacific/Port_Moresby" " " \ "Pacific/Rarotonga" " " \ @@ -718,6 +733,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/Africa/Gaborone" " " \ "posix/Africa/Harare" " " \ "posix/Africa/Johannesburg" " " \ +"posix/Africa/Juba" " " \ "posix/Africa/Kampala" " " \ "posix/Africa/Khartoum" " " \ "posix/Africa/Kigali" " " \ @@ -768,6 +784,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/America/Atikokan" " " \ "posix/America/Atka" " " \ "posix/America/Bahia" " " \ +"posix/America/Bahia_Banderas" " " \ "posix/America/Barbados" " " \ "posix/America/Belem" " " \ "posix/America/Belize" " " \ @@ -831,19 +848,23 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/America/Kentucky/Louisville" " " \ "posix/America/Kentucky/Monticello" " " \ "posix/America/Knox_IN" " " \ +"posix/America/Kralendijk" " " \ "posix/America/La_Paz" " " \ "posix/America/Lima" " " \ "posix/America/Los_Angeles" " " \ "posix/America/Louisville" " " \ +"posix/America/Lower_Princes" " " \ "posix/America/Maceio" " " \ "posix/America/Managua" " " \ "posix/America/Manaus" " " \ "posix/America/Marigot" " " \ "posix/America/Martinique" " " \ +"posix/America/Matamoros" " " \ "posix/America/Mazatlan" " " \ "posix/America/Mendoza" " " \ "posix/America/Menominee" " " \ "posix/America/Merida" " " \ +"posix/America/Metlakatla" " " \ "posix/America/Mexico_City" " " \ "posix/America/Miquelon" " " \ "posix/America/Moncton" " " \ @@ -856,8 +877,10 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/America/Nipigon" " " \ "posix/America/Nome" " " \ "posix/America/Noronha" " " \ +"posix/America/North_Dakota/Beulah" " " \ "posix/America/North_Dakota/Center" " " \ "posix/America/North_Dakota/New_Salem" " " \ +"posix/America/Ojinaga" " " \ "posix/America/Panama" " " \ "posix/America/Pangnirtung" " " \ "posix/America/Paramaribo" " " \ @@ -874,12 +897,14 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/America/Resolute" " " \ "posix/America/Rio_Branco" " " \ "posix/America/Rosario" " " \ +"posix/America/Santa_Isabel" " " \ "posix/America/Santarem" " " \ "posix/America/Santiago" " " \ "posix/America/Santo_Domingo" " " \ "posix/America/Sao_Paulo" " " \ "posix/America/Scoresbysund" " " \ "posix/America/Shiprock" " " \ +"posix/America/Sitka" " " \ "posix/America/St_Barthelemy" " " \ "posix/America/St_Johns" " " \ "posix/America/St_Kitts" " " \ @@ -902,6 +927,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/Antarctica/Casey" " " \ "posix/Antarctica/Davis" " " \ "posix/Antarctica/DumontDUrville" " " \ +"posix/Antarctica/Macquarie" " " \ "posix/Antarctica/Mawson" " " \ "posix/Antarctica/McMurdo" " " \ "posix/Antarctica/Palmer" " " \ @@ -938,6 +964,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/Asia/Dushanbe" " " \ "posix/Asia/Gaza" " " \ "posix/Asia/Harbin" " " \ +"posix/Asia/Hebron" " " \ "posix/Asia/Ho_Chi_Minh" " " \ "posix/Asia/Hong_Kong" " " \ "posix/Asia/Hovd" " " \ @@ -964,6 +991,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/Asia/Manila" " " \ "posix/Asia/Muscat" " " \ "posix/Asia/Nicosia" " " \ +"posix/Asia/Novokuznetsk" " " \ "posix/Asia/Novosibirsk" " " \ "posix/Asia/Omsk" " " \ "posix/Asia/Oral" " " \ @@ -1196,6 +1224,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/Pacific/Apia" " " \ "posix/Pacific/Auckland" " " \ "posix/Pacific/Chatham" " " \ +"posix/Pacific/Chuuk" " " \ "posix/Pacific/Easter" " " \ "posix/Pacific/Efate" " " \ "posix/Pacific/Enderbury" " " \ @@ -1221,6 +1250,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "posix/Pacific/Pago_Pago" " " \ "posix/Pacific/Palau" " " \ "posix/Pacific/Pitcairn" " " \ +"posix/Pacific/Pohnpei" " " \ "posix/Pacific/Ponape" " " \ "posix/Pacific/Port_Moresby" " " \ "posix/Pacific/Rarotonga" " " \ @@ -1284,6 +1314,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/Africa/Gaborone" " " \ "right/Africa/Harare" " " \ "right/Africa/Johannesburg" " " \ +"right/Africa/Juba" " " \ "right/Africa/Kampala" " " \ "right/Africa/Khartoum" " " \ "right/Africa/Kigali" " " \ @@ -1334,6 +1365,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/America/Atikokan" " " \ "right/America/Atka" " " \ "right/America/Bahia" " " \ +"right/America/Bahia_Banderas" " " \ "right/America/Barbados" " " \ "right/America/Belem" " " \ "right/America/Belize" " " \ @@ -1397,19 +1429,23 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/America/Kentucky/Louisville" " " \ "right/America/Kentucky/Monticello" " " \ "right/America/Knox_IN" " " \ +"right/America/Kralendijk" " " \ "right/America/La_Paz" " " \ "right/America/Lima" " " \ "right/America/Los_Angeles" " " \ "right/America/Louisville" " " \ +"right/America/Lower_Princes" " " \ "right/America/Maceio" " " \ "right/America/Managua" " " \ "right/America/Manaus" " " \ "right/America/Marigot" " " \ "right/America/Martinique" " " \ +"right/America/Matamoros" " " \ "right/America/Mazatlan" " " \ "right/America/Mendoza" " " \ "right/America/Menominee" " " \ "right/America/Merida" " " \ +"right/America/Metlakatla" " " \ "right/America/Mexico_City" " " \ "right/America/Miquelon" " " \ "right/America/Moncton" " " \ @@ -1422,8 +1458,10 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/America/Nipigon" " " \ "right/America/Nome" " " \ "right/America/Noronha" " " \ +"right/America/North_Dakota/Beulah" " " \ "right/America/North_Dakota/Center" " " \ "right/America/North_Dakota/New_Salem" " " \ +"right/America/Ojinaga" " " \ "right/America/Panama" " " \ "right/America/Pangnirtung" " " \ "right/America/Paramaribo" " " \ @@ -1440,12 +1478,14 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/America/Resolute" " " \ "right/America/Rio_Branco" " " \ "right/America/Rosario" " " \ +"right/America/Santa_Isabel" " " \ "right/America/Santarem" " " \ "right/America/Santiago" " " \ "right/America/Santo_Domingo" " " \ "right/America/Sao_Paulo" " " \ "right/America/Scoresbysund" " " \ "right/America/Shiprock" " " \ +"right/America/Sitka" " " \ "right/America/St_Barthelemy" " " \ "right/America/St_Johns" " " \ "right/America/St_Kitts" " " \ @@ -1468,6 +1508,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/Antarctica/Casey" " " \ "right/Antarctica/Davis" " " \ "right/Antarctica/DumontDUrville" " " \ +"right/Antarctica/Macquarie" " " \ "right/Antarctica/Mawson" " " \ "right/Antarctica/McMurdo" " " \ "right/Antarctica/Palmer" " " \ @@ -1504,6 +1545,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/Asia/Dushanbe" " " \ "right/Asia/Gaza" " " \ "right/Asia/Harbin" " " \ +"right/Asia/Hebron" " " \ "right/Asia/Ho_Chi_Minh" " " \ "right/Asia/Hong_Kong" " " \ "right/Asia/Hovd" " " \ @@ -1530,6 +1572,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/Asia/Manila" " " \ "right/Asia/Muscat" " " \ "right/Asia/Nicosia" " " \ +"right/Asia/Novokuznetsk" " " \ "right/Asia/Novosibirsk" " " \ "right/Asia/Omsk" " " \ "right/Asia/Oral" " " \ @@ -1762,6 +1805,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/Pacific/Apia" " " \ "right/Pacific/Auckland" " " \ "right/Pacific/Chatham" " " \ +"right/Pacific/Chuuk" " " \ "right/Pacific/Easter" " " \ "right/Pacific/Efate" " " \ "right/Pacific/Enderbury" " " \ @@ -1787,6 +1831,7 @@ if [ "$COLOR" = "on" -o -r $TMP/SeTcolor -o "$T_PX" = "/" ]; then "right/Pacific/Pago_Pago" " " \ "right/Pacific/Palau" " " \ "right/Pacific/Pitcairn" " " \ +"right/Pacific/Pohnpei" " " \ "right/Pacific/Ponape" " " \ "right/Pacific/Port_Moresby" " " \ "right/Pacific/Rarotonga" " " \ @@ -1889,6 +1934,7 @@ Africa/Freetown Africa/Gaborone Africa/Harare Africa/Johannesburg +Africa/Juba Africa/Kampala Africa/Khartoum Africa/Kigali @@ -1939,6 +1985,7 @@ America/Asuncion America/Atikokan America/Atka America/Bahia +America/Bahia_Banderas America/Barbados America/Belem America/Belize @@ -2002,19 +2049,23 @@ America/Juneau America/Kentucky/Louisville America/Kentucky/Monticello America/Knox_IN +America/Kralendijk America/La_Paz America/Lima America/Los_Angeles America/Louisville +America/Lower_Princes America/Maceio America/Managua America/Manaus America/Marigot America/Martinique +America/Matamoros America/Mazatlan America/Mendoza America/Menominee America/Merida +America/Metlakatla America/Mexico_City America/Miquelon America/Moncton @@ -2027,8 +2078,10 @@ America/New_York America/Nipigon America/Nome America/Noronha +America/North_Dakota/Beulah America/North_Dakota/Center America/North_Dakota/New_Salem +America/Ojinaga America/Panama America/Pangnirtung America/Paramaribo @@ -2045,12 +2098,14 @@ America/Regina America/Resolute America/Rio_Branco America/Rosario +America/Santa_Isabel America/Santarem America/Santiago America/Santo_Domingo America/Sao_Paulo America/Scoresbysund America/Shiprock +America/Sitka America/St_Barthelemy America/St_Johns America/St_Kitts @@ -2073,6 +2128,7 @@ America/Yellowknife Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville +Antarctica/Macquarie Antarctica/Mawson Antarctica/McMurdo Antarctica/Palmer @@ -2109,6 +2165,7 @@ Asia/Dubai Asia/Dushanbe Asia/Gaza Asia/Harbin +Asia/Hebron Asia/Ho_Chi_Minh Asia/Hong_Kong Asia/Hovd @@ -2135,6 +2192,7 @@ Asia/Makassar Asia/Manila Asia/Muscat Asia/Nicosia +Asia/Novokuznetsk Asia/Novosibirsk Asia/Omsk Asia/Oral @@ -2367,6 +2425,7 @@ PST8PDT Pacific/Apia Pacific/Auckland Pacific/Chatham +Pacific/Chuuk Pacific/Easter Pacific/Efate Pacific/Enderbury @@ -2392,6 +2451,7 @@ Pacific/Noumea Pacific/Pago_Pago Pacific/Palau Pacific/Pitcairn +Pacific/Pohnpei Pacific/Ponape Pacific/Port_Moresby Pacific/Rarotonga @@ -2442,6 +2502,7 @@ posix/Africa/Freetown posix/Africa/Gaborone posix/Africa/Harare posix/Africa/Johannesburg +posix/Africa/Juba posix/Africa/Kampala posix/Africa/Khartoum posix/Africa/Kigali @@ -2492,6 +2553,7 @@ posix/America/Asuncion posix/America/Atikokan posix/America/Atka posix/America/Bahia +posix/America/Bahia_Banderas posix/America/Barbados posix/America/Belem posix/America/Belize @@ -2555,19 +2617,23 @@ posix/America/Juneau posix/America/Kentucky/Louisville posix/America/Kentucky/Monticello posix/America/Knox_IN +posix/America/Kralendijk posix/America/La_Paz posix/America/Lima posix/America/Los_Angeles posix/America/Louisville +posix/America/Lower_Princes posix/America/Maceio posix/America/Managua posix/America/Manaus posix/America/Marigot posix/America/Martinique +posix/America/Matamoros posix/America/Mazatlan posix/America/Mendoza posix/America/Menominee posix/America/Merida +posix/America/Metlakatla posix/America/Mexico_City posix/America/Miquelon posix/America/Moncton @@ -2580,8 +2646,10 @@ posix/America/New_York posix/America/Nipigon posix/America/Nome posix/America/Noronha +posix/America/North_Dakota/Beulah posix/America/North_Dakota/Center posix/America/North_Dakota/New_Salem +posix/America/Ojinaga posix/America/Panama posix/America/Pangnirtung posix/America/Paramaribo @@ -2598,12 +2666,14 @@ posix/America/Regina posix/America/Resolute posix/America/Rio_Branco posix/America/Rosario +posix/America/Santa_Isabel posix/America/Santarem posix/America/Santiago posix/America/Santo_Domingo posix/America/Sao_Paulo posix/America/Scoresbysund posix/America/Shiprock +posix/America/Sitka posix/America/St_Barthelemy posix/America/St_Johns posix/America/St_Kitts @@ -2626,6 +2696,7 @@ posix/America/Yellowknife posix/Antarctica/Casey posix/Antarctica/Davis posix/Antarctica/DumontDUrville +posix/Antarctica/Macquarie posix/Antarctica/Mawson posix/Antarctica/McMurdo posix/Antarctica/Palmer @@ -2662,6 +2733,7 @@ posix/Asia/Dubai posix/Asia/Dushanbe posix/Asia/Gaza posix/Asia/Harbin +posix/Asia/Hebron posix/Asia/Ho_Chi_Minh posix/Asia/Hong_Kong posix/Asia/Hovd @@ -2688,6 +2760,7 @@ posix/Asia/Makassar posix/Asia/Manila posix/Asia/Muscat posix/Asia/Nicosia +posix/Asia/Novokuznetsk posix/Asia/Novosibirsk posix/Asia/Omsk posix/Asia/Oral @@ -2920,6 +2993,7 @@ posix/PST8PDT posix/Pacific/Apia posix/Pacific/Auckland posix/Pacific/Chatham +posix/Pacific/Chuuk posix/Pacific/Easter posix/Pacific/Efate posix/Pacific/Enderbury @@ -2945,6 +3019,7 @@ posix/Pacific/Noumea posix/Pacific/Pago_Pago posix/Pacific/Palau posix/Pacific/Pitcairn +posix/Pacific/Pohnpei posix/Pacific/Ponape posix/Pacific/Port_Moresby posix/Pacific/Rarotonga @@ -3008,6 +3083,7 @@ right/Africa/Freetown right/Africa/Gaborone right/Africa/Harare right/Africa/Johannesburg +right/Africa/Juba right/Africa/Kampala right/Africa/Khartoum right/Africa/Kigali @@ -3058,6 +3134,7 @@ right/America/Asuncion right/America/Atikokan right/America/Atka right/America/Bahia +right/America/Bahia_Banderas right/America/Barbados right/America/Belem right/America/Belize @@ -3121,19 +3198,23 @@ right/America/Juneau right/America/Kentucky/Louisville right/America/Kentucky/Monticello right/America/Knox_IN +right/America/Kralendijk right/America/La_Paz right/America/Lima right/America/Los_Angeles right/America/Louisville +right/America/Lower_Princes right/America/Maceio right/America/Managua right/America/Manaus right/America/Marigot right/America/Martinique +right/America/Matamoros right/America/Mazatlan right/America/Mendoza right/America/Menominee right/America/Merida +right/America/Metlakatla right/America/Mexico_City right/America/Miquelon right/America/Moncton @@ -3146,8 +3227,10 @@ right/America/New_York right/America/Nipigon right/America/Nome right/America/Noronha +right/America/North_Dakota/Beulah right/America/North_Dakota/Center right/America/North_Dakota/New_Salem +right/America/Ojinaga right/America/Panama right/America/Pangnirtung right/America/Paramaribo @@ -3164,12 +3247,14 @@ right/America/Regina right/America/Resolute right/America/Rio_Branco right/America/Rosario +right/America/Santa_Isabel right/America/Santarem right/America/Santiago right/America/Santo_Domingo right/America/Sao_Paulo right/America/Scoresbysund right/America/Shiprock +right/America/Sitka right/America/St_Barthelemy right/America/St_Johns right/America/St_Kitts @@ -3192,6 +3277,7 @@ right/America/Yellowknife right/Antarctica/Casey right/Antarctica/Davis right/Antarctica/DumontDUrville +right/Antarctica/Macquarie right/Antarctica/Mawson right/Antarctica/McMurdo right/Antarctica/Palmer @@ -3228,6 +3314,7 @@ right/Asia/Dubai right/Asia/Dushanbe right/Asia/Gaza right/Asia/Harbin +right/Asia/Hebron right/Asia/Ho_Chi_Minh right/Asia/Hong_Kong right/Asia/Hovd @@ -3254,6 +3341,7 @@ right/Asia/Makassar right/Asia/Manila right/Asia/Muscat right/Asia/Nicosia +right/Asia/Novokuznetsk right/Asia/Novosibirsk right/Asia/Omsk right/Asia/Oral @@ -3486,6 +3574,7 @@ right/PST8PDT right/Pacific/Apia right/Pacific/Auckland right/Pacific/Chatham +right/Pacific/Chuuk right/Pacific/Easter right/Pacific/Efate right/Pacific/Enderbury @@ -3511,6 +3600,7 @@ right/Pacific/Noumea right/Pacific/Pago_Pago right/Pacific/Palau right/Pacific/Pitcairn +right/Pacific/Pohnpei right/Pacific/Ponape right/Pacific/Port_Moresby right/Pacific/Rarotonga |