--- mk/bootstrap.mk.orig	2002-11-27 08:54:57.000000000 -0800
+++ mk/bootstrap.mk	2002-11-27 08:55:08.000000000 -0800
@@ -27,7 +27,7 @@
 
 ifeq "$(i386_TARGET_ARCH)" "1"
 PLATFORM_CC_OPTS += -DDONT_WANT_WIN32_DLL_SUPPORT
-PLATFORM_HC_BOOT_CC_OPTS += -fno-defer-pop -fomit-frame-pointer 
+PLATFORM_HC_BOOT_CC_OPTS += -fno-defer-pop -fomit-frame-pointer -mno-omit-leaf-frame-pointer
 endif
 
 ifeq "$(hppa_TARGET_ARCH)" "1"
--- mk/config.mk.in.orig	2002-11-27 08:55:16.000000000 -0800
+++ mk/config.mk.in	2002-11-27 08:55:30.000000000 -0800
@@ -309,7 +309,7 @@
 
 # For an optimised RTS:
 GhcRtsHcOpts=-O2
-GhcRtsCcOpts=-fomit-frame-pointer
+GhcRtsCcOpts=-fomit-frame-pointer -mno-omit-leaf-frame-pointer
 
 # Include the front panel code?  Needs GTK+.
 GhcRtsWithFrontPanel = NO
--- ghc/compiler/main/DriverFlags.hs.orig	2002-11-27 09:03:40.000000000 -0800
+++ ghc/compiler/main/DriverFlags.hs	2002-11-27 08:59:02.000000000 -0800
@@ -562,12 +562,18 @@
       --
       -- -fomit-frame-pointer : *must* in .hc files; because we're stealing
       --   the fp (%ebp) for our register maps.
+      --
+      -- -mno-omit-leaf-frame-pointer: -momit-leaf-frame-pointer
+      -- takes precedence over -fomit-frame-pointer. gcc-3.2mdk
+      -- turns it on by default, so we have to turn it off.
+      --
 	= do n_regs <- dynFlag stolen_x86_regs
 	     sta    <- readIORef v_Static
 	     return ( [ if sta then "-DDONT_WANT_WIN32_DLL_SUPPORT" else ""
 --                    , if suffixMatch "mingw32" cTARGETPLATFORM then "-mno-cygwin" else "" 
 		      ],
 		      [ "-fno-defer-pop", "-fomit-frame-pointer",
+		        "-mno-omit-leaf-frame-pointer",
 			-- we want -fno-builtin, because when gcc inlines
 			-- built-in functions like memcpy() it tends to
 			-- run out of registers, requiring -monly-n-regs
