* sysdeps/unix/sysv/linux/i386/ucontext_i.h: File removed.
authorRoland McGrath <roland@gnu.org>
Thu, 22 Dec 2005 05:18:34 +0000 (05:18 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 22 Dec 2005 05:18:34 +0000 (05:18 +0000)
* sysdeps/unix/sysv/linux/i386/ucontext_i.sym: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: File removed.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h: File removed.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym: New file.
* sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.h: File removed.
* sysdeps/unix/sysv/linux/s390/s390-64/ucontext_i.h: File removed.
* sysdeps/unix/sysv/linux/s390/ucontext_i.sym: New file.
* sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.h: File removed.
* sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.sym: New file.
* sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.h: File removed.
* sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym: New file.
* sysdeps/unix/sysv/linux/x86_64/ucontext_i.h: File removed.
* sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym: New file.
* sysdeps/unix/sysv/linux/i386/Makefile [$(subdir) = stdlib]:
(gen-as-const-headers): Add it.
* sysdeps/unix/sysv/linux/powerpc/Makefile: Likewise.
* sysdeps/unix/sysv/linux/sh/Makefile: Likewise.
* sysdeps/unix/sysv/linux/s390/Makefile: Likewise.
* sysdeps/unix/sysv/linux/x86_64/Makefile: Likewise.
* stdlib/tst-ucontext-off.c: File removed.
* stdlib/Makefile (tests): Remove it.

* scripts/gen-as-const.awk: Support generating a test program.
* Makerules [gen-as-const-headers] (tests): Add test-as-const.
[gen-as-const-headers] ($(objpfx)test-as-const.c): New target.

25 files changed:
ChangeLog
Makerules
scripts/gen-as-const.awk
stdlib/Makefile
stdlib/tst-ucontext-off.c [deleted file]
sysdeps/unix/sysv/linux/i386/Makefile
sysdeps/unix/sysv/linux/i386/ucontext_i.h [deleted file]
sysdeps/unix/sysv/linux/i386/ucontext_i.sym [new file with mode: 0644]
sysdeps/unix/sysv/linux/powerpc/Makefile
sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h [deleted file]
sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym [new file with mode: 0644]
sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h [deleted file]
sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym [new file with mode: 0644]
sysdeps/unix/sysv/linux/s390/Makefile
sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.h [deleted file]
sysdeps/unix/sysv/linux/s390/s390-64/ucontext_i.h [deleted file]
sysdeps/unix/sysv/linux/s390/ucontext_i.sym [new file with mode: 0644]
sysdeps/unix/sysv/linux/sh/Makefile
sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.h [deleted file]
sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.sym [new file with mode: 0644]
sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.h [deleted file]
sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym [new file with mode: 0644]
sysdeps/unix/sysv/linux/x86_64/Makefile
sysdeps/unix/sysv/linux/x86_64/ucontext_i.h [deleted file]
sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym [new file with mode: 0644]

index ea9be8a..5c03197 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,33 @@
 2005-12-21  Roland McGrath  <roland@redhat.com>
 
+       * sysdeps/unix/sysv/linux/i386/ucontext_i.h: File removed.
+       * sysdeps/unix/sysv/linux/i386/ucontext_i.sym: New file.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: File removed.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym: New file.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h: File removed.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym: New file.
+       * sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.h: File removed.
+       * sysdeps/unix/sysv/linux/s390/s390-64/ucontext_i.h: File removed.
+       * sysdeps/unix/sysv/linux/s390/ucontext_i.sym: New file.
+       * sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.h: File removed.
+       * sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.sym: New file.
+       * sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.h: File removed.
+       * sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym: New file.
+       * sysdeps/unix/sysv/linux/x86_64/ucontext_i.h: File removed.
+       * sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym: New file.
+       * sysdeps/unix/sysv/linux/i386/Makefile [$(subdir) = stdlib]:
+       (gen-as-const-headers): Add it.
+       * sysdeps/unix/sysv/linux/powerpc/Makefile: Likewise.
+       * sysdeps/unix/sysv/linux/sh/Makefile: Likewise.
+       * sysdeps/unix/sysv/linux/s390/Makefile: Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/Makefile: Likewise.
+       * stdlib/tst-ucontext-off.c: File removed.
+       * stdlib/Makefile (tests): Remove it.
+
+       * scripts/gen-as-const.awk: Support generating a test program.
+       * Makerules [gen-as-const-headers] (tests): Add test-as-const.
+       [gen-as-const-headers] ($(objpfx)test-as-const.c): New target.
+
        * sysdeps/generic/bits: Subdirectory and all files moved to ...
        * bits: ... here, new subdirectory.
        * Makeconfig (+includes): Reordered includes to put build and sysdeps
index d0b1d89..2679c0a 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -183,6 +183,7 @@ sed-remove-dotdot := -e 's@  *\([^  \/$$][^         \]*\)@ $$(..)\1@g' \
 endif
 
 
+ifdef gen-as-const-headers
 # Generating headers for assembly constants.
 # We need this defined early to get into before-compile before
 # it's used in sysd-rules, below.
@@ -201,6 +202,16 @@ $(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \
        mv -f $(@:.h.d=.h)T $(@:.h.d=.h)
 vpath %.sym $(sysdirs)
 before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
+
+tests += test-as-const
+$(objpfx)test-as-const.c: $(..)scripts/gen-as-const.awk $(..)Makerules \
+                         $(gen-as-const-headers) \
+                         $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
+       ($(AWK) '{ sub(/^/, "asconst_", $$2); print; }' $(filter %.h,$^); \
+        $(AWK) -v test=1 -f $< $(filter %.sym,$^); \
+        echo '#include "$(..)test-skeleton.c"') > $@T
+       mv -f $@T $@
+endif
 \f
 # Generate an ordered list of implicit rules which find the source files in
 # each sysdep directory.  The old method was to use vpath to search all the
index a315066..c529fa4 100644 (file)
@@ -13,7 +13,17 @@ BEGIN { started = 0 }
 /^#/ { print; next }
 
 NF >= 1 && !started {
-  print "void dummy(void) {";
+  if (test) {
+    print "\n#include <stdio.h>";
+    print "\nstatic int do_test (void)\n{\n  int bad = 0, good = 0;\n";
+    print "#define TEST(name, source, expr) \\\n" \
+      "  if (asconst_##name != (expr)) { ++bad;" \
+      " fprintf (stderr, \"%s: %s is %ld but %s is %ld\\n\"," \
+      " source, #name, (long int) asconst_##name, #expr, (long int) (expr));" \
+      " } else ++good;\n";
+  }
+  else
+    print "void dummy(void) {";
   started = 1;
 }
 
@@ -25,8 +35,18 @@ NF == 1 { sub(/^.*$/, "& &"); }
 NF > 1 {
   name = $1;
   sub(/^[^     ]+[     ]+/, "");
-  printf "asm (\"@@@name@@@%s@@@value@@@%%0@@@end@@@\" : : \"i\" (%s));\n",
-    name, $0;
+  if (test)
+    print "  TEST (" name ", \"" FILENAME ":" FNR "\", " $0 ")";
+  else
+    printf "asm (\"@@@name@@@%s@@@value@@@%%0@@@end@@@\" : : \"i\" (%s));\n",
+      name, $0;
 }
 
-END { if (started) print "}" }
+END {
+  if (test) {
+    print "  printf (\"%d errors in %d tests\\n\", bad, good + bad);"
+    print "  return bad != 0 || good == 0;\n}\n";
+    print "#define TEST_FUNCTION do_test ()";
+  }
+  else if (started) print "}";
+}
index fa65c95..9a9ff8b 100644 (file)
@@ -63,8 +63,7 @@ tests         := tst-strtol tst-strtod testmb testrand testsort testdiv   \
                   test-canon test-canon2 tst-strtoll tst-environ           \
                   tst-xpg-basename tst-random tst-random2 tst-bsearch      \
                   tst-limits tst-rand48 bug-strtod tst-setcontext          \
-                  test-a64l tst-qsort tst-system testmb2 bug-strtod2       \
-                  tst-ucontext-off
+                  test-a64l tst-qsort tst-system testmb2 bug-strtod2
 
 include ../Makeconfig
 
diff --git a/stdlib/tst-ucontext-off.c b/stdlib/tst-ucontext-off.c
deleted file mode 100644 (file)
index 2e97f21..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <stddef.h>
-#include <stdio.h>
-#include <sys/ucontext.h>
-
-#include <ucontext_i.h>
-
-static int
-do_test  (void)
-{
-  int nerrors = 0;
-  int ntests = 0;
-
-#define TEST(member, val) \
-  do {                                                                 \
-    if (offsetof (struct ucontext, member) != val)                     \
-      {                                                                        \
-       printf ("offsetof(%s) = %zu, %s = %zu\n",                       \
-               #member, offsetof (struct ucontext, member),            \
-               #val, (size_t) val);                                    \
-       ++nerrors;                                                      \
-      }                                                                        \
-    ++ntests;                                                          \
-  } while (0)
-
-#ifdef TESTS
-  TESTS
-#endif
-
-  printf ("%d errors in %d tests\n", nerrors, ntests);
-
-  return nerrors != 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
index 1ae6940..7db3e3e 100644 (file)
@@ -12,3 +12,7 @@ endif
 ifeq ($(subdir),resource)
 sysdep_routines += oldgetrlimit64
 endif
+
+ifeq ($(subdir),stdlib)
+gen-as-const-headers += ucontext_i.sym
+endif
diff --git a/sysdeps/unix/sysv/linux/i386/ucontext_i.h b/sysdeps/unix/sysv/linux/i386/ucontext_i.h
deleted file mode 100644 (file)
index c6319f2..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Offsets and other constants needed in the *context() function
-   implementation.
-   Copyright (C) 2001, 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#define SIG_BLOCK      0
-#define SIG_SETMASK    2
-
-/* Offsets of the fields in the ucontext_t structure.  */
-#define oLINK          4
-#define oSS_SP         8
-#define oSS_SIZE       16
-#define oGS            20
-#define oFS            24
-#define oEDI           36
-#define oESI           40
-#define oEBP           44
-#define oESP           48
-#define oEBX           52
-#define oEDX           56
-#define oECX           60
-#define oEAX           64
-#define oEIP           76
-#define oFPREGS                96
-#define oSIGMASK       108
-#define oFPREGSMEM     236
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_link, oLINK);                               \
-  TEST (uc_stack.ss_sp, oSS_SP);                       \
-  TEST (uc_stack.ss_size, oSS_SIZE);                   \
-  TEST (uc_mcontext.gregs[REG_GS], oGS);               \
-  TEST (uc_mcontext.gregs[REG_FS], oFS);               \
-  TEST (uc_mcontext.gregs[REG_EDI], oEDI);             \
-  TEST (uc_mcontext.gregs[REG_ESI], oESI);             \
-  TEST (uc_mcontext.gregs[REG_EBP], oEBP);             \
-  TEST (uc_mcontext.gregs[REG_ESP], oESP);             \
-  TEST (uc_mcontext.gregs[REG_EBX], oEBX);             \
-  TEST (uc_mcontext.gregs[REG_EDX], oEDX);             \
-  TEST (uc_mcontext.gregs[REG_ECX], oECX);             \
-  TEST (uc_mcontext.gregs[REG_EAX], oEAX);             \
-  TEST (uc_mcontext.gregs[REG_EIP], oEIP);             \
-  TEST (uc_mcontext.fpregs, oFPREGS);                  \
-  TEST (uc_sigmask, oSIGMASK);                         \
-  TEST (__fpregs_mem, oFPREGSMEM);
diff --git a/sysdeps/unix/sysv/linux/i386/ucontext_i.sym b/sysdeps/unix/sysv/linux/i386/ucontext_i.sym
new file mode 100644 (file)
index 0000000..b11a550
--- /dev/null
@@ -0,0 +1,30 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_SETMASK
+
+#define ucontext(member)       offsetof (ucontext_t, member)
+#define mcontext(member)       ucontext (uc_mcontext.member)
+#define mreg(reg)              mcontext (gregs[REG_##reg])
+
+oLINK          ucontext (uc_link)
+oSS_SP         ucontext (uc_stack.ss_sp)
+oSS_SIZE       ucontext (uc_stack.ss_size)
+oGS            mreg (GS)
+oFS            mreg (FS)
+oEDI           mreg (EDI)
+oESI           mreg (ESI)
+oEBP           mreg (EBP)
+oESP           mreg (ESP)
+oEBX           mreg (EBX)
+oEDX           mreg (EDX)
+oECX           mreg (ECX)
+oEAX           mreg (EAX)
+oEIP           mreg (EIP)
+oFPREGS                mcontext (fpregs)
+oSIGMASK       ucontext (uc_sigmask)
+oFPREGSMEM     ucontext (__fpregs_mem)
index 671370e..55d2d0d 100644 (file)
@@ -2,3 +2,7 @@
 ifeq ($(subdir),rt)
 librt-routines += rt-sysdep
 endif
+
+ifeq ($(subdir),stdlib)
+gen-as-const-headers += ucontext_i.sym
+endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h
deleted file mode 100644 (file)
index f65b0ed..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Offsets and other constants needed in the *context() function
-   implementation.
-   Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#define SIG_BLOCK      0
-#define SIG_SETMASK    2
-
-#define _FRAME_BACKCHAIN       0
-#define _FRAME_LR_SAVE 4
-#define _FRAME_PARM_SAVE1      8
-#define _FRAME_PARM_SAVE2      12
-#define _FRAME_PARM_SAVE3      16
-#define _FRAME_PARM_SAVE4      20
-
-#define _UC_LINK       4
-#define _UC_STACK_SP   8
-#define _UC_STACK_SIZE 16
-#define _UC_REGS_PTR   48
-#define _UC_SIGMASK    52
-#define _UC_REG_SPACE  180
-
-/* offsets within mcontext_t */
-#define _UC_GREGS      0
-#define _UC_FREGS      192
-#define _UC_VREGS      464
-#define _UC_VSCR       976
-#define _UC_VRSAVE     980
-
-/* The registers don't have a fixed offset within ucontext because the
-   orginal ucontext only contained the regs pointer.  Also with the
-   addition of VMX to the register state the mcontext may require
-   stronger alignment (16) then the containing ucontext (4).  All access
-   to register state (pt_regs/mcontext) must be indirect via the regs
-   (uc_regs) pointer.  This means we can't test the PPC32 mcontext
-   register offsets here.  */
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_link, _UC_LINK);                                    \
-  TEST (uc_stack.ss_sp, _UC_STACK_SP);                         \
-  TEST (uc_stack.ss_size, _UC_STACK_SIZE);                     \
-  TEST (uc_mcontext.regs, _UC_REGS_PTR);                       \
-  TEST (uc_mcontext.uc_regs, _UC_REGS_PTR);                    \
-  TEST (uc_sigmask, _UC_SIGMASK);                              \
-  TEST (uc_reg_space, _UC_REG_SPACE);
-
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym
new file mode 100644 (file)
index 0000000..662c693
--- /dev/null
@@ -0,0 +1,34 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_SETMASK
+
+-- XXX Do these correspond to some struct?
+_FRAME_BACKCHAIN       0
+_FRAME_LR_SAVE         4
+_FRAME_PARM_SAVE1      8
+_FRAME_PARM_SAVE2      12
+_FRAME_PARM_SAVE3      16
+_FRAME_PARM_SAVE4      20
+
+-- Offsets in ucontext_t.
+#define ucontext(member)       offsetof (ucontext_t, member)
+_UC_LINK               ucontext (uc_link)
+_UC_STACK_SP           ucontext (uc_stack.ss_sp)
+_UC_STACK_SIZE         ucontext (uc_stack.ss_size)
+_UC_REGS_PTR           ucontext (uc_mcontext.uc_regs)
+_UC_SIGMASK            ucontext (uc_sigmask)
+_UC_REG_SPACE          ucontext (uc_reg_space)
+
+-- Offsets in mcontext_t.
+#define mcontext(member)       offsetof (mcontext_t, member)
+_UC_GREGS              mcontext (gregs)
+_UC_FREGS              mcontext (fpregs)
+_UC_VREGS              mcontext (vrregs)
+_UC_VREGS              mcontext (vrregs)
+_UC_VSCR               mcontext (vrregs.vscr)
+_UC_VRSAVE             mcontext (vrregs.vrsave)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h
deleted file mode 100644 (file)
index d540cfe..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Offsets and other constants needed in the *context() function
-   implementation.
-   Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#define SIG_BLOCK      0
-#define SIG_SETMASK    2
-
-/* Offsets of the fields in the powerpc64 ABI stack frame.  */
-
-#define FRAME_BACKCHAIN 0
-#define FRAME_CR_SAVE 8
-#define FRAME_LR_SAVE 16
-#define FRAME_COMPILER_DW 24
-#define FRAME_LINKER_DW 32
-#define FRAME_TOC_SAVE 40
-#define FRAME_PARM_SAVE 48
-#define FRAME_PARM1_SAVE 48
-#define FRAME_PARM2_SAVE 56
-#define FRAME_PARM3_SAVE 64
-#define FRAME_PARM4_SAVE 72
-#define FRAME_PARM5_SAVE 80
-#define FRAME_PARM6_SAVE 88
-#define FRAME_PARM7_SAVE 96
-#define FRAME_PARM8_SAVE 104
-#define FRAME_PARM9_SAVE 112
-
-
-/* Offsets of the fields in the ucontext_t structure.  */
-
-#define UCONTEXT_LINK 8
-#define UCONTEXT_STACK 16
-#define UCONTEXT_STACK_SP 16
-#define UCONTEXT_STACK_FLAGS 24
-#define UCONTEXT_STACK_SIZE 32
-#define UCONTEXT_SIGMASK 40
-#define UCONTEXT_MCONTEXT 168
-#define SIGCONTEXT_SIGNAL 200
-#define SIGCONTEXT_HANDLER 208
-#define SIGCONTEXT_OLDMASK 216
-#define SIGCONTEXT_PT_REGS 224
-#define SIGCONTEXT_GP_REGS 232
-#define SIGCONTEXT_FP_REGS 616
-#define SIGCONTEXT_V_REGS_PTR 880
-#define SIGCONTEXT_V_RESERVE 888
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_link, UCONTEXT_LINK);                               \
-  TEST (uc_stack.ss_sp, UCONTEXT_STACK_SP);                    \
-  TEST (uc_stack.ss_size, UCONTEXT_STACK_SIZE);                        \
-  TEST (uc_sigmask, UCONTEXT_SIGMASK);                         \
-  TEST (uc_mcontext.signal, SIGCONTEXT_SIGNAL);                        \
-  TEST (uc_mcontext.handler, SIGCONTEXT_HANDLER);              \
-  TEST (uc_mcontext.oldmask, SIGCONTEXT_OLDMASK);              \
-  TEST (uc_mcontext.regs, SIGCONTEXT_PT_REGS);                 \
-  TEST (uc_mcontext.gp_regs, SIGCONTEXT_GP_REGS);              \
-  TEST (uc_mcontext.fp_regs, SIGCONTEXT_FP_REGS);              \
-  TEST (uc_mcontext.v_regs, SIGCONTEXT_V_REGS_PTR);            \
-  TEST (uc_mcontext.vmx_reserve, SIGCONTEXT_V_RESERVE);
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym
new file mode 100644 (file)
index 0000000..a35418d
--- /dev/null
@@ -0,0 +1,50 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_SETMASK
+
+
+-- Offsets of the fields in the powerpc64 ABI stack frame.
+-- XXX Do these correspond to some struct?
+
+FRAME_BACKCHAIN                0
+FRAME_CR_SAVE          8
+FRAME_LR_SAVE          16
+FRAME_COMPILER_DW      24
+FRAME_LINKER_DW                32
+FRAME_TOC_SAVE         40
+FRAME_PARM_SAVE                48
+FRAME_PARM1_SAVE       48
+FRAME_PARM2_SAVE       56
+FRAME_PARM3_SAVE       64
+FRAME_PARM4_SAVE       72
+FRAME_PARM5_SAVE       80
+FRAME_PARM6_SAVE       88
+FRAME_PARM7_SAVE       96
+FRAME_PARM8_SAVE       104
+FRAME_PARM9_SAVE       112
+
+
+-- Offsets of the fields in the ucontext_t structure.
+#define ucontext(member)       offsetof (ucontext_t, member)
+#define mcontext(member)       ucontext (uc_mcontext.member)
+
+UCONTEXT_LINK                  ucontext (uc_link)
+UCONTEXT_STACK                 ucontext (uc_stack)
+UCONTEXT_STACK_SP              ucontext (uc_stack.ss_sp)
+UCONTEXT_STACK_FLAGS           ucontext (uc_stack.ss_flags)
+UCONTEXT_STACK_SIZE            ucontext (uc_stack.ss_size)
+UCONTEXT_SIGMASK               ucontext (uc_sigmask)
+UCONTEXT_MCONTEXT              ucontext (uc_mcontext)
+SIGCONTEXT_SIGNAL              mcontext (signal)
+SIGCONTEXT_HANDLER             mcontext (handler)
+SIGCONTEXT_OLDMASK             mcontext (oldmask)
+SIGCONTEXT_PT_REGS             mcontext (regs)
+SIGCONTEXT_GP_REGS             mcontext (gp_regs)
+SIGCONTEXT_FP_REGS             mcontext (fp_regs)
+SIGCONTEXT_V_REGS_PTR          mcontext (v_regs)
+SIGCONTEXT_V_RESERVE           mcontext (vmx_reserve)
index 8d8df74..5c53818 100644 (file)
@@ -2,3 +2,7 @@
 ifeq ($(subdir),rt)
 librt-routines += rt-sysdep
 endif
+
+ifeq ($(subdir),stdlib)
+gen-as-const-headers += ucontext_i.sym
+endif
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.h b/sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.h
deleted file mode 100644 (file)
index 61f0186..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-/* Constants shared between setcontext() and getcontext().  Don't
-   install this header file.  */
-
-#define SIG_BLOCK      0
-#define SIG_UNBLOCK    1
-#define SIG_SETMASK    2
-
-#define SC_FLGS 0x000
-#define SC_LINK 0x004
-#define SC_STCK 0x008
-#define SC_STSZ 0x010
-#define SC_PSW  0x018
-#define SC_GPRS 0x020
-#define SC_ACRS 0x060
-#define SC_FPC  0x0A0
-#define SC_FPRS 0x0A8
-#define SC_MASK 0x128
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_flags, SC_FLGS);                            \
-  TEST (uc_link, SC_LINK);                             \
-  TEST (uc_stack.ss_sp, SC_STCK);                      \
-  TEST (uc_stack.ss_size, SC_STSZ);                    \
-  TEST (uc_mcontext.psw, SC_PSW);                      \
-  TEST (uc_mcontext.gregs, SC_GPRS);                   \
-  TEST (uc_mcontext.aregs, SC_ACRS);                   \
-  TEST (uc_mcontext.fpregs.fpc, SC_FPC);               \
-  TEST (uc_mcontext.fpregs.fprs, SC_FPRS);             \
-  TEST (uc_sigmask, SC_MASK);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/ucontext_i.h b/sysdeps/unix/sysv/linux/s390/s390-64/ucontext_i.h
deleted file mode 100644 (file)
index 28ef915..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-     Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-/* Constants shared between setcontext() and getcontext().  Don't
-   install this header file.  */
-
-#define SIG_BLOCK      0
-#define SIG_UNBLOCK    1
-#define SIG_SETMASK    2
-
-#define SC_FLGS 0x000
-#define SC_LINK 0x008
-#define SC_STCK 0x010
-#define SC_STSZ 0x020
-#define SC_PSW  0x028
-#define SC_GPRS 0x038
-#define SC_ACRS 0x0B8
-#define SC_FPC  0x0F8
-#define SC_FPRS 0x100
-#define SC_MASK 0x180
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_flags, SC_FLGS);                            \
-  TEST (uc_link, SC_LINK);                             \
-  TEST (uc_stack.ss_sp, SC_STCK);                      \
-  TEST (uc_stack.ss_size, SC_STSZ);                    \
-  TEST (uc_mcontext.psw, SC_PSW);                      \
-  TEST (uc_mcontext.gregs, SC_GPRS);                   \
-  TEST (uc_mcontext.aregs, SC_ACRS);                   \
-  TEST (uc_mcontext.fpregs.fpc, SC_FPC);               \
-  TEST (uc_mcontext.fpregs.fprs, SC_FPRS);             \
-  TEST (uc_sigmask, SC_MASK);
diff --git a/sysdeps/unix/sysv/linux/s390/ucontext_i.sym b/sysdeps/unix/sysv/linux/s390/ucontext_i.sym
new file mode 100644 (file)
index 0000000..525b543
--- /dev/null
@@ -0,0 +1,23 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_UNBLOCK
+SIG_SETMASK
+
+#define ucontext(member)       offsetof (ucontext_t, member)
+#define mcontext(member)       ucontext (uc_mcontext.member)
+
+SC_FLGS                ucontext (uc_flags)
+SC_LINK                ucontext (uc_link)
+SC_STCK                ucontext (uc_stack.ss_sp)
+SC_STSZ                ucontext (uc_stack.ss_size)
+SC_PSW         mcontext (psw)
+SC_GPRS                mcontext (gregs)
+SC_ACRS                mcontext (aregs)
+SC_FPC         mcontext (fpregs.fpc)
+SC_FPRS                mcontext (fpregs.fprs)
+SC_MASK                ucontext (uc_sigmask)
index e8544b5..6d72cb0 100644 (file)
@@ -5,3 +5,7 @@ endif
 ifeq ($(subdir),misc)
 sysdep_headers += sys/io.h
 endif
+
+ifeq ($(subdir),stdlib)
+gen-as-const-headers += ucontext_i.sym
+endif
diff --git a/sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.h b/sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.h
deleted file mode 100644 (file)
index d8483db..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Offsets and other constants needed in the *context() function
-   implementation.
-   Copyright (C) 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#define SIG_BLOCK      0
-#define SIG_SETMASK    2
-
-/* Offsets of the fields in the ucontext_t structure.  */
-#define oLINK          4
-#define oSS_SP         8
-#define oSS_SIZE       16
-#define oR0            24
-#define oR1            28
-#define oR2            32
-#define oR3            36
-#define oR4            40
-#define oR5            44
-#define oR6            48
-#define oR7            52
-#define oR8            56
-#define oR9            60
-#define oR10           64
-#define oR11           68
-#define oR12           72
-#define oR13           76
-#define oR14           80
-#define oR15           84
-#define oPC            88
-#define oPR            92
-#define oSR            96
-#define oGBR           100
-#define oMACH          104
-#define oMACL          108
-#define oSIGMASK       112
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_link, oLINK);                               \
-  TEST (uc_stack.ss_sp, oSS_SP);                       \
-  TEST (uc_stack.ss_size, oSS_SIZE);                   \
-  TEST (uc_mcontext.gregs[R0], oR0);                   \
-  TEST (uc_mcontext.gregs[R1], oR1);                   \
-  TEST (uc_mcontext.gregs[R2], oR2);                   \
-  TEST (uc_mcontext.gregs[R3], oR3);                   \
-  TEST (uc_mcontext.gregs[R4], oR4);                   \
-  TEST (uc_mcontext.gregs[R5], oR5);                   \
-  TEST (uc_mcontext.gregs[R6], oR6);                   \
-  TEST (uc_mcontext.gregs[R7], oR7);                   \
-  TEST (uc_mcontext.gregs[R8], oR8);                   \
-  TEST (uc_mcontext.gregs[R9], oR9);                   \
-  TEST (uc_mcontext.gregs[R10], oR10);                 \
-  TEST (uc_mcontext.gregs[R11], oR11);                 \
-  TEST (uc_mcontext.gregs[R12], oR12);                 \
-  TEST (uc_mcontext.gregs[R13], oR13);                 \
-  TEST (uc_mcontext.gregs[R14], oR14);                 \
-  TEST (uc_mcontext.gregs[R15], oR15);                 \
-  TEST (uc_mcontext.pc, oPC);                          \
-  TEST (uc_mcontext.pr, oPR);                          \
-  TEST (uc_mcontext.sr, oSR);                          \
-  TEST (uc_mcontext.gbr, oGBR);                                \
-  TEST (uc_mcontext.mach, oMACH);                      \
-  TEST (uc_mcontext.macl, oMACL);                      \
-  TEST (uc_sigmask, oSIGMASK);
diff --git a/sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.sym b/sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.sym
new file mode 100644 (file)
index 0000000..17397c5
--- /dev/null
@@ -0,0 +1,38 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_SETMASK
+
+#define ucontext(member)       offsetof (ucontext_t, member)
+#define mcontext(member)       ucontext (uc_mcontext.member)
+
+oLINK          ucontext (uc_link)
+oSS_SP         ucontext (uc_stack.ss_sp)
+oSS_SIZE       ucontext (uc_stack.ss_size)
+oR0            mcontext (gregs[R0])
+oR1            mcontext (gregs[R1])
+oR2            mcontext (gregs[R2])
+oR3            mcontext (gregs[R3])
+oR4            mcontext (gregs[R4])
+oR5            mcontext (gregs[R5])
+oR6            mcontext (gregs[R6])
+oR7            mcontext (gregs[R7])
+oR8            mcontext (gregs[R8])
+oR9            mcontext (gregs[R9])
+oR10           mcontext (gregs[R10])
+oR11           mcontext (gregs[R11])
+oR12           mcontext (gregs[R12])
+oR13           mcontext (gregs[R13])
+oR14           mcontext (gregs[R14])
+oR15           mcontext (gregs[R15])
+oPC            mcontext (pc)
+oPR            mcontext (pr)
+oSR            mcontext (sr)
+oGBR           mcontext (gbr)
+oMACH          mcontext (mach)
+oMACL          mcontext (macl)
+oSIGMASK       ucontext (uc_sigmask)
diff --git a/sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.h b/sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.h
deleted file mode 100644 (file)
index 88f774f..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-/* Offsets and other constants needed in the *context() function
-   implementation.
-   Copyright (C) 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#define SIG_BLOCK      0
-#define SIG_SETMASK    2
-
-/* Offsets of the fields in the ucontext_t structure.  */
-#define oLINK          4
-#define oSS_SP         8
-#define oSS_SIZE       16
-#define oR0            24
-#define oR1            28
-#define oR2            32
-#define oR3            36
-#define oR4            40
-#define oR5            44
-#define oR6            48
-#define oR7            52
-#define oR8            56
-#define oR9            60
-#define oR10           64
-#define oR11           68
-#define oR12           72
-#define oR13           76
-#define oR14           80
-#define oR15           84
-#define oPC            88
-#define oPR            92
-#define oSR            96
-#define oGBR           100
-#define oMACH          104
-#define oMACL          108
-#define oFR0           112
-#define oFR1           116
-#define oFR2           120
-#define oFR3           124
-#define oFR4           128
-#define oFR5           132
-#define oFR6           136
-#define oFR7           140
-#define oFR8           144
-#define oFR9           148
-#define oFR10          152
-#define oFR11          156
-#define oFR12          160
-#define oFR13          164
-#define oFR14          168
-#define oFR15          172
-#define oXFR0          176
-#define oXFR1          180
-#define oXFR2          184
-#define oXFR3          188
-#define oXFR4          192
-#define oXFR5          196
-#define oXFR6          200
-#define oXFR7          204
-#define oXFR8          208
-#define oXFR9          212
-#define oXFR10         216
-#define oXFR11         220
-#define oXFR12         224
-#define oXFR13         228
-#define oXFR14         232
-#define oXFR15         236
-#define oFPSCR         240
-#define oFPUL          244
-#define oOWNEDFP       248
-#define oSIGMASK       252
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_link, oLINK);                               \
-  TEST (uc_stack.ss_sp, oSS_SP);                       \
-  TEST (uc_stack.ss_size, oSS_SIZE);                   \
-  TEST (uc_mcontext.gregs[R0], oR0);                   \
-  TEST (uc_mcontext.gregs[R1], oR1);                   \
-  TEST (uc_mcontext.gregs[R2], oR2);                   \
-  TEST (uc_mcontext.gregs[R3], oR3);                   \
-  TEST (uc_mcontext.gregs[R4], oR4);                   \
-  TEST (uc_mcontext.gregs[R5], oR5);                   \
-  TEST (uc_mcontext.gregs[R6], oR6);                   \
-  TEST (uc_mcontext.gregs[R7], oR7);                   \
-  TEST (uc_mcontext.gregs[R8], oR8);                   \
-  TEST (uc_mcontext.gregs[R9], oR9);                   \
-  TEST (uc_mcontext.gregs[R10], oR10);                 \
-  TEST (uc_mcontext.gregs[R11], oR11);                 \
-  TEST (uc_mcontext.gregs[R12], oR12);                 \
-  TEST (uc_mcontext.gregs[R13], oR13);                 \
-  TEST (uc_mcontext.gregs[R14], oR14);                 \
-  TEST (uc_mcontext.gregs[R15], oR15);                 \
-  TEST (uc_mcontext.pc, oPC);                          \
-  TEST (uc_mcontext.pr, oPR);                          \
-  TEST (uc_mcontext.sr, oSR);                          \
-  TEST (uc_mcontext.gbr, oGBR);                                \
-  TEST (uc_mcontext.mach, oMACH);                      \
-  TEST (uc_mcontext.macl, oMACL);                      \
-  TEST (uc_mcontext.fpregs[0], oFR0);                  \
-  TEST (uc_mcontext.fpregs[1], oFR1);                  \
-  TEST (uc_mcontext.fpregs[2], oFR2);                  \
-  TEST (uc_mcontext.fpregs[3], oFR3);                  \
-  TEST (uc_mcontext.fpregs[4], oFR4);                  \
-  TEST (uc_mcontext.fpregs[5], oFR5);                  \
-  TEST (uc_mcontext.fpregs[6], oFR6);                  \
-  TEST (uc_mcontext.fpregs[7], oFR7);                  \
-  TEST (uc_mcontext.fpregs[8], oFR8);                  \
-  TEST (uc_mcontext.fpregs[9], oFR9);                  \
-  TEST (uc_mcontext.fpregs[10], oFR10);                        \
-  TEST (uc_mcontext.fpregs[11], oFR11);                        \
-  TEST (uc_mcontext.fpregs[12], oFR12);                        \
-  TEST (uc_mcontext.fpregs[13], oFR13);                        \
-  TEST (uc_mcontext.fpregs[14], oFR14);                        \
-  TEST (uc_mcontext.fpregs[15], oFR15);                        \
-  TEST (uc_mcontext.xfpregs[0], oXFR0);                        \
-  TEST (uc_mcontext.xfpregs[1], oXFR1);                        \
-  TEST (uc_mcontext.xfpregs[2], oXFR2);                        \
-  TEST (uc_mcontext.xfpregs[3], oXFR3);                        \
-  TEST (uc_mcontext.xfpregs[4], oXFR4);                        \
-  TEST (uc_mcontext.xfpregs[5], oXFR5);                        \
-  TEST (uc_mcontext.xfpregs[6], oXFR6);                        \
-  TEST (uc_mcontext.xfpregs[7], oXFR7);                        \
-  TEST (uc_mcontext.xfpregs[8], oXFR8);                        \
-  TEST (uc_mcontext.xfpregs[9], oXFR9);                        \
-  TEST (uc_mcontext.xfpregs[10], oXFR10);              \
-  TEST (uc_mcontext.xfpregs[11], oXFR11);              \
-  TEST (uc_mcontext.xfpregs[12], oXFR12);              \
-  TEST (uc_mcontext.xfpregs[13], oXFR13);              \
-  TEST (uc_mcontext.xfpregs[14], oXFR14);              \
-  TEST (uc_mcontext.xfpregs[15], oXFR15);              \
-  TEST (uc_mcontext.fpscr, oFPSCR);                    \
-  TEST (uc_mcontext.fpul, oFPUL);                      \
-  TEST (uc_mcontext.ownedfp, oOWNEDFP);                        \
-  TEST (uc_sigmask, oSIGMASK);
diff --git a/sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym b/sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym
new file mode 100644 (file)
index 0000000..65633fb
--- /dev/null
@@ -0,0 +1,73 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_SETMASK
+
+#define ucontext(member)       offsetof (ucontext_t, member)
+#define mcontext(member)       ucontext (uc_mcontext.member)
+
+oLINK          ucontext (uc_link)
+oSS_SP         ucontext (uc_stack.ss_sp)
+oSS_SIZE       ucontext (uc_stack.ss_size)
+oR0            mcontext (gregs[R0])
+oR1            mcontext (gregs[R1])
+oR2            mcontext (gregs[R2])
+oR3            mcontext (gregs[R3])
+oR4            mcontext (gregs[R4])
+oR5            mcontext (gregs[R5])
+oR6            mcontext (gregs[R6])
+oR7            mcontext (gregs[R7])
+oR8            mcontext (gregs[R8])
+oR9            mcontext (gregs[R9])
+oR10           mcontext (gregs[R10])
+oR11           mcontext (gregs[R11])
+oR12           mcontext (gregs[R12])
+oR13           mcontext (gregs[R13])
+oR14           mcontext (gregs[R14])
+oR15           mcontext (gregs[R15])
+oPC            mcontext (pc)
+oPR            mcontext (pr)
+oSR            mcontext (sr)
+oGBR           mcontext (gbr)
+oMACH          mcontext (mach)
+oMACL          mcontext (macl)
+oFR0           mcontext (fpregs[0])
+oFR1           mcontext (fpregs[1])
+oFR2           mcontext (fpregs[2])
+oFR3           mcontext (fpregs[3])
+oFR4           mcontext (fpregs[4])
+oFR5           mcontext (fpregs[5])
+oFR6           mcontext (fpregs[6])
+oFR7           mcontext (fpregs[7])
+oFR8           mcontext (fpregs[8])
+oFR9           mcontext (fpregs[9])
+oFR10          mcontext (fpregs[10])
+oFR11          mcontext (fpregs[11])
+oFR12          mcontext (fpregs[12])
+oFR13          mcontext (fpregs[13])
+oFR14          mcontext (fpregs[14])
+oFR15          mcontext (fpregs[15])
+oXFR0          mcontext (xfpregs[0])
+oXFR1          mcontext (xfpregs[1])
+oXFR2          mcontext (xfpregs[2])
+oXFR3          mcontext (xfpregs[3])
+oXFR4          mcontext (xfpregs[4])
+oXFR5          mcontext (xfpregs[5])
+oXFR6          mcontext (xfpregs[6])
+oXFR7          mcontext (xfpregs[7])
+oXFR8          mcontext (xfpregs[8])
+oXFR9          mcontext (xfpregs[9])
+oXFR10         mcontext (xfpregs[10])
+oXFR11         mcontext (xfpregs[11])
+oXFR12         mcontext (xfpregs[12])
+oXFR13         mcontext (xfpregs[13])
+oXFR14         mcontext (xfpregs[14])
+oXFR15         mcontext (xfpregs[15])
+oFPSCR         mcontext (fpscr)
+oFPUL          mcontext (fpul)
+oOWNEDFP       mcontext (ownedfp)
+oSIGMASK       ucontext (uc_sigmask)
index 627275d..0f20367 100644 (file)
@@ -9,3 +9,7 @@ endif
 ifeq ($(subdir),stdlib)
 sysdep_routines += __start_context
 endif
+
+ifeq ($(subdir),stdlib)
+gen-as-const-headers += ucontext_i.sym
+endif
diff --git a/sysdeps/unix/sysv/linux/x86_64/ucontext_i.h b/sysdeps/unix/sysv/linux/x86_64/ucontext_i.h
deleted file mode 100644 (file)
index e509908..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Offsets and other constants needed in the *context() function
-   implementation for Linux/x86-64.
-   Copyright (C) 2002, 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#define SIG_BLOCK      0
-#define SIG_SETMASK    2
-
-/* Since we cannot include a header to define _NSIG/8, we define it
-   here.  */
-#define _NSIG8         8
-
-/* Offsets of the fields in the ucontext_t structure.  */
-#define oRBP           120
-#define oRSP           160
-#define oRBX           128
-#define oR8            40
-#define oR9            48
-#define oR12           72
-#define oR13           80
-#define oR14           88
-#define oR15           96
-#define oRDI           104
-#define oRSI           112
-#define oRDX           136
-#define oRAX           144
-#define oRCX           152
-#define oRIP           168
-#define oFPREGS                224
-#define oSIGMASK       296
-#define oFPREGSMEM     424
-#define oMXCSR         448
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_mcontext.gregs[REG_RBP], oRBP);                             \
-  TEST (uc_mcontext.gregs[REG_RSP], oRSP);                             \
-  TEST (uc_mcontext.gregs[REG_RBX], oRBX);                             \
-  TEST (uc_mcontext.gregs[REG_R8], oR8);                               \
-  TEST (uc_mcontext.gregs[REG_R9], oR9);                               \
-  TEST (uc_mcontext.gregs[REG_R12], oR12);                             \
-  TEST (uc_mcontext.gregs[REG_R13], oR13);                             \
-  TEST (uc_mcontext.gregs[REG_R14], oR14);                             \
-  TEST (uc_mcontext.gregs[REG_R15], oR15);                             \
-  TEST (uc_mcontext.gregs[REG_RDI], oRDI);                             \
-  TEST (uc_mcontext.gregs[REG_RSI], oRSI);                             \
-  TEST (uc_mcontext.gregs[REG_RDX], oRDX);                             \
-  TEST (uc_mcontext.gregs[REG_RAX], oRAX);                             \
-  TEST (uc_mcontext.gregs[REG_RCX], oRCX);                             \
-  TEST (uc_mcontext.gregs[REG_RIP], oRIP);                             \
-  TEST (uc_mcontext.fpregs, oFPREGS);                                  \
-  TEST (uc_sigmask, oSIGMASK);                                         \
-  TEST (__fpregs_mem, oFPREGSMEM);                                     \
-  TEST (__fpregs_mem.mxcsr, oMXCSR);
diff --git a/sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym b/sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym
new file mode 100644 (file)
index 0000000..b3cfe9a
--- /dev/null
@@ -0,0 +1,34 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_SETMASK
+
+_NSIG8         (_NSIG / 8)
+
+#define ucontext(member)       offsetof (ucontext_t, member)
+#define mcontext(member)       ucontext (uc_mcontext.member)
+#define mreg(reg)              mcontext (gregs[REG_##reg])
+
+oRBP           mreg (RBP)
+oRSP           mreg (RSP)
+oRBX           mreg (RBX)
+oR8            mreg (R8)
+oR9            mreg (R9)
+oR12           mreg (R12)
+oR13           mreg (R13)
+oR14           mreg (R14)
+oR15           mreg (R15)
+oRDI           mreg (RDI)
+oRSI           mreg (RSI)
+oRDX           mreg (RDX)
+oRAX           mreg (RAX)
+oRCX           mreg (RCX)
+oRIP           mreg (RIP)
+oFPREGS                mcontext (fpregs)
+oSIGMASK       ucontext (uc_sigmask)
+oFPREGSMEM     ucontext (__fpregs_mem)
+oMXCSR         ucontext (__fpregs_mem.mxcsr)