From 34b793cee4f675398c2a5f6789d7d54cb57e1f1a Mon Sep 17 00:00:00 2001
From: emarsden <emarsden>
Date: Sat, 19 Jul 2003 14:10:16 +0000
Subject: [PATCH]   - fix a signed/unsigned cast bug that was prevented the    
 auto-gc-trigger from functioning correctly when using certain    
 dynamic-space sizes (for platforms that don't have an internal gc    
 trigger).

  - added a few #include files to avoid compiler warnings

  - changed some #ifdef semantics: DEBUG activates additional
    assertions, and PRINTNOISE activates debugging statements.
---
 lisp/gc.c         | 11 ++++++++---
 lisp/hpux-os.c    |  4 ++--
 lisp/interrupt.c  | 22 ++++++++++++----------
 lisp/os-common.c  |  4 ++--
 lisp/print.c      |  5 +++--
 lisp/solaris-os.c |  5 +++--
 lisp/validate.c   |  4 +++-
 7 files changed, 33 insertions(+), 22 deletions(-)

diff --git a/lisp/gc.c b/lisp/gc.c
index 09e5671a0..8bbe155f9 100644
--- a/lisp/gc.c
+++ b/lisp/gc.c
@@ -1,7 +1,7 @@
 /*
  * Stop and Copy GC based on Cheney's algorithm.
  *
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.20 2002/05/02 21:10:53 toy Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/gc.c,v 1.21 2003/07/19 14:10:16 emarsden Exp $
  * 
  * Written by Christopher Hoover.
  */
@@ -40,7 +40,7 @@ static void scan_weak_pointers(void);
 #define gc_abort() lose("GC invariant lost!  File \"%s\", line %d\n", \
 			__FILE__, __LINE__)
 
-#if 0
+#if DEBUG
 #define gc_assert(ex) do { \
 	if (!(ex)) gc_abort(); \
 } while (0)
@@ -2254,7 +2254,12 @@ void set_auto_gc_trigger(os_vm_size_t dynamic_usage)
     os_protect(addr, length, 0);
 #endif
 
-    current_auto_gc_trigger = (lispobj *)addr;
+    current_auto_gc_trigger = (lispobj *) addr;
+
+#ifdef PRINTNOISE
+    fprintf (stderr, "current_auto_gc_trigger set to %p\n", current_auto_gc_trigger);
+#endif
+
 }
 
 void clear_auto_gc_trigger(void)
diff --git a/lisp/hpux-os.c b/lisp/hpux-os.c
index 30a8ffb16..322ff2a43 100644
--- a/lisp/hpux-os.c
+++ b/lisp/hpux-os.c
@@ -1,5 +1,5 @@
 /*
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/hpux-os.c,v 1.4 1993/11/12 20:08:22 wlott Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/hpux-os.c,v 1.5 2003/07/19 14:10:16 emarsden Exp $
  *
  * OS-dependent routines.  This file (along with os.h) exports an
  * OS-independent interface to the operating system VM facilities.
@@ -244,7 +244,7 @@ os_zero(os_vm_address_t addr,os_vm_size_t length)
     os_vm_size_t block_size;
     int i;
 
-#ifdef DEBUG
+#ifdef PRINTNOISE
     fprintf(stderr,"os_zero: addr: 0x%08x, len: 0x%08x, end: 0x%X\n",addr,
 	    length,addr+length);
 #endif
diff --git a/lisp/interrupt.c b/lisp/interrupt.c
index 0b001fa3d..6e0a315c8 100644
--- a/lisp/interrupt.c
+++ b/lisp/interrupt.c
@@ -1,15 +1,12 @@
-/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.29 2003/05/30 01:07:20 toy Exp $ */
+/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/interrupt.c,v 1.30 2003/07/19 14:10:16 emarsden Exp $ */
 
 /* Interrupt handing magic. */
 
 #include <stdio.h>
-
+#include <unistd.h>
+#include <stdlib.h>
 #include <signal.h>
-#ifdef mach
-#ifdef mips
-#include <mips/cpu.h>
-#endif
-#endif
+#include <assert.h>
 
 #include "lisp.h"
 #include "arch.h"
@@ -447,13 +444,18 @@ maybe_now_maybe_later(HANDLER_ARGS)
 #ifndef INTERNAL_GC_TRIGGER
 static boolean gc_trigger_hit(HANDLER_ARGS)
 {
-    if (current_auto_gc_trigger == NULL)
+    if (current_auto_gc_trigger == NULL) {
 	return FALSE;
-    else{
+    } else {
 	lispobj *badaddr=(lispobj *)arch_get_bad_addr(signal, code, context);
 
+#ifdef PRINTNOISE
+        fprintf (stderr, "gc_trigger_hit: badaddr=%p, current_auto_gc_trigger=%p, limit=%p\n",
+                 badaddr, current_auto_gc_trigger, 
+                 current_dynamic_space + dynamic_space_size);
+#endif
 	return (badaddr >= current_auto_gc_trigger &&
-		badaddr < current_dynamic_space + dynamic_space_size);
+		(unsigned long) badaddr < (unsigned long) current_dynamic_space + (unsigned long) dynamic_space_size);
     }
 }
 #endif
diff --git a/lisp/os-common.c b/lisp/os-common.c
index 8c67436b0..879c31513 100644
--- a/lisp/os-common.c
+++ b/lisp/os-common.c
@@ -1,6 +1,6 @@
 /*
 
- $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os-common.c,v 1.11 2003/05/30 01:07:20 toy Exp $
+ $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/os-common.c,v 1.12 2003/07/19 14:10:16 emarsden Exp $
 
  This code was written as part of the CMU Common Lisp project at
  Carnegie Mellon University, and has been placed in the public domain.
@@ -28,7 +28,7 @@ os_vm_size_t length;
     os_vm_address_t block_start;
     os_vm_size_t block_size;
 
-#ifdef DEBUG
+#ifdef PRINTNOISE
     fprintf(stderr,";;; os_zero: addr: 0x%08x, len: 0x%08x\n",addr,length);
 #endif
 
diff --git a/lisp/print.c b/lisp/print.c
index a70de3952..0a7175b23 100644
--- a/lisp/print.c
+++ b/lisp/print.c
@@ -1,6 +1,7 @@
-/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/print.c,v 1.13 2001/01/09 19:46:57 dtc Exp $ */
-#include <stdio.h>
+/* $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/print.c,v 1.14 2003/07/19 14:10:16 emarsden Exp $ */
 
+#include <stdio.h>
+#include <string.h>
 #include "print.h"
 #include "lisp.h"
 #include "internals.h"
diff --git a/lisp/solaris-os.c b/lisp/solaris-os.c
index 78d8a8f18..64b1e9139 100644
--- a/lisp/solaris-os.c
+++ b/lisp/solaris-os.c
@@ -1,5 +1,5 @@
 /*
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/solaris-os.c,v 1.7 2003/05/29 22:03:01 toy Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/solaris-os.c,v 1.8 2003/07/19 14:10:16 emarsden Exp $
  *
  * OS-dependent routines.  This file (along with os.h) exports an
  * OS-independent interface to the operating system VM facilities.
@@ -16,8 +16,9 @@
 #define DEBUG
 
 #include <stdio.h>
-
+#include <stdlib.h>
 #include <signal.h>
+#include <fcntl.h>
 #include <sys/file.h>
 
 #include <unistd.h>
diff --git a/lisp/validate.c b/lisp/validate.c
index 857954956..23121c704 100644
--- a/lisp/validate.c
+++ b/lisp/validate.c
@@ -1,14 +1,16 @@
 /*
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/validate.c,v 1.11 2003/03/23 21:23:41 gerd Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/validate.c,v 1.12 2003/07/19 14:10:16 emarsden Exp $
  *
  * Memory Validation
  */
 
 #include <stdio.h>
+#include <unistd.h>
 #include "lisp.h"
 #include "os.h"
 #include "globals.h"
 #include "validate.h"
+#include "internals.h"
 
 static void
 ensure_space(lispobj *start, size_t size)
-- 
GitLab