0.9.10.29
authorRudi Schlatte <rudi@constantly.at>
Tue, 14 Mar 2006 12:27:46 +0000 (12:27 +0000)
committerRudi Schlatte <rudi@constantly.at>
Tue, 14 Mar 2006 12:27:46 +0000 (12:27 +0000)
    Linkage tables on win32
    ... heuristically choose a memory range ("does not break on my two
        systems, let's ship it")
    ... added some leftovers to cleanup.sh
    ... also #!+sb-doc-conditionalize docstrings in run-program.lisp

clean.sh
make-config.sh
src/code/run-program.lisp
src/compiler/x86/parms.lisp
src/runtime/win32-os.c
version.lisp-expr

index 6a6d5ba..5f61242 100755 (executable)
--- a/clean.sh
+++ b/clean.sh
@@ -62,7 +62,7 @@ done
 #     The system doc sources are mostly texinfo, plus various odds
 #     and ends like docstrings embedded in .lisp sources; any HTML is
 #     automatically-generated output.
-#   depend
+#   depend, *.d
 #     made by "make depend" (or "gmake depend" or some such thing)
 #   *.lisp-obj, *.fasl, *.x86f, *.axpf, *.lbytef, *.lib
 #     typical extensions for fasl files (not just from SBCL, but
@@ -84,6 +84,7 @@ find . \( \
         -name '?*.axpf' -o \
         -name '?*.lbytef' -o \
         -name '?*.fasl' -o \
+        -name '?*.FASL' -o \
         -name 'core' -o \
         -name '?*.core' -o \
         -name '*.map' -o \
@@ -96,6 +97,7 @@ find . \( \
         -name '*.lisp-temp' -o \
         -name '*.o' -o \
         -name '*.so' -o \
+        -name '*.d' -o \
         -name 'a.out' -o \
         -name 'sbcl' -o \
         -name 'sbcl.h' -o \
index c8e485b..b59a0fd 100644 (file)
@@ -255,7 +255,7 @@ cd $original_dir
 if [ "$sbcl_arch" = "x86" ]; then
     printf ' :gencgc :stack-grows-downward-not-upward :c-stack-is-control-stack' >> $ltf
     printf ' :stack-allocatable-closures :alien-callbacks' >> $ltf
-    if [ "$sbcl_os" = "linux" ] || [ "$sbcl_os" = "freebsd" ] || [ "$sbcl_os" = "netbsd" ] || [ "$sbcl_os" = "sunos" ] || [ "$sbcl_os" = "darwin" ]; then
+    if [ "$sbcl_os" = "linux" ] || [ "$sbcl_os" = "freebsd" ] || [ "$sbcl_os" = "netbsd" ] || [ "$sbcl_os" = "sunos" ] || [ "$sbcl_os" = "darwin" ] || [ "$sbcl_os" = "win32" ]; then
         printf ' :linkage-table' >> $ltf
     fi
     if [ "$sbcl_os" = "win32" ]; then
index f24829c..99a7597 100644 (file)
@@ -98,6 +98,7 @@
   (rusage sb-alien:int))
 
 (defun wait3 (&optional do-not-hang check-for-stopped)
+  #!+sb-doc
   "Return any available status information on child process. "
   (multiple-value-bind (pid status)
       (c-wait3 (logior (if do-not-hang
 ;;;; process control stuff
 
 (defvar *active-processes* nil
+  #!+sb-doc
   "List of process structures for all active processes.")
 
 (defvar *active-processes-lock*
             (process-status process)))
   process)
 
+#!+sb-doc
 (setf (documentation 'process-p 'function)
       "T if OBJECT is a PROCESS, NIL otherwise.")
 
+#!+sb-doc
 (setf (documentation 'process-pid 'function) "The pid of the child process.")
 
 (defun process-status (process)
+  #!+sb-doc
   "Return the current status of PROCESS.  The result is one of :RUNNING,
    :STOPPED, :EXITED, or :SIGNALED."
   (get-processes-status-changes)
   (process-%status process))
 
+#!+sb-doc
 (setf (documentation 'process-exit-code 'function)
       "The exit code or the signal of a stopped process.")
 
+#!+sb-doc
 (setf (documentation 'process-core-dumped 'function)
       "T if a core image was dumped by the process.")
 
+#!+sb-doc
 (setf (documentation 'process-pty 'function)
       "The pty stream of the process or NIL.")
 
+#!+sb-doc
 (setf (documentation 'process-input 'function)
       "The input stream of the process or NIL.")
 
+#!+sb-doc
 (setf (documentation 'process-output 'function)
       "The output stream of the process or NIL.")
 
+#!+sb-doc
 (setf (documentation 'process-error 'function)
       "The error stream of the process or NIL.")
 
+#!+sb-doc
 (setf (documentation 'process-status-hook  'function)
       "A function that is called when PROCESS changes its status.
 The function is called with PROCESS as its only argument.")
 
+#!+sb-doc
 (setf (documentation 'process-plist  'function)
       "A place for clients to stash things.")
 
 (defun process-wait (process &optional check-for-stopped)
+  #!+sb-doc
   "Wait for PROCESS to quit running for some reason.
    When CHECK-FOR-STOPPED is T, also returns when PROCESS is
    stopped.  Returns PROCESS."
@@ -239,6 +253,7 @@ The function is called with PROCESS as its only argument.")
   (process-pid proc))
 
 (defun process-kill (process signal &optional (whom :pid))
+  #!+sb-doc
   "Hand SIGNAL to PROCESS. If WHOM is :PID, use the kill Unix system call. If
    WHOM is :PROCESS-GROUP, use the killpg Unix system call. If WHOM is
    :PTY-PROCESS-GROUP deliver the signal to whichever process group is
@@ -275,6 +290,7 @@ The function is called with PROCESS as its only argument.")
              t)))))
 
 (defun process-alive-p (process)
+  #!+sb-doc
   "Return T if PROCESS is still alive, NIL otherwise."
   (let ((status (process-status process)))
     (if (or (eq status :running)
@@ -283,6 +299,7 @@ The function is called with PROCESS as its only argument.")
         nil)))
 
 (defun process-close (process)
+  #!+sb-doc
   "Close all streams connected to PROCESS and stop maintaining the status slot."
   (macrolet ((frob (stream abort)
                `(when ,stream (close ,stream :abort ,abort))))
@@ -440,7 +457,9 @@ The function is called with PROCESS as its only argument.")
 (defun find-executable-in-search-path (pathname
                                        &optional
                                        (search-path (posix-getenv "PATH")))
-  "Find the first executable file matching PATHNAME in any of the colon-separated list of pathnames SEARCH-PATH"
+  #!+sb-doc
+  "Find the first executable file matching PATHNAME in any of the
+colon-separated list of pathnames SEARCH-PATH"
   (loop for end =  (position #\: search-path :start (if end (1+ end) 0))
         and start = 0 then (and end (1+ end))
         while start
@@ -513,6 +532,7 @@ The function is called with PROCESS as its only argument.")
                     (error :output)
                     (if-error-exists :error)
                     status-hook)
+  #!+sb-doc
   "RUN-PROGRAM creates a new Unix process running the Unix program found in
    the file specified by the PROGRAM argument.  ARGS are the standard
    arguments that can be passed to a Unix program. For no arguments, use NIL
index f1043a6..3f9952d 100644 (file)
   (def!constant static-space-end      #x07fff000)
 
   (def!constant dynamic-space-start   #x09000000)
-  (def!constant dynamic-space-end     #x29000000))
+  (def!constant dynamic-space-end     #x29000000)
+
+  (def!constant linkage-table-space-start #x30000000)
+  (def!constant linkage-table-space-end   #x40000000))
 
 #!+linux
 (progn
index 8ec02db..4af0f79 100644 (file)
@@ -414,7 +414,12 @@ EXCEPTION_DISPOSITION handle_exception(EXCEPTION_RECORD *exception_record,
         return sigtrap_emulator(context, exception_frame);
 
     } else if (exception_record->ExceptionCode == EXCEPTION_ACCESS_VIOLATION &&
-               is_valid_lisp_addr(fault_address)) {
+               (is_valid_lisp_addr(fault_address) ||
+                /* the linkage table does not contain valid lisp
+                 * objects, but is also committed on-demand here
+                 */
+                in_range_p(fault_address, LINKAGE_TABLE_SPACE_START,
+                           LINKAGE_TABLE_SPACE_END))) {
         /* Pick off GC-related memory fault next. */
         MEMORY_BASIC_INFORMATION mem_info;
 
index 13c8118..44013b0 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.10.28"
+"0.9.10.29"