<div>Dear Marc,</div><div><br></div><div>On OpenBSD-current (and I suppose any other OBSD version) there's a PITA bug in latest Gambit when compiled with <font face="courier new, monospace">--enable-cplusplus</font>. I tried it with G++ 4.7.2 and 4.6.3. Possibly this bug exists also with any Gambit version.</div>

<div><br></div>
The bug is extremely easily reproducible:<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font face="courier new, monospace">$ gsc</font></div>
</div><div><div><font face="courier new, monospace">Gambit v4.6.6</font></div></div><div><div><font face="courier new, monospace"><br></font></div></div><div><div><font face="courier new, monospace">> ,q</font></div></div>



<div><div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">terminate called after throwing an instance of '___throw_struct'</font></div></div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">terminate called recursively</font></div>



</div><div><div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">Abort trap (core dumped)</font></div></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,255)">$</font></div>

</blockquote><div><br></div><div>I've been hunting this bug down quite extensively now and it appears to me that Gambit's normal way of terminating (at least on OBSD and Debian) is by throwing an uncaught exception, containing a <font face="courier new, monospace">___throw_struct</font> whose content is a <font face="courier new, monospace">__SCMOBJ</font> containing a fixnum by the number one (1)???</div>


<div><br></div><div>But if so, why is not an uncaught exception error printed at <font face="courier new, monospace">gsc</font> termination on every platform (which is <font face="courier new, monospace">g++</font>'s default behavior)???</div>

<div><br></div><div><br></div><div>Would greatly appreciate a hand in resolving this bug, it takes time generating the core file, clutters the terminal by requiring you to run reset after every <font face="courier new, monospace">gsc</font> session, and primarily, it gives a terrible 'out of control' sense to the console interaction!..</div>


<div><br></div><div><br></div><div>Find my notes in hunting this one down below. If I can check for or try anything particular as to resolve the originating cause, please just tell me what.</div><div><br></div><div>Thanks!</div>


<div>Mikael</div><div><br></div><div> -- </div><div><br></div><div><br></div><div>I've tried to track this down while comparing execution flows between OpenBSD and Debian and I'm a but puzzled:</div><div><br>Fundamentally the error is caused by the ___THROW (err); inside ___propagate_error defined in lib/setup.c, row ~1895 , see GDB session below for this.</div>


<div><br></div><div>The invocation to ___propagate_error is made from one place in all Gambit namely |##exit-with-err-code-no-cleanup| in lib/_kernel.scm:~4356.</div><div><br></div><div>On both OBSD and Debian, ___USE_SETJMP is *not defined* so it's the *second* set of exception handling macros including ___THROW in include/gambit.h that are used i.e.:</div>


<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font face="courier new, monospace">#define ___BEGIN_TRY { ___err = ___FIX(___NO_ERR); try {</font></div></div><div><div><font face="courier new, monospace">#define ___END_TRY } catch (___throw_struct ts) {  ___err = ts.err; } }</font></div>


</div><div><div><font face="courier new, monospace">#define ___THROW(e)do { ___throw_struct ts; ts.err = e; <span style="background-color:rgb(255,255,204)">throw (ts);</span><span style="background-color:rgb(255,255,255)"> </span>} while (0)</font></div>

</div><div><div><font face="courier new, monospace">#define ___ON_THROW(stat1,stat2) \</font></div>
</div><div><div><font face="courier new, monospace">___ON_THROW_AUX(,stat1,stat2)</font></div></div></blockquote><div><br></div><div>So this is the throw() that causes the uncaught exception, that produces this entire error.</div>


<div><br></div><div>On both OBSD and Debian, on normal Gambit termination, |##exit-with-err-code-no-cleanup| is invoked with the fixnum 1 as argument, leading to a ___THROW with 4 as argument, 4 is Gambit's internal object representation for the fixnum 1.</div>


<div><br></div><div>I tried to trace the source of the invocation to |##exit-with-err-code-no-cleanup| but didn't quite succeed.</div><div><br></div><div><br></div><div>I tried in three ways of catching this thrown exception, and they failed (listing of methods and code used below).</div>


<div><br></div><div>Below are the outputs from a related GDB session and failed attempts to hunt down </div><div><br></div><div>The console output doesn't show anything, and except for a section highlighted below, configure doesn't seem to show anything.</div>


<div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><div><b>GDB output: Tracking down the location of the throw() for the uncaught exception</b></div>


<div><div><span style><font face="courier new, monospace"># egdb gsc</font></span></div><div><span style><font face="courier new, monospace">GNU gdb (GDB) 7.5</font></span></div>
<div><span style><font face="courier new, monospace">Copyright (C) 2012 Free Software Foundation, Inc.</font></span></div><div><span style><font face="courier new, monospace">License GPLv3+: GNU GPL version 3 or later <<a href="http://gnu.org/licenses/gpl.html" target="_blank">http://gnu.org/licenses/gpl.html</a>></font></span></div>


<div><span style><font face="courier new, monospace">This is free software: you are free to change and redistribute it.</font></span></div><div><span style><font face="courier new, monospace">There is NO WARRANTY, to the extent permitted by law.  Type "show copying"</font></span></div>


<div><span style><font face="courier new, monospace">and "show warranty" for details.</font></span></div><div><span style><font face="courier new, monospace">This GDB was configured as "x86_64-unknown-openbsd5.2".</font></span></div>


<div><span style><font face="courier new, monospace">For bug reporting instructions, please see:</font></span></div><div><span style><font face="courier new, monospace"><<a href="http://www.gnu.org/software/gdb/bugs/" target="_blank">http://www.gnu.org/software/gdb/bugs/</a>>...</font></span></div>


<div><span style><font face="courier new, monospace">Reading symbols from /usr/bin/gsc...done.</font></span></div><div><span style><font face="courier new, monospace">(gdb) run</font></span></div>
<div><span style><font face="courier new, monospace">Starting program: /usr/bin/gsc</font></span></div><div><span style><font face="courier new, monospace">Gambit v4.6.6</font></span></div>
<div><span style><font face="courier new, monospace"><br></font></span></div><div><span style><font face="courier new, monospace">></font></span></div>
<div><span style><font face="courier new, monospace">Program received signal SIGTSTP, Stopped (user).</font></span></div><div><span style><font face="courier new, monospace">0x000016f1c39a951a in select () at <stdin>:2</font></span></div>


<div><span style><font face="courier new, monospace">2       <stdin>: No such file or directory.</font></span></div><div><span style><font face="courier new, monospace">(gdb) catch catch</font></span></div>
<div><span style><font face="courier new, monospace">Catchpoint 1 (catch)</font></span></div><div><span style><font face="courier new, monospace">(gdb) catch throw</font></span></div>
<div><span style><font face="courier new, monospace">Catchpoint 2 (throw)</font></span></div><div><span style><font face="courier new, monospace">(gdb) catch exception</font></span></div>
<div><span style><font face="courier new, monospace">Unable to insert catchpoint.  Is this an Ada main program?</font></span></div><div><span style><font face="courier new, monospace">(gdb) catch unknown exception</font></span></div>


<div><span style><font face="courier new, monospace">Undefined catch command: "unknown exception".  Try "help catch".</font></span></div><div><span style><font face="courier new, monospace">(gdb) catch exception unhandled</font></span></div>


<div><span style><font face="courier new, monospace">Unable to insert catchpoint.  Is this an Ada main program?</font></span></div><div><span style><font face="courier new, monospace">(gdb) cont</font></span></div>
<div><span style><font face="courier new, monospace">Continuing.</font></span></div><div><span style><font face="courier new, monospace">,q</font></span></div>
<div><span style><font face="courier new, monospace">Catchpoint 2 (exception thrown), __cxxabiv1::__cxa_throw (obj=0x16f1c758c480, tinfo=0x16efbce1e490 <typeinfo for ___throw_struct>, dest=0x0)</font></span></div>
<div><span style><font face="courier new, monospace">    at /usr/obj/gcc-4.7.2/gcc-4.7.2/libstdc++-v3/libsupc++/eh_throw.cc:70</font></span></div><div><span style><font face="courier new, monospace">70      /usr/obj/gcc-4.7.2/gcc-4.7.2/libstdc++-v3/libsupc++/eh_throw.cc: No such file or directory.</font></span></div>


<div><span style><font face="courier new, monospace">(gdb) bt</font></span></div><div><span style><font face="courier new, monospace">#0  __cxxabiv1::__cxa_throw (obj=0x16f1c758c480, tinfo=0x16efbce1e490 <typeinfo for ___throw_struct>, dest=0x0)</font></span></div>


<div><span style><font face="courier new, monospace">    at /usr/obj/gcc-4.7.2/gcc-4.7.2/libstdc++-v3/libsupc++/eh_throw.cc:70</font></span></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">#1  0x000016efbc830f78 in ___propagate_error(long) ()</font></div>


<div><span style><font face="courier new, monospace">#2  0x000016efbc855a7b in ___H__20___kernel(___processor_state_struct*) ()</font></span></div><div><span style><font face="courier new, monospace">#3  0x000016efbc831026 in ___call(int, long, long) ()</font></span></div>


<div><span style><font face="courier new, monospace">#4  0x000016efbc832cee in ___setup(___setup_params_struct*) ()</font></span></div><div><span style><font face="courier new, monospace">#5  0x000016efbc847a0e in ___main(___mod_or_lnk_union* (*)(___global_state_struct*)) ()</font></span></div>


<div><span style><font face="courier new, monospace">#6  0x000016efbc83c3b3 in ___main_char(int, char**, ___mod_or_lnk_union* (*)(___global_state_struct*), char*) ()</font></span></div>
<div><span style><font face="courier new, monospace">#7  0x000016efbc830216 in main (argc=1, argv=0x7f7ffffbdfa0) at _gsc_.c:13627</font></span></div></div><div><span style><font face="courier new, monospace">(gdb)</font></span></div>


</div><div><br></div><div><br></div><div><br></div><div><b>Failed attempts to catch the exception</b></div><div><div>(A) Hooking the uncaught exception handler via std::set_terminate(); , see example code for this below. Funny enough this did not work, it gave "no active exception".</div>


<div><br></div><div>(B) Tried running a REPL inside a try { .. } catch statement and do ,q from it. Did not work.</div><div><br></div><div>(C) Tried to put debug output include/gambit.h and lib/os_base.c around 1) Gambit's main() procedure and 2) around the try { .. } catch-code that actually is there. I would guess the code modified in 2) not runs though as it only runs when longjumps are not on. Printed "Gambit Started.\Past ___setup_base_module()\nInto ___main.\n". and that's all, all the way until C++' uncaught exception handler prints its error message. So, did not work.</div>


</div><div><br></div><div><div><b> * (A) code</b></div><div><div><font face="courier new, monospace">; <a href="http://efesx.com/2010/03/21/catching-uncaught-exceptions-within-terminate/" target="_blank">http://efesx.com/2010/03/21/catching-uncaught-exceptions-within-terminate/</a></font></div>


<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">(c-declare #<<c-declare</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">#include <iostream></font></div>


<div><font face="courier new, monospace">#include <stdexcept></font></div><div><font face="courier new, monospace">#include <exception></font></div><div><font face="courier new, monospace"><br></font></div><div>


<font face="courier new, monospace">void our_terminate (void) { </font></div><div><font face="courier new, monospace">     printf("Terminating..\n");</font></div><div><font face="courier new, monospace"><br></font></div>


<div><font face="courier new, monospace">    static bool tried_throw = false;</font></div><div><font face="courier new, monospace"> </font></div><div><font face="courier new, monospace">    try {</font></div><div><font face="courier new, monospace">        if (!tried_throw++) throw;</font></div>


<div><font face="courier new, monospace">        std::cout << "no active exception" << std::endl;</font></div><div><font face="courier new, monospace">    }</font></div><div><font face="courier new, monospace">    catch (___SCMOBJ err) {</font></div>


<div><font face="courier new, monospace">        printf("Got SCMOBJ %lld.\n",err);</font></div><div><font face="courier new, monospace">    }</font></div><div><font face="courier new, monospace">    catch (const std::runtime_error &err) {</font></div>


<div><font face="courier new, monospace">        std::cout << "caught a runtime_error. what(): " <<</font></div><div><font face="courier new, monospace">            err.what() << std::endl;</font></div>


<div><font face="courier new, monospace">    }</font></div><div><font face="courier new, monospace">    catch (...) {</font></div><div><font face="courier new, monospace">        std::cout << "unknown exception occurred." <<</font></div>


<div><font face="courier new, monospace">            std::endl;</font></div><div><font face="courier new, monospace">    }</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">}</font></div>


<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">c-declare</font></div><div><font face="courier new, monospace">           )</font></div><div><font face="courier new, monospace"><br>


</font></div><div><font face="courier new, monospace">(c-initialize #<<c-initialize</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">std::set_terminate(our_terminate);</font></div>


<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">c-initialize</font></div><div><font face="courier new, monospace">              )</font></div></div><div><br></div><div><b> * (B) code</b></div>


<div><div><font face="courier new, monospace">(c-define (runscm thunk) (scheme-object) void "runscm" ""</font></div><div><font face="courier new, monospace">          (print "(runscm): Running thunk.\n")</font></div>


<div><font face="courier new, monospace">          (thunk)</font></div><div><font face="courier new, monospace">          (print "(runscm): Back from thunk.\n"))</font></div><div><font face="courier new, monospace"><br>


</font></div><div><font face="courier new, monospace">(define (c++-try-catch thunk)</font></div><div><font face="courier new, monospace">  ((c-lambda (scheme-object) void #<<c-lambda-end</font></div><div><font face="courier new, monospace"><br>


</font></div><div><font face="courier new, monospace">___SCMOBJ thunk = ___arg1;</font></div><div><font face="courier new, monospace">try {</font></div><div><font face="courier new, monospace">     runscm(thunk);</font></div>


<div><font face="courier new, monospace">} catch (___throw_struct e) {</font></div><div><font face="courier new, monospace">     fprintf(stderr,"Caught a ___throw_struct!\n");</font></div><div><font face="courier new, monospace">} catch (...) {</font></div>


<div><font face="courier new, monospace">     fprintf(stderr,"Caught some other excepion.\n");</font></div><div><font face="courier new, monospace">}</font></div><div><font face="courier new, monospace"><br></font></div>


<div><font face="courier new, monospace">c-lambda-end</font></div><div><font face="courier new, monospace">             ) thunk))</font></div></div></div><div><font face="courier new, monospace"><br></font></div><div><span style="font-family:'courier new',monospace">(c++-try-catch ##repl)</span></div>


<div><br></div><div><div><b> * (C) code</b></div><div><br></div><div>include/gambit.h</div><div><br></div><div><div><font face="courier new, monospace">#ifdef ___USE_SETJMP</font></div><div><font face="arial, helvetica, sans-serif">...</font></div>


</div><div><div><font face="courier new, monospace">#define ___BEGIN_TRY { ___err = ___FIX(___NO_ERR); try {</font></div><div><font face="courier new, monospace">#define ___END_TRY } catch (___throw_struct ts) { <span style="background-color:rgb(255,255,204)">printf("___END_TRY caught a ___throw_struct.\n");</span> ___err = ts.err; } }</font></div>


<div><font face="courier new, monospace">#define ___THROW(e)do { ___throw_struct ts; ts.err = e; <span style="background-color:rgb(255,255,204)">printf(stderr,"___THROW throws a ___throw_struct.\n");</span> throw (ts); } while (0)</font></div>


<div><font face="courier new, monospace">#define ___ON_THROW(stat1,stat2) \</font></div><div><font face="courier new, monospace">___ON_THROW_AUX(,stat1,stat2)</font></div><div><font face="courier new, monospace"><br></font></div>


<div><font face="courier new, monospace">#endif</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">#define ___ON_THROW_AUX(decl,stat1,stat2) \</font></div><div>

<font face="courier new, monospace">do { \</font></div>
<div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace">fprintf(stderr,"___ON_THROW_AUX\n"); \</font></span></div><div><font face="courier new, monospace">     ___SCMOBJ ___err; decl \</font></div>


<div><font face="courier new, monospace">     ___BEGIN_TRY stat1; ___END_TRY \</font></div><div><font face="courier new, monospace">     if (___err != ___FIX(___NO_ERR)) stat2; \</font></div><div><font face="courier new, monospace">   } while (0)</font></div>


</div><div><br></div><div><br></div><div><br></div><div>lib/os_base.c:</div><div><div><font face="courier new, monospace">___EXP_FUNC(int,___main_char)</font></div><div><font face="courier new, monospace">  ___P((int argc,</font></div>


<div><font face="courier new, monospace">        char *argv[],</font></div><div><font face="courier new, monospace">        ___mod_or_lnk (*linker)(___global_state_struct*),</font></div><div><font face="courier new, monospace">        char *script_line),</font></div>


<div><font face="courier new, monospace">       (argc,</font></div><div><font face="courier new, monospace">        argv,</font></div><div><font face="courier new, monospace">        linker,</font></div><div><font face="courier new, monospace">        script_line)</font></div>


<div><font face="courier new, monospace">int argc;</font></div><div><font face="courier new, monospace">char *argv[];</font></div><div><font face="courier new, monospace">___mod_or_lnk (*linker)();</font></div><div><font face="courier new, monospace">char *script_line;)</font></div>


<div><font face="courier new, monospace">{</font></div><div><font face="courier new, monospace">  int result;</font></div><div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace">fprintf(stderr,"Gambit started.\n");</font></span></div>


<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">try {</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  if (___setup_base_module () != ___FIX(___NO_ERR))</font></div>


<div><font face="courier new, monospace">    result = ___EXIT_CODE_OSERR;</font></div><div><font face="courier new, monospace">  else</font></div><div><font face="courier new, monospace">    {</font></div><div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace">fprintf(stderr,"Past ___setup_base_module()\n");</font></span></div>


<div><font face="courier new, monospace">      if (___NONNULLCHARSTRINGLIST_to_NONNULLUCS_2STRINGLIST</font></div><div><font face="courier new, monospace">            (argv,</font></div><div><font face="courier new, monospace">             &___program_startup_info.argv)</font></div>


<div><font face="courier new, monospace">          != ___FIX(___NO_ERR))</font></div><div><font face="courier new, monospace">        result = ___EXIT_CODE_SOFTWARE;</font></div><div><font face="courier new, monospace">      else</font></div>


<div><font face="courier new, monospace">        {</font></div><div><font face="courier new, monospace">          if (___CHARSTRING_to_UCS_2STRING</font></div><div><font face="courier new, monospace">                (script_line,</font></div>


<div><font face="courier new, monospace">                 &___program_startup_info.script_line)</font></div><div><font face="courier new, monospace">              != ___FIX(___NO_ERR))</font></div><div><font face="courier new, monospace">            result = ___EXIT_CODE_SOFTWARE;</font></div>


<div><font face="courier new, monospace">          else</font></div><div><font face="courier new, monospace">            {</font></div><div><font face="courier new, monospace">             <span style="background-color:rgb(255,255,204)">fprintf(stderr,"Into ___main\n");</span></font></div>


<div><font face="courier new, monospace">              result = ___main (linker);</font></div><div><font face="courier new, monospace">                  <span style="background-color:rgb(255,255,204)">fprintf(stderr,"Out of ___main\n");</span></font></div>


<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">              ___free_UCS_2STRING (___program_startup_info.script_line);</font></div><div><font face="courier new, monospace">            }</font></div>


<div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">          ___free_NONNULLUCS_2STRINGLIST (___program_startup_info.argv);</font></div><div><font face="courier new, monospace">        }</font></div>


<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">      <span style="background-color:rgb(255,255,204)">fprintf(stderr,"Into ___cleanup_base_module\n");</span></font></div>


<div><font face="courier new, monospace">      ___cleanup_base_module ();</font></div><div><font face="courier new, monospace">      <span style="background-color:rgb(255,255,204)">fprintf(stderr,"Out of ___cleanup_base_module.\n");</span></font></div>


<div><font face="courier new, monospace">    }</font></div><div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace">} catch (___throw_struct e) {</font></span></div><div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace">     fprintf(stderr,"Caught a ___throw_struct!\n");</font></span></div>


<div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace">} catch (...) {</font></span></div><div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace">     fprintf(stderr,"Caught some other excepion.\n");</font></span></div>


<div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace">}</font></span></div><div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace"><br></font></span></div>


<div><span style="background-color:rgb(255,255,204)"><font face="courier new, monospace">fprintf(stderr,"Gambit ended.\n");</font></span></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"><br>


</font></div><div><font face="courier new, monospace">  return result;</font></div><div><font face="courier new, monospace">}</font></div></div></div></div><div><font face="courier new, monospace"><br></font></div><div><br>


</div><div><div><b>./configure log</b></div><div><div><font face="courier new, monospace">$ CXFLAGS="-g -ggdb -gdwarf-3 -gstrict-dwarf -O0" ./configure --enable-cplusplus --enable-single-host              </font><font face="arial, helvetica, sans-serif"> (note misspelling on env var, anyhow)</font></div>

<div><div>
<font face="courier new, monospace">checking build system type... amd64-unknown-openbsd5.2</font></div><div><font face="courier new, monospace">checking host system type... amd64-unknown-openbsd5.2</font></div><div><font face="courier new, monospace">checking target system type... amd64-unknown-openbsd5.2</font></div>


<div><font face="courier new, monospace">checking for gcc... gcc</font></div><div><font face="courier new, monospace">checking for C compiler default output file name... a.out</font></div><div><font face="courier new, monospace">checking whether the C compiler works... yes</font></div>


<div><font face="courier new, monospace">checking whether we are cross compiling... no</font></div><div><font face="courier new, monospace">checking for suffix of executables...</font></div><div><font face="courier new, monospace">checking for suffix of object files... o</font></div>


<div><font face="courier new, monospace">checking whether we are using the GNU C compiler... yes</font></div><div><font face="courier new, monospace">checking whether gcc accepts -g... yes</font></div><div><font face="courier new, monospace">checking for gcc option to accept ISO C89... none needed</font></div>


<div><font face="courier new, monospace">checking how to run the C preprocessor... gcc -E</font></div><div><font face="courier new, monospace">checking for g++... g++</font></div><div><font face="courier new, monospace">checking whether we are using the GNU C++ compiler... yes</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -g... yes</font></div><div><font face="courier new, monospace">checking how to run the C++ preprocessor... g++ -E</font></div><div><font face="courier new, monospace">checking for grep that handles long lines and -e... /usr/bin/grep</font></div>


<div><font face="courier new, monospace">checking for egrep... /usr/bin/grep -E</font></div><div><font face="courier new, monospace">checking for ANSI C header files... yes</font></div><div><font face="courier new, monospace">checking for sys/types.h... yes</font></div>


<div><font face="courier new, monospace">checking for sys/stat.h... yes</font></div><div><font face="courier new, monospace">checking for stdlib.h... yes</font></div><div><font face="courier new, monospace">checking for string.h... yes</font></div>


<div><font face="courier new, monospace">checking for memory.h... yes</font></div><div><font face="courier new, monospace">checking for strings.h... yes</font></div><div><font face="courier new, monospace">checking for inttypes.h... yes</font></div>


<div><font face="courier new, monospace">checking for stdint.h... yes</font></div><div><font face="courier new, monospace">checking for unistd.h... yes</font></div><div><font face="courier new, monospace">checking for void*... yes</font></div>


<div><font face="courier new, monospace">checking size of void*... 8</font></div><div><font face="courier new, monospace">checking for long... yes</font></div><div><font face="courier new, monospace">checking size of long... 8</font></div>


<div><font face="courier new, monospace">checking for bool... yes</font></div><div><font face="courier new, monospace">checking whether g++ defines __GNUC__... yes</font></div><div><font face="courier new, monospace">checking whether g++ defines __clang__...</font></div>


<div><font face="courier new, monospace">checking whether g++ defines __llvm__...</font></div><div><font face="courier new, monospace">checking whether g++ defines _MSC_VER...</font></div><div><font face="courier new, monospace">checking errno.h usability... yes</font></div>


<div><font face="courier new, monospace">checking errno.h presence... yes</font></div><div><font face="courier new, monospace">checking for errno.h... yes</font></div><div><font face="courier new, monospace">checking float.h usability... yes</font></div>


<div><font face="courier new, monospace">checking float.h presence... yes</font></div><div><font face="courier new, monospace">checking for float.h... yes</font></div><div><font face="courier new, monospace">checking signal.h usability... yes</font></div>


<div><font face="courier new, monospace">checking signal.h presence... yes</font></div><div><font face="courier new, monospace">checking for signal.h... yes</font></div><div><font face="courier new, monospace">checking stdio.h usability... yes</font></div>


<div><font face="courier new, monospace">checking stdio.h presence... yes</font></div><div><font face="courier new, monospace">checking for stdio.h... yes</font></div><div><font face="courier new, monospace">checking for stdlib.h... (cached) yes</font></div>


<div><font face="courier new, monospace">checking for string.h... (cached) yes</font></div><div><font face="courier new, monospace">checking time.h usability... yes</font></div><div><font face="courier new, monospace">checking time.h presence... yes</font></div>


<div><font face="courier new, monospace">checking for time.h... yes</font></div><div><font face="courier new, monospace">checking for unistd.h... (cached) yes</font></div><div><font face="courier new, monospace">checking pwd.h usability... yes</font></div>


<div><font face="courier new, monospace">checking pwd.h presence... yes</font></div><div><font face="courier new, monospace">checking for fcntl.h... yes</font></div><div><font face="courier new, monospace">checking sys/ioctl.h usability... yes</font></div>


<div><font face="courier new, monospace">checking sys/ioctl.h presence... yes</font></div><div><font face="courier new, monospace">checking for sys/ioctl.h... yes</font></div><div><font face="courier new, monospace">checking sys/socket.h usability... yes</font></div>


<div><font face="courier new, monospace">checking sys/socket.h presence... yes</font></div><div><font face="courier new, monospace">checking for sys/socket.h... yes</font></div><div><font face="courier new, monospace">checking for strings.h... (cached) yes</font></div>


<div><font face="courier new, monospace">checking for memory.h... (cached) yes</font></div><div><font face="courier new, monospace">checking sys/sysctl.h usability... no</font></div><div><font face="courier new, monospace">checking sys/sysctl.h presence... yes</font></div>


<div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">configure: WARNING: sys/sysctl.h: present but cannot be compiled          </font><font face="arial, helvetica, sans-serif"><span style><font> - This is documented at </font><a href="http://fxr.watson.org/fxr/source/sys/sysctl.h?v=OPENBSD" target="_blank">http://fxr.watson.org/fxr/source/sys/sysctl.h?v=OPENBSD</a> , doesn't look like anything that would crash an ordinary Gambit session??</span></font></div>


<div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">configure: WARNING: sys/sysctl.h:     check for missing prerequisite headers?</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">configure: WARNING: sys/sysctl.h: see the Autoconf documentation</font></div>


<div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">configure: WARNING: sys/sysctl.h:     section "Present But Cannot Be Compiled"</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">configure: WARNING: sys/sysctl.h: proceeding with the preprocessor's result</font></div>


<div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">configure: WARNING: sys/sysctl.h: in the future, the compiler will take precedence</font></div><div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">configure: WARNING:     ## -------------------------------------- ##</font></div>


<div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">configure: WARNING:     ## Report this to <a href="mailto:gambit@iro.umontreal.ca" target="_blank">gambit@iro.umontreal.ca</a> ##</font></div>


<div><font face="courier new, monospace" style="background-color:rgb(255,255,204)">configure: WARNING:     ## -------------------------------------- ##</font></div><div><font face="courier new, monospace">checking for sys/sysctl.h... yes</font></div>


<div><font face="courier new, monospace">checking crt_externs.h usability... no</font></div><div><font face="courier new, monospace">checking crt_externs.h presence... no</font></div><div><font face="courier new, monospace">checking for crt_externs.h... no</font></div>


<div><font face="courier new, monospace">checking ws2tcpip.h usability... no</font></div><div><font face="courier new, monospace">checking ws2tcpip.h presence... no</font></div><div><font face="courier new, monospace">checking for ws2tcpip.h... no</font></div>


<div><font face="courier new, monospace">checking TargetConditionals.h usability... no</font></div><div><font face="courier new, monospace">checking TargetConditionals.h presence... no</font></div><div><font face="courier new, monospace">checking for TargetConditionals.h... no</font></div>


<div><font face="courier new, monospace">checking for socklen_t... yes</font></div><div><font face="courier new, monospace">checking for library containing asin... none required</font></div><div><font face="courier new, monospace">checking for library containing dlopen... none required</font></div>


<div><font face="courier new, monospace">checking for library containing shl_load... no</font></div><div><font face="courier new, monospace">checking for library containing socket... none required</font></div><div><font face="courier new, monospace">checking for library containing gethostbyname... none required</font></div>


<div><font face="courier new, monospace">checking for library containing hstrerror... none required</font></div><div><font face="courier new, monospace">checking for library containing openpty... -lutil</font></div><div>

<font face="courier new, monospace">checking for library containing WSAStartup... no</font></div>
<div><font face="courier new, monospace">checking for pipe... yes</font></div><div><font face="courier new, monospace">checking for socketpair... yes</font></div><div><font face="courier new, monospace">checking for chdir... yes</font></div>


<div><font face="courier new, monospace">checking for execvp... yes</font></div><div><font face="courier new, monospace">checking for getgrnam... yes</font></div><div><font face="courier new, monospace">checking for getpid... yes</font></div>


<div><font face="courier new, monospace">checking for getppid... yes</font></div><div><font face="courier new, monospace">checking for getpwnam... yes</font></div><div><font face="courier new, monospace">checking for ioctl... yes</font></div>


<div><font face="courier new, monospace">checking for link... yes</font></div><div><font face="courier new, monospace">checking for mkdir... yes</font></div><div><font face="courier new, monospace">checking for mkfifo... yes</font></div>


<div><font face="courier new, monospace">checking for opendir... yes</font></div><div><font face="courier new, monospace">checking for rename... yes</font></div><div><font face="courier new, monospace">checking for rmdir... yes</font></div>


<div><font face="courier new, monospace">checking for socket... yes</font></div><div><font face="courier new, monospace">checking for stat... yes</font></div><div><font face="courier new, monospace">checking for stat64... no</font></div>


<div><font face="courier new, monospace">checking for strerror... yes</font></div><div><font face="courier new, monospace">checking for symlink... yes</font></div><div><font face="courier new, monospace">checking for sysconf... yes</font></div>


<div><font face="courier new, monospace">checking for sysctl... yes</font></div><div><font face="courier new, monospace">checking for unlink... yes</font></div><div><font face="courier new, monospace">checking for waitpid... yes</font></div>


<div><font face="courier new, monospace">checking for mmap... yes</font></div><div><font face="courier new, monospace">checking for tcgetattr... yes</font></div><div><font face="courier new, monospace">checking for sigaction... yes</font></div>


<div><font face="courier new, monospace">checking for sigemptyset/sigaddset... yes</font></div><div><font face="courier new, monospace">checking for sigprocmask... yes</font></div><div><font face="courier new, monospace">checking for signal... yes</font></div>


<div><font face="courier new, monospace">checking for environ... yes</font></div><div><font face="courier new, monospace">checking for _NSGetEnviron... no</font></div><div><font face="courier new, monospace">checking for clock_gettime... yes</font></div>


<div><font face="courier new, monospace">checking for getclock... no</font></div><div><font face="courier new, monospace">checking for gettimeofday... yes</font></div><div><font face="courier new, monospace">checking for ftime... no</font></div>


<div><font face="courier new, monospace">checking for time... yes</font></div><div><font face="courier new, monospace">checking for nanosleep... yes</font></div><div><font face="courier new, monospace">checking for sleep... yes</font></div>


<div><font face="courier new, monospace">checking for getrusage... yes</font></div><div><font face="courier new, monospace">checking for times... yes</font></div><div><font face="courier new, monospace">checking for clock... yes</font></div>


<div><font face="courier new, monospace">checking for DosQuerySysInfo... no</font></div><div><font face="courier new, monospace">checking for setitimer... yes</font></div><div><font face="courier new, monospace">checking for dos_setvect... no</font></div>


<div><font face="courier new, monospace">checking for DosStartTimer... no</font></div><div><font face="courier new, monospace">checking for VInstall... no</font></div><div><font face="courier new, monospace">checking for shl_load... no</font></div>


<div><font face="courier new, monospace">checking for DosLoadModule... no</font></div><div><font face="courier new, monospace">checking for dxe_load... no</font></div><div><font face="courier new, monospace">checking for GetDiskFragment... no</font></div>


<div><font face="courier new, monospace">checking for dlopen... yes</font></div><div><font face="courier new, monospace">checking for NSLinkModule... no</font></div><div><font face="courier new, monospace">checking for gethostname... yes</font></div>


<div><font face="courier new, monospace">checking for inet_pton... yes</font></div><div><font face="courier new, monospace">checking for getaddrinfo... yes</font></div><div><font face="courier new, monospace">checking for gethostbyname... yes</font></div>


<div><font face="courier new, monospace">checking for gethostbyaddr... yes</font></div><div><font face="courier new, monospace">checking for getservbyname... yes</font></div><div><font face="courier new, monospace">checking for getservbyport... yes</font></div>


<div><font face="courier new, monospace">checking for getprotobyname... yes</font></div><div><font face="courier new, monospace">checking for getprotobynumber... yes</font></div><div><font face="courier new, monospace">checking for getnetbyname... yes</font></div>


<div><font face="courier new, monospace">checking for select... yes</font></div><div><font face="courier new, monospace">checking for openpty... yes</font></div><div><font face="courier new, monospace">checking for getpt... no</font></div>


<div><font face="courier new, monospace">checking for ptsname... no</font></div><div><font face="courier new, monospace">checking for ctermid... yes</font></div><div><font face="courier new, monospace">checking for isastream... no</font></div>


<div><font face="courier new, monospace">checking for hstrerror... yes</font></div><div><font face="courier new, monospace">checking for get_fpc_csr... no</font></div><div><font face="courier new, monospace">checking for struct stat64... no</font></div>


<div><font face="courier new, monospace">checking how g++'s preprocessor evaluates (__GNUC__*1000+__GNUC_MINOR__)>=4002&&(__GNUC__*1000+__GNUC_MINOR__)<=4003...</font></div><div><font face="courier new, monospace">checking how g++'s preprocessor evaluates __llvm__ && !__clang__ && (__GNUC__*1000+__GNUC_MINOR__)<4005...</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -no-cpp-precomp...</font></div><div><font face="courier new, monospace">checking whether g++ accepts -fschedule-insns2...  -fschedule-insns2</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -fno-trapping-math...  -fno-trapping-math</font></div><div><font face="courier new, monospace">checking whether g++ accepts -fno-move-loop-invariants...  -fno-move-loop-invariants</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -fno-keep-inline-dllexport...</font></div><div><font face="courier new, monospace">checking whether g++ accepts -mieee...</font></div><div><font face="courier new, monospace">checking whether g++ accepts -mieee-with-inexact...</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -mieee-fp...  -mieee-fp</font></div><div><font face="courier new, monospace">checking whether g++ accepts -Wall...  -Wall</font></div><div><font face="courier new, monospace">checking whether g++ accepts -W...  -W</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -Wno-unused...  -Wno-unused</font></div><div><font face="courier new, monospace">checking whether g++ accepts -Wno-write-strings...  -Wno-write-strings</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -ftest-coverage...  -ftest-coverage</font></div><div><font face="courier new, monospace">checking whether g++ accepts -fprofile-arcs...  -fprofile-arcs</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -fbranch-probabilities...  -fbranch-probabilities</font></div><div><font face="courier new, monospace">checking whether g++ accepts -O1...  -O1</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -O2...  -O2</font></div><div><font face="courier new, monospace">checking whether g++ accepts -fno-math-errno...  -fno-math-errno</font></div><div><font face="courier new, monospace">checking whether g++ accepts -fno-strict-aliasing...  -fno-strict-aliasing</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -fwrapv...  -fwrapv</font></div><div><font face="courier new, monospace">checking whether g++ accepts -fomit-frame-pointer...  -fomit-frame-pointer</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -fPIC...  -fPIC</font></div><div><font face="courier new, monospace">checking whether g++ accepts -fpic...  -fpic</font></div><div><font face="courier new, monospace">checking whether g++ accepts -fno-common...  -fno-common</font></div>


<div><font face="courier new, monospace">checking whether g++ accepts -rdynamic...</font></div><div><font face="courier new, monospace">checking whether g++ accepts -shared...  -shared</font></div><div><font face="courier new, monospace">checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include</font></div>


<div><font face="courier new, monospace">checking whether -R must be followed by a space... no</font></div><div><font face="courier new, monospace">checking for gethostbyname... (cached) yes</font></div><div><font face="courier new, monospace">checking for connect... yes</font></div>


<div><font face="courier new, monospace">checking for remove... yes</font></div><div><font face="courier new, monospace">checking for shmat... yes</font></div><div><font face="courier new, monospace">checking for IceConnectionNumber in -lICE... yes</font></div>


<div><font face="courier new, monospace">checking whether ln -s works... yes</font></div><div><font face="courier new, monospace">checking for ranlib... ranlib</font></div><div><font face="courier new, monospace">checking whether make sets $(MAKE)... yes</font></div>


<div><font face="courier new, monospace">configure: creating ./config.status</font></div><div><font face="courier new, monospace">config.status: creating makefile</font></div><div><font face="courier new, monospace">config.status: creating include/makefile</font></div>


<div><font face="courier new, monospace">config.status: creating include/gambit.h</font></div><div><font face="courier new, monospace">config.status: creating lib/makefile</font></div><div><font face="courier new, monospace">config.status: creating lib/guide/guidepro</font></div>


<div><font face="courier new, monospace">config.status: creating lib/guide/makefile</font></div><div><font face="courier new, monospace">config.status: creating lib/guide/images/makefile</font></div><div><font face="courier new, monospace">config.status: creating gsi/makefile</font></div>


<div><font face="courier new, monospace">config.status: creating gsc/makefile</font></div><div><font face="courier new, monospace">config.status: creating bin/makefile</font></div><div><font face="courier new, monospace">config.status: creating bin/gambc-cc.unix</font></div>


<div><font face="courier new, monospace">config.status: creating bin/gambc-cc.bat.windows</font></div><div><font face="courier new, monospace">config.status: creating bin/gambc-doc.unix</font></div><div><font face="courier new, monospace">config.status: creating bin/gambc-doc.bat.windows</font></div>


<div><font face="courier new, monospace">config.status: creating misc/makefile</font></div><div><font face="courier new, monospace">config.status: creating doc/makefile</font></div><div><font face="courier new, monospace">config.status: creating tests/makefile</font></div>


<div><font face="courier new, monospace">config.status: creating examples/makefile</font></div><div><font face="courier new, monospace">config.status: creating examples/distr-comp/makefile</font></div><div><font face="courier new, monospace">config.status: creating examples/pi/makefile</font></div>


<div><font face="courier new, monospace">config.status: creating examples/ring/makefile</font></div><div><font face="courier new, monospace">config.status: creating examples/web-repl/makefile</font></div><div><font face="courier new, monospace">config.status: creating examples/web-server/makefile</font></div>


<div><font face="courier new, monospace">config.status: creating examples/tcltk/makefile</font></div><div><font face="courier new, monospace">config.status: creating examples/Xlib-simple/makefile</font></div><div><font face="courier new, monospace">config.status: creating examples/pthread/makefile</font></div>


<div><font face="courier new, monospace">config.status: creating examples/misc/makefile</font></div><div><font face="courier new, monospace">config.status: creating contrib/makefile</font></div><div><font face="courier new, monospace">config.status: creating contrib/GambitREPL/makefile</font></div>


<div><font face="courier new, monospace">config.status: creating prebuilt/makefile</font></div><div><font face="courier new, monospace">config.status: creating prebuilt/macosx/makefile</font></div><div><font face="courier new, monospace">config.status: creating prebuilt/macosx/build-phase2</font></div>


<div><font face="courier new, monospace">config.status: creating prebuilt/windows/makefile</font></div><div><font face="courier new, monospace">config.status: creating prebuilt/windows/build-phase2</font></div><div><font face="courier new, monospace">config.status: creating include/config.h</font></div>


<div><br></div></div></div></div><div><br></div><div><br></div><div><br></div>