(Please excuse request for disassemble output, I missed your earlier
email, will reply separately.)

"Chun Tian (binghe)" <binghe.l...@gmail.com> writes:

> Greetings,
>
> With -O0 (disabled optimizations) now the building process moved from
> "raw_pre_gcl" to "saved_pre_gcl", and then crashed again with a "symbol
> not found in flat namespace".  Now this looks like a fixable linking
> issue, perhaps related to the new clang compiler on Sonoma w.r.t Catalina.
>
>> rm raw_pre_gcl
>> touch h/cmpinclude.h unixport/saved_pre_gcl
>> cd unixport && echo '(time (load "boot.lisp"))' | ../unixport/saved_pre_gcl
>> dlopen(/Volumes/CaseSensitive/Lisp/gcl/gcl/unixport/libboot.so, 0x0009): 
>> symbol not found in flat namespace '_Cnil_body'
>> dlsym(0x0, gcl_init_boot): invalid handle
>> Segmentation violation: c stack ok:signalling errorSegmentation violation: c 
>> stack ok:signalling error
>> Unrecoverable error: Segmentation violation..
>> /bin/sh: line 1: 33223 Done                    echo '(time (load 
>> "boot.lisp"))'
>>      33224 Abort trap: 6           | ../unixport/saved_pre_gcl
>> make: *** [unixport/saved_gcl0] Error 134
>> rm h/mcompdefs.h h/mstdint.h
>
> No useful information if I try to print a backtrace:
>
>> binghe@binghe-mac7:~/Lisp/gcl/gcl$ lldb unixport/saved_pre_gcl 
>> (lldb) target create "unixport/saved_pre_gcl"
>> Current executable set to 
>> '/Users/binghe/Lisp/gcl/gcl/unixport/saved_pre_gcl' (x86_64).
>> (lldb) run
>> Process 33304 launched: '/Users/binghe/Lisp/gcl/gcl/unixport/saved_pre_gcl' 
>> (x86_64)
>> Process 33304 stopped
>> * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS 
>> (code=1, address=0x0)
>>     frame #0: 0x0000000000000000
>> error: memory read failed for 0x0
>> Target 0: (saved_pre_gcl) stopped.
>> (lldb) bt
>> * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS 
>> (code=1, address=0x0)
>>   * frame #0: 0x0000000000000000
>>     frame #1: 0x000000010000c949 saved_pre_gcl`init_boot at main.c:438:3
>>     frame #2: 0x000000010000cff2 saved_pre_gcl`main(argc=1, 
>> argv=0x00007ff7bfefee58, envp=0x00007ff7bfefee68) at main.c:633:21
>>     frame #3: 0x00007ff811831386 dyld`start + 1942
>> (lldb) 
>
> What does "flat namespace" mean? Is GCL's C code being (wrongly)
> considered/handle as C++ code and is somehow miscompiled due to the new
> C++ standard?
>
> Hope this helps,
>
> Chun
>
> On 09/02/24 14:04, Chun Tian (binghe) wrote:
>> Quick updates: using CFLAGS=-O0, the previous mentioned crashing
>> disappeared. This matches MacPorts maintainer's suggestions on setting
>> environment variables.
>> 
>> Chun
>> 
>> On Fri, Feb 9, 2024 at 1:15 PM Camm Maguire <c...@maguirefamily.org
>> <mailto:c...@maguirefamily.org>> wrote:
>> 
>>     Greetings, and thanks again so much as always for your helpful feedback.
>> 
>>     You were right about brew on my Catalina -- I have disabled these and am
>>     testing against the Macports gmp now.
>> 
>>     I've committed a stdint.h fix and a gmp.h location detection fix for
>>     you.  Building with cc/clang now and all appears to work out of the box
>>     with the right environment settings.  In particular, I cannot reproduce
>>     the issue you list here.
>> 
>>     I would do a disassemble at this point in lldb and post the results.  Is
>>     this Catalina?  Perhaps disable C optimization too, either through
>>     CFLAGS or --enable-debug to configure.
>> 
>>     Take care,
>> 
>> 
>>     "Chun Tian (binghe)" <binghe.l...@gmail.com
>>     <mailto:binghe.l...@gmail.com>> writes:
>> 
>>     > 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
>>     <mailto: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
>>     <http://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 <http://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
>>     <mailto: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,
>>     >>>>
>>     >>>
>>     >>
>>     >
>> 
>>     -- 
>>     Camm Maguire                                       
>>     c...@maguirefamily.org <mailto:c...@maguirefamily.org>
>>     
>> ==========================================================================
>>     "The earth is but one country, and mankind its citizens."  -- 
>>     Baha'u'llah
>> 
>

-- 
Camm Maguire                                        c...@maguirefamily.org
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah

Reply via email to