aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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