This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Exceptions on IA64 with 64K pages
- From: "Boehm, Hans" <hans_boehm at hp dot com>
- To: "'gcc at gcc dot gnu dot org'" <gcc at gcc dot gnu dot org>
- Cc: "MOSBERGER, DAVID (HP-PaloAlto,unix3)" <davidm at hpl dot hp dot com>
- Date: Wed, 22 May 2002 17:14:11 -0700
- Subject: Exceptions on IA64 with 64K pages
It turns out the code for exception unwinding through signal handlers on Linux/IA64 fails with a 64K page size. In that case the gate page ends up outside the expected area. The kernel is starting to handle 64K pages reliably, so this is starting to matter.
Again this should really be fixed by using libunwind instead. In the meantime, the following one character patch solves the problem. OK for 3.1.1 branch and trunk?
Hans
* config/ia64/linux.h (IA64_GATE_AREA_END): Adjust for 64K
pages.
Index: linux.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/ia64/linux.h,v
retrieving revision 1.15.2.6
diff -u -r1.15.2.6 linux.h
--- linux.h 15 Apr 2002 20:27:29 -0000 1.15.2.6
+++ linux.h 22 May 2002 23:57:29 -0000
@@ -58,7 +58,7 @@
#include <sys/ucontext.h>
#define IA64_GATE_AREA_START 0xa000000000000100LL
-#define IA64_GATE_AREA_END 0xa000000000010000LL
+#define IA64_GATE_AREA_END 0xa000000000020000LL
#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \
if ((CONTEXT)->rp >= IA64_GATE_AREA_START \