Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.mel.connect.com.au!munnari.OZ.AU!news.ecn.uoknor.edu!news.cis.okstate.edu!col.hp.com!usenet.eel.ufl.edu!news.mathworks.com!uunet!in1.uu.net!cygnus.com!cygnus.com!not-for-mail
From: hsu@cygnus.com (Jeffrey Hsu)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: SML/NJ on FreeBSD
Date: 31 Dec 1995 20:11:47 -0800
Organization: Cygnus Support
Lines: 412
Message-ID: <4c7mu3$40r@cygnus.com>
NNTP-Posting-Host: cygnus.com
Grab SMl 0.93 and apply these patches:
*** ./makeml Tue Feb 22 16:01:20 1994
--- ./makeml.0 Fri Sep 24 17:40:07 1993
***************
*** 215,228 ****
case $1 in
bsd) OPSYS=BSD ;;
bsd386) OPSYS=BSD; DEFS="$DEFS -DBSD386";;
- FreeBSD)
- CPP=/usr/bin/cpp
- OPSYS=BSD
- DEFS="$DEFS -DFreeBSD"
- ;;
mach) OPSYS=MACH; DEFS="$DEFS -DBSD";;
*)
! echo "$CMD must specify opsys arg for i386/i486 (bsd, bsd386, FreeBSD or mach)"
exit 1
;;
esac
--- 215,223 ----
case $1 in
bsd) OPSYS=BSD ;;
bsd386) OPSYS=BSD; DEFS="$DEFS -DBSD386";;
mach) OPSYS=MACH; DEFS="$DEFS -DBSD";;
*)
! echo "$CMD must specify opsys arg for i386/i486 (bsd, bsd386 or mach)"
exit 1
;;
esac
*** ./runtime/export.c Tue Feb 22 16:42:34 1994
--- ./runtime/export.c.0 Fri Sep 24 17:42:13 1993
***************
*** 178,188 ****
# if defined(NS32)
E.a_magic = NS32GMAGIC;
# else
! # if defined(FreeBSD)
! E.a_magic = QMAGIC;
! # else
! E.a_magic = ZMAGIC;
! # endif
# endif
#endif
#endif
--- 178,184 ----
# if defined(NS32)
E.a_magic = NS32GMAGIC;
# else
! E.a_magic = ZMAGIC;
# endif
#endif
#endif
***************
*** 257,263 ****
lseek(filid,N_DATADDR(E),0);
bulletproofWrite(filid,CEIL(ETEXT,getpagesize()),E.a_data);
#else
! #if defined(SPARC) && defined(MACH) || defined(BSD386) || defined(FreeBSD)
bulletproofWrite(filid,textstart+sizeof(E),E.a_text-sizeof(E));
#else
# if defined(DYNIX)
--- 253,259 ----
lseek(filid,N_DATADDR(E),0);
bulletproofWrite(filid,CEIL(ETEXT,getpagesize()),E.a_data);
#else
! #if defined(SPARC) && defined(MACH) || defined(BSD386)
bulletproofWrite(filid,textstart+sizeof(E),E.a_text-sizeof(E));
#else
# if defined(DYNIX)
*** ./runtime/cfuns.c Tue Sep 28 23:21:11 1993
--- ./runtime/cfuns.c.0 Sat Sep 25 12:41:52 1993
***************
*** 7,50 ****
#include "ml_os.h"
#ifdef THINK_C
! #include <unix.h>
! #include <fcntl.h>
! #include <errno.h>
! #include "MacOS.dep.h"
! #else
! #include <sys/socket.h>
! #include <sys/un.h>
! #include <netinet/in.h>
! #include <sys/stat.h>
! #include <sys/errno.h>
! #ifdef V9
! #include <sys/filio.h>
! #include <sys/ttyio.h>
! #else
! #include <sys/ioctl.h>
! #include <sys/file.h>
! #ifndef HPUX
! #include <sys/time.h>
! #endif
#endif
#ifndef HPUX
! #include <sys/param.h>
#endif
#if (defined(SPARC) && !defined(MACH))
! #ifdef SOLARIS
! #include <unistd.h>
! #include <sys/filio.h>
! #include <fcntl.h>
! #include <signal.h>
! extern sigset_t emptyMask;
! #else
! #include <vfork.h> /* tells sparc optimizer about vfork */
! #endif
#endif
#include <sys/wait.h>
! #endif THINK_C
#ifdef HPUX
! #include <sys/utsname.h>
#endif
#include "ml_state.h"
--- 7,50 ----
#include "ml_os.h"
#ifdef THINK_C
! #include <unix.h>
! #include <fcntl.h>
! #include <errno.h>
! #include "MacOS.dep.h"
! #else
! #include <sys/socket.h>
! #include <sys/un.h>
! #include <netinet/in.h>
! #include <sys/stat.h>
! #include <sys/errno.h>
! #ifdef V9
! #include <sys/filio.h>
! #include <sys/ttyio.h>
! #else
! #include <sys/ioctl.h>
! #include <sys/file.h>
! #ifndef HPUX
! #include <sys/time.h>
! #endif
#endif
#ifndef HPUX
! #include <sys/param.h>
#endif
#if (defined(SPARC) && !defined(MACH))
! #ifdef SOLARIS
! #include <unistd.h>
! #include <sys/filio.h>
! #include <fcntl.h>
! #include <signal.h>
! extern sigset_t emptyMask;
! #else
! #include <vfork.h> /* tells sparc optimizer about vfork */
! #endif
#endif
#include <sys/wait.h>
! #endif THINK_C
#ifdef HPUX
! #include <sys/utsname.h>
#endif
#include "ml_state.h"
***************
*** 257,263 ****
return (sz - pos);
}
! #endif /* THINK_C */
#define MAX_SYSCALL_ARGS 6
--- 257,263 ----
return (sz - pos);
}
! #endif
#define MAX_SYSCALL_ARGS 6
***************
*** 274,280 ****
raise_syserror (msp, "ml_syscall: Not implemented");
return;
}
! #else /* !AIX */
void ml_syscall (msp, arg)
MLState_ptr msp;
ML_val_t arg;
--- 274,280 ----
raise_syserror (msp, "ml_syscall: Not implemented");
return;
}
! #else
void ml_syscall (msp, arg)
MLState_ptr msp;
ML_val_t arg;
***************
*** 454,464 ****
len = strlen(path)+sizeof(sock.sun_len)+sizeof(sock.sun_family)+1;
sock.sun_len = len;
#else
- #ifndef FreeBSD
len = strlen(path)+sizeof(sock.sun_family);
- #else
- len = SUN_LEN(&sock);
- #endif
#endif
DO_SYSCALL (connect(fd, (struct sockaddr *)&sock, len), sts);
if (sts != -1) {
--- 454,460 ----
***************
*** 509,515 ****
struct sockaddr_in saddr;
int fd, s, i, sts;
! #if defined(SUNOS) || (defined(BSD) && defined(MIPS)) || defined(NeXT) || defined(AUX) || defined(HPPA) || defined (FreeBSD)
DO_SYSCALL (socket(PF_INET, SOCK_STREAM, 0), fd);
if (fd != -1) {
saddr.sin_family = AF_INET;
--- 505,511 ----
struct sockaddr_in saddr;
int fd, s, i, sts;
! #if defined(SUNOS) || (defined(BSD) && defined(MIPS)) || defined(NeXT) || defined(AUX) || defined(HPPA)
DO_SYSCALL (socket(PF_INET, SOCK_STREAM, 0), fd);
if (fd != -1) {
saddr.sin_family = AF_INET;
***************
*** 615,621 ****
/*
raise_ThinkC_error(msp);
*/
! #else /* !THINK_C */
fd_set rfds;
if (msp->inSigHandler || msp->maskSignals
--- 611,617 ----
/*
raise_ThinkC_error(msp);
*/
! #else
fd_set rfds;
if (msp->inSigHandler || msp->maskSignals
***************
*** 628,638 ****
#ifdef RISCos
/* problem with select and pipes */
sts = 0;
! #else /* !RISCos */
FD_ZERO(&rfds);
FD_SET(fd, &rfds);
sts = select(fd+1, &rfds, 0, 0, 0);
! #endif /* RISCos */
msp->ioWaitFlag = 0;
}
else {
--- 624,634 ----
#ifdef RISCos
/* problem with select and pipes */
sts = 0;
! #else
FD_ZERO(&rfds);
FD_SET(fd, &rfds);
sts = select(fd+1, &rfds, 0, 0, 0);
! #endif
msp->ioWaitFlag = 0;
}
else {
***************
*** 654,660 ****
}
RETURN(msp, ML_unit);
! #endif /* THINK_C */
} /* end of ml_wait_for_in. */
--- 650,656 ----
}
RETURN(msp, ML_unit);
! #endif
} /* end of ml_wait_for_in. */
***************
*** 1064,1070 ****
int sts;
if (OBJ_isBOXED(f))
! #if defined(SOLARIS) || defined(FreeBSD)
sts = truncate((char *)PTR_MLtoC(f), len);
#else
sts = truncate(PTR_MLtoC(f), len);
--- 1060,1066 ----
int sts;
if (OBJ_isBOXED(f))
! #ifdef SOLARIS
sts = truncate((char *)PTR_MLtoC(f), len);
#else
sts = truncate(PTR_MLtoC(f), len);
***************
*** 1601,1607 ****
raise_syserror (msp, 0);
else
RETURN(msp, INT_CtoML(sz));
! #else /* !THINK_C */
#ifdef SOLARIS
int fd = INT_MLtoC(arg);
off_t cnt;
--- 1597,1603 ----
raise_syserror (msp, 0);
else
RETURN(msp, INT_CtoML(sz));
! #else
#ifdef SOLARIS
int fd = INT_MLtoC(arg);
off_t cnt;
***************
*** 1630,1636 ****
}
else
raise_syserror (msp, 0);
! #else /* !SOLARIS */
int fd = INT_MLtoC(arg);
struct stat buf;
int pos;
--- 1626,1632 ----
}
else
raise_syserror (msp, 0);
! #else
int fd = INT_MLtoC(arg);
struct stat buf;
int pos;
***************
*** 1656,1663 ****
raise_syserror (msp, 0);
else
RETURN(msp, INT_CtoML(buf.st_size - pos));
! #endif /* SOLARIS */
! #endif /* THINK_C */
} /* end of ml_fionread */
--- 1652,1659 ----
raise_syserror (msp, 0);
else
RETURN(msp, INT_CtoML(buf.st_size - pos));
! #endif
! #endif
} /* end of ml_fionread */
*** ./runtime/signal.c Sat Feb 5 13:07:39 1994
--- ./runtime/signal.c.0 Tue Sep 28 16:51:53 1993
***************
*** 444,450 ****
{
MLState_ptr MLState = find_self();
! #if defined(BSD386)
/* Due to an OS bug, SIGBUS is generated by an INTO instruction */
if (sig == SIGBUS) {
sig = SIGFPE;
--- 444,450 ----
{
MLState_ptr MLState = find_self();
! #ifdef BSD386
/* Due to an OS bug, SIGBUS is generated by an INTO instruction */
if (sig == SIGBUS) {
sig = SIGFPE;
***************
*** 595,601 ****
set_fsr(); /* enable floating-point exceptions */
#endif
! #if defined(BSD386)
/* Due to OS bug, SIGBUS is generated by an INTO instruction. */
SETSIG(SIGBUS, trap_handler, SIGMASKALL);
#endif
--- 595,601 ----
set_fsr(); /* enable floating-point exceptions */
#endif
! #ifdef BSD386
/* Due to OS bug, SIGBUS is generated by an INTO instruction. */
SETSIG(SIGBUS, trap_handler, SIGMASKALL);
#endif
*** ./runtime/Makefile Sat Feb 5 13:08:23 1994
--- ./runtime/Makefile.0 Tue Sep 28 16:57:25 1993
***************
*** 69,75 ****
perv.o: ../../mo.c/perv.c
$(CC) $(CFLAGS) -c ../../mo.c/perv.c
!
clean:
rm -f *.o lint.out prim.s linkdata allmo.s run crc
--- 69,75 ----
perv.o: ../../mo.c/perv.c
$(CC) $(CFLAGS) -c ../../mo.c/perv.c
!
clean:
rm -f *.o lint.out prim.s linkdata allmo.s run crc