summaryrefslogtreecommitdiffstats
path: root/source/l/glibc
diff options
context:
space:
mode:
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
commit9664bee729d487bcc0a0bc35859f8e13d5421c75 (patch)
treeb428a16618e36ed864a8d76ea3435e19a452bf90 /source/l/glibc
parent75a4a592e5ccda30715f93563d741b83e0dcf39e (diff)
downloadcurrent-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-glibc36
-rw-r--r--source/l/glibc/doinst.sh-glibc-solibs36
-rw-r--r--source/l/glibc/glibc-2.14-reexport-rpc-interface.patch26
-rw-r--r--source/l/glibc/glibc-2.14-reinstall-nis-rpc-headers.patch27
-rw-r--r--source/l/glibc/glibc-2.14.1-fixes-1.patch159
-rw-r--r--source/l/glibc/glibc-2.15-revert-c5a0802a.diff226
-rw-r--r--source/l/glibc/glibc-2.15.nscd-race-fix.diff47
-rwxr-xr-xsource/l/glibc/glibc.SlackBuild34
-rw-r--r--source/l/glibc/glibc.git-6ee65ed6ddbf04402fad0bec6aa9c73b9d982ae4.diff322
-rw-r--r--source/l/glibc/glibc.strtod.CVE-2012-3480.diff407
-rw-r--r--source/l/glibc/slack-desc.glibc-zoneinfo2
-rw-r--r--source/l/glibc/slack-desc.glibc-zoneinfo.olson19
-rw-r--r--source/l/glibc/timezone-scripts/timeconfig90
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