summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2010-04-12 13:40:20 +0200
committerAndreas Schwab <schwab@redhat.com>2010-04-12 13:40:20 +0200
commit1fd194fb757480a11ebd877e17dd627c90d76dd1 (patch)
tree9ad22d95dd8673bc036d14b0055a8dcd6febe09e
parent4ac4e460b116fb6da6e80124f4c4f6968eb86341 (diff)
parentea42a20caed5b343ff20a0d4622ae6c17b77161b (diff)
downloadglibc-1fd194fb757480a11ebd877e17dd627c90d76dd1.tar.gz
glibc-1fd194fb757480a11ebd877e17dd627c90d76dd1.tar.xz
glibc-1fd194fb757480a11ebd877e17dd627c90d76dd1.zip
Merge remote branch 'origin/master' into fedora/master
-rw-r--r--ChangeLog113
-rw-r--r--Makerules15
-rw-r--r--NEWS99
-rw-r--r--elf/dl-cache.c13
-rw-r--r--elf/dl-support.c10
-rw-r--r--localedata/ChangeLog69
-rw-r--r--localedata/SUPPORTED3
-rw-r--r--localedata/locales/ar_AE4
-rw-r--r--localedata/locales/ar_BH4
-rw-r--r--localedata/locales/ar_DZ4
-rw-r--r--localedata/locales/ar_EG4
-rw-r--r--localedata/locales/ar_IQ4
-rw-r--r--localedata/locales/ar_JO4
-rw-r--r--localedata/locales/ar_KW4
-rw-r--r--localedata/locales/ar_LB4
-rw-r--r--localedata/locales/ar_LY4
-rw-r--r--localedata/locales/ar_MA4
-rw-r--r--localedata/locales/ar_OM4
-rw-r--r--localedata/locales/ar_QA4
-rw-r--r--localedata/locales/ar_SD4
-rw-r--r--localedata/locales/ar_SY4
-rw-r--r--localedata/locales/ar_TN4
-rw-r--r--localedata/locales/ar_YE4
-rw-r--r--localedata/locales/ber_DZ2
-rw-r--r--localedata/locales/ber_MA2
-rw-r--r--localedata/locales/bn_IN2
-rw-r--r--localedata/locales/cv_RU238
-rw-r--r--localedata/locales/en_HK4
-rw-r--r--localedata/locales/en_IN4
-rw-r--r--localedata/locales/en_PH4
-rw-r--r--localedata/locales/en_SG4
-rw-r--r--localedata/locales/es_GT57
-rw-r--r--localedata/locales/gu_IN4
-rw-r--r--localedata/locales/hi_IN4
-rw-r--r--localedata/locales/hne_IN2
-rw-r--r--localedata/locales/kn_IN4
-rw-r--r--localedata/locales/kok_IN4
-rw-r--r--localedata/locales/ks_IN@devanagari2
-rw-r--r--localedata/locales/ml_IN4
-rw-r--r--localedata/locales/mr_IN4
-rw-r--r--localedata/locales/ms_MY4
-rw-r--r--localedata/locales/mt_MT4
-rw-r--r--localedata/locales/my_MM2
-rw-r--r--localedata/locales/ne_NP4
-rw-r--r--localedata/locales/nn_NO4
-rw-r--r--localedata/locales/pa_IN2
-rw-r--r--localedata/locales/sa_IN4
-rw-r--r--localedata/locales/sd_IN@devanagari2
-rw-r--r--localedata/locales/sq_AL62
-rw-r--r--localedata/locales/sq_MK105
-rw-r--r--localedata/locales/ta_IN4
-rw-r--r--localedata/locales/te_IN4
-rw-r--r--localedata/locales/zh_HK4
-rw-r--r--localedata/locales/zh_SG4
-rw-r--r--malloc/malloc.c1
-rw-r--r--math/libm-test.inc4
-rw-r--r--math/s_cproj.c15
-rw-r--r--math/s_cprojf.c15
-rw-r--r--math/s_cprojl.c16
-rw-r--r--nis/libnsl.h3
-rw-r--r--nis/nss11
-rw-r--r--nis/nss-default.c5
-rw-r--r--nis/nss_nis/nis-pwd.c51
-rw-r--r--nis/nss_nis/nis-spwd.c79
-rw-r--r--nptl/ChangeLog11
-rw-r--r--nptl/Makefile6
-rw-r--r--nptl/Versions2
-rw-r--r--nptl/sysdeps/pthread/pthread.h12
-rw-r--r--nptl/sysdeps/unix/sysv/linux/pthread_getname.c64
-rw-r--r--nptl/sysdeps/unix/sysv/linux/pthread_setname.c66
-rw-r--r--nscd/aicache.c10
-rw-r--r--nscd/nscd_stat.c9
-rw-r--r--posix/Makefile6
-rw-r--r--posix/bug-getopt1.c73
-rw-r--r--posix/bug-getopt2.c72
-rw-r--r--posix/bug-getopt3.c81
-rw-r--r--posix/bug-getopt4.c86
-rw-r--r--posix/bug-getopt5.c81
-rw-r--r--posix/getopt.c15
-rw-r--r--resolv/nss_dns/dns-host.c16
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_cprojl.c22
-rw-r--r--sysdeps/unix/sysv/linux/getlogin_r.c16
-rw-r--r--sysdeps/unix/sysv/linux/i386/fallocate.c8
-rw-r--r--sysdeps/unix/sysv/linux/i386/fallocate64.c8
84 files changed, 1516 insertions, 288 deletions
diff --git a/ChangeLog b/ChangeLog
index 082130d761..bed6dfea8c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,110 @@
+2010-04-09  Ulrich Drepper  <drepper@redhat.com>
+
+	* nscd/aicache.c (addhstaiX): Correct passing memory to address
+	list to gethostbyname4_r functions.
+
+	* resolv/nss_dns/dns-host.c (gaih_getanswer_slice): Optimize
+	copying of h_name.
+
+2010-04-09  Roland McGrath  <roland@redhat.com>
+
+	* Makerules ($(common-objpfx)libc-abis.h): Depend on libc-abis.stamp.
+	($(common-objpfx)libc-abis.stamp): New target, rule moved from
+	libc-abis.h target.  Use a stamp file to avoid repeating no-op
+	move-if-change on every run.
+
+	* posix/Makefile (tst-chmod-ARGS): Pass $(objdir), not `pwd`.
+
+2010-04-08  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #10915]
+	* nscd/nscd_stat.c (struct statdata): Add reload_count field.
+	(send_stats): Fill in reload_count.
+	(receive_print_stats): Print reload_count.
+
+	* sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): When
+	reading the loginuid file use a buffer which is always large enough.
+	NUL-terminate the string.
+
+	* malloc/malloc.c (_int_malloc): Return NULL if printing error message
+	returns.
+
+2010-04-07  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/fallocate.c: Set errno on error.
+	* sysdeps/unix/sysv/linux/i386/fallocate64.c: Likewise.
+
+2010-04-08  Andreas Jaeger  <aj@suse.de>
+
+	[BZ #10401]
+	* math/s_cprojl.c (__cprojl): Fix implementation to follow C99
+	standard.
+	* math/s_cprojf.c (__cprojf): Likewise.
+	* math/s_cproj.c (__cproj): Likewise.
+	* sysdeps/ieee754/ldbl-128ibm/s_cprojl.c (__cprojl): Likewise.
+	* math/libm-test.inc (cproj_test): Fix test.
+
+2010-04-08  Roland McGrath  <roland@redhat.com>
+
+	* Makerules (libc-abis): Variable removed.
+	($(common-objpfx)libc-abis.h): Depend on Makerules too.
+	Use automatic variables in commands.
+	Depend on first libc-abis from $(sysdirs) or $(..).
+
+2010-04-07  Ulrich Drepper  <drepper@redhat.com>
+
+	* posix/bug-getopt1.c: New file.
+	* posix/bug-getopt2.c: New file.
+	* posix/bug-getopt3.c: New file.
+	* posix/bug-getopt4.c: New file.
+	* posix/bug-getopt5.c: New file.
+
+2009-12-01  Eric Blake  <ebb9@byu.net>
+
+	[BZ #11039]
+	* posix/getopt.c (_getopt_internal_r): Skip optional - or + before
+	checking lead byte of optstring for :.
+
+	[BZ #11040]
+	* posix/getopt.c (_getopt_internal_r): Reject '-;' as short
+	option, since it conflicts with "W;" optstring extension.
+
+2009-12-02  Eric Blake  <ebb9@byu.net>
+
+	[BZ #11041]
+	* posix/getopt.c (_getopt_internal_r): Handle '-Wfoo' identically
+	to '--foo', with optional argument or non-ambiguous prefix.
+
+2010-04-07  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #11134]
+	* nis/libnsl.h (NSS_FLAG_ADJUNCT_AS_SHADOW): Define.
+	* nis/nss: Document new ADJUNCT_AS_SHADOW variable.
+	* nis/nss-default.c: Handle ADJUNCT_AS_SHADOW variable.
+	* nis/nss_nis/nis-pwd.c (internal_nis_endpwent): Minor cleanups.
+	(internal_nis_getpwent_r): Don't fill in password from adjunct table
+	if NSS_FLAG_ADJUNCT_AS_SHADOW is set.
+	(_nss_nis_getpwnam_r): Likewise.
+	(_nss_nis_getpwuid_r): Likewise.
+	* nis/nss_nis/nis-spwd.c (ent_adjunct_used): New global variable.
+	(_nss_nis_setspent): Also reset ent_adjunct_used.
+	(internal_nis_getspent_r): If new_start is set and shadow.byname table
+	does not exist and NSS_FLAG_ADJUNCT_AS_SHADOW is set, try to get
+	passwd.adjunct.byname table.  If new_start is not set get next entry
+	from the initially used table.  Synthesize shadow.byname table if
+	necessary by adding two empty fields.
+	(_nss_nis_getspnam_r): If shadow.byname table does not exist and
+	NSS_FLAG_ADJUNCT_AS_SHADOW is set, try to get passwd.adjunct.byname
+	table and synthesize shadow.byname table.
+
+2010-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makerules (libc-abis): Add $(..) to libc-abis.
+
+2010-04-06  Joseph Myers  <joseph@codesourcery.com>
+
+	* Makerules (libc-abis): Fix search for libc-abis in add-ons.
+
 2010-04-06  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/posix/getaddrinfo.c (default_scopes): Assign global
@@ -13,6 +120,10 @@
 
 2010-04-05  Roland McGrath  <roland@redhat.com>
 
+	* elf/dl-cache.c (_dl_load_cache_lookup): Obey dl_hwcap_mask.
+
+	* elf/dl-support.c (_dl_hwcap_mask): New variable.
+
 	* elf/rtld.c (dl_main) [HAVE_AUX_VECTOR]: Add a cast.
 
 2010-03-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
@@ -172,6 +283,7 @@
 
 2010-03-25  Andreas Schwab  <schwab@redhat.com>
 
+	[BZ #11001]
 	* sysdeps/posix/getaddrinfo.c (gaih_inet): Reset no_data before
 	each action.
 
@@ -969,6 +1081,7 @@
 	re_node_set_insert failure; return REG_ESPACE.
 	Patch by Paul Eggert.
 
+	[BZ #10864]
 	* bits/confname.h: Make pre-C99-safe.
 
 2010-01-14  Ryan S. Arnold  <rsa@us.ibm.com>
diff --git a/Makerules b/Makerules
index d5ff383770..9bfe55056d 100644
--- a/Makerules
+++ b/Makerules
@@ -111,13 +111,16 @@ endif # $(versioning) = yes
 
 ifndef avoid-generated
 before-compile := $(common-objpfx)libc-abis.h $(before-compile)
-libc-abis := $(firstword $(wildcard $(foreach D,$(add-ons), $(..)libc-abis)) \
-			 libc-abis)
-$(common-objpfx)libc-abis.h: $(..)scripts/gen-libc-abis $(libc-abis)
-	$(SHELL) $(..)scripts/gen-libc-abis \
+$(common-objpfx)libc-abis.h: $(common-objpfx)libc-abis.stamp; @:
+$(common-objpfx)libc-abis.stamp: $(..)scripts/gen-libc-abis \
+			     $(firstword $(wildcard $(sysdirs:=/libc-abis)) \
+					 $(..)libc-abis) \
+			     $(..)Makerules
+	$(SHELL) $< \
 		 $(base-machine)-$(config-vendor)-$(config-os) \
-		 < $(libc-abis) > $@T
-	$(move-if-change) $@T $@
+		 < $(word 2,$^) > $(@:.stamp=.h)T
+	$(move-if-change) $(@:.stamp=.h)T $(@:.stamp=.h)
+	touch $@
 common-generated += $(common-objpfx)libc-abis.h
 endif # avoid-generated
 
diff --git a/NEWS b/NEWS
index e1fb6a5766..d55a844d4e 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,5 @@
-GNU C Library NEWS -- history of user-visible changes.  2009-12-8
-Copyright (C) 1992-2008, 2009 Free Software Foundation, Inc.
+GNU C Library NEWS -- history of user-visible changes.  2010-4-9
+Copyright (C) 1992-2009, 2010 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
@@ -7,11 +7,46 @@ using `glibc' in the "product" field.
 
 Version 2.12
 
+* The following bugs are resolved with this release:
+
+  3662, 4457, 5553, 10162, 10401, 10414, 10554, 10824, 10864, 10915, 10918,
+  10936, 10939, 10958, 10968, 10969, 10972, 10992, 11000, 11001, 11007,
+  11010, 11027, 11039, 11040, 11041, 11043, 11046, 11056, 11070, 11093,
+  11115, 11120, 11125, 11126, 11127, 11134, 11141, 11149, 11183, 11184,
+  11185, 11186, 11187, 11188, 11189, 11190, 11191, 11192, 11193, 11194,
+  11200, 11230, 11235, 11242, 11254, 11258, 11271, 11272, 11276, 11279,
+  11287, 11292, 11319, 11332, 11333, 11387, 11389, 11390, 11394, 11397,
+  11410, 11438, 11449, 11470, 11471
+
+* New interfaces: pthread_getname_np, pthread_setname_np
+
 * New Linux interface: recvmmsg
 
+* STT_GNU_IFUNC implemented for Sparc by David Miller.
+
+* The dynamic linker now recognizes supported ABI versions from the
+  EI_ABIVERSION field in the ELF header.
+  Implemented by Ulrich Drepper.
+
+* New NIS mode selector ADJUNCT_AS_SHADOW.  The passwd.adjunct.byname table
+  will not be used to fill in password fields in the passwd.byname replies.
+  Instead it is used to synthesize the shadow.byname table, should it be
+  missing.  This is a useful mode in some installations involving Solaris.
+  Implemented by Ulrich Drepper.
+
+* New locales: kok_IN, sq_MK, cv_RU
 
 Version 2.11
 
+* The following bugs are resolved with this release:
+
+  3270, 7094, 9924, 9986, 10011, 10085, 10107, 10159, 10162, 10166, 10183,
+  10195, 10196, 10200, 10203, 10207, 10211, 10213, 10217, 10221, 10229,
+  10262, 10286, 10312, 10315, 10319, 10349, 10360, 10391, 10402, 10416,
+  10418, 10422, 10425, 10446, 10448, 10452, 10540, 10553, 10560, 10564,
+  10609, 10643, 10692, 10713, 10717, 10730, 10731, 10742, 10780, 10784,
+  10789, 10817, 10823, 10840, 10847
+
 * New interfaces: execvpe, pthread_sigqueue, mkstemps, mkstemps64, mkostemps,
   mkostemps64
   Implemented by Ulrich Drepper.
@@ -64,10 +99,17 @@ Version 2.11
   Implemented by Ulrich Drepper.
 
 * New locales: ps_AF, my_MM
-
 
 Version 2.10
 
+* The following bugs are resolved with this release:
+
+  697, 5381, 5807, 6411, 6545, 7040, 7058, 7067, 7080, 7083, 7095, 7098,
+  9677, 9694, 9697, 9701, 9704, 9705, 9706, 9720, 9726, 9730, 9733, 9736,
+  9741, 9750, 9753, 9759, 9781, 9791, 9793, 9823, 9833, 9844, 9880, 9881,
+  9891, 9893, 9895, 9913, 9916, 9920, 9948, 9955, 9957, 9963, 9985, 10052,
+  10069, 10086, 10087, 10090, 10092, 10093, 10100, 10118, 10128
+
 * New interfaces: preadv, preadv64, pwritev, pwritev64, malloc_info
   Implemented by Ulrich Drepper.
 
@@ -114,10 +156,17 @@ Version 2.10
   in case of a broken server.  To avoid it, users can run nscd or put
   'options single-request' in /etc/resolv.conf.
   Implemented by Ulrich Drepper.
-
 
 Version 2.9
 
+* The following bugs are resolved with this release:
+
+  3406, 5209, 5210, 5381, 5794, 5814, 5911, 6428, 6438, 6442, 6447, 6461,
+  6472, 6505, 6544, 6589, 6612, 6634, 6653, 6654, 6657, 6698, 6712, 6713,
+  6719, 6723, 6724, 6740, 6763, 6771, 6790, 6791, 6817, 6824, 6839, 6843,
+  6845, 6856, 6857, 6860, 6867, 6875, 6919, 6920, 6942, 6947, 6955, 6966,
+  6968, 6974, 6980, 6995, 7008, 7009, 7029
+
 * Unified lookup for getaddrinfo: IPv4 and IPv6 addresses are now looked
   up at the same time.  Implemented by Ulrich Drepper.
 
@@ -155,6 +204,16 @@ Version 2.9
 
 Version 2.8
 
+* The following bugs are resolved with this release:
+
+  2549, 3112, 4314, 4407, 4997, 5012, 5040, 5112, 5204, 5208, 5209, 5220,
+  5222, 5224, 5225, 5237, 5238, 5240, 5245, 5277, 5346, 5375, 5378, 5382,
+  5424, 5427, 5428, 5435, 5436, 5439, 5441, 5442, 5443, 5451, 5452, 5454,
+  5455, 5463, 5464, 5465, 5475, 5477, 5478, 5520, 5541, 5545, 5553, 5600,
+  5602, 5607, 5614, 5627, 5628, 5736, 5737, 5741, 5753, 5760, 5762, 5768,
+  5774, 5777, 5778, 5779, 5786, 5790, 5818, 5854, 5857, 5903, 5939, 5979,
+  5983, 5995, 5998, 6004, 6007, 6020, 6021, 6024, 6040, 6042
+
 * New locales: bo_CN, bo_IN, shs_CA.
 
 * New encoding: HP-ROMAN9, HP-GREEK8, HP-THAI8, HP-TURKISH8.
@@ -188,6 +247,14 @@ Version 2.8
 
 Version 2.7
 
+* The following bugs are resolved with this release:
+
+  4125, 4126, 4178, 4359, 4407, 4512, 4514, 4525, 4554, 4556, 4557, 4566,
+  4582, 4586, 4588, 4599, 4610, 4647, 4702, 4705, 4726, 4745, 4772, 4773,
+  4775, 4776, 4792, 4813, 4814, 4816, 4833, 4858, 4860, 4896, 4905, 4925,
+  4936, 4937, 4938, 4941, 4946, 4963, 4972, 5010, 5028, 5043, 5058, 5063,
+  5071, 5103, 5104, 5112, 5113, 5184, 5186
+
 * More checking functions: fread, fread_unlocked, open*, mq_open.
   Implemented by Jakub Jelinek and Ulrich Drepper.
 
@@ -228,15 +295,37 @@ Version 2.7
 
 Version 2.6
 
+* The following bugs are resolved with this release:
+
+  3156, 3213, 3285, 3291, 3306, 3313, 3320, 3322, 3325, 3326, 3334, 3348,
+  3352, 3363, 3369, 3426, 3427, 3429, 3451, 3458, 3465, 3480, 3483, 3493,
+  3514, 3515, 3559, 3632, 3664, 3673, 3674, 3745, 3747, 3818, 3840, 3842,
+  3851, 3855, 3884, 3885, 3902, 3905, 3919, 3944, 3954, 3955, 3957, 3991,
+  3995, 3996, 4024, 4040, 4069, 4070, 4074, 4076, 4096, 4101, 4102, 4114,
+  4130, 4131, 4181, 4276, 4306, 4342, 4344, 4349, 4364, 4368, 4381, 4392,
+  4403, 4405, 4406, 4411, 4438, 4439, 4455, 4456, 4465, 4512, 4514, 4586,
+  4702, 4858
+
 * New Linux interfaces: epoll_pwait, sched_getcpu.
 
 * New generic interfaces: strerror_l.
 
 * nscd can now cache the services database.   Implemented by Ulrich Drepper.
-
 
 Version 2.5
 
+* The following bugs are resolved with this release:
+
+  39, 68, 192, 352, 388, 531, 935, 1006, 1201, 1203, 1386, 1782, 1783, 1784,
+  1785, 1786, 1787, 1951, 1974, 1996, 2072, 2098, 2125, 2134, 2158, 2182,
+  2349, 2376, 2386, 2389, 2415, 2418, 2420, 2423, 2450, 2451, 2466, 2472,
+  2473, 2477, 2498, 2499, 2501, 2502, 2505, 2507, 2508, 2509, 2517, 2526,
+  2569, 2571, 2592, 2611, 2625, 2632, 2644, 2662, 2680, 2683, 2684, 2693,
+  2695, 2703, 2734, 2751, 2764, 2766, 2775, 2792, 2821, 2823, 2832, 2841,
+  2843, 2883, 2892, 2908, 2914, 2926, 2961, 2978, 2980, 2987, 2997, 2998,
+  3013, 3018, 3034, 3040, 3044, 3123, 3124, 3137, 3138, 3143, 3155, 3189,
+  3225, 3251, 3252, 3253, 3273
+
 * For Linux, the sorting of addresses returned by getaddrinfo now also
   handles rules 3, 4, and 7 from RFC 3484.  I.e., all rules are handled.
   Implemented by Ulrich Drepper.
diff --git a/elf/dl-cache.c b/elf/dl-cache.c
index bbeba77e4a..5a01c2ed1d 100644
--- a/elf/dl-cache.c
+++ b/elf/dl-cache.c
@@ -1,5 +1,6 @@
 /* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
-   Copyright (C) 1996-2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1996-2002,2003,2004,2006,2010
+	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
@@ -255,17 +256,19 @@ _dl_load_cache_lookup (const char *name)
       if (platform != (uint64_t) -1)
 	platform = 1ULL << platform;
 
-      /* Only accept hwcap if it's for the right platform.  */
 #define _DL_HWCAP_TLS_MASK (1LL << 63)
+      uint64_t hwcap_exclude = ~((GLRO(dl_hwcap) & GLRO(dl_hwcap_mask))
+				 | _DL_HWCAP_PLATFORM | _DL_HWCAP_TLS_MASK);
+
+      /* Only accept hwcap if it's for the right platform.  */
 #define HWCAP_CHECK \
+      if (lib->hwcap & hwcap_exclude)					      \
+	continue;							      \
       if (GLRO(dl_osversion) && lib->osversion > GLRO(dl_osversion))	      \
 	continue;							      \
       if (_DL_PLATFORMS_COUNT						      \
 	  && (lib->hwcap & _DL_HWCAP_PLATFORM) != 0			      \
 	  && (lib->hwcap & _DL_HWCAP_PLATFORM) != platform)		      \
-	continue;							      \
-      if (lib->hwcap							      \
-	  & ~(GLRO(dl_hwcap) | _DL_HWCAP_PLATFORM | _DL_HWCAP_TLS_MASK))      \
 	continue
       SEARCH_CACHE (cache_new);
     }
diff --git a/elf/dl-support.c b/elf/dl-support.c
index bcf0e2a560..65b25750de 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -1,5 +1,5 @@
 /* Support for dynamic linking code in static libc.
-   Copyright (C) 1996-2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1996-2008,2009,2010 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
@@ -126,6 +126,14 @@ ElfW(Phdr) *_dl_phdr;
 size_t _dl_phnum;
 uint64_t _dl_hwcap __attribute__ ((nocommon));
 
+/* This is not initialized to HWCAP_IMPORTANT, matching the definition
+   of _dl_important_hwcaps, below, where no hwcap strings are ever
+   used.  This mask is still used to mediate the lookups in the cache
+   file.  Since there is no way to set this nonzero (we don't grok the
+   LD_HWCAP_MASK environment variable here), there is no real point in
+   setting _dl_hwcap nonzero below, but we do anyway.  */
+uint64_t _dl_hwcap_mask __attribute__ ((nocommon));
+
 /* Prevailing state of the stack, PF_X indicating it's executable.  */
 ElfW(Word) _dl_stack_flags = PF_R|PF_W|PF_X;
 
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 16e2898ce9..e362e29886 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,72 @@
+2010-04-08  Ulrich Drepper  <drepper@redhat.com>
+
+	* locales/ar_AE: Fix typo.
+	* locales/ar_BH: Likewise.
+	* locales/ar_DZ: Likewise.
+	* locales/ar_EG: Likewise.
+	* locales/ar_IQ: Likewise.
+	* locales/ar_JO: Likewise.
+	* locales/ar_KW: Likewise.
+	* locales/ar_LB: Likewise.
+	* locales/ar_LY: Likewise.
+	* locales/ar_MA: Likewise.
+	* locales/ar_OM: Likewise.
+	* locales/ar_QA: Likewise.
+	* locales/ar_SD: Likewise.
+	* locales/ar_SY: Likewise.
+	* locales/ar_TN: Likewise.
+	* locales/ar_YE: Likewise.
+	* locales/ber_DZ: Likewise.
+	* locales/ber_MA: Likewise.
+	* locales/bn_IN: Likewise.
+	* locales/en_HK: Likewise.
+	* locales/en_IN: Likewise.
+	* locales/en_PH: Likewise.
+	* locales/en_SG: Likewise.
+	* locales/gu_IN: Likewise.
+	* locales/hi_IN: Likewise.
+	* locales/hne_IN: Likewise.
+	* locales/kn_IN: Likewise.
+	* locales/kok_IN: Likewise.
+	* locales/ks_IN@devanagari: Likewise.
+	* locales/ml_IN: Likewise.
+	* locales/mr_IN: Likewise.
+	* locales/ms_MY: Likewise.
+	* locales/mt_MT: Likewise.
+	* locales/my_MM: Likewise.
+	* locales/ne_NP: Likewise.
+	* locales/nn_NO: Likewise.
+	* locales/pa_IN: Likewise.
+	* locales/sa_IN: Likewise.
+	* locales/sd_IN@devanagari: Likewise.
+	* locales/sq_AL: Likewise.
+	* locales/sq_MK: Likewise.
+	* locales/ta_IN: Likewise.
+	* locales/te_IN: Likewise.
+	* locales/zh_HK: Likewise.
+	* locales/zh_SG: Likewise.
+
+	* SUPPORTED (SUPPORTED-LOCALES): Add cv_RU.
+
+	[BZ #10824]
+	* locales/cv_RU: New file.
+	Contributed by Adi Roiban <adi@roiban.ro>.
+
+	[BZ #10936]
+	* locales/es_GT: Change paper size to letter.
+
+	* SUPPORTED (SUPPORTED-LOCALES): Add kok_IN and sq_MK.
+
+	[BZ #11470]
+	* locales/sq_MK: New file.
+	Contributed by Agron Selimaj <linuxmaster@verizon.net>.
+
+2010-04-07  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #11471]
+	* locales/sq_AL: Fix Mr. Mrs. Ms. and Miss.
+	Patch by Agron Selimaj <linuxmaster@verizon.net>.
+
 2010-04-05  Ulrich Drepper  <drepper@redhat.com>
 
 	[BZ #11007]
diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED
index 2db559d60e..75e1a00a76 100644
--- a/localedata/SUPPORTED
+++ b/localedata/SUPPORTED
@@ -80,6 +80,7 @@ crh_UA/UTF-8 \
 cs_CZ.UTF-8/UTF-8 \
 cs_CZ/ISO-8859-2 \
 csb_PL/UTF-8 \
+cv_RU/UTF-8 \
 cy_GB.UTF-8/UTF-8 \
 cy_GB/ISO-8859-14 \
 da_DK.UTF-8/UTF-8 \
@@ -262,6 +263,7 @@ km_KH/UTF-8 \
 kn_IN/UTF-8 \
 ko_KR.EUC-KR/EUC-KR \
 ko_KR.UTF-8/UTF-8 \
+kok_IN/UTF-8 \
 ks_IN/UTF-8 \
 ks_IN@devanagari/UTF-8 \
 ku_TR.UTF-8/UTF-8 \
@@ -358,6 +360,7 @@ so_SO.UTF-8/UTF-8 \
 so_SO/ISO-8859-1 \
 sq_AL.UTF-8/UTF-8 \
 sq_AL/ISO-8859-1 \
+sq_MK/UTF-8 \
 sr_ME/UTF-8 \
 sr_RS/UTF-8 \
 sr_RS@latin/UTF-8 \
diff --git a/localedata/locales/ar_AE b/localedata/locales/ar_AE
index ab4fc40c6f..e787bf3422 100644
--- a/localedata/locales/ar_AE
+++ b/localedata/locales/ar_AE
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0041><U0045><U0044><U0020>"
@@ -75,7 +75,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_BH b/localedata/locales/ar_BH
index c47c45d934..4839d5fa4e 100644
--- a/localedata/locales/ar_BH
+++ b/localedata/locales/ar_BH
@@ -45,7 +45,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0042><U0048><U0044><U0020>"
@@ -79,7 +79,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_DZ b/localedata/locales/ar_DZ
index cd7f039a2a..1e2838e84f 100644
--- a/localedata/locales/ar_DZ
+++ b/localedata/locales/ar_DZ
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0044><U005A><U0044><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_EG b/localedata/locales/ar_EG
index d26d43854f..ec0e9e2979 100644
--- a/localedata/locales/ar_EG
+++ b/localedata/locales/ar_EG
@@ -48,7 +48,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0045><U0047><U0050><U0020>"
@@ -82,7 +82,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_IQ b/localedata/locales/ar_IQ
index 9a458d4009..fc4a9fce44 100644
--- a/localedata/locales/ar_IQ
+++ b/localedata/locales/ar_IQ
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0049><U0051><U0044><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_JO b/localedata/locales/ar_JO
index 9a6c2ca582..8102187ee0 100644
--- a/localedata/locales/ar_JO
+++ b/localedata/locales/ar_JO
@@ -45,7 +45,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U004A><U004F><U0044><U0020>"
@@ -79,7 +79,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_KW b/localedata/locales/ar_KW
index 6bfa609efe..e2d1735a87 100644
--- a/localedata/locales/ar_KW
+++ b/localedata/locales/ar_KW
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U004B><U0057><U0044><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_LB b/localedata/locales/ar_LB
index c8fdafc688..cb0b7d7b0a 100644
--- a/localedata/locales/ar_LB
+++ b/localedata/locales/ar_LB
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U004C><U0042><U0050><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_LY b/localedata/locales/ar_LY
index 2ca3f06f97..5ab5838dfc 100644
--- a/localedata/locales/ar_LY
+++ b/localedata/locales/ar_LY
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U004C><U0059><U0044><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_MA b/localedata/locales/ar_MA
index 703c118854..744b8a64c1 100644
--- a/localedata/locales/ar_MA
+++ b/localedata/locales/ar_MA
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U004D><U0041><U0044><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_OM b/localedata/locales/ar_OM
index 1966d19649..b43475ef64 100644
--- a/localedata/locales/ar_OM
+++ b/localedata/locales/ar_OM
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U004F><U004D><U0052><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_QA b/localedata/locales/ar_QA
index 5603b6ab7d..979325652f 100644
--- a/localedata/locales/ar_QA
+++ b/localedata/locales/ar_QA
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0051><U0041><U0052><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_SD b/localedata/locales/ar_SD
index 23778596a0..c4a2f866e4 100644
--- a/localedata/locales/ar_SD
+++ b/localedata/locales/ar_SD
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0053><U0044><U0044><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_SY b/localedata/locales/ar_SY
index 073625420e..8bc02e469d 100644
--- a/localedata/locales/ar_SY
+++ b/localedata/locales/ar_SY
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0053><U0059><U0050><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_TN b/localedata/locales/ar_TN
index 2895f7ccd7..f2ffc4e2a2 100644
--- a/localedata/locales/ar_TN
+++ b/localedata/locales/ar_TN
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0054><U004E><U0044><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ar_YE b/localedata/locales/ar_YE
index bc4a2a9465..91da9e92b9 100644
--- a/localedata/locales/ar_YE
+++ b/localedata/locales/ar_YE
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0059><U0045><U0052><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ber_DZ b/localedata/locales/ber_DZ
index c354a05234..4256a513cf 100644
--- a/localedata/locales/ber_DZ
+++ b/localedata/locales/ber_DZ
@@ -175,7 +175,7 @@ END LC_MESSAGES
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0044><U005A><U0044><U0020>"
diff --git a/localedata/locales/ber_MA b/localedata/locales/ber_MA
index 31ce069138..1333b8c66d 100644
--- a/localedata/locales/ber_MA
+++ b/localedata/locales/ber_MA
@@ -95,7 +95,7 @@ END LC_MESSAGES
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U004D><U0041><U0044><U0020>"
diff --git a/localedata/locales/bn_IN b/localedata/locales/bn_IN
index 1a792acd8a..d049a23a14 100644
--- a/localedata/locales/bn_IN
+++ b/localedata/locales/bn_IN
@@ -84,7 +84,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/cv_RU b/localedata/locales/cv_RU
new file mode 100644
index 0000000000..0eae6d4d46
--- /dev/null
+++ b/localedata/locales/cv_RU
@@ -0,0 +1,238 @@
+comment_char %
+escape_char  /
+%
+% Chuvash Language Locale for Russia
+% Language: cv
+% Territory: RU
+% Revision: 1.0
+% Date: 2009-10-13
+% Application: general
+% Users: general
+% Charset: UTF-8
+% Distribution and use is free, also
+% for commercial purposes.
+%
+% Based on the ru_RO
+% Modifed by:
+%    Adi Roiban <adi@roiban.ro>
+%    Ali Savatar
+%
+
+LC_IDENTIFICATION
+title      "Chuvash locale for Russia"
+source     "RAP"
+address    "Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark"
+contact    ""
+email      "bug-glibc-locales@gnu.org"
+tel        ""
+fax        ""
+language   "Chuvash"
+territory  "Russia"
+revision   "1.0"
+date       "2000-06-29"
+%
+category  "cv_RU:2000";LC_IDENTIFICATION
+category  "cv_RU:2000";LC_CTYPE
+category  "cv_RU:2000";LC_COLLATE
+category  "cv_RU:2000";LC_TIME
+category  "cv_RU:2000";LC_NUMERIC
+category  "cv_RU:2000";LC_MONETARY
+category  "cv_RU:2000";LC_MESSAGES
+category  "cv_RU:2000";LC_PAPER
+category  "cv_RU:2000";LC_NAME
+category  "cv_RU:2000";LC_ADDRESS
+category  "cv_RU:2000";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_COLLATE
+copy "iso14651_t1"
+
+% The Chuvash alphabet has the following letters, ordered as below:
+% a a( c e e( h i j k l m n p r s< s s, t u u: v y
+
+collating-symbol <a(>
+collating-symbol <e(>
+collating-symbol <s<>
+collating-symbol <s,>
+collating-symbol <u-diaerisis>
+
+reorder-after <a>
+<a(>
+reorder-after <e>
+<e(>
+reorder-after <r>
+<s<>
+reorder-after <s>
+<s,>
+reorder-after <u>
+<u-diaerisis>
+
+reorder-after <U0061>
+<U0103> <a(>;<BRE>;<MIN>;IGNORE
+reorder-after <U0041>
+<U0102> <a(>;<BRE>;<CAP>;IGNORE
+
+reorder-after <U0065>
+<U0115> <e(>;<BRE>;<MIN>;IGNORE
+reorder-after <U0045>
+<U0114> <e(>;<BRE>;<CAP>;IGNORE
+
+reorder-after <U0072>
+<U0161> <s<>;<CAR>;<MIN>;IGNORE
+reorder-after <U0053>
+<U0160> <s<>;<CAR>;<CAP>;IGNORE
+
+reorder-after <U0073>
+<U0219> <s,>;<CDI>;<MIN>;IGNORE
+<U015F> <s,>;<CDI>;<MIN>;IGNORE
+reorder-after <U0053>
+<U0218> <s,>;<CDI>;<CAP>;IGNORE
+<U015E> <s,>;<CDI>;<CAP>;IGNORE
+
+reorder-after <U0074>
+<U00FC> <u-diaerisis>;<BAS>;<MIN>;IGNORE
+reorder-after <U0055>
+<U00DC> <u-diaerisis>;<BAS>;<CAP>;IGNORE
+
+reorder-end
+
+END LC_COLLATE
+
+LC_CTYPE
+copy "i18n"
+
+translit_start
+include  "translit_combining";""
+translit_end
+END LC_CTYPE
+
+LC_MESSAGES
+% "^[yY].*"
+yesexpr "<U005E><U005B><U0079><U0059><U005D><U002E><U002A>"
+% "^[nN].*"
+noexpr "<U005E><U005B><U006E><U004E><U005D><U002E><U002A>"
+END LC_MESSAGES
+
+LC_MONETARY
+int_curr_symbol           "<U0052><U0055><U0042><U0020>"
+
+% "t." - short for tenke(, Chuvash name for rouble
+currency_symbol "<U0074>"
+
+mon_decimal_point         "<U002E>"
+mon_thousands_sep         "<U00A0>"
+mon_grouping              3;3
+positive_sign             ""
+negative_sign             "<U002D>"
+int_frac_digits           2
+frac_digits               2
+p_cs_precedes             0
+p_sep_by_space            1
+n_cs_precedes             0
+n_sep_by_space            1
+p_sign_posn               1
+n_sign_posn               1
+END LC_MONETARY
+
+LC_NUMERIC
+copy "ru_RU"
+END LC_NUMERIC
+
+LC_TIME
+
+% Days of week:
+% vyrsarnikun (Sunday) - short vr
+% tuntikun (Monday) tn
+% ytlarikun (Tuesday) yt
+% junkun (Wednesday) jn
+% ke(s,nernikun (Thursday) ks,
+% ernekun (Friday) er
+% s<a(matkun (Saturday) s<m
+
+day 	"<U0076><U0079><U0072><U0073><U0061><U0072><U006E><U0069><U006B><U0075><U006E>";/
+	"<U0074><U0075><U006E><U0074><U0069><U006B><U0075><U006E>";/
+	"<U0079><U0074><U006C><U0061><U0072><U0069><U006B><U0075><U006E>";/
+	"<U006A><U0075><U006E><U006B><U0075><U006E>";/
+	"<U006B><U0115><U015F><U006E><U0065><U0072><U006E><U0069><U006B><U0075><U006E>";/
+	"<U0065><U0072><U006E><U0065><U006B><U0075><U006E>";/
+	"<U0161><U0103><U006D><U0061><U0074><U006B><U0075><U006E>"
+
+abday   "<U0076><U0072>";/
+	"<U0074><U006E>";/
+	"<U0079><U0074>";/
+	"<U006A><U006E>";/
+	"<U006B><U015F>";/
+	"<U0065><U0072>";/
+	"<U0161><U006D>"
+
+% Month names:
+% ka(rlac (January) - short KA(R
+% nara(s (February) NAR
+% pus< (March) PUS<
+% aka (April) AKA
+% s,u (May) S,U
+% s,e(rtme (June) S,E(R
+% uta( (July) UTA(
+% s,urla (August) S,UR
+% ava(n (September) AVA(
+% jupa (October) JUP
+% cu:k (November) CU:K
+% ras<tav (December) RAS<
+
+mon     "<U006B><U0103><U0072><U006C><U0061><U0063>";/
+	"<U006E><U0061><U0072><U0103><U0073>";/
+	"<U0070><U0075><U0161>";/
+	"<U0061><U006B><U0061>";/
+	"<U015F><U0075>";/
+	"<U015F><U0115><U0072><U0074><U006D><U0065>";/
+	"<U0075><U0074><U0103>";/
+	"<U015F><U0075><U0072><U006C><U0061>";/
+	"<U0061><U0076><U0103><U006E>";/
+	"<U006A><U0075><U0070><U0061>";/
+	"<U0063><U00FC><U006B>";/
+	"<U0072><U0061><U0161><U0074><U0061><U0076>"
+abmon   "<U004B><U0102><U0052>";/
+	"<U004E><U0041><U0052>";/
+	"<U0050><U0055><U0160>";/
+	"<U0041><U004B><U0041>";/
+	"<U015E><U0055>";/
+	"<U015E><U0114><U0052>";/
+	"<U0055><U0054><U0102>";/
+	"<U015E><U0055><U0052>";/
+	"<U0041><U0056><U0102>";/
+	"<U004A><U0055><U0050>";/
+	"<U0043><U00DC><U004B>";/
+	"<U0052><U0041><U0160>"
+d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062>/
+<U0020><U0025><U0059><U0020><U0025><U0054>"
+d_fmt     "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059>"
+t_fmt     "<U0025><U0054>"
+am_pm     "";""
+t_fmt_ampm ""
+date_fmt       "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
+<U0025><U005A><U0020><U0025><U0059>"
+first_weekday 2
+first_workday 2
+END LC_TIME
+
+LC_PAPER
+copy "ru_RU"
+END LC_PAPER
+
+LC_TELEPHONE
+copy "ru_RU"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+copy "ru_RU"
+END LC_MEASUREMENT
+
+LC_NAME
+copy "ru_RU"
+END LC_NAME
+
+LC_ADDRESS
+copy "ru_RU"
+END LC_ADDRESS
diff --git a/localedata/locales/en_HK b/localedata/locales/en_HK
index 6ccbdfdddb..7f00765a19 100644
--- a/localedata/locales/en_HK
+++ b/localedata/locales/en_HK
@@ -84,7 +84,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -139,7 +139,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^[yY]
diff --git a/localedata/locales/en_IN b/localedata/locales/en_IN
index 5eccc0e55b..3af445afd9 100644
--- a/localedata/locales/en_IN
+++ b/localedata/locales/en_IN
@@ -83,7 +83,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -138,7 +138,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^[yY]
diff --git a/localedata/locales/en_PH b/localedata/locales/en_PH
index 895e7c890a..9f78c1faa6 100644
--- a/localedata/locales/en_PH
+++ b/localedata/locales/en_PH
@@ -84,7 +84,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -139,7 +139,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^[yY]
diff --git a/localedata/locales/en_SG b/localedata/locales/en_SG
index 21479fa93f..0e9196c1f9 100644
--- a/localedata/locales/en_SG
+++ b/localedata/locales/en_SG
@@ -82,7 +82,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -137,7 +137,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^[yY]
diff --git a/localedata/locales/es_GT b/localedata/locales/es_GT
index 2d06fa51f1..455b076c43 100644
--- a/localedata/locales/es_GT
+++ b/localedata/locales/es_GT
@@ -15,7 +15,6 @@ escape_char  /
 % Date: 1997-11-05
 % Application: general
 % Users: general
-% Repertoiremap: mnemonic.ds
 % Charset: ISO-8859-1
 % Distribution and use is free, also
 % for commercial purposes.
@@ -86,34 +85,34 @@ END LC_NUMERIC
 
 LC_TIME
 abday   "<U0064><U006F><U006D>";"<U006C><U0075><U006E>";/
-        "<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/
-        "<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/
-        "<U0073><U00E1><U0062>"
+	"<U006D><U0061><U0072>";"<U006D><U0069><U00E9>";/
+	"<U006A><U0075><U0065>";"<U0076><U0069><U0065>";/
+	"<U0073><U00E1><U0062>"
 day     "<U0064><U006F><U006D><U0069><U006E><U0067><U006F>";/
-        "<U006C><U0075><U006E><U0065><U0073>";/
-        "<U006D><U0061><U0072><U0074><U0065><U0073>";/
-        "<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/
-        "<U006A><U0075><U0065><U0076><U0065><U0073>";/
-        "<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/
-        "<U0073><U00E1><U0062><U0061><U0064><U006F>"
+	"<U006C><U0075><U006E><U0065><U0073>";/
+	"<U006D><U0061><U0072><U0074><U0065><U0073>";/
+	"<U006D><U0069><U00E9><U0072><U0063><U006F><U006C><U0065><U0073>";/
+	"<U006A><U0075><U0065><U0076><U0065><U0073>";/
+	"<U0076><U0069><U0065><U0072><U006E><U0065><U0073>";/
+	"<U0073><U00E1><U0062><U0061><U0064><U006F>"
 abmon   "<U0065><U006E><U0065>";"<U0066><U0065><U0062>";/
-        "<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/
-        "<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/
-        "<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/
-        "<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/
-        "<U006E><U006F><U0076>";"<U0064><U0069><U0063>"
+	"<U006D><U0061><U0072>";"<U0061><U0062><U0072>";/
+	"<U006D><U0061><U0079>";"<U006A><U0075><U006E>";/
+	"<U006A><U0075><U006C>";"<U0061><U0067><U006F>";/
+	"<U0073><U0065><U0070>";"<U006F><U0063><U0074>";/
+	"<U006E><U006F><U0076>";"<U0064><U0069><U0063>"
 mon     "<U0065><U006E><U0065><U0072><U006F>";/
-        "<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/
-        "<U006D><U0061><U0072><U007A><U006F>";/
-        "<U0061><U0062><U0072><U0069><U006C>";/
-        "<U006D><U0061><U0079><U006F>";/
-        "<U006A><U0075><U006E><U0069><U006F>";/
-        "<U006A><U0075><U006C><U0069><U006F>";/
-        "<U0061><U0067><U006F><U0073><U0074><U006F>";/
-        "<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/
-        "<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/
-        "<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/
-        "<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>"
+	"<U0066><U0065><U0062><U0072><U0065><U0072><U006F>";/
+	"<U006D><U0061><U0072><U007A><U006F>";/
+	"<U0061><U0062><U0072><U0069><U006C>";/
+	"<U006D><U0061><U0079><U006F>";/
+	"<U006A><U0075><U006E><U0069><U006F>";/
+	"<U006A><U0075><U006C><U0069><U006F>";/
+	"<U0061><U0067><U006F><U0073><U0074><U006F>";/
+	"<U0073><U0065><U0070><U0074><U0069><U0065><U006D><U0062><U0072><U0065>";/
+	"<U006F><U0063><U0074><U0075><U0062><U0072><U0065>";/
+	"<U006E><U006F><U0076><U0069><U0065><U006D><U0062><U0072><U0065>";/
+	"<U0064><U0069><U0063><U0069><U0065><U006D><U0062><U0072><U0065>"
 d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
 d_fmt   "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
 t_fmt   "<U0025><U0054>"
@@ -125,10 +124,8 @@ date_fmt	"<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
 END LC_TIME
 
 LC_PAPER
-% FIXME
-height   297
-% FIXME
-width    210
+height   279
+width    216
 END LC_PAPER
 
 LC_TELEPHONE
diff --git a/localedata/locales/gu_IN b/localedata/locales/gu_IN
index 0d7ffc98a8..2c3d729dbd 100644
--- a/localedata/locales/gu_IN
+++ b/localedata/locales/gu_IN
@@ -67,7 +67,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0049><U004E><U0052><U0020>"
@@ -95,7 +95,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/hi_IN b/localedata/locales/hi_IN
index 5ce3e03520..5aca5d90df 100644
--- a/localedata/locales/hi_IN
+++ b/localedata/locales/hi_IN
@@ -65,7 +65,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0049><U004E><U0052><U0020>"
@@ -99,7 +99,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/hne_IN b/localedata/locales/hne_IN
index b32398aec4..f1c3cfdc61 100644
--- a/localedata/locales/hne_IN
+++ b/localedata/locales/hne_IN
@@ -51,7 +51,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/kn_IN b/localedata/locales/kn_IN
index 4a0a2e3409..9b61dc0c86 100644
--- a/localedata/locales/kn_IN
+++ b/localedata/locales/kn_IN
@@ -67,7 +67,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0049><U004E><U0052><U0020>"
@@ -100,7 +100,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/kok_IN b/localedata/locales/kok_IN
index 7c0f0278f4..1600359599 100644
--- a/localedata/locales/kok_IN
+++ b/localedata/locales/kok_IN
@@ -75,7 +75,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -152,7 +152,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^(Yes|[yY])
diff --git a/localedata/locales/ks_IN@devanagari b/localedata/locales/ks_IN@devanagari
index ebc523481c..37d6a67eea 100644
--- a/localedata/locales/ks_IN@devanagari
+++ b/localedata/locales/ks_IN@devanagari
@@ -51,7 +51,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ml_IN b/localedata/locales/ml_IN
index 18196bb5de..6c97a5a2c5 100644
--- a/localedata/locales/ml_IN
+++ b/localedata/locales/ml_IN
@@ -98,7 +98,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -168,7 +168,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^[\u0d05\u0d24\u0d46]
diff --git a/localedata/locales/mr_IN b/localedata/locales/mr_IN
index 174e0e3f1d..e5658a1a42 100644
--- a/localedata/locales/mr_IN
+++ b/localedata/locales/mr_IN
@@ -96,7 +96,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -176,7 +176,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^(Yes|[yY])
diff --git a/localedata/locales/ms_MY b/localedata/locales/ms_MY
index 27b01d213a..84c866e627 100644
--- a/localedata/locales/ms_MY
+++ b/localedata/locales/ms_MY
@@ -90,7 +90,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -145,7 +145,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^[yY]
diff --git a/localedata/locales/mt_MT b/localedata/locales/mt_MT
index d6af96b1ef..d31908e612 100644
--- a/localedata/locales/mt_MT
+++ b/localedata/locales/mt_MT
@@ -166,7 +166,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -240,7 +240,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^(Yes|[yY])
diff --git a/localedata/locales/my_MM b/localedata/locales/my_MM
index d9bd5ba8b1..d7c40f364b 100644
--- a/localedata/locales/my_MM
+++ b/localedata/locales/my_MM
@@ -98,7 +98,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/ne_NP b/localedata/locales/ne_NP
index ec26144b98..875d7a3961 100644
--- a/localedata/locales/ne_NP
+++ b/localedata/locales/ne_NP
@@ -45,7 +45,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0049><U004E><U0052><U0020>"
@@ -79,7 +79,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/nn_NO b/localedata/locales/nn_NO
index 50950673c5..efd4e5bae8 100644
--- a/localedata/locales/nn_NO
+++ b/localedata/locales/nn_NO
@@ -42,7 +42,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U004E><U004F><U004B><U0020>"
@@ -71,7 +71,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/pa_IN b/localedata/locales/pa_IN
index c4c4732349..98cb91619e 100644
--- a/localedata/locales/pa_IN
+++ b/localedata/locales/pa_IN
@@ -91,7 +91,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/sa_IN b/localedata/locales/sa_IN
index 1e0d80c9d8..8dac294ba2 100644
--- a/localedata/locales/sa_IN
+++ b/localedata/locales/sa_IN
@@ -48,7 +48,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0049><U004E><U0052><U0020>"
@@ -82,7 +82,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/sd_IN@devanagari b/localedata/locales/sd_IN@devanagari
index 7a211c4a23..e54fc92e2e 100644
--- a/localedata/locales/sd_IN@devanagari
+++ b/localedata/locales/sd_IN@devanagari
@@ -79,7 +79,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
diff --git a/localedata/locales/sq_AL b/localedata/locales/sq_AL
index 4aeb3dc810..ec2e30d2d6 100644
--- a/localedata/locales/sq_AL
+++ b/localedata/locales/sq_AL
@@ -189,7 +189,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0041><U004C><U004C><U0020>"
@@ -223,46 +223,46 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Abbreviated weekday names (%a)
 abday       "<U0044><U0069><U0065><U0020>";"<U0048><U00EB><U006E><U0020>";/
-            "<U004D><U0061><U0072><U0020>";"<U004D><U00EB><U0072><U0020>";/
-            "<U0045><U006E><U006A><U0020>";"<U0050><U0072><U0065><U0020>";/
-            "<U0053><U0068><U0074><U0020>"
+	    "<U004D><U0061><U0072><U0020>";"<U004D><U00EB><U0072><U0020>";/
+	    "<U0045><U006E><U006A><U0020>";"<U0050><U0072><U0065><U0020>";/
+	    "<U0053><U0068><U0074><U0020>"
 %
 % Full weekday names (%A)
 day         "<U0065><U0020><U0064><U0069><U0065><U006C><U0020>";/
-            "<U0065><U0020><U0068><U00EB><U006E><U00EB><U0020>";/
-            "<U0065><U0020><U006D><U0061><U0072><U0074><U00EB><U0020>";/
-            "<U0065><U0020><U006D><U00EB><U0072><U006B><U0075><U0072>/
+	    "<U0065><U0020><U0068><U00EB><U006E><U00EB><U0020>";/
+	    "<U0065><U0020><U006D><U0061><U0072><U0074><U00EB><U0020>";/
+	    "<U0065><U0020><U006D><U00EB><U0072><U006B><U0075><U0072>/
 <U00EB><U0020>";/
-            "<U0065><U0020><U0065><U006E><U006A><U0074><U0065><U0020>";/
-            "<U0065><U0020><U0070><U0072><U0065><U006D><U0074><U0065><U0020>";/
-            "<U0065><U0020><U0073><U0068><U0074><U0075><U006E><U00EB><U0020>"
+	    "<U0065><U0020><U0065><U006E><U006A><U0074><U0065><U0020>";/
+	    "<U0065><U0020><U0070><U0072><U0065><U006D><U0074><U0065><U0020>";/
+	    "<U0065><U0020><U0073><U0068><U0074><U0075><U006E><U00EB><U0020>"
 %
 % Abbreviated month names (%b)
 abmon       "<U004A><U0061><U006E>";"<U0053><U0068><U006B>";/
-            "<U004D><U0061><U0072>";"<U0050><U0072><U0069>";/
-            "<U004D><U0061><U006A>";"<U0051><U0065><U0072>";/
-            "<U004B><U006F><U0072>";"<U0047><U0073><U0068>";/
-            "<U0053><U0068><U0074>";"<U0054><U0065><U0074>";/
-            "<U004E><U00EB><U006E>";"<U0044><U0068><U006A>"
+	    "<U004D><U0061><U0072>";"<U0050><U0072><U0069>";/
+	    "<U004D><U0061><U006A>";"<U0051><U0065><U0072>";/
+	    "<U004B><U006F><U0072>";"<U0047><U0073><U0068>";/
+	    "<U0053><U0068><U0074>";"<U0054><U0065><U0074>";/
+	    "<U004E><U00EB><U006E>";"<U0044><U0068><U006A>"
 %
 % Full month names (%B)
 mon         "<U006A><U0061><U006E><U0061><U0072>";/
-            "<U0073><U0068><U006B><U0075><U0072><U0074>";/
-            "<U006D><U0061><U0072><U0073>";/
-            "<U0070><U0072><U0069><U006C><U006C>";/
-            "<U006D><U0061><U006A>";/
-            "<U0071><U0065><U0072><U0073><U0068><U006F><U0072>";/
-            "<U006B><U006F><U0072><U0072><U0069><U006B>";/
-            "<U0067><U0075><U0073><U0068><U0074>";/
-            "<U0073><U0068><U0074><U0061><U0074><U006F><U0072>";/
-            "<U0074><U0065><U0074><U006F><U0072>";/
-            "<U006E><U00EB><U006E><U0074><U006F><U0072>";/
-            "<U0064><U0068><U006A><U0065><U0074><U006F><U0072>"
+	    "<U0073><U0068><U006B><U0075><U0072><U0074>";/
+	    "<U006D><U0061><U0072><U0073>";/
+	    "<U0070><U0072><U0069><U006C><U006C>";/
+	    "<U006D><U0061><U006A>";/
+	    "<U0071><U0065><U0072><U0073><U0068><U006F><U0072>";/
+	    "<U006B><U006F><U0072><U0072><U0069><U006B>";/
+	    "<U0067><U0075><U0073><U0068><U0074>";/
+	    "<U0073><U0068><U0074><U0061><U0074><U006F><U0072>";/
+	    "<U0074><U0065><U0074><U006F><U0072>";/
+	    "<U006E><U00EB><U006E><U0074><U006F><U0072>";/
+	    "<U0064><U0068><U006A><U0065><U0074><U006F><U0072>"
 %
 % Equivalent of AM PM
 am_pm       "<U0050><U0044>";"<U004D><U0044>"
@@ -315,10 +315,10 @@ LC_NAME
 name_fmt    "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074>/
 <U0025><U0067>"
 name_gen    ""
-name_mr     "<U004D><U0072><U002E>"
-name_mrs    "<U004D><U0072><U0073><U002E>"
-name_miss   "<U004D><U0069><U0073><U0073><U002E>"
-name_ms     "<U004D><U0073><U002E>"
+name_mr     "<U005A><U002E>"
+name_mrs    "<U005A><U006E><U006A><U002E>"
+name_miss   "<U005A><U0073><U0068><U002E>"
+name_ms     "<U005A><U006E><U006A><U002E>"
 
 END LC_NAME
 
diff --git a/localedata/locales/sq_MK b/localedata/locales/sq_MK
new file mode 100644
index 0000000000..eb3c7eb64c
--- /dev/null
+++ b/localedata/locales/sq_MK
@@ -0,0 +1,105 @@
+comment_char    %
+escape_char     /
+% Albanian language locale for Macedonia.
+% Contributed by Agron Selimaj <linuxmaster@verizon.net>
+
+LC_IDENTIFICATION
+title      "Albanian language locale for Macedonia"
+source     "Albanian Language Team"
+address    "465 4th St. 2nd Floor, Palisades Park, NJ 07650, U.S.A."
+contact    ""
+email      "bug-glibc-locales@gnu.org"
+tel        ""
+fax        ""
+language   "Albanian"
+territory  "Macedonia"
+revision   "0.01"
+date       "2010-04-06"
+%
+category  "sq_MK:2000";LC_IDENTIFICATION
+category  "sq_MK:2000";LC_CTYPE
+category  "sq_MK:2000";LC_COLLATE
+category  "sq_MK:2000";LC_TIME
+category  "sq_MK:2000";LC_NUMERIC
+category  "sq_MK:2000";LC_MONETARY
+category  "sq_MK:2000";LC_MESSAGES
+category  "sq_MK:2000";LC_PAPER
+category  "sq_MK:2000";LC_NAME
+category  "sq_MK:2000";LC_ADDRESS
+category  "sq_MK:2000";LC_TELEPHONE
+
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "sq_AL"
+END LC_CTYPE
+
+LC_COLLATE
+copy "sq_AL"
+END LC_COLLATE
+
+LC_MONETARY
+% This is the POSIX Locale definition the LC_MONETARY category.
+% These are generated based on XML base Locale definition file
+% for IBM Class for Unicode/Java
+%
+int_curr_symbol           "<U004D><U004B><U0044><U0020>"
+currency_symbol           "<U0064><U0065><U006E>"
+mon_decimal_point         "<U002C>"
+mon_thousands_sep         "<U0020>"
+mon_grouping              3;3
+positive_sign             ""
+negative_sign             "<U002D>"
+int_frac_digits           2
+frac_digits               2
+p_cs_precedes             0
+p_sep_by_space            1
+n_cs_precedes             0
+n_sep_by_space            1
+p_sign_posn               1
+n_sign_posn               1
+%
+END LC_MONETARY
+
+
+LC_NUMERIC
+copy "sq_AL"
+END LC_NUMERIC
+
+
+LC_TIME
+copy "sq_AL"
+END LC_TIME
+
+
+LC_MESSAGES
+copy "sq_AL"
+END LC_MESSAGES
+
+
+LC_PAPER
+copy "mk_MK"
+END LC_PAPER
+
+
+LC_NAME
+copy "sq_AL"
+END LC_NAME
+
+
+LC_ADDRESS
+copy "mk_MK"
+END LC_ADDRESS
+
+
+LC_TELEPHONE
+copy "mk_MK"
+END LC_TELEPHONE
+
+
+LC_MEASUREMENT
+% This is the ISO_IEC TR14652 Locale definition for the
+%
+measurement 1
+
+END LC_MEASUREMENT
diff --git a/localedata/locales/ta_IN b/localedata/locales/ta_IN
index 68bcf4ab85..19c41f6fff 100644
--- a/localedata/locales/ta_IN
+++ b/localedata/locales/ta_IN
@@ -105,7 +105,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -160,7 +160,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 yesexpr     "<U005E><U005B><U0B86><U0BAE><U0BCD><U0079><U0059><U005D>"
diff --git a/localedata/locales/te_IN b/localedata/locales/te_IN
index d3456244b0..38040f8bd5 100644
--- a/localedata/locales/te_IN
+++ b/localedata/locales/te_IN
@@ -104,7 +104,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -162,7 +162,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Syntax on Unicode Regular Expression Guidelines TR#18
diff --git a/localedata/locales/zh_HK b/localedata/locales/zh_HK
index 42dccc28d8..1674d816fb 100644
--- a/localedata/locales/zh_HK
+++ b/localedata/locales/zh_HK
@@ -44,7 +44,7 @@ END LC_COLLATE
 
 LC_MONETARY
 % This is the POSIX Locale definition the LC_MONETARY category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 int_curr_symbol       "<U0048><U004B><U0044><U0020>"
@@ -78,7 +78,7 @@ END LC_NUMERIC
 
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode/Java
 %
 % Removed trailing space, by Anthony Fok <anthony@thizlinux.com>, Feb 2002
diff --git a/localedata/locales/zh_SG b/localedata/locales/zh_SG
index 7be5b647a6..2d052f45bb 100644
--- a/localedata/locales/zh_SG
+++ b/localedata/locales/zh_SG
@@ -81,7 +81,7 @@ END LC_NUMERIC
 LC_TIME
 % This is the POSIX Locale definition for the LC_TIME category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % Abbreviated weekday names (%a)
@@ -136,7 +136,7 @@ END LC_TIME
 LC_MESSAGES
 % This is the POSIX Locale definition for the LC_MESSAGES category
 % generated by IBM Basic CountryPack Transformer.
-% These are generated based on XML base Locale difintion file
+% These are generated based on XML base Locale definition file
 % for IBM Class for Unicode.
 %
 % ^[yY]
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 558e8bab0a..722b1d4961 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -4306,6 +4306,7 @@ _int_malloc(mstate av, size_t bytes)
 	  errstr = "malloc(): memory corruption (fast)";
 	errout:
 	  malloc_printerr (check_action, errstr, chunk2mem (victim));
+	  return NULL;
 	}
 #ifndef ATOMIC_FASTBINS
       *fb = victim->fd;
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 260d3ec665..6650b889c5 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2006, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2006, 2007, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1997.
 
@@ -2087,7 +2087,7 @@ cproj_test (void)
   TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero);
 
   TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0);
-  TEST_c_c (cproj, 2.0, 3.0, 0.2857142857142857142857142857142857L, 0.42857142857142857142857142857142855L);
+  TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0);
 
   END (cproj, complex);
 }
diff --git a/math/s_cproj.c b/math/s_cproj.c
index 8e7ca41df8..cff75c40cf 100644
--- a/math/s_cproj.c
+++ b/math/s_cproj.c
@@ -1,5 +1,5 @@
 /* Compute projection of complex double value to Riemann sphere.
-   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1999, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -25,24 +25,19 @@
 __complex__ double
 __cproj (__complex__ double x)
 {
-  __complex__ double res;
-
   if (isnan (__real__ x) && isnan (__imag__ x))
     return x;
   else if (!isfinite (__real__ x) || !isfinite (__imag__ x))
     {
+      __complex__ double res;
+
       __real__ res = INFINITY;
       __imag__ res = __copysign (0.0, __imag__ x);
-    }
-  else
-    {
-      double den = __real__ x * __real__ x + __imag__ x * __imag__ x + 1.0;
 
-      __real__ res = (2.0 * __real__ x) / den;
-      __imag__ res = (2.0 * __imag__ x) / den;
+      return res;
     }
 
-  return res;
+  return x;
 }
 weak_alias (__cproj, cproj)
 #ifdef NO_LONG_DOUBLE
diff --git a/math/s_cprojf.c b/math/s_cprojf.c
index 83df13cfa9..e7eacafbaf 100644
--- a/math/s_cprojf.c
+++ b/math/s_cprojf.c
@@ -1,5 +1,5 @@
 /* Compute projection of complex float value to Riemann sphere.
-   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1999, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -25,24 +25,19 @@
 __complex__ float
 __cprojf (__complex__ float x)
 {
-  __complex__ float res;
-
   if (isnan (__real__ x) && isnan (__imag__ x))
     return x;
   else if (!isfinite (__real__ x) || !isfinite (__imag__ x))
     {
+      __complex__ float res;
+
       __real__ res = INFINITY;
       __imag__ res = __copysignf (0.0, __imag__ x);
-    }
-  else
-    {
-      float den = __real__ x * __real__ x + __imag__ x * __imag__ x + 1.0;
 
-      __real__ res = (2.0 * __real__ x) / den;
-      __imag__ res = (2.0 * __imag__ x) / den;
+      return res;
     }
 
-  return res;
+  return x;
 }
 #ifndef __cprojf
 weak_alias (__cprojf, cprojf)
diff --git a/math/s_cprojl.c b/math/s_cprojl.c
index c70cdc47db..19c17a82bd 100644
--- a/math/s_cprojl.c
+++ b/math/s_cprojl.c
@@ -1,5 +1,5 @@
 /* Compute projection of complex long double value to Riemann sphere.
-   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1999, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -25,24 +25,18 @@
 __complex__ long double
 __cprojl (__complex__ long double x)
 {
-  __complex__ long double res;
-
   if (isnan (__real__ x) && isnan (__imag__ x))
     return x;
   else if (!isfinite (__real__ x) || !isfinite (__imag__ x))
     {
+      __complex__ long double res;
+
       __real__ res = INFINITY;
       __imag__ res = __copysignl (0.0, __imag__ x);
-    }
-  else
-    {
-      long double den = (__real__ x * __real__ x + __imag__ x * __imag__ x
-			 + 1.0);
 
-      __real__ res = (2.0 * __real__ x) / den;
-      __imag__ res = (2.0 * __imag__ x) / den;
+      return res;
     }
 
-  return res;
+  return x;
 }
 weak_alias (__cprojl, cprojl)
diff --git a/nis/libnsl.h b/nis/libnsl.h
index c6ceb321d7..dc15930716 100644
--- a/nis/libnsl.h
+++ b/nis/libnsl.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2006, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -21,6 +21,7 @@
 #define NSS_FLAG_NETID_AUTHORITATIVE	1
 #define NSS_FLAG_SERVICES_AUTHORITATIVE	2
 #define NSS_FLAG_SETENT_BATCH_READ	4
+#define NSS_FLAG_ADJUNCT_AS_SHADOW	8
 
 
 /* Get current set of default flags.  */
diff --git a/nis/nss b/nis/nss
index b7007a6bd4..d720e71926 100644
--- a/nis/nss
+++ b/nis/nss
@@ -1,7 +1,7 @@
 # /etc/default/nss
 # This file can theoretically contain a bunch of customization variables
 # for Name Service Switch in the GNU C library.  For now there are only
-# three variables:
+# four variables:
 #
 # NETID_AUTHORITATIVE
 #   If set to TRUE, the initgroups() function will accept the information
@@ -26,3 +26,12 @@
 #  might result into a network communication with the server to get
 #  the next entry.
 SETENT_BATCH_READ=TRUE
+#
+# ADJUNCT_AS_SHADOW
+#  If set to TRUE, the passwd routines in the NIS NSS module will not
+#  use the passwd.adjunct.byname tables to fill in the password data
+#  in the passwd structure.  This is a security problem if the NIS
+#  server cannot be trusted to send the passwd.adjuct table only to
+#  privileged clients.  Instead the passwd.adjunct.byname table is
+#  used to synthesize the shadow.byname table if it does not exist.
+#ADJUNCT_AS_SHADOW=TRUE
diff --git a/nis/nss-default.c b/nis/nss-default.c
index 046ddfee8d..d7a3293a49 100644
--- a/nis/nss-default.c
+++ b/nis/nss-default.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 2001, 2004, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 1996,2001,2004,2006,2007,2010 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
@@ -47,7 +47,8 @@ static const struct
 #define STRNLEN(s) s, sizeof (s) - 1
     { STRNLEN ("NETID_AUTHORITATIVE"), NSS_FLAG_NETID_AUTHORITATIVE },
     { STRNLEN ("SERVICES_AUTHORITATIVE"), NSS_FLAG_SERVICES_AUTHORITATIVE },
-    { STRNLEN ("SETENT_BATCH_READ"), NSS_FLAG_SETENT_BATCH_READ }
+    { STRNLEN ("SETENT_BATCH_READ"), NSS_FLAG_SETENT_BATCH_READ },
+    { STRNLEN ("ADJUNCT_AS_SHADOW"), NSS_FLAG_ADJUNCT_AS_SHADOW },
   };
 #define nvars (sizeof (vars) / sizeof (vars[0]))
 
diff --git a/nis/nss_nis/nis-pwd.c b/nis/nss_nis/nis-pwd.c
index fdc7dc9e1e..89de350c4d 100644
--- a/nis/nss_nis/nis-pwd.c
+++ b/nis/nss_nis/nis-pwd.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1996-1998,2001-2003,2006,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1998,2001-2003,2006,2009,2010
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
 
@@ -39,7 +40,7 @@
 /* Protect global state against multiple changers */
 __libc_lock_define_initialized (static, lock)
 
-static bool_t new_start = 1;
+static bool new_start = true;
 static char *oldkey;
 static int oldkeylen;
 static intern_t intern;
@@ -108,13 +109,10 @@ _nis_saveit (int instatus, char *inkey, int inkeylen, char *inval,
 static void
 internal_nis_endpwent (void)
 {
-  new_start = 1;
-  if (oldkey != NULL)
-    {
-      free (oldkey);
-      oldkey = NULL;
-      oldkeylen = 0;
-    }
+  new_start = true;
+  free (oldkey);
+  oldkey = NULL;
+  oldkeylen = 0;
 
   struct response_t *curr = intern.start;
 
@@ -264,18 +262,21 @@ internal_nis_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen,
 	}
 
       /* Check for adjunct style secret passwords.  They can be
-	 recognized by a password starting with "##".  */
+	 recognized by a password starting with "##".  We do not use
+	 it if the passwd.adjunct.byname table is supposed to be used
+	 as a shadow.byname replacement.  */
       char *p = strchr (result, ':');
       size_t namelen;
       char *result2;
       int len2;
-      if (p != NULL	/* This better should be true in all cases.  */
+      if ((_nsl_default_nss () & NSS_FLAG_ADJUNCT_AS_SHADOW) == 0
+	  && p != NULL	/* This better should be true in all cases.  */
 	  && p[1] == '#' && p[2] == '#'
 	  && (namelen = p - result,
 	      yp_match (domain, "passwd.adjunct.byname", result, namelen,
 			&result2, &len2)) == YPERR_SUCCESS)
 	{
-	  /* We found a passwd.adjunct entry.  Merge encrypted
+	  /* We found a passwd.adjunct.byname entry.  Merge encrypted
 	     password therein into original result.  */
 	  char *encrypted = strchr (result2, ':');
 	  char *endp;
@@ -325,7 +326,7 @@ internal_nis_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen,
 	}
 
       while (isspace (*p))
-        ++p;
+	++p;
       if (!batch_read)
 	free (result);
 
@@ -346,7 +347,7 @@ internal_nis_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen,
 	  free (oldkey);
 	  oldkey = outkey;
 	  oldkeylen = keylen;
-	  new_start = 0;
+	  new_start = false;
 	}
     }
   while (parse_res < 1);
@@ -399,16 +400,19 @@ _nss_nis_getpwnam_r (const char *name, struct passwd *pwd,
     }
 
   /* Check for adjunct style secret passwords.  They can be recognized
-     by a password starting with "##".  */
+     by a password starting with "##". We do not use it if the
+     passwd.adjunct.byname table is supposed to be used as a shadow.byname
+     replacement.  */
   char *result2;
   int len2;
   char *p = strchr (result, ':');
-  if (p != NULL	/* This better should be true in all cases.  */
+  if ((_nsl_default_nss () & NSS_FLAG_ADJUNCT_AS_SHADOW) == 0
+      && p != NULL	/* This better should be true in all cases.  */
       && p[1] == '#' && p[2] == '#'
       && yp_match (domain, "passwd.adjunct.byname", name, namelen,
 		   &result2, &len2) == YPERR_SUCCESS)
     {
-      /* We found a passwd.adjunct entry.  Merge encrypted password
+      /* We found a passwd.adjunct.byname entry.  Merge encrypted password
 	 therein into original result.  */
       char *encrypted = strchr (result2, ':');
       char *endp;
@@ -465,7 +469,7 @@ _nss_nis_getpwnam_r (const char *name, struct passwd *pwd,
   if (__builtin_expect (parse_res < 1, 0))
     {
       if (parse_res == -1)
-        return NSS_STATUS_TRYAGAIN;
+	return NSS_STATUS_TRYAGAIN;
       else
 	return NSS_STATUS_NOTFOUND;
     }
@@ -498,18 +502,21 @@ _nss_nis_getpwuid_r (uid_t uid, struct passwd *pwd,
     }
 
   /* Check for adjunct style secret passwords.  They can be recognized
-     by a password starting with "##".  */
+     by a password starting with "##".  We do not use it if the
+     passwd.adjunct.byname table is supposed to be used as a shadow.byname
+     replacement.  */
   char *result2;
   int len2;
   size_t namelen;
   char *p = strchr (result, ':');
-  if (p != NULL	/* This better should be true in all cases.  */
+  if ((_nsl_default_nss () & NSS_FLAG_ADJUNCT_AS_SHADOW) == 0
+      && p != NULL	/* This better should be true in all cases.  */
       && p[1] == '#' && p[2] == '#'
       && (namelen = p - result,
 	  yp_match (domain, "passwd.adjunct.byname", result, namelen,
 		    &result2, &len2)) == YPERR_SUCCESS)
     {
-      /* We found a passwd.adjunct entry.  Merge encrypted password
+      /* We found a passwd.adjunct.byname entry.  Merge encrypted password
 	 therein into original result.  */
       char *encrypted = strchr (result2, ':');
       char *endp;
@@ -567,7 +574,7 @@ _nss_nis_getpwuid_r (uid_t uid, struct passwd *pwd,
   if (__builtin_expect (parse_res < 1, 0))
     {
       if (parse_res == -1)
-        return NSS_STATUS_TRYAGAIN;
+	return NSS_STATUS_TRYAGAIN;
      else
        return NSS_STATUS_NOTFOUND;
     }
diff --git a/nis/nss_nis/nis-spwd.c b/nis/nss_nis/nis-spwd.c
index 0fc4e17c42..3cf913b4cd 100644
--- a/nis/nss_nis/nis-spwd.c
+++ b/nis/nss_nis/nis-spwd.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-1998,2001,2002,2003,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1998,2001-2003,2006,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
 
@@ -31,6 +31,7 @@
 #include <rpcsvc/ypclnt.h>
 
 #include "nss-nis.h"
+#include <libnsl.h>
 
 /* Get the declaration of the parser function.  */
 #define ENTNAME spent
@@ -41,7 +42,8 @@
 /* Protect global state against multiple changers */
 __libc_lock_define_initialized (static, lock)
 
-static bool_t new_start = 1;
+static bool new_start = true;
+static bool ent_adjunct_used;
 static char *oldkey;
 static int oldkeylen;
 
@@ -50,7 +52,8 @@ _nss_nis_setspent (int stayopen)
 {
   __libc_lock_lock (lock);
 
-  new_start = 1;
+  new_start = true;
+  ent_adjunct_used = false;
   free (oldkey);
   oldkey = NULL;
   oldkeylen = 0;
@@ -83,32 +86,50 @@ internal_nis_getspent_r (struct spwd *sp, char *buffer, size_t buflen,
       int yperr;
 
       if (new_start)
-        yperr = yp_first (domain, "shadow.byname", &outkey, &keylen, &result,
-			  &len);
+	{
+	  yperr = yp_first (domain, "shadow.byname", &outkey, &keylen, &result,
+			    &len);
+	  if (__builtin_expect (yperr == YPERR_MAP, 0)
+	      && (_nsl_default_nss () & NSS_FLAG_ADJUNCT_AS_SHADOW))
+	    {
+	      free (result);
+	      yperr = yp_first (domain, "passwd.adjunct.byname", &outkey,
+				&keylen, &result, &len);
+	      ent_adjunct_used = true;
+	    }
+	}
       else
-        yperr = yp_next (domain, "shadow.byname", oldkey, oldkeylen, &outkey,
-			 &keylen, &result, &len);
+	yperr = yp_next (domain, (ent_adjunct_used
+				  ? "passwd.adjunct.byname" : "shadow.byname"),
+			 oldkey, oldkeylen, &outkey, &keylen, &result, &len);
 
       if (__builtin_expect (yperr != YPERR_SUCCESS, 0))
-        {
+	{
 	  enum nss_status retval = yperr2nss (yperr);
 
 	  if (retval == NSS_STATUS_TRYAGAIN)
 	    *errnop = errno;
-          return retval;
-        }
+	  return retval;
+	}
 
-      if (__builtin_expect ((size_t) (len + 1) > buflen, 0))
-        {
-          free (result);
+      if (__builtin_expect ((size_t) (len + (ent_adjunct_used ? 3 : 1))
+			    > buflen, 0))
+	{
+	  free (result);
 	  *errnop = ERANGE;
-          return NSS_STATUS_TRYAGAIN;
-        }
+	  return NSS_STATUS_TRYAGAIN;
+	}
 
       char *p = strncpy (buffer, result, len);
-      buffer[len] = '\0';
+      if (ent_adjunct_used)
+	/* This is an ugly trick.  The format of passwd.adjunct.byname almost
+	   matches the shadow.byname format except that the last two fields
+	   are missing.  Synthesize them by marking them empty.  */
+	strcpy (&buffer[len], "::");
+      else
+	buffer[len] = '\0';
       while (isspace (*p))
-        ++p;
+	++p;
       free (result);
 
       parse_res = _nss_files_parse_spent (p, sp, (void *) buffer, buflen,
@@ -123,7 +144,7 @@ internal_nis_getspent_r (struct spwd *sp, char *buffer, size_t buflen,
       free (oldkey);
       oldkey = outkey;
       oldkeylen = keylen;
-      new_start = 0;
+      new_start = false;
     }
   while (!parse_res);
 
@@ -154,15 +175,25 @@ _nss_nis_getspnam_r (const char *name, struct spwd *sp,
       *errnop = EINVAL;
       return NSS_STATUS_UNAVAIL;
     }
+  const size_t name_len = strlen (name);
 
   char *domain;
   if (__builtin_expect (yp_get_default_domain (&domain), 0))
     return NSS_STATUS_UNAVAIL;
 
+  bool adjunct_used = false;
   char *result;
   int len;
-  int yperr = yp_match (domain, "shadow.byname", name, strlen (name), &result,
+  int yperr = yp_match (domain, "shadow.byname", name, name_len, &result,
 			&len);
+  if (__builtin_expect (yperr == YPERR_MAP, 0)
+      && (_nsl_default_nss () & NSS_FLAG_ADJUNCT_AS_SHADOW))
+    {
+      free (result);
+      yperr = yp_match (domain, "passwd.adjunct.byname", name, name_len,
+			&result, &len);
+      adjunct_used = true;
+    }
 
   if (__builtin_expect (yperr != YPERR_SUCCESS, 0))
     {
@@ -173,7 +204,7 @@ _nss_nis_getspnam_r (const char *name, struct spwd *sp,
       return retval;
     }
 
-  if (__builtin_expect ((size_t) (len + 1) > buflen, 0))
+  if (__builtin_expect ((size_t) (len + (adjunct_used ? 3 : 1)) > buflen, 0))
     {
       free (result);
       *errnop = ERANGE;
@@ -181,7 +212,13 @@ _nss_nis_getspnam_r (const char *name, struct spwd *sp,
     }
 
   char *p = strncpy (buffer, result, len);
-  buffer[len] = '\0';
+  if (__builtin_expect (adjunct_used, false))
+    /* This is an ugly trick.  The format of passwd.adjunct.byname almost
+       matches the shadow.byname format except that the last two fields
+       are missing.  Synthesize them by marking them empty.  */
+    strcpy (&buffer[len], "::");
+  else
+    buffer[len] = '\0';
   while (isspace (*p))
     ++p;
   free (result);
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 811b0842f4..bda3391558 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,14 @@
+2010-04-09  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #11390]
+	* sysdeps/unix/sysv/linux/pthread_getname.c: New file.
+	* sysdeps/unix/sysv/linux/pthread_setname.c: New file.
+	* nptl/sysdeps/pthread/pthread.h: Declare pthread_getname and
+	pthread_setname.
+	* Makefile (libpthread-routines): Add pthread_getname and
+	pthread_setname.
+	* Versions: Export pthread_getname and pthread_setname for GLIBC_2.12.
+
 2010-04-05  Thomas Schwinge  <thomas@schwinge.name>
 
 	* sysdeps/pthread/unwind-resume.c: Moved to main tree sysdeps/gnu/.
diff --git a/nptl/Makefile b/nptl/Makefile
index 34940b59d6..8a6f3f2d28 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2008,2009 Free Software Foundation, Inc.
+# Copyright (C) 2002-2008,2009,2010 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
@@ -124,7 +124,9 @@ libpthread-routines = nptl-init vars events version \
 		      pthread_mutexattr_setprotocol \
 		      pthread_mutexattr_getprioceiling \
 		      pthread_mutexattr_setprioceiling tpp \
-		      pthread_mutex_getprioceiling pthread_mutex_setprioceiling
+		      pthread_mutex_getprioceiling \
+		      pthread_mutex_setprioceiling \
+		      pthread_setname pthread_getname
 #		      pthread_setuid pthread_seteuid pthread_setreuid \
 #		      pthread_setresuid \
 #		      pthread_setgid pthread_setegid pthread_setregid \
diff --git a/nptl/Versions b/nptl/Versions
index 1f2de79fd4..f74941fa92 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -247,6 +247,8 @@ libpthread {
   GLIBC_2.12 {
     pthread_mutex_consistent; pthread_mutexattr_getrobust;
     pthread_mutexattr_setrobust;
+
+    pthread_setname_np; pthread_getname_np;
   };
 
   GLIBC_PRIVATE {
diff --git a/nptl/sysdeps/pthread/pthread.h b/nptl/sysdeps/pthread/pthread.h
index b84fd5c7a4..44cf9f0cac 100644
--- a/nptl/sysdeps/pthread/pthread.h
+++ b/nptl/sysdeps/pthread/pthread.h
@@ -425,6 +425,18 @@ extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
      __THROW;
 
 
+#ifdef __USE_GNU
+/* Get thread name visible in the kernel and its interfaces.  */
+extern int pthread_getname_np (pthread_t __target_thread, char *__buf,
+			       size_t __buflen)
+     __THROW __nonnull ((2));
+
+/* Set thread name visible in the kernel and its interfaces.  */
+extern int pthread_setname_np (pthread_t __target_thread, __const char *__name)
+     __THROW __nonnull ((2));
+#endif
+
+
 #ifdef __USE_UNIX98
 /* Determine level of concurrency.  */
 extern int pthread_getconcurrency (void) __THROW;
diff --git a/nptl/sysdeps/unix/sysv/linux/pthread_getname.c b/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
new file mode 100644
index 0000000000..593219b8ff
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
@@ -0,0 +1,64 @@
+/* pthread_getname_np -- Get  thread name.  Linux version
+   Copyright (C) 2010 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; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <pthreadP.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/prctl.h>
+
+#include <not-cancel.h>
+
+
+int
+pthread_getname_np (th, buf, len)
+     pthread_t th;
+     char *buf;
+     size_t len;
+{
+  const struct pthread *pd = (const struct pthread *) th;
+
+  /* Unfortunately the kernel headers do not export the TASK_COMM_LEN
+     macro.  So we have to define it here.  */
+#define TASK_COMM_LEN 16
+  if (len < TASK_COMM_LEN)
+    return ERANGE;
+
+  if (th == THREAD_SELF)
+    return prctl (PR_GET_NAME, buf) ? errno : 0;
+
+#define FMT "/proc/self/task/%u/comm"
+  char fname[sizeof (FMT) + 8];
+  sprintf (fname, FMT, (unsigned int) pd->tid);
+
+  int fd = open_not_cancel_2 (fname, O_RDONLY);
+  if (fd == -1)
+    return errno;
+
+  int res = 0;
+  ssize_t n = TEMP_FAILURE_RETRY (read_not_cancel (fd, buf, len));
+  if (n < 0)
+    res = errno;
+
+  close_not_cancel_no_status (fd);
+
+  return res;
+}
diff --git a/nptl/sysdeps/unix/sysv/linux/pthread_setname.c b/nptl/sysdeps/unix/sysv/linux/pthread_setname.c
new file mode 100644
index 0000000000..34c08d9ea1
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/pthread_setname.c
@@ -0,0 +1,66 @@
+/* pthread_setname_np -- Set  thread name.  Linux version
+   Copyright (C) 2010 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; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <pthreadP.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/prctl.h>
+
+#include <not-cancel.h>
+
+
+int
+pthread_setname_np (th, name)
+     pthread_t th;
+     const char *name;
+{
+  const struct pthread *pd = (const struct pthread *) th;
+
+  /* Unfortunately the kernel headers do not export the TASK_COMM_LEN
+     macro.  So we have to define it here.  */
+#define TASK_COMM_LEN 16
+  size_t name_len = strlen (name);
+  if (name_len >= TASK_COMM_LEN)
+    return ERANGE;
+
+  if (pd == THREAD_SELF)
+    return prctl (PR_SET_NAME, name) ? errno : 0;
+
+#define FMT "/proc/self/task/%u/comm"
+  char fname[sizeof (FMT) + 8];
+  sprintf (fname, FMT, (unsigned int) pd->tid);
+
+  int fd = open_not_cancel_2 (fname, O_RDWR);
+  if (fd == -1)
+    return errno;
+
+  int res = 0;
+  ssize_t n = TEMP_FAILURE_RETRY (write_not_cancel (fd, name, name_len));
+  if (n < 0)
+    res = errno;
+  else if (n != name_len)
+    res = EIO;
+
+  close_not_cancel_no_status (fd);
+
+  return res;
+}
diff --git a/nscd/aicache.c b/nscd/aicache.c
index 992357d2fe..3cb2208035 100644
--- a/nscd/aicache.c
+++ b/nscd/aicache.c
@@ -1,5 +1,5 @@
 /* Cache handling for host lookup.
-   Copyright (C) 2004-2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2004-2008, 2009, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
 
@@ -111,7 +111,7 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
   int old_res_options = _res.options;
   _res.options &= ~RES_USE_INET6;
 
-  size_t tmpbuf6len = 512;
+  size_t tmpbuf6len = 1024;
   char *tmpbuf6 = alloca (tmpbuf6len);
   size_t tmpbuf4len = 0;
   char *tmpbuf4 = NULL;
@@ -133,9 +133,11 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
 							 "gethostbyname4_r");
       if (fct4 != NULL)
 	{
-	  struct gaih_addrtuple *at = NULL;
+	  struct gaih_addrtuple atmem;
+	  struct gaih_addrtuple *at;
 	  while (1)
 	    {
+	      at = &atmem;
 	      rc6 = 0;
 	      herrno = 0;
 	      status[1] = DL_CALL_FCT (fct4, (key, &at, tmpbuf6, tmpbuf6len,
@@ -153,7 +155,7 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
 	    goto next_nip;
 
 	  /* We found the data.  Count the addresses and the size.  */
-	  for (const struct gaih_addrtuple *at2 = at; at2 != NULL;
+	  for (const struct gaih_addrtuple *at2 = at = &atmem; at2 != NULL;
 	       at2 = at2->next)
 	    {
 	      ++naddrs;
diff --git a/nscd/nscd_stat.c b/nscd/nscd_stat.c
index 7f6bd1c83e..658fd56fa3 100644
--- a/nscd/nscd_stat.c
+++ b/nscd/nscd_stat.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 1998, 2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 2003, 2004, 2005, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
 
@@ -80,6 +80,7 @@ struct statdata
   int max_nthreads;
   int paranoia;
   time_t restart_interval;
+  unsigned int reload_count;
   int ndbs;
   struct dbstat dbs[lastdb];
 #ifdef HAVE_SELINUX
@@ -102,6 +103,7 @@ send_stats (int fd, struct database_dyn dbs[lastdb])
   data.max_nthreads = max_nthreads;
   data.paranoia = paranoia;
   data.restart_interval = restart_interval;
+  data.reload_count = reload_count;
   data.ndbs = lastdb;
 
   for (cnt = 0; cnt < lastdb; ++cnt)
@@ -240,10 +242,11 @@ receive_print_stats (void)
 	    "%15d  maximum number of threads\n"
 	    "%15lu  number of times clients had to wait\n"
 	    "%15s  paranoia mode enabled\n"
-	    "%15lu  restart internal\n"),
+	    "%15lu  restart internal\n"
+	    "%15u  reload count\n"),
 	  data.nthreads, data.max_nthreads, data.client_queued,
 	  data.paranoia ? yesstr : nostr,
-	  (unsigned long int) data.restart_interval);
+	  (unsigned long int) data.restart_interval, data.reload_count);
 
   for (i = 0; i < lastdb; ++i)
     {
diff --git a/posix/Makefile b/posix/Makefile
index 0249977fd6..bb2b054249 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -92,7 +92,9 @@ tests		:= tstgetopt testfnm runtests runptests	     \
 		   tst-execve1 tst-execve2 tst-execle1 tst-execle2 \
 		   tst-execvp3 tst-execvp4 tst-rfc3484 tst-rfc3484-2 \
 		   tst-rfc3484-3 \
-		   tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset
+		   tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset \
+		   bug-getopt1 bug-getopt2 bug-getopt3 bug-getopt4 \
+		   bug-getopt5
 xtests		:= bug-ga2
 ifeq (yes,$(build-shared))
 test-srcs	:= globtest
@@ -177,7 +179,7 @@ tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \
 tst-exec-ARGS = -- $(built-program-cmd)
 tst-spawn-ARGS = -- $(built-program-cmd)
 tst-dir-ARGS = `pwd` `cd $(common-objdir)/$(subdir); pwd` `cd $(common-objdir); pwd` $(objpfx)tst-dir
-tst-chmod-ARGS = `pwd`
+tst-chmod-ARGS = $(objdir)
 tst-vfork3-ARGS = --test-dir=$(objpfx)
 
 tst-fnmatch-ENV = LOCPATH=$(common-objpfx)localedata
diff --git a/posix/bug-getopt1.c b/posix/bug-getopt1.c
new file mode 100644
index 0000000000..a47dc7e229
--- /dev/null
+++ b/posix/bug-getopt1.c
@@ -0,0 +1,73 @@
+/* BZ 11039 */
+#include <unistd.h>
+#include <stdio.h>
+
+static int
+one_test (const char *fmt, int argc, char *argv[], int expected[argc - 1])
+{
+  optind = 1;
+
+  int res = 0;
+  for (int i = 0; i < argc - 1; ++i)
+    {
+      rewind (stderr);
+      if (ftruncate (fileno (stderr), 0) != 0)
+	{
+	  puts ("cannot truncate file");
+	  return 1;
+	}
+
+      int c = getopt (argc, argv, fmt);
+      if (c != expected[i])
+	{
+	  printf ("format '%s' test %d failed: expected '%c', got '%c'\n",
+		  fmt, i, expected[i], c);
+	  res = 1;
+	}
+      if (ftell (stderr) != 0)
+	{
+	  printf ("format '%s' test %d failed: printed to stderr\n",
+		  fmt, i);
+	  res = 1;
+	}
+    }
+
+  return res;
+}
+
+
+static int
+do_test (void)
+{
+  char *fname = tmpnam (NULL);
+  if (fname == NULL)
+    {
+      puts ("cannot generate name for temporary file");
+      return 1;
+    }
+
+  if (freopen (fname, "w+", stderr) == NULL)
+    {
+      puts ("cannot redirect stderr");
+      return 1;
+    }
+
+  remove (fname);
+
+  int ret = one_test ("+:a:b", 2,
+		      (char *[2]) { (char *) "bug-getopt1", (char *) "-a" },
+		      (int [1]) { ':' });
+
+  ret |= one_test ("+:a:b", 3,
+		   (char *[3]) { (char *) "bug-getopt1", (char *) "-b",
+				 (char *) "-a" },
+		   (int [2]) { 'b', ':' });
+
+  if (ret == 0)
+    puts ("all OK");
+
+  return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/bug-getopt2.c b/posix/bug-getopt2.c
new file mode 100644
index 0000000000..93c3035ccd
--- /dev/null
+++ b/posix/bug-getopt2.c
@@ -0,0 +1,72 @@
+/* BZ 11039 */
+#include <unistd.h>
+#include <stdio.h>
+
+static int
+one_test (const char *fmt, int argc, char *argv[], int expected[argc - 1])
+{
+  int res = 0;
+  for (int i = 0; i < argc - 1; ++i)
+    {
+      rewind (stderr);
+      if (ftruncate (fileno (stderr), 0) != 0)
+	{
+	  puts ("cannot truncate file");
+	  return 1;
+	}
+
+      int c = getopt (argc, argv, fmt);
+      if (c != expected[i])
+	{
+	  printf ("format '%s' test %d failed: expected '%c', got '%c'\n",
+		  fmt, i, expected[i], c);
+	  res = 1;
+	}
+      if (ftell (stderr) == 0)
+	{
+	  printf ("format '%s' test %d failed: not printed to stderr\n",
+		  fmt, i);
+	  res = 1;
+	}
+    }
+
+  return res;
+}
+
+
+static int
+do_test (void)
+{
+  char *fname = tmpnam (NULL);
+  if (fname == NULL)
+    {
+      puts ("cannot generate name for temporary file");
+      return 1;
+    }
+
+  if (freopen (fname, "w+", stderr) == NULL)
+    {
+      puts ("cannot redirect stderr");
+      return 1;
+    }
+
+  remove (fname);
+
+  optind = 0;
+  int ret = one_test ("+a", 2,
+		      (char *[2]) { (char *) "bug-getopt2", (char *) "-+" },
+		      (int [1]) { '?' });
+
+  optind = 1;
+  ret |= one_test ("+a", 2,
+		   (char *[2]) { (char *) "bug-getopt2", (char *) "-+" },
+		   (int [1]) { '?' });
+
+  if (ret == 0)
+    puts ("all OK");
+
+  return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/bug-getopt3.c b/posix/bug-getopt3.c
new file mode 100644
index 0000000000..c3a8cb225b
--- /dev/null
+++ b/posix/bug-getopt3.c
@@ -0,0 +1,81 @@
+/* BZ 11040 */
+#include <getopt.h>
+#include <unistd.h>
+#include <stdio.h>
+
+static const struct option opts[] =
+  {
+    { "alpha",	no_argument,       NULL, 'a' },
+    { "beta",	required_argument, NULL, 'b' },
+    { NULL,	0,                 NULL, 0 }
+  };
+
+static int
+one_test (const char *fmt, int argc, char *argv[], int n, int expected[n],
+	  int out[n])
+{
+  optind = 1;
+
+  int res = 0;
+  for (int i = 0; i < n; ++i)
+    {
+      rewind (stderr);
+      if (ftruncate (fileno (stderr), 0) != 0)
+	{
+	  puts ("cannot truncate file");
+	  return 1;
+	}
+
+      int c = getopt_long (argc, argv, fmt, opts, NULL);
+      if (c != expected[i])
+	{
+	  printf ("format '%s' test %d failed: expected '%c', got '%c'\n",
+		  fmt, i, expected[i], c);
+	  res = 1;
+	}
+      if ((ftell (stderr) != 0) != out[i])
+	{
+	  printf ("format '%s' test %d failed: %sprinted to stderr\n",
+		  fmt, i, out[i] ? "not " : "");
+	  res = 1;
+	}
+    }
+
+  return res;
+}
+
+
+static int
+do_test (void)
+{
+  char *fname = tmpnam (NULL);
+  if (fname == NULL)
+    {
+      puts ("cannot generate name for temporary file");
+      return 1;
+    }
+
+  if (freopen (fname, "w+", stderr) == NULL)
+    {
+      puts ("cannot redirect stderr");
+      return 1;
+    }
+
+  remove (fname);
+
+  int ret = one_test ("ab:W;", 2,
+		      (char *[2]) { (char *) "bug-getopt3", (char *) "-a;" },
+		      2, (int [2]) { 'a', '?' }, (int [2]) { 0, 1 });
+
+  ret |= one_test ("ab:W;", 2,
+		   (char *[2]) { (char *) "bug-getopt3", (char *) "-a:" }, 2,
+		   (int [2]) { 'a', '?' }, (int [2]) { 0, 1 });
+
+  if (ret == 0)
+    puts ("all OK");
+
+  return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/bug-getopt4.c b/posix/bug-getopt4.c
new file mode 100644
index 0000000000..1daffd1d34
--- /dev/null
+++ b/posix/bug-getopt4.c
@@ -0,0 +1,86 @@
+/* BZ 11041 */
+#include <getopt.h>
+#include <unistd.h>
+#include <stdio.h>
+
+static const struct option opts[] =
+  {
+    { "alpha",    optional_argument, NULL, 'a' },
+    { NULL,       0,                 NULL, 0 }
+  };
+
+static int
+one_test (const char *fmt, int argc, char *argv[], int n, int expected[n])
+{
+  optind = 1;
+
+  int res = 0;
+  for (int i = 0; i < n; ++i)
+    {
+      rewind (stderr);
+      if (ftruncate (fileno (stderr), 0) != 0)
+	{
+	  puts ("cannot truncate file");
+	  return 1;
+	}
+
+      int c = getopt_long (argc, argv, fmt, opts, NULL);
+      if (c != expected[i])
+	{
+	  printf ("format '%s' test %d failed: expected '%c', got '%c'\n",
+		  fmt, i, expected[i], c);
+	  res = 1;
+	}
+      else if (optarg != NULL)
+	{
+	  printf ("format '%s' test %d failed: optarg is \"%s\", not NULL\n",
+		  fmt, i, optarg);
+	  res = 1;
+	}
+      if (ftell (stderr) != 0)
+	{
+	  printf ("format '%s' test %d failed: printed to stderr\n",
+		  fmt, i);
+	  res = 1;
+	}
+    }
+
+  return res;
+}
+
+
+static int
+do_test (void)
+{
+  char *fname = tmpnam (NULL);
+  if (fname == NULL)
+    {
+      puts ("cannot generate name for temporary file");
+      return 1;
+    }
+
+  if (freopen (fname, "w+", stderr) == NULL)
+    {
+      puts ("cannot redirect stderr");
+      return 1;
+    }
+
+  remove (fname);
+
+  int ret = one_test ("W;", 2,
+		      (char *[2]) { (char *) "bug-getopt4", (char *) "--a" },
+		      1, (int [1]) { 'a' });
+
+  ret |= one_test ("W;", 3,
+		   (char *[3]) { (char *) "bug-getopt4", (char *) "-W",
+				 (char *) "a" },
+		   1, (int [1]) { 'a' });
+
+  if (ret == 0)
+    puts ("all OK");
+
+  return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/bug-getopt5.c b/posix/bug-getopt5.c
new file mode 100644
index 0000000000..ed2639d35b
--- /dev/null
+++ b/posix/bug-getopt5.c
@@ -0,0 +1,81 @@
+/* BZ 11041 */
+#include <getopt.h>
+#include <unistd.h>
+#include <stdio.h>
+
+static const struct option opts[] =
+  {
+    { "a1",    no_argument, NULL, 'a' },
+    { "a2",    no_argument, NULL, 'a' },
+    { NULL,    0,           NULL, 0 }
+  };
+
+static int
+one_test (const char *fmt, int argc, char *argv[], int n, int expected[n])
+{
+  optind = 1;
+
+  int res = 0;
+  for (int i = 0; i < n; ++i)
+    {
+      rewind (stderr);
+      if (ftruncate (fileno (stderr), 0) != 0)
+	{
+	  puts ("cannot truncate file");
+	  return 1;
+	}
+
+      int c = getopt_long (argc, argv, fmt, opts, NULL);
+      if (c != expected[i])
+	{
+	  printf ("format '%s' test %d failed: expected '%c', got '%c'\n",
+		  fmt, i, expected[i], c);
+	  res = 1;
+	}
+      if (ftell (stderr) != 0)
+	{
+	  printf ("format '%s' test %d failed: printed to stderr\n",
+		  fmt, i);
+	  res = 1;
+	}
+    }
+
+  return res;
+}
+
+
+static int
+do_test (void)
+{
+  char *fname = tmpnam (NULL);
+  if (fname == NULL)
+    {
+      puts ("cannot generate name for temporary file");
+      return 1;
+    }
+
+  if (freopen (fname, "w+", stderr) == NULL)
+    {
+      puts ("cannot redirect stderr");
+      return 1;
+    }
+
+  remove (fname);
+
+  int ret = one_test (":W;", 2,
+		      (char *[2]) { (char *) "bug-getopt5", (char *) "--a" },
+		      1, (int [1]) { 'a' });
+
+  ret |= one_test (":W;", 3,
+		   (char *[3]) { (char *) "bug-getopt5", (char *) "-W",
+				 (char *) "a" },
+		   1, (int [1]) { 'a' });
+
+  if (ret == 0)
+    puts ("all OK");
+
+  return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/posix/getopt.c b/posix/getopt.c
index 88acff0e2f..2746364fc7 100644
--- a/posix/getopt.c
+++ b/posix/getopt.c
@@ -395,8 +395,6 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
 		    int long_only, struct _getopt_data *d, int posixly_correct)
 {
   int print_errors = d->opterr;
-  if (optstring[0] == ':')
-    print_errors = 0;
 
   if (argc < 1)
     return -1;
@@ -411,6 +409,10 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
 				      posixly_correct);
       d->__initialized = 1;
     }
+  else if (optstring[0] == '-' || optstring[0] == '+')
+    optstring++;
+  if (optstring[0] == ':')
+    print_errors = 0;
 
   /* Test whether ARGV[optind] points to a non-option argument.
      Either it does not have option syntax, or there is an environment flag
@@ -789,7 +791,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
     if (*d->__nextchar == '\0')
       ++d->optind;
 
-    if (temp == NULL || c == ':')
+    if (temp == NULL || c == ':' || c == ';')
       {
 	if (print_errors)
 	  {
@@ -911,7 +913,10 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
 		  pfound = p;
 		  indfound = option_index;
 		}
-	      else
+	      else if (long_only
+		       || pfound->has_arg != p->has_arg
+		       || pfound->flag != p->flag
+		       || pfound->val != p->val)
 		/* Second or later nonexact match found.  */
 		ambig = 1;
 	    }
@@ -1028,6 +1033,8 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
 		    return optstring[0] == ':' ? ':' : '?';
 		  }
 	      }
+	    else
+	      d->optarg = NULL;
 	    d->__nextchar += strlen (d->__nextchar);
 	    if (longind != NULL)
 	      *longind = option_index;
diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c
index e0c4978c3b..8592183f62 100644
--- a/resolv/nss_dns/dns-host.c
+++ b/resolv/nss_dns/dns-host.c
@@ -1050,7 +1050,7 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
 	  ++had_error;
 	  continue;
 	}
-      if (*firstp)
+      if (*firstp && canon == NULL)
 	{
 	  h_name = buffer;
 	  buffer += h_namelen;
@@ -1166,19 +1166,7 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
 	  if (ttl != 0 && ttlp != NULL)
 	    *ttlp = ttl;
 
-	  if (canon != NULL)
-	    {
-	      (*pat)->name = canon;
-
-	      /* Reclaim buffer space.  */
-	      if (h_name + h_namelen == buffer)
-		{
-		  buffer = h_name;
-		  buflen += h_namelen;
-		}
-	    }
-	  else
-	    (*pat)->name = h_name;
+	  (*pat)->name = canon ?: h_name;
 
 	  *firstp = 0;
 	}
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_cprojl.c b/sysdeps/ieee754/ldbl-128ibm/s_cprojl.c
index 2167db3d91..b2a09ae885 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_cprojl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_cprojl.c
@@ -1,5 +1,5 @@
 /* Compute projection of complex long double value to Riemann sphere.
-   Copyright (C) 1997,1999,2006 Free Software Foundation, Inc.
+   Copyright (C) 1997,1999,2006,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -25,30 +25,18 @@
 __complex__ long double
 __cprojl (__complex__ long double x)
 {
-  __complex__ long double res;
-
   if (isnan (__real__ x) && isnan (__imag__ x))
     return x;
   else if (!isfinite (__real__ x) || !isfinite (__imag__ x))
     {
+      __complex__ long double res;
+
       __real__ res = INFINITY;
       __imag__ res = __copysignl (0.0, __imag__ x);
-    }
-  else
-    {
-      long double den = (__real__ x * __real__ x + __imag__ x * __imag__ x
-			 + 1.0);
-
-      __real__ res = (2.0 * __real__ x) / den;
-      __imag__ res = (2.0 * __imag__ x) / den;
-      /* __gcc_qmul does not respect -0.0 so we need the following fixup.  */
-       if (__real__ x == 0.0)
-         __real__ res = __real__ x;
 
-       if (__imag__ x == 0.0)
-         __imag__ res = __imag__ x;
+      return res;
     }
 
-  return res;
+  return x;
 }
 long_double_symbol (libm, __cprojl, cprojl);
diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c
index d07846ccb8..d9c66fe259 100644
--- a/sysdeps/unix/sysv/linux/getlogin_r.c
+++ b/sysdeps/unix/sysv/linux/getlogin_r.c
@@ -37,13 +37,20 @@ __getlogin_r_loginuid (name, namesize)
   if (fd == -1)
     return 1;
 
-  ssize_t n = TEMP_FAILURE_RETRY (read_not_cancel (fd, name, namesize));
+  /* We are reading a 32-bit number.  12 bytes are enough for the text
+     representation.  If not, something is wrong.  */
+  char uidbuf[12];
+  ssize_t n = TEMP_FAILURE_RETRY (read_not_cancel (fd, uidbuf,
+						   sizeof (uidbuf)));
   close_not_cancel_no_status (fd);
 
   uid_t uid;
   char *endp;
   if (n <= 0
-      || (uid = strtoul (name, &endp, 10), endp == name || *endp != '\0'))
+      || n == sizeof (uidbuf)
+      || (uidbuf[n] = '\0',
+	  uid = strtoul (uidbuf, &endp, 10),
+	  endp == uidbuf || *endp != '\0'))
     return 1;
 
   size_t buflen = 1024;
@@ -84,8 +91,9 @@ __getlogin_r_loginuid (name, namesize)
 }
 
 
-/* Return the login name of the user, or NULL if it can't be determined.
-   The returned pointer, if not NULL, is good only until the next call.  */
+/* Return at most NAME_LEN characters of the login name of the user in NAME.
+   If it cannot be determined or some other error occurred, return the error
+   code.  Otherwise return 0.  */
 
 int
 getlogin_r (name, namesize)
diff --git a/sysdeps/unix/sysv/linux/i386/fallocate.c b/sysdeps/unix/sysv/linux/i386/fallocate.c
index 14e788386c..1434a833f9 100644
--- a/sysdeps/unix/sysv/linux/i386/fallocate.c
+++ b/sysdeps/unix/sysv/linux/i386/fallocate.c
@@ -30,7 +30,13 @@ int
 fallocate (int fd, int mode, __off_t offset, __off_t len)
 {
 #ifdef __NR_fallocate
-  return __call_fallocate (fd, mode, offset, len);
+  int err = __call_fallocate (fd, mode, offset, len);
+  if (__builtin_expect (err, 0))
+    {
+      __set_errno (err);
+      err = -1;
+    }
+  return err;
 #else
   __set_errno (ENOSYS);
   return -1;
diff --git a/sysdeps/unix/sysv/linux/i386/fallocate64.c b/sysdeps/unix/sysv/linux/i386/fallocate64.c
index 85f315c9b6..063bab06e9 100644
--- a/sysdeps/unix/sysv/linux/i386/fallocate64.c
+++ b/sysdeps/unix/sysv/linux/i386/fallocate64.c
@@ -30,7 +30,13 @@ int
 fallocate64 (int fd, int mode, __off64_t offset, __off64_t len)
 {
 #ifdef __NR_fallocate
-  return __call_fallocate (fd, mode, offset, len);
+  int err = __call_fallocate (fd, mode, offset, len);
+  if (__builtin_expect (err, 0))
+    {
+      __set_errno (err);
+      err = -1;
+    }
+  return err;
 #else
   __set_errno (ENOSYS);
   return -1;