summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2005-12-20 07:21:59 +0000
committerUlrich Drepper <drepper@redhat.com>2005-12-20 07:21:59 +0000
commit00c2b3b91dc5f11924006ed4fb69d9d7442749b7 (patch)
treec367b0b7c66ba48cde11d2bd7bfe9c63e7b3ad49
parentfc3480d3eea6380ea00d150d87830dc3cb86ede8 (diff)
downloadglibc-00c2b3b91dc5f11924006ed4fb69d9d7442749b7.tar.gz
glibc-00c2b3b91dc5f11924006ed4fb69d9d7442749b7.tar.xz
glibc-00c2b3b91dc5f11924006ed4fb69d9d7442749b7.zip
[BZ #1978]
2005-12-16  Thorsten Kukuk  <kukuk@suse.de>
	[BZ #1978]
	* sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags):
	Map more filesystem types to a string.
	* sysdeps/unix/sysv/linux/linux_fsinfo.h: Add SYSFS_MAGIC.

2005-12-19  Jakub Jelinek  <jakub@redhat.com>

	* locale/Makefile (programs/%-kw.h): Run $(GPERF) inside of the
	programs subdirectory.

	* sysdeps/powerpc/powerpc32/__longjmp-common.S (__longjmp): Use
	PTR_DEMANGLE for PC if defined.
	* sysdeps/powerpc/powerpc64/__longjmp-common.S (__longjmp):
	Likewise.
	* sysdeps/unix/sysv/linux/ia64/__longjmp.S (__longjmp): Likewise.
	* sysdeps/s390/s390-32/__longjmp.c (__longjmp): Xor %r14 with
	THREAD_GET_POINTER_GUARD () if PTR_DEMANGLE is defined.
	* sysdeps/s390/s390-64/__longjmp.c (__longjmp): Likewise.
	* sysdeps/powerpc/powerpc32/setjmp-common.S (__sigsetjmp): Use
	PTR_MANGLE for PC if defined.
	* sysdeps/powerpc/powerpc64/setjmp-common.S (__sigsetjmp): Likewise.
	* sysdeps/s390/s390-32/setjmp.S (__sigsetjmp): Likewise.
	Avoid call to __sigjmp_save if IS_IN_rtld.
	* sysdeps/s390/s390-32/elf/setjmp.S (__sigsetjmp): Likewise.
	* sysdeps/s390/s390-64/setjmp.S (__sigsetjmp): Likewise.
	* sysdeps/s390/s390-64/elf/setjmp.S (__sigsetjmp): Likewise.
	* sysdeps/unix/sysv/linux/ia64/setjmp.S (__sigsetjmp): Likewise.
	* sysdeps/unix/sysv/linux/ia64/sysdep.h (PTR_MANGLE, PTR_DEMANGLE):
	Define.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Include tls.h.
	(PTR_MANGLE, PTR_DEMANGLE): Define.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Include tls.h
	(PTR_MANGLE, PTR_DEMANGLE): Define.
	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Include tls.h.
	(PTR_MANGLE, PTR_DEMANGLE): Define.
	(SYSCALL_ERROR_HANDLER): Add missing semicolons.
	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Include tls.h.
	(PTR_MANGLE, PTR_DEMANGLE): Define.
	* sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Add
	SYSCALL_ERROR_HANDLER.

2005-12-19  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Handle NO_WEAK_ALIAS.
	* sysdeps/unix/sysv/linux/sparc/sparc64/socket.S: Likewise.
	Patch by Clint Adams.

2005-12-16  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/unix/sysv/linux/s390/sys/user.h: Copy struct user and
	dependent definitions from the kernel header to sys/user.h and
	remove the #include of asm/user.h.
-rw-r--r--ChangeLog55
-rw-r--r--locale/Makefile5
-rw-r--r--locale/programs/charmap-kw.h40
-rw-r--r--locale/programs/locfile-kw.h356
-rw-r--r--nptl/ChangeLog16
-rw-r--r--nptl/sysdeps/ia64/tls.h22
-rw-r--r--nptl/sysdeps/powerpc/tcb-offsets.sym1
-rw-r--r--nptl/sysdeps/powerpc/tls.h15
-rw-r--r--nptl/sysdeps/s390/tcb-offsets.sym1
-rw-r--r--nptl/sysdeps/s390/tls.h7
-rw-r--r--nptl/sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S5
-rw-r--r--sysdeps/powerpc/powerpc32/__longjmp-common.S6
-rw-r--r--sysdeps/powerpc/powerpc32/setjmp-common.S3
-rw-r--r--sysdeps/powerpc/powerpc64/__longjmp-common.S5
-rw-r--r--sysdeps/powerpc/powerpc64/setjmp-common.S3
-rw-r--r--sysdeps/s390/s390-32/__longjmp.c28
-rw-r--r--sysdeps/s390/s390-32/elf/setjmp.S16
-rw-r--r--sysdeps/s390/s390-32/setjmp.S16
-rw-r--r--sysdeps/s390/s390-64/__longjmp.c33
-rw-r--r--sysdeps/s390/s390-64/elf/setjmp.S16
-rw-r--r--sysdeps/s390/s390-64/setjmp.S18
-rw-r--r--sysdeps/unix/sysv/linux/ia64/__longjmp.S5
-rw-r--r--sysdeps/unix/sysv/linux/ia64/setjmp.S20
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sysdep.h23
-rw-r--r--sysdeps/unix/sysv/linux/internal_statvfs.c29
-rw-r--r--sysdeps/unix/sysv/linux/linux_fsinfo.h5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h18
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h19
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h28
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/socket.S1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h24
-rw-r--r--sysdeps/unix/sysv/linux/s390/sys/user.h63
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/socket.S8
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/socket.S8
34 files changed, 663 insertions, 255 deletions
diff --git a/ChangeLog b/ChangeLog
index ef12cc0e28..747d3f7f1b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,58 @@
+2005-12-16  Thorsten Kukuk  <kukuk@suse.de>
+
+	[BZ #1978]
+	* sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags):
+	Map more filesystem types to a string.
+	* sysdeps/unix/sysv/linux/linux_fsinfo.h: Add SYSFS_MAGIC.
+
+2005-12-19  Jakub Jelinek  <jakub@redhat.com>
+
+	* locale/Makefile (programs/%-kw.h): Run $(GPERF) inside of the
+	programs subdirectory.
+
+	* sysdeps/powerpc/powerpc32/__longjmp-common.S (__longjmp): Use
+	PTR_DEMANGLE for PC if defined.
+	* sysdeps/powerpc/powerpc64/__longjmp-common.S (__longjmp):
+	Likewise.
+	* sysdeps/unix/sysv/linux/ia64/__longjmp.S (__longjmp): Likewise.
+	* sysdeps/s390/s390-32/__longjmp.c (__longjmp): Xor %r14 with
+	THREAD_GET_POINTER_GUARD () if PTR_DEMANGLE is defined.
+	* sysdeps/s390/s390-64/__longjmp.c (__longjmp): Likewise.
+	* sysdeps/powerpc/powerpc32/setjmp-common.S (__sigsetjmp): Use
+	PTR_MANGLE for PC if defined.
+	* sysdeps/powerpc/powerpc64/setjmp-common.S (__sigsetjmp): Likewise.
+	* sysdeps/s390/s390-32/setjmp.S (__sigsetjmp): Likewise.
+	Avoid call to __sigjmp_save if IS_IN_rtld.
+	* sysdeps/s390/s390-32/elf/setjmp.S (__sigsetjmp): Likewise.
+	* sysdeps/s390/s390-64/setjmp.S (__sigsetjmp): Likewise.
+	* sysdeps/s390/s390-64/elf/setjmp.S (__sigsetjmp): Likewise.
+	* sysdeps/unix/sysv/linux/ia64/setjmp.S (__sigsetjmp): Likewise.
+	* sysdeps/unix/sysv/linux/ia64/sysdep.h (PTR_MANGLE, PTR_DEMANGLE):
+	Define.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Include tls.h.
+	(PTR_MANGLE, PTR_DEMANGLE): Define.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Include tls.h
+	(PTR_MANGLE, PTR_DEMANGLE): Define.
+	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Include tls.h.
+	(PTR_MANGLE, PTR_DEMANGLE): Define.
+	(SYSCALL_ERROR_HANDLER): Add missing semicolons.
+	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Include tls.h.
+	(PTR_MANGLE, PTR_DEMANGLE): Define.
+	* sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Add
+	SYSCALL_ERROR_HANDLER.
+
+2005-12-19  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Handle NO_WEAK_ALIAS.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/socket.S: Likewise.
+	Patch by Clint Adams.
+
+2005-12-16  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+	* sysdeps/unix/sysv/linux/s390/sys/user.h: Copy struct user and
+	dependent definitions from the kernel header to sys/user.h and
+	remove the #include of asm/user.h.
+
 2005-12-19  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/gnu/Makefile: Make sure the correct errlist.c file is
diff --git a/locale/Makefile b/locale/Makefile
index 2f2d2ba5f1..d9ab1947e7 100644
--- a/locale/Makefile
+++ b/locale/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991,1992,1995-2002,2003 Free Software Foundation, Inc.
+# Copyright (C) 1991,1992,1995-2003,2005 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
@@ -72,7 +72,8 @@ GPERFFLAGS = -acCgopt -k1,2,5,9,$$ -L ANSI-C
 include ../Rules
 
 programs/%-kw.h: programs/%-kw.gperf
-	$(GPERF) $(GPERFFLAGS) -N $(@F:-kw.h=_hash) $< > $@.new
+	cd programs \
+	&& $(GPERF) $(GPERFFLAGS) -N $(@F:-kw.h=_hash) $(<F) > $(@F).new
 	mv -f $@.new $@
 
 $(objpfx)localedef: $(localedef-modules:%=$(objpfx)%.o)
diff --git a/locale/programs/charmap-kw.h b/locale/programs/charmap-kw.h
index 25996f4346..d7d85774da 100644
--- a/locale/programs/charmap-kw.h
+++ b/locale/programs/charmap-kw.h
@@ -1,5 +1,5 @@
 /* ANSI-C code produced by gperf version 3.0.1 */
-/* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N charmap_hash programs/charmap-kw.gperf  */
+/* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N charmap_hash charmap-kw.gperf  */
 
 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
       && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
@@ -28,7 +28,7 @@
 #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
 #endif
 
-#line 1 "programs/charmap-kw.gperf"
+#line 1 "charmap-kw.gperf"
 
 /* Copyright (C) 1995,1996,1997,1998,1999,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
@@ -50,7 +50,7 @@
 #include <string.h>
 
 #include "locfile-token.h"
-#line 23 "programs/charmap-kw.gperf"
+#line 23 "charmap-kw.gperf"
 struct keyword_t ;
 
 #define TOTAL_KEYWORDS 17
@@ -133,45 +133,45 @@ charmap_hash (register const char *str, register unsigned int len)
   static const struct keyword_t wordlist[] =
     {
       {""}, {""}, {""},
-#line 38 "programs/charmap-kw.gperf"
+#line 38 "charmap-kw.gperf"
       {"END",             tok_end,             0},
       {""},
-#line 39 "programs/charmap-kw.gperf"
+#line 39 "charmap-kw.gperf"
       {"WIDTH",           tok_width,           0},
-#line 34 "programs/charmap-kw.gperf"
+#line 34 "charmap-kw.gperf"
       {"escseq",          tok_escseq,          1},
-#line 36 "programs/charmap-kw.gperf"
+#line 36 "charmap-kw.gperf"
       {"include",         tok_include,         1},
       {""}, {""},
-#line 27 "programs/charmap-kw.gperf"
+#line 27 "charmap-kw.gperf"
       {"mb_cur_min",      tok_mb_cur_min,      1},
-#line 28 "programs/charmap-kw.gperf"
+#line 28 "charmap-kw.gperf"
       {"escape_char",     tok_escape_char,     1},
-#line 29 "programs/charmap-kw.gperf"
+#line 29 "charmap-kw.gperf"
       {"comment_char",    tok_comment_char,    1},
-#line 25 "programs/charmap-kw.gperf"
+#line 25 "charmap-kw.gperf"
       {"code_set_name",   tok_code_set_name,   1},
-#line 40 "programs/charmap-kw.gperf"
+#line 40 "charmap-kw.gperf"
       {"WIDTH_VARIABLE",  tok_width_variable,  0},
-#line 26 "programs/charmap-kw.gperf"
+#line 26 "charmap-kw.gperf"
       {"mb_cur_max",      tok_mb_cur_max,      1},
-#line 35 "programs/charmap-kw.gperf"
+#line 35 "charmap-kw.gperf"
       {"addset",          tok_addset,          1},
-#line 37 "programs/charmap-kw.gperf"
+#line 37 "charmap-kw.gperf"
       {"CHARMAP",         tok_charmap,         0},
-#line 41 "programs/charmap-kw.gperf"
+#line 41 "charmap-kw.gperf"
       {"WIDTH_DEFAULT",   tok_width_default,   0},
       {""},
-#line 33 "programs/charmap-kw.gperf"
+#line 33 "charmap-kw.gperf"
       {"g3esc",           tok_g3esc,           1},
       {""}, {""}, {""}, {""},
-#line 32 "programs/charmap-kw.gperf"
+#line 32 "charmap-kw.gperf"
       {"g2esc",           tok_g2esc,           1},
       {""}, {""}, {""}, {""},
-#line 31 "programs/charmap-kw.gperf"
+#line 31 "charmap-kw.gperf"
       {"g1esc",           tok_g1esc,           1},
       {""}, {""}, {""}, {""},
-#line 30 "programs/charmap-kw.gperf"
+#line 30 "charmap-kw.gperf"
       {"g0esc",           tok_g0esc,           1}
     };
 
diff --git a/locale/programs/locfile-kw.h b/locale/programs/locfile-kw.h
index 8692b0936c..6ec2134cdd 100644
--- a/locale/programs/locfile-kw.h
+++ b/locale/programs/locfile-kw.h
@@ -1,5 +1,5 @@
 /* ANSI-C code produced by gperf version 3.0.1 */
-/* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N locfile_hash programs/locfile-kw.gperf  */
+/* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N locfile_hash locfile-kw.gperf  */
 
 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
       && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
@@ -28,7 +28,7 @@
 #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
 #endif
 
-#line 1 "programs/locfile-kw.gperf"
+#line 1 "locfile-kw.gperf"
 
 /* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
@@ -50,7 +50,7 @@
 #include <string.h>
 
 #include "locfile-token.h"
-#line 23 "programs/locfile-kw.gperf"
+#line 23 "locfile-kw.gperf"
 struct keyword_t ;
 
 #define TOTAL_KEYWORDS 175
@@ -133,457 +133,457 @@ locfile_hash (register const char *str, register unsigned int len)
   static const struct keyword_t wordlist[] =
     {
       {""}, {""}, {""},
-#line 30 "programs/locfile-kw.gperf"
+#line 30 "locfile-kw.gperf"
       {"END",                    tok_end,                    0},
       {""}, {""},
-#line 69 "programs/locfile-kw.gperf"
+#line 69 "locfile-kw.gperf"
       {"IGNORE",                 tok_ignore,                 0},
-#line 127 "programs/locfile-kw.gperf"
+#line 127 "locfile-kw.gperf"
       {"LC_TIME",                tok_lc_time,                0},
-#line 29 "programs/locfile-kw.gperf"
+#line 29 "locfile-kw.gperf"
       {"LC_CTYPE",               tok_lc_ctype,               0},
       {""},
-#line 164 "programs/locfile-kw.gperf"
+#line 164 "locfile-kw.gperf"
       {"LC_ADDRESS",             tok_lc_address,             0},
-#line 149 "programs/locfile-kw.gperf"
+#line 149 "locfile-kw.gperf"
       {"LC_MESSAGES",            tok_lc_messages,            0},
-#line 157 "programs/locfile-kw.gperf"
+#line 157 "locfile-kw.gperf"
       {"LC_NAME",                tok_lc_name,                0},
-#line 154 "programs/locfile-kw.gperf"
+#line 154 "locfile-kw.gperf"
       {"LC_PAPER",               tok_lc_paper,               0},
-#line 182 "programs/locfile-kw.gperf"
+#line 182 "locfile-kw.gperf"
       {"LC_MEASUREMENT",         tok_lc_measurement,         0},
-#line 55 "programs/locfile-kw.gperf"
+#line 55 "locfile-kw.gperf"
       {"LC_COLLATE",             tok_lc_collate,             0},
       {""},
-#line 184 "programs/locfile-kw.gperf"
+#line 184 "locfile-kw.gperf"
       {"LC_IDENTIFICATION",      tok_lc_identification,      0},
-#line 197 "programs/locfile-kw.gperf"
+#line 197 "locfile-kw.gperf"
       {"revision",               tok_revision,               0},
-#line 68 "programs/locfile-kw.gperf"
+#line 68 "locfile-kw.gperf"
       {"UNDEFINED",              tok_undefined,              0},
-#line 123 "programs/locfile-kw.gperf"
+#line 123 "locfile-kw.gperf"
       {"LC_NUMERIC",             tok_lc_numeric,             0},
-#line 80 "programs/locfile-kw.gperf"
+#line 80 "locfile-kw.gperf"
       {"LC_MONETARY",            tok_lc_monetary,            0},
-#line 177 "programs/locfile-kw.gperf"
+#line 177 "locfile-kw.gperf"
       {"LC_TELEPHONE",           tok_lc_telephone,           0},
       {""},
-#line 130 "programs/locfile-kw.gperf"
+#line 130 "locfile-kw.gperf"
       {"week",                   tok_week,                   0},
       {""},
-#line 74 "programs/locfile-kw.gperf"
+#line 74 "locfile-kw.gperf"
       {"define",                 tok_define,                 0},
-#line 150 "programs/locfile-kw.gperf"
+#line 150 "locfile-kw.gperf"
       {"yesexpr",                tok_yesexpr,                0},
-#line 139 "programs/locfile-kw.gperf"
+#line 139 "locfile-kw.gperf"
       {"era_year",               tok_era_year,               0},
       {""},
-#line 53 "programs/locfile-kw.gperf"
+#line 53 "locfile-kw.gperf"
       {"translit_ignore",        tok_translit_ignore,        0},
-#line 152 "programs/locfile-kw.gperf"
+#line 152 "locfile-kw.gperf"
       {"yesstr",                 tok_yesstr,                 0},
       {""},
-#line 87 "programs/locfile-kw.gperf"
+#line 87 "locfile-kw.gperf"
       {"negative_sign",          tok_negative_sign,          0},
       {""},
-#line 135 "programs/locfile-kw.gperf"
+#line 135 "locfile-kw.gperf"
       {"t_fmt",                  tok_t_fmt,                  0},
-#line 155 "programs/locfile-kw.gperf"
+#line 155 "locfile-kw.gperf"
       {"height",                 tok_height,                 0},
       {""}, {""},
-#line 51 "programs/locfile-kw.gperf"
+#line 51 "locfile-kw.gperf"
       {"translit_start",         tok_translit_start,         0},
-#line 134 "programs/locfile-kw.gperf"
+#line 134 "locfile-kw.gperf"
       {"d_fmt",                  tok_d_fmt,                  0},
       {""},
-#line 52 "programs/locfile-kw.gperf"
+#line 52 "locfile-kw.gperf"
       {"translit_end",           tok_translit_end,           0},
-#line 92 "programs/locfile-kw.gperf"
+#line 92 "locfile-kw.gperf"
       {"n_cs_precedes",          tok_n_cs_precedes,          0},
-#line 142 "programs/locfile-kw.gperf"
+#line 142 "locfile-kw.gperf"
       {"era_t_fmt",              tok_era_t_fmt,              0},
-#line 38 "programs/locfile-kw.gperf"
+#line 38 "locfile-kw.gperf"
       {"space",                  tok_space,                  0},
-#line 71 "programs/locfile-kw.gperf"
+#line 71 "locfile-kw.gperf"
       {"reorder-end",            tok_reorder_end,            0},
-#line 72 "programs/locfile-kw.gperf"
+#line 72 "locfile-kw.gperf"
       {"reorder-sections-after", tok_reorder_sections_after, 0},
       {""},
-#line 140 "programs/locfile-kw.gperf"
+#line 140 "locfile-kw.gperf"
       {"era_d_fmt",              tok_era_d_fmt,              0},
-#line 185 "programs/locfile-kw.gperf"
+#line 185 "locfile-kw.gperf"
       {"title",                  tok_title,                  0},
       {""}, {""},
-#line 147 "programs/locfile-kw.gperf"
+#line 147 "locfile-kw.gperf"
       {"timezone",               tok_timezone,               0},
       {""},
-#line 73 "programs/locfile-kw.gperf"
+#line 73 "locfile-kw.gperf"
       {"reorder-sections-end",   tok_reorder_sections_end,   0},
       {""}, {""}, {""},
-#line 93 "programs/locfile-kw.gperf"
+#line 93 "locfile-kw.gperf"
       {"n_sep_by_space",         tok_n_sep_by_space,         0},
       {""}, {""},
-#line 98 "programs/locfile-kw.gperf"
+#line 98 "locfile-kw.gperf"
       {"int_n_cs_precedes",      tok_int_n_cs_precedes,      0},
       {""}, {""}, {""},
-#line 25 "programs/locfile-kw.gperf"
+#line 25 "locfile-kw.gperf"
       {"escape_char",            tok_escape_char,            0},
       {""},
-#line 27 "programs/locfile-kw.gperf"
+#line 27 "locfile-kw.gperf"
       {"repertoiremap",          tok_repertoiremap,          0},
-#line 45 "programs/locfile-kw.gperf"
+#line 45 "locfile-kw.gperf"
       {"charclass",              tok_charclass,              0},
-#line 42 "programs/locfile-kw.gperf"
+#line 42 "locfile-kw.gperf"
       {"print",                  tok_print,                  0},
-#line 43 "programs/locfile-kw.gperf"
+#line 43 "locfile-kw.gperf"
       {"xdigit",                 tok_xdigit,                 0},
-#line 108 "programs/locfile-kw.gperf"
+#line 108 "locfile-kw.gperf"
       {"duo_n_cs_precedes",      tok_duo_n_cs_precedes,      0},
-#line 125 "programs/locfile-kw.gperf"
+#line 125 "locfile-kw.gperf"
       {"thousands_sep",          tok_thousands_sep,          0},
-#line 193 "programs/locfile-kw.gperf"
+#line 193 "locfile-kw.gperf"
       {"territory",              tok_territory,              0},
-#line 35 "programs/locfile-kw.gperf"
+#line 35 "locfile-kw.gperf"
       {"digit",                  tok_digit,                  0},
       {""}, {""},
-#line 90 "programs/locfile-kw.gperf"
+#line 90 "locfile-kw.gperf"
       {"p_cs_precedes",          tok_p_cs_precedes,          0},
       {""},
-#line 156 "programs/locfile-kw.gperf"
+#line 156 "locfile-kw.gperf"
       {"width",                  tok_width,                  0},
-#line 61 "programs/locfile-kw.gperf"
+#line 61 "locfile-kw.gperf"
       {"script",                 tok_script,                 0},
-#line 28 "programs/locfile-kw.gperf"
+#line 28 "locfile-kw.gperf"
       {"include",                tok_include,                0},
       {""},
-#line 77 "programs/locfile-kw.gperf"
+#line 77 "locfile-kw.gperf"
       {"else",                   tok_else,                   0},
-#line 180 "programs/locfile-kw.gperf"
+#line 180 "locfile-kw.gperf"
       {"int_select",             tok_int_select,             0},
       {""}, {""}, {""}, {""},
-#line 32 "programs/locfile-kw.gperf"
+#line 32 "locfile-kw.gperf"
       {"upper",                  tok_upper,                  0},
       {""}, {""},
-#line 190 "programs/locfile-kw.gperf"
+#line 190 "locfile-kw.gperf"
       {"tel",                    tok_tel,                    0},
-#line 91 "programs/locfile-kw.gperf"
+#line 91 "locfile-kw.gperf"
       {"p_sep_by_space",         tok_p_sep_by_space,         0},
       {""}, {""},
-#line 96 "programs/locfile-kw.gperf"
+#line 96 "locfile-kw.gperf"
       {"int_p_cs_precedes",      tok_int_p_cs_precedes,      0},
       {""}, {""},
-#line 40 "programs/locfile-kw.gperf"
+#line 40 "locfile-kw.gperf"
       {"punct",                  tok_punct,                  0},
       {""}, {""},
-#line 99 "programs/locfile-kw.gperf"
+#line 99 "locfile-kw.gperf"
       {"int_n_sep_by_space",     tok_int_n_sep_by_space,     0},
       {""}, {""}, {""},
-#line 106 "programs/locfile-kw.gperf"
+#line 106 "locfile-kw.gperf"
       {"duo_p_cs_precedes",      tok_duo_p_cs_precedes,      0},
       {""}, {""},
-#line 46 "programs/locfile-kw.gperf"
+#line 46 "locfile-kw.gperf"
       {"class",                  tok_class,                  0},
-#line 112 "programs/locfile-kw.gperf"
+#line 112 "locfile-kw.gperf"
       {"duo_int_n_cs_precedes",  tok_duo_int_n_cs_precedes,  0},
-#line 113 "programs/locfile-kw.gperf"
+#line 113 "locfile-kw.gperf"
       {"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0},
-#line 109 "programs/locfile-kw.gperf"
+#line 109 "locfile-kw.gperf"
       {"duo_n_sep_by_space",     tok_duo_n_sep_by_space,     0},
-#line 117 "programs/locfile-kw.gperf"
+#line 117 "locfile-kw.gperf"
       {"duo_int_n_sign_posn",    tok_duo_int_n_sign_posn,    0},
       {""}, {""}, {""},
-#line 47 "programs/locfile-kw.gperf"
+#line 47 "locfile-kw.gperf"
       {"charconv",               tok_charconv,               0},
       {""}, {""},
-#line 183 "programs/locfile-kw.gperf"
+#line 183 "locfile-kw.gperf"
       {"measurement",            tok_measurement,            0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 57 "programs/locfile-kw.gperf"
+#line 57 "locfile-kw.gperf"
       {"section-symbol",         tok_section_symbol,         0},
-#line 181 "programs/locfile-kw.gperf"
+#line 181 "locfile-kw.gperf"
       {"int_prefix",             tok_int_prefix,             0},
       {""}, {""}, {""}, {""},
-#line 137 "programs/locfile-kw.gperf"
+#line 137 "locfile-kw.gperf"
       {"t_fmt_ampm",             tok_t_fmt_ampm,             0},
       {""}, {""},
-#line 97 "programs/locfile-kw.gperf"
+#line 97 "locfile-kw.gperf"
       {"int_p_sep_by_space",     tok_int_p_sep_by_space,     0},
       {""},
-#line 41 "programs/locfile-kw.gperf"
+#line 41 "locfile-kw.gperf"
       {"graph",                  tok_graph,                  0},
       {""}, {""},
-#line 124 "programs/locfile-kw.gperf"
+#line 124 "locfile-kw.gperf"
       {"decimal_point",          tok_decimal_point,          0},
       {""}, {""},
-#line 110 "programs/locfile-kw.gperf"
+#line 110 "locfile-kw.gperf"
       {"duo_int_p_cs_precedes",  tok_duo_int_p_cs_precedes,  0},
-#line 111 "programs/locfile-kw.gperf"
+#line 111 "locfile-kw.gperf"
       {"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0},
-#line 107 "programs/locfile-kw.gperf"
+#line 107 "locfile-kw.gperf"
       {"duo_p_sep_by_space",     tok_duo_p_sep_by_space,     0},
-#line 116 "programs/locfile-kw.gperf"
+#line 116 "locfile-kw.gperf"
       {"duo_int_p_sign_posn",    tok_duo_int_p_sign_posn,    0},
-#line 153 "programs/locfile-kw.gperf"
+#line 153 "locfile-kw.gperf"
       {"nostr",                  tok_nostr,                  0},
       {""}, {""},
-#line 138 "programs/locfile-kw.gperf"
+#line 138 "locfile-kw.gperf"
       {"era",                    tok_era,                    0},
       {""},
-#line 82 "programs/locfile-kw.gperf"
+#line 82 "locfile-kw.gperf"
       {"currency_symbol",        tok_currency_symbol,        0},
       {""},
-#line 163 "programs/locfile-kw.gperf"
+#line 163 "locfile-kw.gperf"
       {"name_ms",                tok_name_ms,                0},
-#line 161 "programs/locfile-kw.gperf"
+#line 161 "locfile-kw.gperf"
       {"name_mrs",               tok_name_mrs,               0},
-#line 162 "programs/locfile-kw.gperf"
+#line 162 "locfile-kw.gperf"
       {"name_miss",              tok_name_miss,              0},
-#line 81 "programs/locfile-kw.gperf"
+#line 81 "locfile-kw.gperf"
       {"int_curr_symbol",        tok_int_curr_symbol,        0},
-#line 186 "programs/locfile-kw.gperf"
+#line 186 "locfile-kw.gperf"
       {"source",                 tok_source,                 0},
-#line 160 "programs/locfile-kw.gperf"
+#line 160 "locfile-kw.gperf"
       {"name_mr",                tok_name_mr,                0},
-#line 159 "programs/locfile-kw.gperf"
+#line 159 "locfile-kw.gperf"
       {"name_gen",               tok_name_gen,               0},
-#line 198 "programs/locfile-kw.gperf"
+#line 198 "locfile-kw.gperf"
       {"date",                   tok_date,                   0},
       {""}, {""},
-#line 187 "programs/locfile-kw.gperf"
+#line 187 "locfile-kw.gperf"
       {"address",                tok_address,                0},
-#line 158 "programs/locfile-kw.gperf"
+#line 158 "locfile-kw.gperf"
       {"name_fmt",               tok_name_fmt,               0},
-#line 31 "programs/locfile-kw.gperf"
+#line 31 "locfile-kw.gperf"
       {"copy",                   tok_copy,                   0},
       {""}, {""},
-#line 49 "programs/locfile-kw.gperf"
+#line 49 "locfile-kw.gperf"
       {"tolower",                tok_tolower,                0},
-#line 129 "programs/locfile-kw.gperf"
+#line 129 "locfile-kw.gperf"
       {"day",                    tok_day,                    0},
-#line 103 "programs/locfile-kw.gperf"
+#line 103 "locfile-kw.gperf"
       {"duo_currency_symbol",    tok_duo_currency_symbol,    0},
-#line 101 "programs/locfile-kw.gperf"
+#line 101 "locfile-kw.gperf"
       {"int_n_sign_posn",        tok_int_n_sign_posn,        0},
       {""}, {""},
-#line 148 "programs/locfile-kw.gperf"
+#line 148 "locfile-kw.gperf"
       {"date_fmt",               tok_date_fmt,               0},
-#line 63 "programs/locfile-kw.gperf"
+#line 63 "locfile-kw.gperf"
       {"order_end",              tok_order_end,              0},
       {""}, {""},
-#line 166 "programs/locfile-kw.gperf"
+#line 166 "locfile-kw.gperf"
       {"country_name",           tok_country_name,           0},
-#line 70 "programs/locfile-kw.gperf"
+#line 70 "locfile-kw.gperf"
       {"reorder-after",          tok_reorder_after,          0},
-#line 118 "programs/locfile-kw.gperf"
+#line 118 "locfile-kw.gperf"
       {"uno_valid_from",         tok_uno_valid_from,         0},
-#line 115 "programs/locfile-kw.gperf"
+#line 115 "locfile-kw.gperf"
       {"duo_n_sign_posn",        tok_duo_n_sign_posn,        0},
-#line 151 "programs/locfile-kw.gperf"
+#line 151 "locfile-kw.gperf"
       {"noexpr",                 tok_noexpr,                 0},
       {""},
-#line 194 "programs/locfile-kw.gperf"
+#line 194 "locfile-kw.gperf"
       {"audience",               tok_audience,               0},
       {""},
-#line 44 "programs/locfile-kw.gperf"
+#line 44 "locfile-kw.gperf"
       {"blank",                  tok_blank,                  0},
       {""},
-#line 48 "programs/locfile-kw.gperf"
+#line 48 "locfile-kw.gperf"
       {"toupper",                tok_toupper,                0},
-#line 67 "programs/locfile-kw.gperf"
+#line 67 "locfile-kw.gperf"
       {"position",               tok_position,               0},
-#line 120 "programs/locfile-kw.gperf"
+#line 120 "locfile-kw.gperf"
       {"duo_valid_from",         tok_duo_valid_from,         0},
-#line 39 "programs/locfile-kw.gperf"
+#line 39 "locfile-kw.gperf"
       {"cntrl",                  tok_cntrl,                  0},
       {""},
-#line 26 "programs/locfile-kw.gperf"
+#line 26 "locfile-kw.gperf"
       {"comment_char",           tok_comment_char,           0},
-#line 86 "programs/locfile-kw.gperf"
+#line 86 "locfile-kw.gperf"
       {"positive_sign",          tok_positive_sign,          0},
       {""}, {""}, {""}, {""},
-#line 132 "programs/locfile-kw.gperf"
+#line 132 "locfile-kw.gperf"
       {"mon",                    tok_mon,                    0},
       {""}, {""},
-#line 171 "programs/locfile-kw.gperf"
+#line 171 "locfile-kw.gperf"
       {"country_car",            tok_country_car,            0},
       {""},
-#line 60 "programs/locfile-kw.gperf"
+#line 60 "locfile-kw.gperf"
       {"symbol-equivalence",     tok_symbol_equivalence,     0},
-#line 102 "programs/locfile-kw.gperf"
+#line 102 "locfile-kw.gperf"
       {"duo_int_curr_symbol",    tok_duo_int_curr_symbol,    0},
-#line 100 "programs/locfile-kw.gperf"
+#line 100 "locfile-kw.gperf"
       {"int_p_sign_posn",        tok_int_p_sign_posn,        0},
       {""}, {""}, {""}, {""}, {""}, {""},
-#line 172 "programs/locfile-kw.gperf"
+#line 172 "locfile-kw.gperf"
       {"country_isbn",           tok_country_isbn,           0},
-#line 36 "programs/locfile-kw.gperf"
+#line 36 "locfile-kw.gperf"
       {"outdigit",               tok_outdigit,               0},
       {""},
-#line 114 "programs/locfile-kw.gperf"
+#line 114 "locfile-kw.gperf"
       {"duo_p_sign_posn",        tok_duo_p_sign_posn,        0},
       {""},
-#line 133 "programs/locfile-kw.gperf"
+#line 133 "locfile-kw.gperf"
       {"d_t_fmt",                tok_d_t_fmt,                0},
       {""}, {""},
-#line 33 "programs/locfile-kw.gperf"
+#line 33 "locfile-kw.gperf"
       {"lower",                  tok_lower,                  0},
       {""},
-#line 167 "programs/locfile-kw.gperf"
+#line 167 "locfile-kw.gperf"
       {"country_post",           tok_country_post,           0},
-#line 146 "programs/locfile-kw.gperf"
+#line 146 "locfile-kw.gperf"
       {"cal_direction",          tok_cal_direction,          0},
       {""},
-#line 189 "programs/locfile-kw.gperf"
+#line 189 "locfile-kw.gperf"
       {"email",                  tok_email,                  0},
-#line 141 "programs/locfile-kw.gperf"
+#line 141 "locfile-kw.gperf"
       {"era_d_t_fmt",            tok_era_d_t_fmt,            0},
       {""}, {""},
-#line 173 "programs/locfile-kw.gperf"
+#line 173 "locfile-kw.gperf"
       {"lang_name",              tok_lang_name,              0},
       {""},
-#line 179 "programs/locfile-kw.gperf"
+#line 179 "locfile-kw.gperf"
       {"tel_dom_fmt",            tok_tel_dom_fmt,            0},
       {""}, {""}, {""},
-#line 54 "programs/locfile-kw.gperf"
+#line 54 "locfile-kw.gperf"
       {"default_missing",        tok_default_missing,        0},
-#line 89 "programs/locfile-kw.gperf"
+#line 89 "locfile-kw.gperf"
       {"frac_digits",            tok_frac_digits,            0},
       {""}, {""}, {""},
-#line 88 "programs/locfile-kw.gperf"
+#line 88 "locfile-kw.gperf"
       {"int_frac_digits",        tok_int_frac_digits,        0},
-#line 170 "programs/locfile-kw.gperf"
+#line 170 "locfile-kw.gperf"
       {"country_num",            tok_country_num,            0},
-#line 119 "programs/locfile-kw.gperf"
+#line 119 "locfile-kw.gperf"
       {"uno_valid_to",           tok_uno_valid_to,           0},
       {""}, {""}, {""}, {""}, {""},
-#line 50 "programs/locfile-kw.gperf"
+#line 50 "locfile-kw.gperf"
       {"map",                    tok_map,                    0},
       {""},
-#line 105 "programs/locfile-kw.gperf"
+#line 105 "locfile-kw.gperf"
       {"duo_frac_digits",        tok_duo_frac_digits,        0},
-#line 178 "programs/locfile-kw.gperf"
+#line 178 "locfile-kw.gperf"
       {"tel_int_fmt",            tok_tel_int_fmt,            0},
-#line 121 "programs/locfile-kw.gperf"
+#line 121 "locfile-kw.gperf"
       {"duo_valid_to",           tok_duo_valid_to,           0},
-#line 144 "programs/locfile-kw.gperf"
+#line 144 "locfile-kw.gperf"
       {"first_weekday",          tok_first_weekday,          0},
       {""},
-#line 143 "programs/locfile-kw.gperf"
+#line 143 "locfile-kw.gperf"
       {"alt_digits",             tok_alt_digits,             0},
-#line 95 "programs/locfile-kw.gperf"
+#line 95 "locfile-kw.gperf"
       {"n_sign_posn",            tok_n_sign_posn,            0},
-#line 84 "programs/locfile-kw.gperf"
+#line 84 "locfile-kw.gperf"
       {"mon_thousands_sep",      tok_mon_thousands_sep,      0},
-#line 145 "programs/locfile-kw.gperf"
+#line 145 "locfile-kw.gperf"
       {"first_workday",          tok_first_workday,          0},
-#line 64 "programs/locfile-kw.gperf"
+#line 64 "locfile-kw.gperf"
       {"from",                   tok_from,                   0},
-#line 131 "programs/locfile-kw.gperf"
+#line 131 "locfile-kw.gperf"
       {"abmon",                  tok_abmon,                  0},
       {""}, {""},
-#line 192 "programs/locfile-kw.gperf"
+#line 192 "locfile-kw.gperf"
       {"language",               tok_language,               0},
       {""}, {""},
-#line 195 "programs/locfile-kw.gperf"
+#line 195 "locfile-kw.gperf"
       {"application",            tok_application,            0},
       {""},
-#line 126 "programs/locfile-kw.gperf"
+#line 126 "locfile-kw.gperf"
       {"grouping",               tok_grouping,               0},
-#line 78 "programs/locfile-kw.gperf"
+#line 78 "locfile-kw.gperf"
       {"elif",                   tok_elif,                   0},
-#line 128 "programs/locfile-kw.gperf"
+#line 128 "locfile-kw.gperf"
       {"abday",                  tok_abday,                  0},
       {""},
-#line 196 "programs/locfile-kw.gperf"
+#line 196 "locfile-kw.gperf"
       {"abbreviation",           tok_abbreviation,           0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 56 "programs/locfile-kw.gperf"
+#line 56 "locfile-kw.gperf"
       {"coll_weight_max",        tok_coll_weight_max,        0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 66 "programs/locfile-kw.gperf"
+#line 66 "locfile-kw.gperf"
       {"backward",               tok_backward,               0},
-#line 104 "programs/locfile-kw.gperf"
+#line 104 "locfile-kw.gperf"
       {"duo_int_frac_digits",    tok_duo_int_frac_digits,    0},
       {""},
-#line 94 "programs/locfile-kw.gperf"
+#line 94 "locfile-kw.gperf"
       {"p_sign_posn",            tok_p_sign_posn,            0},
       {""},
-#line 199 "programs/locfile-kw.gperf"
+#line 199 "locfile-kw.gperf"
       {"category",               tok_category,               0},
       {""},
-#line 122 "programs/locfile-kw.gperf"
+#line 122 "locfile-kw.gperf"
       {"conversion_rate",        tok_conversion_rate,        0},
       {""},
-#line 83 "programs/locfile-kw.gperf"
+#line 83 "locfile-kw.gperf"
       {"mon_decimal_point",      tok_mon_decimal_point,      0},
       {""}, {""}, {""},
-#line 62 "programs/locfile-kw.gperf"
+#line 62 "locfile-kw.gperf"
       {"order_start",            tok_order_start,            0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
-#line 188 "programs/locfile-kw.gperf"
+#line 188 "locfile-kw.gperf"
       {"contact",                tok_contact,                0},
       {""}, {""}, {""},
-#line 169 "programs/locfile-kw.gperf"
+#line 169 "locfile-kw.gperf"
       {"country_ab3",            tok_country_ab3,            0},
       {""}, {""}, {""}, {""},
-#line 168 "programs/locfile-kw.gperf"
+#line 168 "locfile-kw.gperf"
       {"country_ab2",            tok_country_ab2,            0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
-#line 174 "programs/locfile-kw.gperf"
+#line 174 "locfile-kw.gperf"
       {"lang_ab",                tok_lang_ab,                0},
-#line 176 "programs/locfile-kw.gperf"
+#line 176 "locfile-kw.gperf"
       {"lang_lib",               tok_lang_lib,               0},
       {""}, {""}, {""}, {""},
-#line 191 "programs/locfile-kw.gperf"
+#line 191 "locfile-kw.gperf"
       {"fax",                    tok_fax,                    0},
       {""},
-#line 136 "programs/locfile-kw.gperf"
+#line 136 "locfile-kw.gperf"
       {"am_pm",                  tok_am_pm,                  0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
-#line 37 "programs/locfile-kw.gperf"
+#line 37 "locfile-kw.gperf"
       {"alnum",                  tok_alnum,                  0},
       {""}, {""}, {""},
-#line 175 "programs/locfile-kw.gperf"
+#line 175 "locfile-kw.gperf"
       {"lang_term",              tok_lang_term,              0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 79 "programs/locfile-kw.gperf"
+#line 79 "locfile-kw.gperf"
       {"endif",                  tok_endif,                  0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 165 "programs/locfile-kw.gperf"
+#line 165 "locfile-kw.gperf"
       {"postal_fmt",             tok_postal_fmt,             0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""},
-#line 75 "programs/locfile-kw.gperf"
+#line 75 "locfile-kw.gperf"
       {"undef",                  tok_undef,                  0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""},
-#line 58 "programs/locfile-kw.gperf"
+#line 58 "locfile-kw.gperf"
       {"collating-element",      tok_collating_element,      0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""},
-#line 85 "programs/locfile-kw.gperf"
+#line 85 "locfile-kw.gperf"
       {"mon_grouping",           tok_mon_grouping,           0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
-#line 65 "programs/locfile-kw.gperf"
+#line 65 "locfile-kw.gperf"
       {"forward",                tok_forward,                0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 59 "programs/locfile-kw.gperf"
+#line 59 "locfile-kw.gperf"
       {"collating-symbol",       tok_collating_symbol,       0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
-#line 34 "programs/locfile-kw.gperf"
+#line 34 "locfile-kw.gperf"
       {"alpha",                  tok_alpha,                  0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -595,7 +595,7 @@ locfile_hash (register const char *str, register unsigned int len)
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 76 "programs/locfile-kw.gperf"
+#line 76 "locfile-kw.gperf"
       {"ifdef",                  tok_ifdef,                  0}
     };
 
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 7a35696b38..77ce922963 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,19 @@
+2005-12-19  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): Make room for 2 uintptr_t's
+	rather than one.
+	(THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
+	THREAD_COPY_POINTER_GUARD): Define.
+	* sysdeps/powerpc/tcb-offsets.sym (POINTER_GUARD): Add.
+	* sysdeps/powerpc/tls.h (tcbhead_t): Add pointer_guard field.
+	(THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
+	THREAD_COPY_POINTER_GUARD): Define.
+	* sysdeps/s390/tcb-offsets.sym (STACK_GUARD): Add.
+	* sysdeps/s390/tls.h (THREAD_GET_POINTER_GUARD,
+	THREAD_SET_POINTER_GUARD, THREAD_COPY_POINTER_GUARD): Define.
+	* sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S (__ia64_longjmp):
+	Use PTR_DEMANGLE for B0 if defined.
+
 2005-12-17  Ulrich Drepper  <drepper@redhat.com>
 
 	* pthread_create.c (__pthread_create_2_1): Use
diff --git a/nptl/sysdeps/ia64/tls.h b/nptl/sysdeps/ia64/tls.h
index e3ad0681d6..eb773aa97d 100644
--- a/nptl/sysdeps/ia64/tls.h
+++ b/nptl/sysdeps/ia64/tls.h
@@ -81,13 +81,14 @@ register struct pthread *__thread_self __asm__("r13");
 # define TLS_TCB_SIZE sizeof (tcbhead_t)
 
 /* This is the size we need before TCB.
-   If there is not any room for uintptr_t stack_guard in struct pthread's
-   final padding, we need to put struct pthread 16 byte slower.  */
+   If there is not any room for uintptr_t stack_guard and
+   uintptr_t pointer_guard in struct pthread's final padding,
+   we need to put struct pthread 16 byte slower.  */
 # define TLS_PRE_TCB_SIZE \
-  (sizeof (struct pthread)					\
-   + (PTHREAD_STRUCT_END_PADDING < sizeof (uintptr_t)		\
-      ? ((sizeof (uintptr_t) + __alignof__ (struct pthread) - 1)\
-	 & ~(__alignof__ (struct pthread) - 1))			\
+  (sizeof (struct pthread)						\
+   + (PTHREAD_STRUCT_END_PADDING < 2 * sizeof (uintptr_t)		\
+      ? ((2 * sizeof (uintptr_t) + __alignof__ (struct pthread) - 1)	\
+	 & ~(__alignof__ (struct pthread) - 1))				\
       : 0))
 
 /* Alignment requirements for the TCB.  */
@@ -156,6 +157,15 @@ register struct pthread *__thread_self __asm__("r13");
   (((uintptr_t *) ((char *) (descr) + TLS_PRE_TCB_SIZE))[-1] \
    = ((uintptr_t *) __thread_self)[-1])
 
+/* Set the pointer guard field in TCB head.  */
+#define THREAD_GET_POINTER_GUARD() \
+  (((uintptr_t *) __thread_self)[-2])
+#define THREAD_SET_POINTER_GUARD(value) \
+  (((uintptr_t *) __thread_self)[-2] = (value))
+#define THREAD_COPY_POINTER_GUARD(descr) \
+  (((uintptr_t *) ((char *) (descr) + TLS_PRE_TCB_SIZE))[-2] \
+   = THREAD_GET_POINTER_GUARD ())
+
 #endif /* __ASSEMBLER__ */
 
 #endif	/* tls.h */
diff --git a/nptl/sysdeps/powerpc/tcb-offsets.sym b/nptl/sysdeps/powerpc/tcb-offsets.sym
index 3962edbd54..4a8671e802 100644
--- a/nptl/sysdeps/powerpc/tcb-offsets.sym
+++ b/nptl/sysdeps/powerpc/tcb-offsets.sym
@@ -14,3 +14,4 @@ MULTIPLE_THREADS_OFFSET		thread_offsetof (header.multiple_threads)
 #endif
 PID				thread_offsetof (pid)
 TID				thread_offsetof (tid)
+POINTER_GUARD			(offsetof (tcbhead_t, pointer_guard) - TLS_TCB_OFFSET - sizeof (tcbhead_t))
diff --git a/nptl/sysdeps/powerpc/tls.h b/nptl/sysdeps/powerpc/tls.h
index b2322b09bd..976a271362 100644
--- a/nptl/sysdeps/powerpc/tls.h
+++ b/nptl/sysdeps/powerpc/tls.h
@@ -66,9 +66,11 @@ typedef union dtv
 # include <nptl/descr.h>
 
 /* The stack_guard is accessed directly by GCC -fstack-protector code,
-   so it is a part of public ABI.  The dtv field is private.  */
+   so it is a part of public ABI.  The dtv and pointer_guard fields
+   are private.  */
 typedef struct
 {
+  uintptr_t pointer_guard;
   uintptr_t stack_guard;
   dtv_t *dtv;
 } tcbhead_t;
@@ -166,6 +168,17 @@ register void *__thread_register __asm__ ("r13");
      = ((tcbhead_t *) ((char *) __thread_register			      \
 		       - TLS_TCB_OFFSET))[-1].stack_guard)
 
+/* Set the stack guard field in TCB head.  */
+# define THREAD_GET_POINTER_GUARD() \
+    (((tcbhead_t *) ((char *) __thread_register				      \
+		     - TLS_TCB_OFFSET))[-1].pointer_guard)
+# define THREAD_SET_POINTER_GUARD(value) \
+    (THREAD_GET_POINTER_GUARD () = (value))
+# define THREAD_COPY_POINTER_GUARD(descr) \
+    (((tcbhead_t *) ((char *) (descr)					      \
+		     + TLS_PRE_TCB_SIZE))[-1].pointer_guard		      \
+     = THREAD_GET_POINTER_GUARD())
+
 /* l_tls_offset == 0 is perfectly valid on PPC, so we have to use some
    different value to mean unset l_tls_offset.  */
 # define NO_TLS_OFFSET		-1
diff --git a/nptl/sysdeps/s390/tcb-offsets.sym b/nptl/sysdeps/s390/tcb-offsets.sym
index 237f975b25..9cfae211e0 100644
--- a/nptl/sysdeps/s390/tcb-offsets.sym
+++ b/nptl/sysdeps/s390/tcb-offsets.sym
@@ -2,5 +2,6 @@
 #include <tls.h>
 
 MULTIPLE_THREADS_OFFSET		offsetof (tcbhead_t, multiple_threads)
+STACK_GUARD			offsetof (tcbhead_t, stack_guard)
 PID				offsetof (struct pthread, pid)
 TID				offsetof (struct pthread, tid)
diff --git a/nptl/sysdeps/s390/tls.h b/nptl/sysdeps/s390/tls.h
index f90b35b1e5..89ff095d52 100644
--- a/nptl/sysdeps/s390/tls.h
+++ b/nptl/sysdeps/s390/tls.h
@@ -164,6 +164,13 @@ typedef struct
   ((descr)->header.stack_guard						      \
    = THREAD_GETMEM (THREAD_SELF, header.stack_guard))
 
+/* s390 doesn't have HP_TIMING_*, so for the time being
+   use stack_guard as pointer_guard.  */
+#define THREAD_GET_POINTER_GUARD() \
+  THREAD_GETMEM (THREAD_SELF, header.stack_guard)
+#define THREAD_SET_POINTER_GUARD(value)
+#define THREAD_COPY_POINTER_GUARD(descr)
+
 #endif /* __ASSEMBLER__ */
 
 #endif	/* tls.h */
diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S b/nptl/sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S
index 1ceb210c2f..a1120d4d72 100644
--- a/nptl/sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S
+++ b/nptl/sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2001, 2004, 2005 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -102,6 +102,9 @@ LEAF(__ia64_longjmp)
 	;;
 	ld8.nta r20=[r2],16		// b4
 	ld8.nta r21=[r3],16		// b5
+#ifdef PTR_DEMANGLE
+	PTR_DEMANGLE (r16, r24)
+#endif
 	;;
 	ld8.nta r11=[r2],16		// ar.pfs
 	ld8.nta r22=[r3],56		// ar.lc
diff --git a/sysdeps/powerpc/powerpc32/__longjmp-common.S b/sysdeps/powerpc/powerpc32/__longjmp-common.S
index 82531ad6b3..80f5905208 100644
--- a/sysdeps/powerpc/powerpc32/__longjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/__longjmp-common.S
@@ -1,5 +1,6 @@
 /* longjmp for PowerPC.
-   Copyright (C) 1995-1997,1999-2001,2003,2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-1997, 1999-2001, 2003, 2004, 2005
+   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
@@ -40,6 +41,9 @@ ENTRY (BP_SYM (__longjmp))
 	lwz r18,((JB_GPRS+4)*4)(r3)
 	lwz r19,((JB_GPRS+5)*4)(r3)
 	lwz r20,((JB_GPRS+6)*4)(r3)
+#ifdef PTR_DEMANGLE
+	PTR_DEMANGLE (r0, r25)
+#endif
 	mtlr r0
 	lwz r21,((JB_GPRS+7)*4)(r3)
 	lwz r22,((JB_GPRS+8)*4)(r3)
diff --git a/sysdeps/powerpc/powerpc32/setjmp-common.S b/sysdeps/powerpc/powerpc32/setjmp-common.S
index ae21284e03..750075459c 100644
--- a/sysdeps/powerpc/powerpc32/setjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/setjmp-common.S
@@ -36,6 +36,9 @@ ENTRY (BP_SYM (__sigsetjmp))
 	stw  r1,(JB_GPR1*4)(3)
 	mflr r0
 	stw  r14,((JB_GPRS+0)*4)(3)
+#ifdef PTR_MANGLE
+	PTR_MANGLE (r0, r10)
+#endif
 	stw  r0,(JB_LR*4)(3)
 	stw  r15,((JB_GPRS+1)*4)(3)
 	mfcr r0
diff --git a/sysdeps/powerpc/powerpc64/__longjmp-common.S b/sysdeps/powerpc/powerpc64/__longjmp-common.S
index 30087d7db4..73967e0093 100644
--- a/sysdeps/powerpc/powerpc64/__longjmp-common.S
+++ b/sysdeps/powerpc/powerpc64/__longjmp-common.S
@@ -1,5 +1,5 @@
 /* longjmp for PowerPC64.
-   Copyright (C) 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004
+   Copyright (C) 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -128,6 +128,9 @@ L(no_vmx):
 	lfd fp19,((JB_FPRS+5)*8)(r3)
 	ld r20,((JB_GPRS+6)*8)(r3)
 	lfd fp20,((JB_FPRS+6)*8)(r3)
+#ifdef PTR_DEMANGLE
+	PTR_DEMANGLE (r0, r25)
+#endif
 	mtlr r0
 /* 	std r2,40(r1)	Restore the TOC save area.  */
 	ld r21,((JB_GPRS+7)*8)(r3)
diff --git a/sysdeps/powerpc/powerpc64/setjmp-common.S b/sysdeps/powerpc/powerpc64/setjmp-common.S
index c1926ecd68..4098fd63f5 100644
--- a/sysdeps/powerpc/powerpc64/setjmp-common.S
+++ b/sysdeps/powerpc/powerpc64/setjmp-common.S
@@ -56,6 +56,9 @@ JUMPTARGET(GLUE(__sigsetjmp,_ent)):
 #endif
 	std  r14,((JB_GPRS+0)*8)(3)
 	stfd fp14,((JB_FPRS+0)*8)(3)
+#ifdef PTR_MANGLE
+	PTR_MANGLE (r0, r10)
+#endif
 	std  r0,(JB_LR*8)(3)
 	std  r15,((JB_GPRS+1)*8)(3)
 	stfd fp15,((JB_FPRS+1)*8)(3)
diff --git a/sysdeps/s390/s390-32/__longjmp.c b/sysdeps/s390/s390-32/__longjmp.c
index c1b977cd49..07814e080a 100644
--- a/sysdeps/s390/s390-32/__longjmp.c
+++ b/sysdeps/s390/s390-32/__longjmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
 
@@ -29,14 +29,24 @@
 void
 __longjmp (__jmp_buf env, int val)
 {
-   /* Restore registers and jump back.  */
-   asm volatile ("lr   %%r2,%0\n\t"	  /* PUT val in grp 2.  */
-		 "ld   %%f6,48(%1)\n\t"
-		 "ld   %%f4,40(%1)\n\t"
-		 "lm   %%r6,%%r15,0(%1)\n\t"
-		 "br   %%r14"
-		 : : "r" (val == 0 ? 1 : val),
-		 "a" (env) : "2" );
+#ifdef PTR_DEMANGLE
+  register uintptr_t r5 __asm ("%r5") = THREAD_GET_POINTER_GUARD ();
+#endif
+  /* Restore registers and jump back.  */
+  asm volatile ("lr   %%r2,%0\n\t"	  /* PUT val in grp 2.  */
+		"ld   %%f6,48(%1)\n\t"
+		"ld   %%f4,40(%1)\n\t"
+		"lm   %%r6,%%r15,0(%1)\n\t"
+#ifdef PTR_DEMANGLE
+		"xr   %%r14,%2\n\t"
+#endif
+		"br   %%r14"
+		: : "r" (val == 0 ? 1 : val),
+		    "a" (env)
+#ifdef PTR_DEMANGLE
+		    , "r" (r5)
+#endif
+		: "2" );
 
   /* Avoid `volatile function does return' warnings.  */
   for (;;);
diff --git a/sysdeps/s390/s390-32/elf/setjmp.S b/sysdeps/s390/s390-32/elf/setjmp.S
index 0d1fa8e41d..f3ca8af6c2 100644
--- a/sysdeps/s390/s390-32/elf/setjmp.S
+++ b/sysdeps/s390/s390-32/elf/setjmp.S
@@ -1,5 +1,5 @@
 /* setjmp for s390, ELF version.
-   Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -46,10 +46,22 @@ END (__setjmp)
 
 ENTRY(__sigsetjmp)
 .Linternal_sigsetjmp:
+#ifdef PTR_MANGLE
+	stm    %r6,%r13,0(%r2)      /* store registers in jmp_buf */
+	lr     %r4,%r14
+	PTR_MANGLE (%r4, %r5)
+	st     %r4,32(%r2)
+	st     %r15,36(%r2)
+#else
 	stm    %r6,%r15,0(%r2)      /* store registers in jmp_buf */
+#endif
 	std    %f4,40(%r2)
 	std    %f6,48(%r2)
-#ifdef PIC
+#if defined NOT_IN_libc && defined IS_IN_rtld
+	/* In ld.so we never save the signal mask.  */
+	lhi    %r2,0
+	br     %r14
+#elif defined PIC
 	/* We cannot use the PLT, because it requires that %r12 be set, but
 	   we can't save and restore our caller's value.  Instead, we do an
 	   indirect jump through the GOT. */
diff --git a/sysdeps/s390/s390-32/setjmp.S b/sysdeps/s390/s390-32/setjmp.S
index dc4862b2a6..a438595945 100644
--- a/sysdeps/s390/s390-32/setjmp.S
+++ b/sysdeps/s390/s390-32/setjmp.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -29,10 +29,22 @@
 /* R2 = pointer to jmp_buf, R3 = savemask */
 
 ENTRY(__sigsetjmp)
+#ifdef PTR_MANGLE
+	stm    %r6,%r13,0(%r2)      /* store registers in jmp_buf */
+	lr     %r4,%r14
+	PTR_MANGLE (%r4, %r5)
+	st     %r4,32(%r2)
+	st     %r15,36(%r2)
+#else
 	stm    %r6,%r15,0(%r2)      /* store registers in jmp_buf */
+#endif
 	std    %f4,40(%r2)
 	std    %f6,48(%r2)
-#ifdef PIC
+#if defined NOT_IN_libc && defined IS_IN_rtld
+	/* In ld.so we never save the signal mask.  */
+	lhi    %r2,0
+	br     %r14
+#elif defined PIC
 	/* We cannot use the PLT, because it requires that %r12 be set, but
 	   we can't save and restore our caller's value.  Instead, we do an
 	   indirect jump through the GOT. */
diff --git a/sysdeps/s390/s390-64/__longjmp.c b/sysdeps/s390/s390-64/__longjmp.c
index 80abd3849a..6650bf702f 100644
--- a/sysdeps/s390/s390-64/__longjmp.c
+++ b/sysdeps/s390/s390-64/__longjmp.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
 
@@ -29,18 +29,27 @@
 void
 __longjmp (__jmp_buf env, int val)
 {
-   /* Restore registers and jump back.  */
-   asm volatile ("lgr  %%r2,%0\n\t"        /* Put val in grp 2.  */
-		 "ld   %%f7,104(%1)\n\t"
-		 "ld   %%f5,96(%1)\n\t"
-		 "ld   %%f3,88(%1)\n\t"
-		 "ld   %%f1,80(%1)\n\t"
-                 "lmg  %%r6,%%r15,0(%1)\n\t"
-                 "br   %%r14"
-                 : : "r" (val == 0 ? 1 : val),
-                 "a" (env) : "2" );
+#ifdef PTR_DEMANGLE
+  register uintptr_t r5 __asm ("%r5") = THREAD_GET_POINTER_GUARD ();
+#endif
+  /* Restore registers and jump back.  */
+  asm volatile ("lgr  %%r2,%0\n\t"        /* Put val in grp 2.  */
+		"ld   %%f7,104(%1)\n\t"
+		"ld   %%f5,96(%1)\n\t"
+		"ld   %%f3,88(%1)\n\t"
+		"ld   %%f1,80(%1)\n\t"
+		"lmg  %%r6,%%r15,0(%1)\n\t"
+#ifdef PTR_DEMANGLE
+		"xgr  %%r14,%2\n\t"
+#endif
+		"br   %%r14"
+		: : "r" (val == 0 ? 1 : val),
+		    "a" (env)
+#ifdef PTR_DEMANGLE
+		    , "r" (r5)
+#endif
+		: "2" );
 
   /* Avoid `volatile function does return' warnings.  */
   for (;;);
 }
-
diff --git a/sysdeps/s390/s390-64/elf/setjmp.S b/sysdeps/s390/s390-64/elf/setjmp.S
index fa3ac72480..44f7cf08cc 100644
--- a/sysdeps/s390/s390-64/elf/setjmp.S
+++ b/sysdeps/s390/s390-64/elf/setjmp.S
@@ -1,5 +1,5 @@
 /* setjmp for 64 bit S/390, ELF version.
-   Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -46,12 +46,24 @@ END (setjmp)
 
 ENTRY(__sigsetjmp)
 .Linternal_sigsetjmp:
+#ifdef PTR_MANGLE
+	stmg   %r6,%r13,0(%r2)      /* Store registers in jmp_buf.  */
+	lgr    %r4,%r14
+	PTR_MANGLE (%r4, %r5)
+	stg    %r4,64(%r2)
+	stg    %r15,72(%r2)
+#else
         stmg   %r6,%r15,0(%r2)      /* Store registers in jmp_buf.  */
+#endif
 	std    %f1,80(%r2)
 	std    %f3,88(%r2)
 	std    %f5,96(%r2)
 	std    %f7,104(%r2)
-#ifdef PIC
+#if defined NOT_IN_libc && defined IS_IN_rtld
+	/* In ld.so we never save the signal mask.  */
+	lghi   %r2,0
+	br     %r14
+#elif defined PIC
         jg     __sigjmp_save@PLT    /* Branch to PLT of __sigsetjmp.  */
 #else
 	jg     __sigjmp_save
diff --git a/sysdeps/s390/s390-64/setjmp.S b/sysdeps/s390/s390-64/setjmp.S
index 7f245c2a1d..25d97b6a6a 100644
--- a/sysdeps/s390/s390-64/setjmp.S
+++ b/sysdeps/s390/s390-64/setjmp.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -28,16 +28,26 @@
 /* R2 = pointer to jmp_buf, R3 = savemask.  */
 
 ENTRY(__sigsetjmp)
+#ifdef PTR_MANGLE
+	stmg   %r6,%r13,0(%r2)      /* Store registers in jmp_buf.  */
+	lgr    %r4,%r14
+	PTR_MANGLE (%r4, %r5)
+	stg    %r4,64(%r2)
+	stg    %r15,72(%r2)
+#else
         stmg   %r6,%r15,0(%r2)      /* Store registers in jmp_buf.  */
+#endif
 	std    %f1,80(%r2)
 	std    %f3,88(%r2)
 	std    %f5,96(%r2)
 	std    %f7,104(%r2)
-#ifdef PIC
+#if defined NOT_IN_libc && defined IS_IN_rtld
+	/* In ld.so we never save the signal mask.  */
+	lghi   %r2,0
+	br     %r14
+#elif defined PIC
         jg     __sigjmp_save@PLT    /* Tail-call __sigjmp_save.  */
 #else
         jg     __sigjmp_save        /* Tail-call __sigjmp_save.  */
 #endif
 END (__sigsetjmp)
-
-
diff --git a/sysdeps/unix/sysv/linux/ia64/__longjmp.S b/sysdeps/unix/sysv/linux/ia64/__longjmp.S
index 7922e81bea..aa18fadf9c 100644
--- a/sysdeps/unix/sysv/linux/ia64/__longjmp.S
+++ b/sysdeps/unix/sysv/linux/ia64/__longjmp.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2001, 2005 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -101,6 +101,9 @@ LEAF(__longjmp)
 	ld8.nta r18=[r2],16		// b2
 	ld8.nta r19=[r3],16		// b3
 	;;
+#ifdef PTR_DEMANGLE
+	PTR_DEMANGLE (r16, r24)
+#endif
 	ld8.nta r20=[r2],16		// b4
 	ld8.nta r21=[r3],16		// b5
 	;;
diff --git a/sysdeps/unix/sysv/linux/ia64/setjmp.S b/sysdeps/unix/sysv/linux/ia64/setjmp.S
index 9c987c7ef8..53f80d203e 100644
--- a/sysdeps/unix/sysv/linux/ia64/setjmp.S
+++ b/sysdeps/unix/sysv/linux/ia64/setjmp.S
@@ -1,4 +1,5 @@
-/* Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005
+   Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -86,7 +87,7 @@ libc_hidden_def (_setjmp)
 
 ENTRY(__sigsetjmp)
 	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2)
-	alloc loc1=ar.pfs,2,3,2,0
+	alloc loc1=ar.pfs,2,5,2,0
 	.save ar.unat, loc2
 	mov loc2=ar.unat
 	;;
@@ -140,7 +141,13 @@ ENTRY(__sigsetjmp)
 	;;
 	stf.spill.nta [r8]=f28,32
 	stf.spill.nta [r9]=f29,32
+#ifdef PTR_MANGLE
+	mov loc3=loc0
 	;;
+	PTR_MANGLE (loc3, loc4)
+#else
+	;;
+#endif
 	stf.spill.nta [r8]=f30
 	stf.spill.nta [r9]=f31
 
@@ -151,7 +158,11 @@ ENTRY(__sigsetjmp)
 	mov r25=ar.unat
 	mov out0=in0
 
+#ifdef PTR_MANGLE
+	st8.nta [r2]=loc3,16		// b0
+#else
 	st8.nta [r2]=loc0,16		// b0
+#endif
 	st8.nta [r3]=r17,16		// b1
 	mov out1=in1
 	;;
@@ -169,7 +180,12 @@ ENTRY(__sigsetjmp)
 	;;
 	st8.nta [r2]=r25		// ar.unat
 	st8.nta [r3]=in0		// &__jmp_buf
+#if defined NOT_IN_libc && defined IS_IN_rtld
+	/* In ld.so we never save the signal mask.  */
+	;;
+#else
 	br.call.dpnt.few rp=__sigjmp_save
+#endif
 .ret0:					// force a new bundle ::q
 	mov.m ar.unat=loc2		// restore caller's unat
 	mov rp=loc0
diff --git a/sysdeps/unix/sysv/linux/ia64/sysdep.h b/sysdeps/unix/sysv/linux/ia64/sysdep.h
index a4453ddcc7..ef7bc8e136 100644
--- a/sysdeps/unix/sysv/linux/ia64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/ia64/sysdep.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
    Based on code originally written by David Mosberger-Tang
@@ -360,4 +361,24 @@
 
 #endif /* not __ASSEMBLER__ */
 
+/* Pointer mangling support.  */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+   earlier than the descriptor is initialized.  */
+#else
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(reg, tmpreg) \
+        add	tmpreg=-16,r13		\
+        ;;				\
+        ld8	tmpreg=[tmpreg]		\
+        ;;				\
+        xor	reg=reg, tmpreg
+#  define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg)
+# else
+#  define PTR_MANGLE(var) \
+  (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ())
+#  define PTR_DEMANGLE(var)	PTR_MANGLE (var)
+# endif
+#endif
+
 #endif /* linux/ia64/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/internal_statvfs.c b/sysdeps/unix/sysv/linux/internal_statvfs.c
index ea26729d55..73317ecafd 100644
--- a/sysdeps/unix/sysv/linux/internal_statvfs.c
+++ b/sysdeps/unix/sysv/linux/internal_statvfs.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
@@ -71,6 +71,33 @@ __statvfs_getflags (const char *name, int fstype, struct stat64 *st)
     case NFS_SUPER_MAGIC:
       fsname = "nfs";
       break;
+    case SYSFS_MAGIC:
+      fsname = "sysfs";
+      break;
+    case REISERFS_SUPER_MAGIC:
+      fsname = "reiserfs";
+      break;
+    case XFS_SUPER_MAGIC:
+      fsname = "xfs";
+      break;
+    case JFS_SUPER_MAGIC:
+      fsname = "jfs";
+      break;
+    case HPFS_SUPER_MAGIC:
+      fsname = "hpfs";
+      break;
+    case DEVFS_SUPER_MAGIC:
+      fsname = "devfs";
+      break;
+    case ISOFS_SUPER_MAGIC:
+      fsname = "iso9660";
+      break;
+    case MSDOS_SUPER_MAGIC:
+      fsname = "msdos";
+      break;
+    case NTFS_SUPER_MAGIC:
+      fsname = "ntfs";
+      break;
     }
 
   FILE *mtab = __setmntent ("/proc/mounts", "r");
diff --git a/sysdeps/unix/sysv/linux/linux_fsinfo.h b/sysdeps/unix/sysv/linux/linux_fsinfo.h
index 13c3856266..8c6591ada3 100644
--- a/sysdeps/unix/sysv/linux/linux_fsinfo.h
+++ b/sysdeps/unix/sysv/linux/linux_fsinfo.h
@@ -1,5 +1,5 @@
 /* Constants from kernel header for various FSes.
-   Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+   Copyright (C) 1998,1999,2000,2001,2002,2003,2005 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
@@ -135,6 +135,9 @@
 /* Constants that identify the `vxfs' filesystem.  */
 #define VXFS_SUPER_MAGIC	0xa501fcf5
 
+/* Constants that identify the `sysfs´ filesystem.  */
+#define SYSFS_MAGIC		0x62656572
+
 /* Maximum link counts.  */
 #define COH_LINK_MAX		10000
 #define EXT2_LINK_MAX		32000
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
index 81f37c5103..546e712edc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
@@ -20,6 +20,7 @@
 #define _LINUX_POWERPC_SYSDEP_H 1
 
 #include <sysdeps/unix/powerpc/sysdep.h>
+#include <tls.h>
 
 /* Some systen calls got renamed over time, but retained the same semantics.
    Handle them here so they can be catched by both C and assembler stubs in
@@ -170,4 +171,21 @@
 #endif /* __ASSEMBLER__ */
 
 
+/* Pointer mangling support.  */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+   earlier than the descriptor is initialized.  */
+#else
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(reg, tmpreg) \
+	lwz	tmpreg,POINTER_GUARD(r2); \
+	xor	reg,tmpreg,reg
+#  define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg)
+# else
+#  define PTR_MANGLE(var) \
+  (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ())
+#  define PTR_DEMANGLE(var)	PTR_MANGLE (var)
+# endif
+#endif
+
 #endif /* linux/powerpc/powerpc32/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
index c3463f7431..3ece017563 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
@@ -23,6 +23,7 @@
 #define _LINUX_POWERPC_SYSDEP_H 1
 
 #include <sysdeps/unix/powerpc/sysdep.h>
+#include <tls.h>
 
 /* Define __set_errno() for INLINE_SYSCALL macro below.  */
 #ifndef __ASSEMBLER__
@@ -180,4 +181,22 @@
 #define ASM_INPUT_5 ASM_INPUT_4, "5" (r7)
 #define ASM_INPUT_6 ASM_INPUT_5, "6" (r8)
 
+
+/* Pointer mangling support.  */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+   earlier than the descriptor is initialized.  */
+#else
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(reg, tmpreg) \
+	ld	tmpreg,POINTER_GUARD(r13); \
+	xor	reg,tmpreg,reg
+#  define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg)
+# else
+#  define PTR_MANGLE(var) \
+  (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ())
+#  define PTR_DEMANGLE(var)	PTR_MANGLE (var)
+# endif
+#endif
+
 #endif /* linux/powerpc/powerpc64/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
index 43b1b951d5..355108a493 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000,01,02,03,04 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005
+   Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -23,6 +24,7 @@
 #include <sysdeps/s390/s390-32/sysdep.h>
 #include <sysdeps/unix/sysdep.h>
 #include <dl-sysdep.h>	/* For RTLD_PRIVATE_ERRNO.  */
+#include <tls.h>
 
 /* For Linux we can use the system call table in the header file
 	/usr/include/asm/unistd.h
@@ -111,8 +113,8 @@
 0:  lcr   %r0,%r2;							      \
     basr  %r1,0;							      \
 1:  al    %r1,2f-1b(%r1);						      \
-    l     %r1,SYSCALL_ERROR_ERRNO@gotntpoff(%r1)			      \
-    ear   %r2,%a0							      \
+    l     %r1,SYSCALL_ERROR_ERRNO@gotntpoff(%r1);			      \
+    ear   %r2,%a0;							      \
     st    %r0,0(%r1,%r2);						      \
     lhi   %r2,-1;							      \
     br    %r14;								      \
@@ -261,4 +263,24 @@
 #define ASMFMT_4 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5)
 #define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6)
 
+
+/* Pointer mangling support.  */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+   earlier than the descriptor is initialized.  */
+#else
+/* For the time being just use stack_guard rather than a separate
+   pointer_guard.  */
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(reg, tmpreg) \
+  ear     tmpreg,%a0;			\
+  x       reg,STACK_GUARD(tmpreg)
+#  define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg)
+# else
+#  define PTR_MANGLE(var) \
+  (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ())
+#  define PTR_DEMANGLE(var)	PTR_MANGLE (var)
+# endif
+#endif
+
 #endif /* _LINUX_S390_SYSDEP_H */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/socket.S b/sysdeps/unix/sysv/linux/s390/s390-64/socket.S
index c98a97449b..d4c3a1c4e1 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/socket.S
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/socket.S
@@ -128,6 +128,7 @@ L(socket_cancel):
 	j	4b
 #endif
 
+	SYSCALL_ERROR_HANDLER
 END (__socket)
 
 #ifndef NO_WEAK_ALIAS
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
index 154bc06803..562fc7df76 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h
@@ -1,5 +1,5 @@
 /* Assembler macros for 64 bit S/390.
-   Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -24,6 +24,7 @@
 #include <sysdeps/s390/s390-64/sysdep.h>
 #include <sysdeps/unix/sysdep.h>
 #include <dl-sysdep.h>	/* For RTLD_PRIVATE_ERRNO.  */
+#include <tls.h>
 
 /* For Linux we can use the system call table in the header file
 	/usr/include/asm/unistd.h
@@ -263,4 +264,25 @@
 #define ASMFMT_4 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5)
 #define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6)
 
+/* Pointer mangling support.  */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+   earlier than the descriptor is initialized.  */
+#else
+/* For the time being just use stack_guard rather than a separate
+   pointer_guard.  */
+# ifdef __ASSEMBLER__
+#  define PTR_MANGLE(reg, tmpreg) \
+  ear     tmpreg,%a0;			\
+  sllg    tmpreg,tmpreg,32;		\
+  ear     tmpreg,%a1;			\
+  xg      reg,STACK_GUARD(tmpreg)
+#  define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg)
+# else
+#  define PTR_MANGLE(var) \
+  (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ())
+#  define PTR_DEMANGLE(var)	PTR_MANGLE (var)
+# endif
+#endif
+
 #endif /* _LINUX_S390_SYSDEP_H */
diff --git a/sysdeps/unix/sysv/linux/s390/sys/user.h b/sysdeps/unix/sysv/linux/s390/sys/user.h
index eddd196c72..f00caea84d 100644
--- a/sysdeps/unix/sysv/linux/s390/sys/user.h
+++ b/sysdeps/unix/sysv/linux/s390/sys/user.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000,2005 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
@@ -19,6 +19,65 @@
 #ifndef _SYS_USER_H
 #define _SYS_USER_H	1
 
-#include <asm/user.h>
+/* The whole purpose of this file is for GDB and GDB only.  Don't read
+   too much into it.  Don't use it for anything other than GDB unless
+   you know what you are doing.  */
+
+struct _user_psw_struct
+{
+  unsigned long mask;
+  unsigned long addr;
+};
+
+struct _user_fpregs_struct
+{
+  unsigned int fpc;
+  double fprs[16];
+};
+
+struct _user_per_struct
+{
+  unsigned long control_regs[3];
+  unsigned single_step       : 1;
+  unsigned instruction_fetch : 1;
+  unsigned                   : 30;
+  unsigned long starting_addr;
+  unsigned long ending_addr;
+  unsigned short perc_atmid;
+  unsigned long address;
+  unsigned char access_id;
+};
+
+struct _user_regs_struct
+{
+  struct _user_psw_struct psw;		/* Program status word.  */
+  unsigned long gprs[16];		/* General purpose registers.  */
+  unsigned int  acrs[16];		/* Access registers.  */
+  unsigned long orig_gpr2;		/* Original gpr2.  */
+  struct _user_fpregs_struct fp_regs;	/* Floating point registers.  */
+  struct _user_per_struct per_info;	/* Hardware tracing registers.  */
+  unsigned long ieee_instruction_pointer; 
+};
+
+struct user {
+  struct _user_regs_struct regs;	/* User registers.  */
+  unsigned long int u_tsize;		/* Text segment size (pages).  */
+  unsigned long int u_dsize;		/* Data segment size (pages).  */
+  unsigned long int u_ssize;		/* Stack segment size (pages).  */
+  unsigned long start_code;		/* Starting address of text.  */
+  unsigned long start_stack;		/* Starting address of stack area.  */
+  long int signal;			/* Signal causing the core dump.  */
+  struct _user_regs_struct *u_ar0;	/* Help gdb find registers.  */
+  unsigned long magic;			/* Identifies a core file.  */
+  char u_comm[32];			/* User command naem.  */
+};
+
+#define PAGE_SHIFT		12
+#define PAGE_SIZE		(1UL << PAGE_SHIFT)
+#define PAGE_MASK		(~(PAGE_SIZE-1))
+#define NBPG			PAGE_SIZE
+#define UPAGES			1
+#define HOST_TEXT_START_ADDR	(u.start_code)
+#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
 
 #endif	/* _SYS_USER_H */
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S b/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S
index 3c12278e6a..911d5c6b39 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S
@@ -40,7 +40,11 @@
    The .S files for the other calls just #define socket and #include this.  */
 
 #ifndef __socket
-#define __socket P(__,socket)
+# ifndef NO_WEAK_ALIAS
+#  define __socket P(__,socket)
+# else
+#  define __socket socket
+# endif
 #endif
 
 .globl __socket
@@ -105,4 +109,6 @@ ENTRY (__socket)
 
 END (__socket)
 
+#ifndef NO_WEAK_ALIAS
 weak_alias (__socket, socket)
+#endif
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/socket.S b/sysdeps/unix/sysv/linux/sparc/sparc64/socket.S
index 575416ff3f..7a8b205538 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/socket.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/socket.S
@@ -40,7 +40,11 @@
    The .S files for the other calls just #define socket and #include this.  */
 
 #ifndef __socket
-#define __socket P(__,socket)
+# ifndef NO_WEAK_ALIAS
+#  define __socket P(__,socket)
+# else
+#  define __socket socket
+# endif
 #endif
 
 .globl __socket
@@ -107,4 +111,6 @@ ENTRY (__socket)
 
 END (__socket)
 
+#ifndef NO_WEAK_ALIAS
 weak_alias (__socket, socket)
+#endif