* m88k/sysv3.h (INITIALIZE_TRAMPOLINE) Define.
authorManfred Hollstein <manfred@s-direktnet.de>
Wed, 10 Sep 1997 18:02:16 +0000 (18:02 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 10 Sep 1997 18:02:16 +0000 (12:02 -0600)
        * libgcc2.c (__enable_execute_stack): Provide for sysV88 too.

From-SVN: r15256

gcc/ChangeLog
gcc/config/m88k/sysv3.h
gcc/libgcc2.c

index 40fef6a88440900528560f55003991b3cb53e028..dd4cedaa961572b6a4cd6c81f0608d0c425a6278 100644 (file)
@@ -26,6 +26,9 @@ Wed Sep 10 01:32:54 1997  Jeffrey A Law  (law@cygnus.com)
 
 Wed Sep 10 00:29:29 1997  Manfred Hollstein  <manfred@s-direktnet.de>
 
+       * m88k/sysv3.h (INITIALIZE_TRAMPOLINE) Define.
+       * libgcc2.c (__enable_execute_stack): Provide for sysV88 too.
+
        * xm-m88k.h (USG): Only define if it hasn't already been defined.
 
        * Makefile.in (risky-stage1): Delete gratutious whitespace.
index 62fe8973d4fd5913d4eaa19fa851facdfd324682..e3c318ef90b263383ade339970b807db9d4dc14d 100644 (file)
@@ -137,3 +137,21 @@ do {                                                                       \
       if (((int *)__DTOR_LIST__)[i] != -1)     \
        __DTOR_LIST__[i] ();                    \
   } while (0)                                  
+
+#ifdef sysV88
+/* manfred@s-direktnet.de: Re-define INITIALIZE_TRAMPOLINE to additionally call
+   __enable_execute_stack.
+   I don't actually have a clue why nobody else than sysV88 and __DOLPHIN__
+   needs to call this; perhaps they didn't ever run the c-torture tests
+   getting segmentations violations and/or bus errors with nested functions.  */
+#undef INITIALIZE_TRAMPOLINE 
+#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT)                      \
+{                                                                      \
+  emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 40)), FNADDR); \
+  emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 36)), CXT); \
+  emit_call_insn (gen_call (gen_rtx (MEM, SImode,                      \
+                           gen_rtx (SYMBOL_REF, Pmode,                 \
+                                    "__enable_execute_stack")),        \
+                 const0_rtx));                                         \
+}
+#endif
index eb6a9ba00a093c898cef66b87de565631d634368..23a4e5a7149561b909de65d410056d3e64fcd6ca 100644 (file)
@@ -2827,7 +2827,7 @@ __enable_execute_stack ()
 }
 #endif /* __convex__ */
 
-#ifdef __DOLPHIN__
+#if defined (__DOLPHIN__) || defined (sysV88)
 
 /* Modified from the convex -code above.  */
 
@@ -2857,7 +2857,7 @@ __enable_execute_stack ()
   errno=save_errno;
 }
 
-#endif /* __DOLPHIN__ */
+#endif /* __DOLPHIN__ or sysV88 */
 
 #ifdef __pyr__