diff options
author | Manfred Hollstein <manfred@s-direktnet.de> | 1997-09-10 18:02:16 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-09-10 12:02:16 -0600 |
commit | 9dfc6eba89b34917b26947ffb35984cdd3f70944 (patch) | |
tree | 35dddb59ce80ad05cd1f8abdfd38c1c050d5e344 /gcc | |
parent | 0021b564f4ce0b648a8d6ec49b29afe609370788 (diff) | |
download | gcc-9dfc6eba89b34917b26947ffb35984cdd3f70944.zip gcc-9dfc6eba89b34917b26947ffb35984cdd3f70944.tar.gz gcc-9dfc6eba89b34917b26947ffb35984cdd3f70944.tar.bz2 |
* m88k/sysv3.h (INITIALIZE_TRAMPOLINE) Define.
* libgcc2.c (__enable_execute_stack): Provide for sysV88 too.
From-SVN: r15256
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/config/m88k/sysv3.h | 18 | ||||
-rw-r--r-- | gcc/libgcc2.c | 4 |
3 files changed, 23 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 40fef6a..dd4ceda 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/config/m88k/sysv3.h b/gcc/config/m88k/sysv3.h index 62fe897..e3c318e 100644 --- a/gcc/config/m88k/sysv3.h +++ b/gcc/config/m88k/sysv3.h @@ -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 diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index eb6a9ba..23a4e5a 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -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__ |