[m-rev.] For review: Fix seg fault bug in declarative debugger.

Ian MacLarty maclarty at cs.mu.OZ.AU
Wed Nov 24 00:12:52 AEDT 2004

For review by anyone.

Estimated hours taken: 5
Branches: main

Fix seg fault bug in declarative debugger.

Allow shared libraries to be linked against using lmc.

	The will_not_call_mercury promise was a fib, since 
	ML_bool_return_yes/no were exported Mercury procs.  So just return 
	constants instead.

	Allow shared versions of the libraries to be linked against using
	lmc.  I needed this since the seg fault only occured when linking
	against the shared versions of the libraries.

Index: browser/declarative_tree.m
RCS file: /home/mercury1/repository/mercury/browser/declarative_tree.m,v
retrieving revision 1.9
diff -u -r1.9 declarative_tree.m
--- browser/declarative_tree.m	19 Nov 2004 11:54:17 -0000	1.9
+++ browser/declarative_tree.m	23 Nov 2004 12:43:12 -0000
@@ -1455,9 +1455,9 @@
 	[promise_pure, will_not_call_mercury, thread_safe],
 	#ifdef MR_EXEC_TRACE
-		TracingOn = ML_bool_return_yes();
+		TracingOn = MR_TRUE;
-		TracingOn = ML_bool_return_no();
+		TracingOn = MR_FALSE;
Index: tools/lmc.in
RCS file: /home/mercury1/repository/mercury/tools/lmc.in,v
retrieving revision 1.4
diff -u -r1.4 lmc.in
--- tools/lmc.in	20 May 2004 04:26:16 -0000	1.4
+++ tools/lmc.in	23 Nov 2004 13:08:34 -0000
@@ -49,6 +49,12 @@
 # If you want to track down some low level bug, you can ask this script to
 # execute the Mercury compiler under gdb by setting the environment variable
 # MMC_UNDER_GDB to the string "true".
+# If you want to link in the shared versions of the Mercury libraries then set
+# the environment variable MMC_USE_SHARED_LIBS to the extension for shared
+# libraries on your system.  You also still need to pass "--mercury-linkage
+# shared" to your workspace mmc script.
 if test ! -d $WORKSPACE
@@ -63,21 +69,28 @@
-if test -s $WORKSPACE/boehm_gc/libgc.a
+if test "$MMC_USE_SHARED_LIBS" != ""
-	gclib="$WORKSPACE/boehm_gc/libgc.a"
-elif test -s $WORKSPACE/boehm_gc/libpar_gc.a
+	O="a"
+if test -s $WORKSPACE/boehm_gc/libgc.$O
+	gclib="$WORKSPACE/boehm_gc/libgc.$O"
+elif test -s $WORKSPACE/boehm_gc/libpar_gc.$O
-	gclib="$WORKSPACE/boehm_gc/libpar_gc.a"
-elif test -s $WORKSPACE/boehm_gc/libgc_prof.a
+	gclib="$WORKSPACE/boehm_gc/libpar_gc.$O"
+elif test -s $WORKSPACE/boehm_gc/libgc_prof.$O
-	gclib="$WORKSPACE/boehm_gc/libgc_prof.a"
+	gclib="$WORKSPACE/boehm_gc/libgc_prof.$O"
 	echo "$WORKSPACE/boehm_gc does not have a gc library"
-LIB_FLAGS="--link-object $WORKSPACE/trace/libmer_trace.a --link-object
-$WORKSPACE/browser/libmer_browser.a --link-object $WORKSPACE/browser/libmer_mdbcomp.a --link-object $WORKSPACE/library/libmer_std.a --link-object $WORKSPACE/runtime/libmer_rt.a --link-object $gclib -lm @TRACE_LIBS_SYSTEM@ @READLINE_LIBRARIES@"
+LIB_FLAGS="--link-object $WORKSPACE/trace/libmer_trace.$O --link-object
+$WORKSPACE/browser/libmer_browser.$O --link-object $WORKSPACE/browser/libmer_mdbcomp.$O --link-object $WORKSPACE/library/libmer_std.$O --link-object $WORKSPACE/runtime/libmer_rt.$O --link-object $gclib -lm @TRACE_LIBS_SYSTEM@ @READLINE_LIBRARIES@"
 INIT_FLAGS="--trace-init-file $WORKSPACE/browser/mer_browser.init --init-file $WORKSPACE/library/mer_std.init --init-file $WORKSPACE/runtime/mer_rt.init"
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe

More information about the reviews mailing list