This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: [PATCH] Fix setcontext on ia64
- From: Richard C Bilson <rcbilson at plg2 dot math dot uwaterloo dot ca>
- To: roland at redhat dot com
- Cc: libc-alpha at sources dot redhat dot com
- Date: Thu, 29 May 2003 17:32:16 -0400
- Subject: Re: [PATCH] Fix setcontext on ia64
> From roland@redhat.com Wed May 28 16:48:36 2003
>
> I've put those changes in. Maintaining constants in ucontext_i.h by hand
> is error prone, as you have noticed. It would be wise to rewrite that to
> use a .sym file (see e.g. linuxthreads/sysdeps/ia64/Makefile for an example
> of how to do it).
Sounds logical to me. How about this:
diff -Nru libc/sysdeps/unix/sysv/linux/ia64/Makefile libc-rcbilson/sysdeps/unix/sysv/linux/ia64/Makefile
--- libc/sysdeps/unix/sysv/linux/ia64/Makefile 2002-08-24 20:43:37.000000000 -0400
+++ libc-rcbilson/sysdeps/unix/sysv/linux/ia64/Makefile 2003-05-29 16:49:20.000000000 -0400
@@ -4,6 +4,7 @@
ifeq ($(subdir),stdlib)
sysdep_routines += __start_context
+gen-as-const-headers += sigcontext-offsets.sym
endif
ifeq ($(subdir),misc)
diff -Nru libc/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym libc-rcbilson/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym
--- libc/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym 1969-12-31 19:00:00.000000000 -0500
+++ libc-rcbilson/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym 2003-05-29 16:54:20.000000000 -0400
@@ -0,0 +1,16 @@
+#include <stddef.h>
+#include <sys/ucontext.h>
+
+--
+SC_NAT offsetof (struct sigcontext, sc_nat)
+SC_BSP offsetof (struct sigcontext, sc_ar_bsp)
+SC_RNAT offsetof (struct sigcontext, sc_ar_rnat)
+SC_UNAT offsetof (struct sigcontext, sc_ar_unat)
+SC_FPSR offsetof (struct sigcontext, sc_ar_fpsr)
+SC_PFS offsetof (struct sigcontext, sc_ar_pfs)
+SC_LC offsetof (struct sigcontext, sc_ar_lc)
+SC_PR offsetof (struct sigcontext, sc_pr)
+SC_BR offsetof (struct sigcontext, sc_br)
+SC_GR offsetof (struct sigcontext, sc_gr)
+SC_FR offsetof (struct sigcontext, sc_fr)
+SC_MASK offsetof (struct sigcontext, sc_mask)
diff -Nru libc/sysdeps/unix/sysv/linux/ia64/ucontext_i.h libc-rcbilson/sysdeps/unix/sysv/linux/ia64/ucontext_i.h
--- libc/sysdeps/unix/sysv/linux/ia64/ucontext_i.h 2003-05-28 16:45:25.000000000 -0400
+++ libc-rcbilson/sysdeps/unix/sysv/linux/ia64/ucontext_i.h 2003-05-29 17:19:19.000000000 -0400
@@ -24,19 +24,7 @@
#define SIG_UNBLOCK 1
#define SIG_SETMASK 2
-#define SC_NAT 0x008
-#define SC_BSP 0x048
-#define SC_RNAT 0x050
-#define SC_UNAT 0x060
-#define SC_FPSR 0x068
-#define SC_PFS 0x070
-#define SC_LC 0x078
-#define SC_PR 0x080
-#define SC_BR 0x088
-#define SC_GR 0x0c8
-#define SC_FR 0x1d0
-#define SC_MASK 0xa50
-
+#include <sigcontext-offsets.h>
#define rTMP r16
#define rPOS r16
--
Richard C. Bilson, Research Assistant | School of Computer Science
rcbilson@plg.uwaterloo.ca | University of Waterloo
http://plg.uwaterloo.ca/~rcbilson | 200 University Avenue West
Office: DC 3548F Ph: (519)888-4567x4822 | Waterloo, Ontario, CANADA N2L 3G1