--- gprolog-1.2.19.orig/src/BipsFD/fd_bool_c.c 2005-06-14 03:40:09.000000000 +1200
+++ gprolog-1.2.19/src/BipsFD/fd_bool_c.c 2006-01-23 09:46:19.000000000 +1300
@@ -201,6 +201,8 @@
static void
Fd_Bool_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
bool_tbl[NOT] = Functor_Arity(Create_Atom("#\\"), 1);
bool_tbl[EQUIV] = Functor_Arity(Create_Atom("#<=>"), 2);
--- gprolog-1.2.19.orig/src/BipsFD/math_supp.c 2005-06-14 03:40:10.000000000 +1200
+++ gprolog-1.2.19/src/BipsFD/math_supp.c 2006-01-23 09:46:39.000000000 +1300
@@ -206,6 +206,8 @@
static void
Math_Supp_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
arith_tbl[PLUS_1] = Functor_Arity(ATOM_CHAR('+'), 1);
arith_tbl[PLUS_2] = Functor_Arity(ATOM_CHAR('+'), 2);
arith_tbl[MINUS_1] = Functor_Arity(ATOM_CHAR('-'), 1);
--- gprolog-1.2.19.orig/src/BipsPl/all_solut_c.c 2005-06-14 03:40:10.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/all_solut_c.c 2006-01-23 09:47:09.000000000 +1300
@@ -123,6 +123,8 @@
static void
All_Solut_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
exist_2 = Functor_Arity(ATOM_CHAR('^'), 2);
}
--- gprolog-1.2.19.orig/src/BipsPl/arith_inl_c.c 2005-06-14 03:40:10.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/arith_inl_c.c 2006-01-23 09:47:20.000000000 +1300
@@ -99,6 +99,8 @@
static void
Arith_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
ArithInf arith_info;
arith_tbl = Hash_Alloc_Table(START_ARITH_TBL_SIZE, sizeof(ArithInf));
--- gprolog-1.2.19.orig/src/BipsPl/bc_supp.c 2005-06-14 03:40:10.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/bc_supp.c 2006-01-23 09:47:35.000000000 +1300
@@ -283,6 +283,8 @@
static void
Byte_Code_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
BCWord *p = op_tbl;
Op_In_Tbl("get_variable", GET_X_VARIABLE);
--- gprolog-1.2.19.orig/src/BipsPl/debugger_c.c 2005-06-14 03:40:11.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/debugger_c.c 2006-01-23 09:47:53.000000000 +1300
@@ -164,6 +164,8 @@
static void
Debug_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
New_Object(My_System_Directives, NULL);
}
--- gprolog-1.2.19.orig/src/BipsPl/dynam_supp.c 2005-06-14 03:40:11.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/dynam_supp.c 2006-01-23 09:20:39.000000000 +1300
@@ -601,7 +601,8 @@
dyn = scan->dyn;
if (dyn->first_erased_cl) /* we must keep it - free impossible */
- (unsigned long) (dyn->first_erased_cl) |= 1; /* mark it */
+ dyn->first_erased_cl = (DynCInf *)
+ ((unsigned long) (dyn->first_erased_cl) | 1); /* mark it */
}
--- gprolog-1.2.19.orig/src/BipsPl/error_supp.c 2005-06-14 03:40:11.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/error_supp.c 2006-01-23 09:48:04.000000000 +1300
@@ -117,6 +117,8 @@
static void
Error_Supp_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
type_atom = Create_Atom("atom");
type_atomic = Create_Atom("atomic");
type_byte = Create_Atom("byte");
--- gprolog-1.2.19.orig/src/BipsPl/expand_c.c 2005-06-14 03:40:11.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/expand_c.c 2006-01-23 09:48:16.000000000 +1300
@@ -92,6 +92,8 @@
static void
Expand_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
int atom_dcg;
atom_dcg = Create_Atom("-->");
--- gprolog-1.2.19.orig/src/BipsPl/flag_c.c 2005-06-14 03:40:11.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/flag_c.c 2006-01-23 09:48:33.000000000 +1300
@@ -77,7 +77,6 @@
static int atom_on;
static int atom_off;
-static int atom_error;
static int atom_warning;
static int atom_fail;
@@ -118,6 +117,8 @@
static void
Flag_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
atom_flag_tbl[FLAG_BOUNDED] = Create_Atom("bounded");
atom_flag_tbl[FLAG_MAX_INTEGER] = Create_Atom("max_integer");
atom_flag_tbl[FLAG_MIN_INTEGER] = Create_Atom("min_integer");
--- gprolog-1.2.19.orig/src/BipsPl/foreign_supp.c 2005-06-14 03:40:11.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/foreign_supp.c 2006-01-23 09:48:42.000000000 +1300
@@ -98,6 +98,8 @@
static void
Foreign_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
goal_H = H;
H = H + MAX_ARITY + 1;
--- gprolog-1.2.19.orig/src/BipsPl/g_var_inl_c.c 2005-06-16 05:04:06.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/g_var_inl_c.c 2006-01-23 09:49:06.000000000 +1300
@@ -167,6 +167,8 @@
static void
G_Var_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
atom_g_array = Create_Atom("g_array");
atom_g_array_auto = Create_Atom("g_array_auto");
atom_g_array_extend = Create_Atom("g_array_extend");
--- gprolog-1.2.19.orig/src/BipsPl/oper_c.c 2005-06-14 03:40:11.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/oper_c.c 2006-01-23 09:49:19.000000000 +1300
@@ -86,6 +86,8 @@
static void
Oper_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
char *a[7] = { "fx", "fy", "xf", "yf", "xfx", "xfy", "yfx" };
int i;
--- gprolog-1.2.19.orig/src/BipsPl/os_interf_c.c 2005-06-14 03:40:11.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/os_interf_c.c 2006-01-23 09:49:33.000000000 +1300
@@ -94,8 +94,6 @@
static int atom_dt;
-static int atom_read;
-static int atom_write;
static int atom_execute;
static int atom_search;
@@ -138,6 +136,8 @@
static void
Os_Interf_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
atom_dt = Create_Atom("dt");
atom_read = Create_Atom("read");
--- gprolog-1.2.19.orig/src/BipsPl/parse_supp.c 2005-06-14 03:40:11.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/parse_supp.c 2006-01-23 09:49:53.000000000 +1300
@@ -124,6 +124,8 @@
static void
Parse_Supp_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
atom_var = Create_Atom("var");
atom_string = Create_Atom("string");
atom_punct = Create_Atom("punct");
--- gprolog-1.2.19.orig/src/BipsPl/pretty_c.c 2005-06-14 03:40:12.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/pretty_c.c 2006-01-23 09:50:07.000000000 +1300
@@ -112,6 +112,8 @@
static void
Pretty_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
atom_clause = Create_Atom(":-");
atom_dcg = Create_Atom("-->");
atom_if = Create_Atom("->");
--- gprolog-1.2.19.orig/src/BipsPl/sockets_c.c 2005-06-14 03:40:12.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/sockets_c.c 2006-01-23 09:50:20.000000000 +1300
@@ -100,6 +100,8 @@
static void
Socket_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
#ifdef _WIN32
WORD versReqstd = MAKEWORD( 2, 2); // Current Winsock 2 DLL's
WSADATA wsaData;
--- gprolog-1.2.19.orig/src/BipsPl/sort_c.c 2005-06-14 03:40:12.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/sort_c.c 2006-01-23 09:50:31.000000000 +1300
@@ -68,6 +68,8 @@
static void
Sort_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
minus_2 = Functor_Arity(ATOM_CHAR('-'), 2);
}
--- gprolog-1.2.19.orig/src/BipsPl/write_supp.c 2005-06-14 03:40:12.000000000 +1200
+++ gprolog-1.2.19/src/BipsPl/write_supp.c 2006-01-23 09:50:54.000000000 +1300
@@ -143,6 +143,8 @@
static void
Write_Supp_Initializer(void)
{
+ SET_OBJ_CHAIN_STOP;
+
atom_dots = Create_Atom("...");
curly_brackets_1 = Functor_Arity(atom_curly_brackets, 1);
--- gprolog-1.2.19.orig/src/EngineFD/fd_inst.h 2005-06-14 03:40:14.000000000 +1200
+++ gprolog-1.2.19/src/EngineFD/fd_inst.h 2006-01-23 09:52:35.000000000 +1300
@@ -111,8 +111,8 @@
#define CHAIN_RECORD_FRAME_SIZE 2
-#define CF_Pointer(rec_adr) ((WamWord *) (rec_adr[0]))
-#define Next_Chain(rec_adr) ((WamWord *) (rec_adr[1]))
+#define CF_Pointer(rec_adr) (*(WamWord **) &(rec_adr[0]))
+#define Next_Chain(rec_adr) (*(WamWord **) &(rec_adr[1]))
@@ -123,9 +123,9 @@
#define OFFSET_OF_OPTIM_POINTER 1 /* this offset must corresponds to */
-#define AF_Pointer(cf) ((WamWord *) (cf[0]))
-#define Optim_Pointer(cf) ((WamWord *) (cf[1])) /* this cell */
-#define Cstr_Address(cf) ((long (*)()) (cf[2]))
+#define AF_Pointer(cf) (*(WamWord **) &(cf[0]))
+#define Optim_Pointer(cf) (*(WamWord **) &(cf[1])) /* this cell */
+#define Cstr_Address(cf) (*(long (**)()) &(cf[2]))
--- gprolog-1.2.19.orig/src/EnginePl/obj_chain.c 2005-06-14 03:40:15.000000000 +1200
+++ gprolog-1.2.19/src/EnginePl/obj_chain.c 2006-01-23 09:40:36.000000000 +1300
@@ -24,6 +24,8 @@
/* $Id: gprolog-1.2.19-gcc4.patch,v 1.1 2006/03/21 08:28:26 keri Exp $ */
+#define OBJ_CHAIN 1
+
#include <stdio.h>
#include "obj_chain.h"
@@ -181,7 +183,7 @@
{
if (p->magic1 != OBJ_CHAIN_MAGIC_1 || p->magic2 != OBJ_CHAIN_MAGIC_2
|| (q = p->next) < (ObjChain **) &obj_chain_begin
- || q > &obj_chain_end || *q != p)
+ || q > &obj_chain_end)
{
#ifdef DEBUG
#if 0
--- gprolog-1.2.19.orig/src/EnginePl/obj_chain.h 2005-06-14 03:40:15.000000000 +1200
+++ gprolog-1.2.19/src/EnginePl/obj_chain.h 2006-01-23 09:31:49.000000000 +1300
@@ -83,18 +83,24 @@
#define ATTR_TO_KEEP_UNREF_STATIC_VAR __attribute__ ((unused))
#endif
+#ifdef OBJ_CHAIN
+ObjChain *obj_chain_stop_extern = NULL;
+#else
+
#ifdef OBJ_INIT
static void (OBJ_INIT) ();
#ifndef _MSC_VER
-extern ObjChain *obj_chain_stop;
+static ObjChain obj_chain_start_mark;
+
+static ObjChain *obj_chain_stop = &obj_chain_start_mark;
static ObjChain obj_chain_start ATTR_TO_KEEP_UNREF_STATIC_VAR =
{ OBJ_CHAIN_MAGIC_1, OBJ_CHAIN_MAGIC_2, &obj_chain_stop, OBJ_INIT };
-static ObjChain *obj_chain_stop = &obj_chain_start;
+#define SET_OBJ_CHAIN_STOP {}
#if 0 /* antoher way to force to keep the chain : a fct using obj_chain_start
which references the initializer function (OBJ_INIT) */
@@ -114,3 +120,5 @@
#endif /* _MSC_VER */
#endif /* OBJ_INIT */
+
+#endif /* OBJ_CHAIN */
--- gprolog-1.2.19.orig/src/EnginePl/test_oc_defs.h 2005-06-14 03:13:43.000000000 +1200
+++ gprolog-1.2.19/src/EnginePl/test_oc_defs.h 2006-01-23 09:45:21.000000000 +1300
@@ -25,6 +25,7 @@
\
static void Init_Tables() \
{ \
+ SET_OBJ_CHAIN_STOP; \
printf("object <%s> found\n",name); \
printf(" start at:%#lx\n",(long) &obj_chain_start); \
printf(" &name:%#lx\n",(long) &name); \
--- gprolog-1.2.19.orig/src/EnginePl/wam_inst.h 2005-06-14 03:40:15.000000000 +1200
+++ gprolog-1.2.19/src/EnginePl/wam_inst.h 2006-01-23 09:16:11.000000000 +1300
@@ -67,10 +67,10 @@
#define ENVIR_STATIC_SIZE 3
-#define CPE(e) ((WamCont) (e[-1]))
-#define BCIE(e) ((WamWord) (e[-2]))
-#define EE(e) ((WamWord *) (e[-3]))
-#define Y(e, y) ((WamWord) (e[-4 - (y)]))
+#define CPE(e) (*(WamCont *) &(e[-1]))
+#define BCIE(e) (*(WamWord *) &(e[-2]))
+#define EE(e) (*(WamWord **) &(e[-3]))
+#define Y(e, y) (*(WamWord *) &(e[-4 - (y)]))
#define ENVIR_NAMES {"CPE", "BCIE", "EE"}
@@ -81,15 +81,15 @@
#define CHOICE_STATIC_SIZE 8
-#define ALTB(b) ((CodePtr) (b[-1]))
-#define CPB(b) ((WamCont) (b[-2]))
-#define BCIB(b) ((WamWord) (b[-3]))
-#define EB(b) ((WamWord *) (b[-4]))
-#define BB(b) ((WamWord *) (b[-5]))
-#define HB(b) ((WamWord *) (b[-6]))
-#define TRB(b) ((WamWord *) (b[-7]))
-#define CSB(b) ((WamWord *) (b[-8]))
-#define AB(b, a) ((WamWord) (b[-9 - (a)]))
+#define ALTB(b) (*(CodePtr *) &(b[-1]))
+#define CPB(b) (*(WamCont *) &(b[-2]))
+#define BCIB(b) (*(WamWord *) &(b[-3]))
+#define EB(b) (*(WamWord **) &(b[-4]))
+#define BB(b) (*(WamWord **) &(b[-5]))
+#define HB(b) (*(WamWord **) &(b[-6]))
+#define TRB(b) (*(WamWord **) &(b[-7]))
+#define CSB(b) (*(WamWord **) &(b[-8]))
+#define AB(b, a) (*(WamWord *) &(b[-9 - (a)]))
#define CHOICE_NAMES {"ALTB", "CPB", "BCIB", "EB", "BB", \
"HB", "TRB", "CSB"}