This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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                            \


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]