Greetings! Ah, I didn't know these environment variables at all. Now I have put them into my ~/.profile. Thanks.
After using them, now the previous issues about gmp.h disappeared. Then I met the issue, which was the reason that I chose GCC 13 over Apple clang, that "raw_pre_gcl" crashed (Illegal instruction) when doing (init-system). This time I added CFLAGS=-g when building, run "raw_pre_gcl" by lldb (LLVM debugger) and try to manually evaluate the "foo" script line by one, until (init-system): > (defun make-package (name &key nicknames use) > (si::make-package-int name nicknames use)) > > (make-package :s :use '(:cl)) > (make-package :compiler :use '(:cl :si :s)) > (make-package :sloop :use '(:cl)) > (make-package :ansi-loop :use'(:cl)) > (make-package :defpackage :use '(:cl)) > (make-package :tk :use '(:cl :sloop)) > (make-package :fpe :use '(:cl)) > (make-package :cltl1-compat) > > (in-package :system) > (use-package '(:fpe :s :gmp)) > > (export 'si::(object double cnum system cmp-inline cmp-eval type-propagator > c1no-side-effects defcfun clines defentry) :si);FIXME > > (setq *features* (cons :raw-image *features*)) > (init-system) And this is the backtrace: > SYSTEM>(init-system) > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_s.lsp > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_sf.lsp > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_rm.lsp > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_dl.lsp > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_fle.lsp > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_defmacro.lsp > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_hash.lsp > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_evalmacros.lsp > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_module.lsp > loading /Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/../lsp/gcl_predlib.lsp > Process 22566 stopped > * thread #1, queue = 'com.apple.main-thread', stop reason = > EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) > frame #0: 0x00000001000aa8d6 raw_pre_gcl`siLheap_report at gbc.c:0:3 [opt] > 1268 } > 1269 > 1270 static void > -> 1271 FFN(siLheap_report)(void) { > 1272 > 1273 int i; > 1274 > Note: this address is compiler-generated code in function siLheap_report that > has no source code associated with it. > Target 0: (raw_pre_gcl) stopped. > warning: raw_pre_gcl was compiled with optimization - stepping may behave > oddly; variables may not be available. > (lldb) bt > * thread #1, queue = 'com.apple.main-thread', stop reason = > EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) > * frame #0: 0x00000001000aa8d6 raw_pre_gcl`siLheap_report at gbc.c:0:3 [opt] > frame #1: 0x0000000100059586 raw_pre_gcl`fSeval_src(first=<unavailable>) > at eval.c:963:29 [opt] > frame #2: 0x0000000100056f86 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n(f=<unavailable>, n=1, x=<unavailable>) at apply_n.h:6:19 > [opt] > frame #3: 0x0000000100056f80 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n_fun(fun=<unavailable>, n=<unavailable>, b=<unavailable>) > at apply_n.h:79:38 [opt] > frame #4: 0x0000000100056f71 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] quick_call_function_vec(fun=<unavailable>, n=<unavailable>, > b=<unavailable>) at eval.c:74:10 [opt] > frame #5: 0x0000000100056f71 > raw_pre_gcl`quick_call_function_vec_coerce(fun=<unavailable>, > n=<unavailable>, b=0x0000000100305928) at eval.c:96:7 [opt] > frame #6: 0x00000001000570fb > raw_pre_gcl`quick_call_function(fun=<unavailable>) at eval.c:191:11 [opt] > frame #7: 0x00000001000581fa raw_pre_gcl`eval [inlined] > funcall_no_event(fun=0x0000000102ed2040) at eval.c:414:5 [opt] > frame #8: 0x00000001000581cb raw_pre_gcl`eval(form=<unavailable>) at > eval.c:762:4 [opt] > frame #9: 0x0000000100064635 > raw_pre_gcl`Fmultiple_value_list(form=0x0000000102f061c0) at multival.c:68:2 > [opt] > frame #10: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f061a0) > at eval.c:707:3 [opt] > frame #11: 0x00000001000580e3 raw_pre_gcl`eval(form=0x0000000102f061d0) > at eval.c:747:3 [opt] > frame #12: 0x00000001000580e3 raw_pre_gcl`eval(form=0x0000000102f061e0) > at eval.c:747:3 [opt] > frame #13: 0x00000001000580e3 raw_pre_gcl`eval(form=0x0000000102f061f0) > at eval.c:747:3 [opt] > frame #14: 0x00000001000580e3 raw_pre_gcl`eval(form=0x0000000102f06410) > at eval.c:747:3 [opt] > frame #15: 0x0000000100029fa0 raw_pre_gcl`Fprogn(body=0x0000000102f06460) > at prog.c:250:4 [opt] > frame #16: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f06450) > at eval.c:707:3 [opt] > frame #17: 0x0000000100059c64 raw_pre_gcl`ieval(x=<unavailable>) at > eval.c:1070:3 [opt] > frame #18: 0x0000000100036fec raw_pre_gcl`load(s="lsp") at file.d:1701:3 > [opt] > frame #19: 0x00000001000bbd98 raw_pre_gcl`lsp_init(a=<unavailable>, > b=<unavailable>) at sys.c:75:3 [opt] [artificial] > frame #20: 0x00000001000bbf05 > raw_pre_gcl`gcl_init_system(no_init=<unavailable>) at sys_init.c:51:3 [opt] > frame #21: 0x0000000100009dc3 raw_pre_gcl`siLinit_system at main.c:1055:3 > [opt] > frame #22: 0x0000000100059586 raw_pre_gcl`fSeval_src(first=<unavailable>) > at eval.c:963:29 [opt] > frame #23: 0x0000000100056f86 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n(f=<unavailable>, n=1, x=<unavailable>) at apply_n.h:6:19 > [opt] > frame #24: 0x0000000100056f80 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n_fun(fun=<unavailable>, n=<unavailable>, b=<unavailable>) > at apply_n.h:79:38 [opt] > frame #25: 0x0000000100056f71 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] quick_call_function_vec(fun=<unavailable>, n=<unavailable>, > b=<unavailable>) at eval.c:74:10 [opt] > frame #26: 0x0000000100056f71 > raw_pre_gcl`quick_call_function_vec_coerce(fun=<unavailable>, > n=<unavailable>, b=0x00000001003058d0) at eval.c:96:7 [opt] > frame #27: 0x00000001000570fb > raw_pre_gcl`quick_call_function(fun=<unavailable>) at eval.c:191:11 [opt] > frame #28: 0x00000001000581fa raw_pre_gcl`eval [inlined] > funcall_no_event(fun=0x0000000102edf400) at eval.c:414:5 [opt] > frame #29: 0x00000001000581cb raw_pre_gcl`eval(form=<unavailable>) at > eval.c:762:4 [opt] > frame #30: 0x000000010005936b raw_pre_gcl`fLeval(x0=<unavailable>) at > eval.c:866:3 [opt] > frame #31: 0x0000000100056f6a raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n_fun(fun=<unavailable>, n=<unavailable>, > b=0x00000001003058a8) at apply_n.h:79:74 [opt] > frame #32: 0x0000000100056f5a raw_pre_gcl`quick_call_function_vec_coerce > [inlined] quick_call_function_vec(fun=<unavailable>, n=<unavailable>, > b=0x00000001003058a8) at eval.c:74:10 [opt] > frame #33: 0x0000000100056f5a > raw_pre_gcl`quick_call_function_vec_coerce(fun=<unavailable>, > n=<unavailable>, b=0x00000001003058a8) at eval.c:96:7 [opt] > frame #34: 0x00000001000570fb > raw_pre_gcl`quick_call_function(fun=<unavailable>) at eval.c:191:11 [opt] > frame #35: 0x00000001000581fa raw_pre_gcl`eval [inlined] > funcall_no_event(fun=0x0000000102e996a0) at eval.c:414:5 [opt] > frame #36: 0x00000001000581cb raw_pre_gcl`eval(form=<unavailable>) at > eval.c:762:4 [opt] > frame #37: 0x0000000100029fa0 raw_pre_gcl`Fprogn(body=0x0000000102f0b0d0) > at prog.c:250:4 [opt] > frame #38: 0x000000010003e077 raw_pre_gcl`Flocally(body=<unavailable>) at > toplevel.c:205:2 [opt] > frame #39: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0b050) > at eval.c:707:3 [opt] > frame #40: 0x0000000100064635 > raw_pre_gcl`Fmultiple_value_list(form=0x0000000102f0b0e0) at multival.c:68:2 > [opt] > frame #41: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0b040) > at eval.c:707:3 [opt] > frame #42: 0x000000010008e709 > raw_pre_gcl`let_bind(body=0x0000000102f0b2b0, start=0x0000000100305858, > end=0x0000000100305878) at bind.c:705:3 [opt] > frame #43: 0x000000010002b81c raw_pre_gcl`Flet(form=0x0000000102f0b110) > at let.c:79:9 [opt] > frame #44: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0b020) > at eval.c:707:3 [opt] > frame #45: 0x0000000100029fa0 raw_pre_gcl`Fprogn(body=0x0000000102f0b4b0) > at prog.c:250:4 [opt] > frame #46: 0x0000000100049c00 raw_pre_gcl`Fcatch(args=0x0000000102f0aba0) > at catch.c:47:3 [opt] > frame #47: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0ab90) > at eval.c:707:3 [opt] > frame #48: 0x00000001000b7b18 raw_pre_gcl`Fwhen(form=0x0000000102f0b4c0) > at conditional.c:150:2 [opt] > frame #49: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0ab80) > at eval.c:707:3 [opt] > frame #50: 0x0000000100025e73 raw_pre_gcl`Floop(form=0x0000000102f0b5b0) > at iteration.c:58:3 [opt] > frame #51: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0ab70) > at eval.c:707:3 [opt] > frame #52: 0x0000000100029fa0 raw_pre_gcl`Fprogn(body=0x0000000102f0b5c0) > at prog.c:250:4 [opt] > frame #53: 0x0000000100049c00 raw_pre_gcl`Fcatch(args=0x0000000102f0ab60) > at catch.c:47:3 [opt] > frame #54: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0ab50) > at eval.c:707:3 [opt] > frame #55: 0x00000001000b7b18 raw_pre_gcl`Fwhen(form=0x0000000102f0b5e0) > at conditional.c:150:2 [opt] > frame #56: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0ab40) > at eval.c:707:3 [opt] > frame #57: 0x0000000100025e3c raw_pre_gcl`Floop(form=0x0000000102f0b610) > at iteration.c:52:3 [opt] > frame #58: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0ab30) > at eval.c:707:3 [opt] > frame #59: 0x0000000100029fa0 raw_pre_gcl`Fprogn(body=0x0000000102f0b620) > at prog.c:250:4 [opt] > frame #60: 0x000000010002b82f raw_pre_gcl`Flet(form=0x0000000102f0a660) > at let.c:83:2 [opt] > frame #61: 0x0000000100057f14 raw_pre_gcl`eval(form=0x0000000102f0a3d0) > at eval.c:707:3 [opt] > frame #62: 0x00000001000577e4 raw_pre_gcl`funcall(fun=<unavailable>) at > eval.c:386:2 [opt] > frame #63: 0x000000010005958d raw_pre_gcl`fSeval_src(first=<unavailable>) > at eval.c:963:60 [opt] > frame #64: 0x0000000100056f86 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n(f=<unavailable>, n=1, x=<unavailable>) at apply_n.h:6:19 > [opt] > frame #65: 0x0000000100056f80 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n_fun(fun=<unavailable>, n=<unavailable>, b=<unavailable>) > at apply_n.h:79:38 [opt] > frame #66: 0x0000000100056f71 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] quick_call_function_vec(fun=<unavailable>, n=<unavailable>, > b=<unavailable>) at eval.c:74:10 [opt] > frame #67: 0x0000000100056f71 > raw_pre_gcl`quick_call_function_vec_coerce(fun=<unavailable>, > n=<unavailable>, b=0x00000001003057c0) at eval.c:96:7 [opt] > frame #68: 0x00000001000570fb > raw_pre_gcl`quick_call_function(fun=<unavailable>) at eval.c:191:11 [opt] > frame #69: 0x00000001000581fa raw_pre_gcl`eval [inlined] > funcall_no_event(fun=0x0000000102f1a190) at eval.c:414:5 [opt] > frame #70: 0x00000001000581cb raw_pre_gcl`eval(form=<unavailable>) at > eval.c:762:4 [opt] > frame #71: 0x000000010005781c raw_pre_gcl`funcall(fun=<unavailable>) at > eval.c:386:2 [opt] > frame #72: 0x000000010005958d raw_pre_gcl`fSeval_src(first=<unavailable>) > at eval.c:963:60 [opt] > frame #73: 0x0000000100056f86 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n(f=<unavailable>, n=1, x=<unavailable>) at apply_n.h:6:19 > [opt] > frame #74: 0x0000000100056f80 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n_fun(fun=<unavailable>, n=<unavailable>, b=<unavailable>) > at apply_n.h:79:38 [opt] > frame #75: 0x0000000100056f71 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] quick_call_function_vec(fun=<unavailable>, n=<unavailable>, > b=<unavailable>) at eval.c:74:10 [opt] > frame #76: 0x0000000100056f71 > raw_pre_gcl`quick_call_function_vec_coerce(fun=<unavailable>, > n=<unavailable>, b=0x0000000100305798) at eval.c:96:7 [opt] > frame #77: 0x00000001000570fb > raw_pre_gcl`quick_call_function(fun=<unavailable>) at eval.c:191:11 [opt] > frame #78: 0x00000001000581fa raw_pre_gcl`eval [inlined] > funcall_no_event(fun=0x0000000102f1a2b0) at eval.c:414:5 [opt] > frame #79: 0x00000001000581cb raw_pre_gcl`eval(form=<unavailable>) at > eval.c:762:4 [opt] > frame #80: 0x00000001000577e4 raw_pre_gcl`funcall(fun=<unavailable>) at > eval.c:386:2 [opt] > frame #81: 0x000000010005958d raw_pre_gcl`fSeval_src(first=<unavailable>) > at eval.c:963:60 [opt] > frame #82: 0x0000000100056f86 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n(f=<unavailable>, n=1, x=<unavailable>) at apply_n.h:6:19 > [opt] > frame #83: 0x0000000100056f80 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] c_apply_n_fun(fun=<unavailable>, n=<unavailable>, b=<unavailable>) > at apply_n.h:79:38 [opt] > frame #84: 0x0000000100056f71 raw_pre_gcl`quick_call_function_vec_coerce > [inlined] quick_call_function_vec(fun=<unavailable>, n=<unavailable>, > b=<unavailable>) at eval.c:74:10 [opt] > frame #85: 0x0000000100056f71 > raw_pre_gcl`quick_call_function_vec_coerce(fun=<unavailable>, > n=<unavailable>, b=0x0000000100305770) at eval.c:96:7 [opt] > frame #86: 0x00000001000570fb > raw_pre_gcl`quick_call_function(fun=<unavailable>) at eval.c:191:11 [opt] > frame #87: 0x00000001000574d3 raw_pre_gcl`funcall(fun=0x0000000102f1a2e0) > at eval.c:256:7 [opt] > frame #88: 0x00000001000093b2 raw_pre_gcl`main(argc=<unavailable>, > argv=<unavailable>, envp=<unavailable>) at main.c:651:5 [opt] > frame #89: 0x00007ff806d40386 dyld`start + 1942 By searching on Internet [1], I think perhaps the clang compiler is given wrong architecture parameters, which caused it to generate CPU instructs not supported by my CPU. But the involved GCC command line seems clean: gcc -DINICOMP -DNO_DEFUN -g -fsigned-char -pipe -fcommon -fno-builtin-malloc -fno-builtin-free -fno-PIE -fno-pie -fno-PIC -fno-pic -Wall -Wno-builtin-requires-header -Wno-empty-body -Wno-self-assign -Wno-unused-but-set-variable -Wno-incomplete-setjmp-declaration -m64 ... If I used GCC 13, there's no such issues (but new issues occur later). It's a bit strange. What do I miss here? --Chun [1] https://stackoverflow.com/questions/53396370/exc-bad-instruction-code-exc-i386-invop-subcode-0x0-underlying-causes On 09/02/24 03:32, Camm Maguire wrote: > Greetings! I was always taught the canonical way to do this was > > export C_INCLUDE_PATH=/opt/local/include > export LIBRARY_PATH=/opt/local/lib > > ./configure && make > > This seems to work on my Catalina box with the aforementioned commit. I > will try a git pull shortly. > > Please let me know if this does not work for you. > > Take care, > > "Chun Tian (binghe)" <binghe.l...@gmail.com> writes: > >> Greetings, >> >> thanks for your explanation about the <stdint.h> issue. I will take a >> look at the regexp you mentioned and see if I can provide a patch. >> >> Regarding to external gmp, in my system the GMP library and headers are >> installed (through MacPorts) at /opt/local/lib and /opt/local/include. I >> think when I'm using GCC 13, these directories are automatically used. >> But when I'm compiling with Apple's clang from Xcode, I have to let >> clang know these directories. However, the following "standard" way >> doesn't help: >> >> export CFLAGS=-I/opt/local/include >> export LDFLAGS=-L/opt/local/lib >> >> With the above environment variables, and with --enable-dynsysgmp when >> calling ./configure of GCL, I still got the following error messages >> saying system GMP cannot be used: >> >>> checking for gmp.h... yes >>> checking for __gmpz_init in -lgmp... yes >>> checking for external gmp version... good >>> foo.c:1:10: fatal error: 'gmp.h' file not found >>> #include "gmp.h" >>> ^~~~~~~ >>> 1 error generated. >>> Cannot use dynamic gmp lib >>> checking doing configure in gmp directory... >>> # >>> # >>> # ------------------- >>> # Subconfigure of GMP >>> # >>> # >> >> By looking at your ways of detecting GMP in configure.in: >> >>> if test "$enable_dynsysgmp" != "no" ; then >>> AC_CHECK_HEADERS( >>> [gmp.h], >>> [AC_CHECK_LIB( >>> [gmp],[__gmpz_init], >>> [AC_MSG_CHECKING([for external gmp version]) >>> AC_RUN_IFELSE( >>> [AC_LANG_PROGRAM( >>> [[ >>> #include <gmp.h> >>> ]], >>> [[ >>> #if __GNU_MP_VERSION > 3 >>> return 0; >>> #else >>> return -1; >>> #endif >>> ]])], >>> [AC_MSG_RESULT([good]) >>> TLIBS="$TLIBS -lgmp" >>> echo "#include \"gmp.h\"" >foo.c >>> echo "int main() {return 0;}" >>foo.c >>> MP_INCLUDE=`cpp foo.c | $AWK '/(\/|\\\\)gmp.h/ {if (!i) >>> print $3;i=1}' | tr -d '"'` >>> rm -f foo.c])])]) >>> >>> if test "$MP_INCLUDE" = "" ; then >>> AC_MSG_RESULT([Cannot use dynamic gmp lib]) >>> fi >>> >>> fi >> >> I think, when the command "cpp foo.c" was getting called, the "cpp" >> (from Xcode) program still doesn't know the location of GMP headers, >> unless "cpp $CFLAGS" is used instead. My following manual tests >> confirmed my guess: >> >> $ echo "#include \"gmp.h\"" >foo.c >> $ echo "int main() {return 0;}" >>foo.c >> $ cpp foo.c | $AWK '/(\/|\\\\)gmp.h/ {if (!i) print $3;i=1}' | tr -d '"' >> foo.c:1:10: fatal error: 'gmp.h' file not found >> #include "gmp.h" >> ^~~~~~~ >> 1 error generated. >> $ cpp $CFLAGS foo.c | $AWK '/(\/|\\\\)gmp.h/ {if (!i) print $3;i=1}' | >> tr -d '"' >> /opt/local/include/gmp.h >> >> Therefore, I think you should at least put $CFLAGS inside the above >> configure.in code pieces, to handle non-standard position of GMP headers >> given by CFLAGS. >> >> P.S. in you macOS Catalina environment, if you have GMP libraries >> installed at /usr/local, that must be installed from Homebrew. I suggest >> completely removing Homebrew because the installation location of >> Homebrew has moved to /opt/ in higher versions of macOS. Its advantage >> of staying at the "default" directory (/usr/local) is no more. >> >> Regards, >> >> Chun TIAN >> >> On 08/02/24 02:31, Camm Maguire wrote: >>> Greetings, and thannks as always for your feedback. >>> >>> "Chun Tian (binghe)" <binghe.l...@gmail.com> writes: >>> >>>> Greetings, >>>> >>>> In the commit dc9eba0760dedcd3d042a408e715b38ac2222aa3 [1], I saw the >>>> following line from gcl/h/compbas2.h was removed: >>>> >>>> diff --git a/gcl/h/compbas2.h b/gcl/h/compbas2.h >>>> index 20a2b5c..cc7d87c 100755 >>>> --- a/gcl/h/compbas2.h >>>> +++ b/gcl/h/compbas2.h >>>> @@ -10,7 +10,6 @@ EXTER int Rset; >>>> >>>> #ifndef U8_DEFINED >>>> >>>> -#include <stdint.h> >>>> >>>> typedef int8_t i8 ; >>>> typedef int16_t i16; >>> >>> This is a step toward securing a fricas build, which on my box at least >>> is just about done. signal.h, from bsdsignal.c, conflicts with my full >>> stdint on some symbol containing 'fds', which I do not need. The >>> intent is to extract the needed parts in h/mstdint.h. This is an >>> intermediate file removed by make, but you can look at it with 'make >>> h/mstdint.h' from the top level. Apparently the regexp used there needs >>> adjusting for your system. >>> >>>> Also note that I had to use GCC 13 instead of clang, because with clang >>>> even the GMP building part doesn't success at the linking stage. (My >>>> previous successful GCL 2.7.0 build was also based on GCC 13.) >>>> >>> >>> Good to hear. I had trouble with gcc13 on Catalina which I did not >>> pursue as it would not get me gprof anyway :-(. I'm using the external >>> gmp library which works well -- does this not work for you? I'm >>> thinking of removing the convenience copy of gmp4. >>> >>> Take care, >>> >> >
signature.asc
Description: OpenPGP digital signature