From 9d9562237a261442f903a973cd57b5dda8f4d10d Mon Sep 17 00:00:00 2001
From: simonm <unknown>
Date: Wed, 27 May 1998 12:09:43 +0000
Subject: [PATCH] [project @ 1998-05-27 12:09:43 by simonm] - remove
 _BSD_SOURCE for linux case, it broke older linuxen. - type of scp.cr2 is
 unsigned long, not caddr_t. - cast all pointer-like things to (char *) for
 comparisons.

---
 ghc/runtime/main/Signals.lc | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/ghc/runtime/main/Signals.lc b/ghc/runtime/main/Signals.lc
index a85451bbf36a..db2da4eaa605 100644
--- a/ghc/runtime/main/Signals.lc
+++ b/ghc/runtime/main/Signals.lc
@@ -38,7 +38,6 @@ much pain.
 #if defined(linux_TARGET_OS) 
 # define NON_POSIX_SOURCE
 /* sigh, linux w/ glibc needs _BSD_SOURCE to get caddr_t... (ToDo) */
-# define _BSD_SOURCE
 #endif
 
 #if defined(osf3_TARGET_OS) || defined(osf1_TARGET_OS)
@@ -146,15 +145,15 @@ segv_handler(int sig,
     extern void StackOverflow(STG_NO_ARGS) STG_NORETURN;
 
 #  if defined(linux_TARGET_OS)  || defined(linuxaout_TARGET_OS)
-    caddr_t addr = scp.cr2;
+    unsigned long addr = scp.cr2;
     /* Magic info from Tommy Thorn! */
 #  endif
 #  if defined(aix_TARGET_OS)
     caddr_t addr = scp->sc_jmpbuf.jmp_context.o_vaddr;
     /* Magic guess by andre */
 #  endif
-    if (addr >= (caddr_t) stks_space
-      && addr < (caddr_t) (stks_space + RTSflags.GcFlags.stksSize))
+    if ( (char *)addr >= (char *)stks_space
+      && (char *)addr <  (char *)(stks_space + RTSflags.GcFlags.stksSize))
 	StackOverflow();
 
     fflush(stdout);
-- 
GitLab