Browse files

	MacOS/Darwin merge.  Points to note:
	... thanks to Patrik Nordebo, Pierre Mai and Brian Mastenbrook;
	... mmap()ed simple-streams appear not to work under darwin;
	... floating point traps are currently non-functional on both ppc
	... on darwin, hitting ^C, then choosing CONTINUE results in a
		memory fault;
	... there's no lchown under darwin;
	... x86/bsd building is also slightly non-functional currently;
	... There's a OAOOM problem in src/compiler/ppc/c-call.lisp, and in
  • Loading branch information...
1 parent 22c1de0 commit 506253505641855dc8bb87033f7af894904f848b @csrhodes csrhodes committed Jul 29, 2003
@@ -578,7 +578,8 @@ Robert MacLachlan:
Pierre Mai:
He has continued to work on CMU CL since the SBCL fork, and also
patched code to SBCL to enable dynamic loading of object files
- under OpenBSD.
+ under OpenBSD. He contributed to the port of SBCL to MacOS X,
+ implementing the Lisp side of the PowerOpen ABI.
Eric Marsden:
Some of his fixes to CMU CL since the SBCL fork have been ported
@@ -587,6 +588,9 @@ Eric Marsden:
Antonio Martinez-Shotton:
He has contributed a number of bug fixes and bug reports to SBCL.
+Brian Mastenbrook:
+ He contributed to the port of SBCL to MacOS X.
Dave McDonald:
He made a lot of progress toward getting SBCL to be bootstrappable
under CLISP.
@@ -606,6 +610,10 @@ William ("Bill") Newman:
updating documentation, and even, for better or worse, getting
rid of various functionality (e.g. the byte interpreter).
+Patrik Nordebo:
+ He contributed to the port of SBCL to MacOS X, finding solutions for
+ ABI and assembly syntax differences between Darwin and Linux.
Kevin M. Rosenberg:
He provided the ACL-style toplevel, and a number of MOP-related bug
@@ -662,6 +670,7 @@ APD Alexey Dejneka
NJF Nathan Froyd
AL Arthur Lemmens
RAM Robert MacLachlan
+PRM Pierre Mai
WHN William ("Bill") Newman
CSR Christophe Rhodes
PVE Peter Van Eynde
@@ -1938,6 +1938,9 @@ changes in sbcl-0.8.2 relative to sbcl-0.8.1:
** (VECTOR NIL) is a subtype of STRING.
changes in sbcl-0.8.3 relative to sbcl-0.8.2:
+ * SBCL now builds and runs on MacOS X (version 10.2), or perhaps
+ more accurately, on the Darwin kernel running on PowerPC hardware.
+ (thanks to Brian Mastenbrook, Pierre Mai and Patrik Nordebo)
accept and act upon their :ELEMENT-TYPE keyword argument.
(reported by Edi Weitz)
@@ -30,7 +30,8 @@
(unless (zerop
#+sunos "gcc -shared -lresolv -lsocket -lnsl -o ~S ~{~S ~}"
- #-sunos "gcc -shared -o ~S ~{~S ~} "
+ #+darwin "gcc -bundle -o ~S ~{~S ~}"
+ #-(or darwin sunos) "gcc -shared -o ~S ~{~S ~} "
(mapcar #'unix-name
(mapcan (lambda (c)
@@ -133,7 +133,7 @@ Tests are in the file <tt>tests.lisp</tt> and also make good examples.
;;; to look at /etc/syslog.conf or local equivalent to find out where
;;; the message ended up
+#-(or sunos darwin)
(deftest simple-local-client
(let ((s (make-instance 'local-socket :type :datagram)))
(format t "Connecting ~A... " s)
@@ -25,6 +25,8 @@
(define-call "fchown" int minusp (fd file-descriptor)
(owner sb-posix::uid-t) (group sb-posix::gid-t))
(define-call "link" int minusp (oldpath filename) (newpath filename))
+;; no lchown on Darwin
(define-call "lchown" int minusp (pathname filename)
(owner sb-posix::uid-t) (group sb-posix::gid-t))
(define-call "mkdir" int minusp (pathname filename) (mode sb-posix::mode-t))
@@ -87,6 +87,8 @@
+;;; FIXME
(deftest create-read-mapped-file-1
;; Read data via a mapped-file-simple-stream object.
(let ((result t)
@@ -35,6 +35,7 @@ case `uname -m` in
sparc*) guessed_sbcl_arch=sparc ;;
sun*) guessed_sbcl_arch=sparc ;;
ppc) guessed_sbcl_arch=ppc ;;
+ Power*Macintosh) guessed_sbcl_arch=ppc ;;
parisc) guessed_sbcl_arch=hppa ;;
mips) guessed_sbcl_arch=mips ;;
@@ -126,6 +127,13 @@ case `uname` in
+ Darwin)
+ printf ' :bsd' >> $ltf
+ ln -s $sbcl_arch-darwin-os.h target-arch-os.h
+ ln -s bsd-os.h target-os.h
+ printf ' :darwin' >> $ltf
+ ln -s Config.$sbcl_arch-darwin Config
+ ;;
printf ' :sunos' >> $ltf
ln -s Config.$sbcl_arch-sunos Config
@@ -16,7 +16,8 @@
"Return a string describing the supporting software."
(the string ; (to force error in case of unsupported BSD variant)
#!+FreeBSD "FreeBSD"
- #!+OpenBSD "OpenBSD"))
+ #!+OpenBSD "OpenBSD"
+ #!+Darwin "Darwin"))
(defvar *software-version* nil)
@@ -100,7 +100,8 @@
(if fast-mode
(setq modes (logior float-fast-bit modes))
(setq modes (logand (lognot float-fast-bit) modes))))
- (setf (floating-point-modes) modes))
+ ;; FIXME: This apparently doesn't work on Darwin
+ #!-darwin (setf (floating-point-modes) modes))
@@ -52,7 +52,7 @@
;;; On any OS where we don't support foreign object file loading, any
;;; query of a foreign symbol value is answered with "no definition
;;; known", i.e. NIL.
-#-(or linux sunos FreeBSD OpenBSD)
+#-(or linux sunos FreeBSD OpenBSD darwin)
(defun get-dynamic-foreign-symbol-address (symbol)
(declare (type simple-string symbol) (ignore symbol))
@@ -62,15 +62,15 @@
;;; work on any ELF system with dlopen(3) and dlsym(3)
;;; It also works on OpenBSD, which isn't ELF, but is otherwise modern
;;; enough to have a fairly well working dlopen/dlsym implementation.
-#-(or linux sunos FreeBSD OpenBSD)
+#-(or linux sunos FreeBSD OpenBSD darwin)
(macrolet ((define-unsupported-fun (fun-name)
`(defun ,fun-name (&rest rest)
"unsupported on this system"
(declare (ignore rest))
(error 'unsupported-operator :name ',fun-name))))
(define-unsupported-fun load-1-foreign)
(define-unsupported-fun load-foreign))
-#+(or linux sunos FreeBSD OpenBSD)
+#+(or linux sunos FreeBSD OpenBSD darwin)
;;; flags for dlopen()
@@ -112,7 +112,9 @@
(defvar *dso-linker* "/usr/bin/ld")
-(defvar *dso-linker-options* '("-shared" "-o"))
+(defvar *dso-linker-options*
+ #-darwin '("-shared" "-o")
+ #+darwin '("-bundle" "-o"))
(sb-alien:define-alien-routine dlopen system-area-pointer
(file sb-alien:c-string) (mode sb-alien:int))
@@ -374,7 +374,7 @@
;;; code for foreign symbol lookup should be here.
(defun find-foreign-symbol-in-table (name table)
(let ((prefixes
- #!+(or osf1 sunos linux freebsd) #("" "ldso_stub__")
+ #!+(or osf1 sunos linux freebsd darwin) #("" "ldso_stub__")
#!+openbsd #("")))
(declare (notinline some)) ; to suppress bug 117 bogowarning
(some (lambda (prefix)
@@ -112,6 +112,9 @@
;;; Given a signal context, return the floating point modes word in
;;; the same format as returned by FLOATING-POINT-MODES.
+;;; FIXME: surely this must be accessible somewhere under Darwin?
(define-alien-routine ("os_context_fp_control" context-floating-point-modes)
(sb!alien:unsigned 32)
(context (* os-context-t)))
@@ -293,14 +293,14 @@
;; a constant. Going the grovel_headers route doesn't seem to be
;; helpful, either, as Solaris doesn't export PATH_MAX from
;; unistd.h.
- #!-(or linux openbsd freebsd sunos osf1) (,stub,)
- #!+(or linux openbsd freebsd sunos osf1)
+ #!-(or linux openbsd freebsd sunos osf1 darwin) (,stub,)
+ #!+(or linux openbsd freebsd sunos osf1 darwin)
(or (newcharstar-string (alien-funcall (extern-alien "getcwd"
(function (* char)
(* char)
- #!+(or linux openbsd freebsd) 0
+ #!+(or linux openbsd freebsd darwin) 0
#!+(or sunos osf1) 1025))
(simple-perror "getcwd")))
@@ -46,7 +46,8 @@
;; that we never explicitly refer to host object file suffixes,
;; only to the result of CL:COMPILE-FILE-PATHNAME.
#+lispworks ".ufsl" ; as per Lieven Marchand sbcl-devel 2002-02-01
- #+openmcl ".pfsl"
+ #+(and openmcl (not darwin)) ".pfsl"
+ #+(and openmcl darwin) ".dfsl"
;; On most xc hosts, any old extension works, so we use an
;; arbitrary one.
@@ -101,7 +101,7 @@
(:translate make-fdefn)
(:generator 37
(with-fixed-allocation (result pa-flag temp fdefn-widetag fdefn-size)
- (inst lr temp (make-fixup "undefined_tramp" :foreign))
+ (inst lr temp (make-fixup (extern-alien-name "undefined_tramp") :foreign))
(storew name result fdefn-name-slot other-pointer-lowtag)
(storew null-tn result fdefn-fun-slot other-pointer-lowtag)
(storew temp result fdefn-raw-addr-slot other-pointer-lowtag))))
Oops, something went wrong.

0 comments on commit 5062535

Please sign in to comment.