summaryrefslogtreecommitdiff
path: root/lang/gcl/files/patch-ai
diff options
context:
space:
mode:
authorJustin M. Seger <jseger@FreeBSD.org>1999-11-25 18:34:01 +0000
committerJustin M. Seger <jseger@FreeBSD.org>1999-11-25 18:34:01 +0000
commita1d94b37d5e4eae5278ec6ab5579acaee1e3b234 (patch)
tree0ff86db0f53148098befde196e8bde7237e2baab /lang/gcl/files/patch-ai
parentSwitch to tcl/tk 8.2 (diff)
Unbreak and upgrade to gcl-2.3
Diffstat (limited to 'lang/gcl/files/patch-ai')
-rw-r--r--lang/gcl/files/patch-ai120
1 files changed, 120 insertions, 0 deletions
diff --git a/lang/gcl/files/patch-ai b/lang/gcl/files/patch-ai
new file mode 100644
index 000000000000..cebe49a1cb66
--- /dev/null
+++ b/lang/gcl/files/patch-ai
@@ -0,0 +1,120 @@
+--- h/FreeBSD.h.orig Tue Nov 17 18:51:53 1998
++++ h/FreeBSD.h Thu Nov 25 01:17:34 1999
+@@ -1,92 +1,41 @@
+ /*
+- * FreeBSD.h for gcl 1.1
++ * FreeBSD.h for gcl 2.3
+ *
+- * Ported by Jeffrey Hsu (hsu@freebsd.org).
++ * Ported by Jeffrey Hsu (hsu@freebsd.org) for gcl 1.1
+ * Looked at previous versions by Hsu, Werkowsksi, Tobin, and Mogart.
+ *
++ * Updated to work with gcl 2.3 and FreeBSD 4.0/ELF by
++ * Justin Seger (jseger@FreeBSD.org).
++ *
+ */
+
+-#include "bsd.h"
+-
+-#undef LD_COMMAND
+-#define LD_COMMAND(command,main,start,input,ldarg,output) \
+- sprintf(command, "ld -dc -N -x -A %s -T %x %s %s -o %s", \
+- main,start,input,ldarg,output)
+-
+-#define ADDITIONAL_FEATURES \
+- ADD_FEATURE("386BSD");\
+- ADD_FEATURE("FreeBSD");
+-
+-
+-#define I386
+-#define IEEEFLOAT
+-
+-/* we don't need to worry about zeroing fp->_base, to prevent what??? */
+-#define FCLOSE_SETBUF_OK
+-
+-#undef HAVE_XDR
+-
+-#define USE_ATT_TIME
+-
+-#undef LISTEN_FOR_INPUT
+-#define LISTEN_FOR_INPUT(fp) \
+- if ((fp)->_r <=0 && (c=0, ioctl((fp)->_file, FIONREAD, &c), c<=0)) \
+- return(FALSE)
+-
+-#ifdef IN_GBC
+ #include <sys/types.h>
+-#endif
+
+-#define DATA_BEGIN (char *) N_DATADDR(header);
+-#define A_TEXT_OFFSET(x) (sizeof (struct exec))
+-#define A_TEXT_SEEK(hdr) (N_TXTOFF(hdr) + A_TEXT_OFFSET(hdr))
+-#define start_of_data() &etext
+-#define start_of_text() ((char *)(sizeof(struct exec) + getpagesize()))
+-
+-#define UNIXSAVE "unexec.c"
+-#ifdef UNIXSAVE
+- extern char etext;
++#ifdef IN_UNIXSAVE
++ #undef IN_UNIXSAVE
++ #define WAS_IN_UNIXSAVE
+ #endif
+
+-#define RELOC_FILE "rel_sun3.c" /* for SFASL - enabled in bsd.h */
++#include "386-linux.h"
+
+-#ifdef CLOCKS_PER_SEC
+-#define HZ CLOCKS_PER_SEC
+-#else
+-#define HZ 128
++#ifdef WAS_IN_UNIXSAVE
++ #define IN_UNIXSAVE
+ #endif
+-#define ss_base ss_sp
+
+-/* begin for GC */
+-#define PAGEWIDTH 12 /* i386 sees 4096 byte pages */
+-/* end for GC */
+-
+-#define SIG_STACK_SIZE (SIGSTKSZ/sizeof(double))
+-#define SETUP_SIG_STACK \
+-{ \
+- static struct sigaltstack estack; \
+- estack.ss_sp = estack_buf; \
+- estack.ss_size = SIGSTKSZ; \
+- estack.ss_flags = 0; \
+- if (sigaltstack(&estack, 0) < 0) \
+- perror("sigaltstack"); \
+-}
+-
+-#define INSTALL_SEGMENTATION_CATCHER \
+- (void) gcl_signal(SIGSEGV, segmentation_catcher); \
+- (void) gcl_signal(SIGBUS, segmentation_catcher)
+-
+-/*
+- * The next two defines are for SGC,
+- * one of which needs to go in cmpinclude.h.
+- */
+-#define SIGPROTV SIGBUS
+-
+-/* Begin for cmpinclude */
+-#define SGC /* can mprotect pages and so selective gc will work */
++#undef INSTALL_MPROTECT_HANDLER
++#undef GET_FAULT_ADDR
++#undef LISTEN_FOR_INPUT
+
+-/* End for cmpinclude */
++#define LISTEN_FOR_INPUT(fp) \
++ if ((fp)->_r <=0 && (c=0, ioctl((fp)->_file, FIONREAD, &c), c<=0)) \
++ return(FALSE)
+
+-#if defined(IN_UNIXTIME)
+-# include <time.h>
++#if 0
++{\
++ int fd = (fp)->_file;\
++ static struct timeval tv = {0,0};\
++ static fd_set rmask; FD_ZERO(&rmask); FD_SET(fd,&rmask);\
++ select(fd+1,&rmask,NULL,NULL,&tv);\
++ return (FD_ISSET(fd,&rmask));\
++}
+ #endif