Hi David, > I think this down to neglect - the PIC/shared versions of the runtime were > contributed for a specific purpose and aren't properly maintained/tested > AFAICT. > > I'm not sure that libcamlrun_shared can ever have worked on Cygwin, at least > certainly not since OCaml 3.11 (which is a loooong time ago). The patch > builds cygcamlrun_shared.dll as a plugin DLL - so the symbols will have been > stripped and moved into symtbl (hence the huge number of missing symbols when > linking against it when it gets passed to a normal linker). > > What normally happens with flexlink is that either an executable or a "main > program DLL" (compiled with flexlink -maindll) would receive that symtbl from > a DLL it flexdll_dlopen's and the DLL receives static_symtbl from the > executable. That then means that the DLL can relocate any symbols it expected > from the main executable and any other flexdll_dlopen'd DLLs. However, that's > all meant to happen at runtime - I don't think flexlink has ever supported > compiling an executable itself which must flexdll_dlopen DLLs before its main > function. > > I think it's quite feasible to add that to flexlink, but it's not a small > piece of work - in the meantime I'd suggest instead deleting the > BYTECODE_SHARED_LIBRARIES += and NATIVE_SHARED_LIBRARIES += lines in > runtime/Makefile instead of patching them.
Duly noted. Thanks for the explanation! > > Would you be able to send the entire config.log file (off-list is fine!). I'm > not seeing this at all in Cygwin32 here! > > All best, > > > David Config.log sent :) On another note, on x86_64, 16 of the testsuite tests are failing: tests/lib-scanf-2/'tscanf2_master.ml' with 1.1.1.1.1.1 (run) tests/lib-unix/common/'cloexec.ml' with 1.1.1.1.1.1.1 (run) tests/lib-systhreads/'testfork.ml' with 1.1.1.1 (bytecode) tests/tool-debugger/basic/'debuggee.ml' with 1.1.1.1.1.1.1 (check-program-output) tests/lib-unix/common/'process_pid.ml' with 1.1 (bytecode) tests/tool-debugger/dynlink/'host.ml' with 1.1.1.1.1.1.1.2.1 (check-program-output) tests/lib-unix/common/'pipe_eof.ml' with 1.1 (bytecode) tests/lib-unix/common/'wait_nohang.ml' with 1.1.1.1.1.1 (run) tests/tool-debugger/find-artifacts/'debuggee.ml' with 1.1.1.1.1.1.1.1.1.1 (check-program-output) tests/c-api/'alloc_async.ml' with 1 (native) tests/c-api/'alloc_async.ml' with 2 (bytecode) tests/lib-unix/common/'test_unix_cmdline.ml' with 1.1.1.1.1.1 (run) tests/lib-unix/common/'redirections.ml' with 1.1.1.1.1.1 (run) tests/tool-debugger/module_named_main/'main.ml' with 1.1.1.1.1.1.1 (check-program-output) tests/tool-debugger/no_debug_event/'noev.ml' with 1.1.1.1.1.1.1.1.1.1 (check-program-output) tests/tool-debugger/printer/'debuggee.ml' with 1.1.1.2.1.1.1 (check-program-output) Two are innocuous "unused variable" warnings, but the others are of this form: > Loading program... 0 [main] ocamlrun 40657 child_info_fork::abort: > address space needed by 'dllunix.so' (0x400000) is already occupied > Unix error: 'fork' failed: Resource temporarily unavailable Github issues (e.g., https://github.com/ocaml/opam/issues/3785) have encountered this error before, but the issue seems to imply it's been resolved. Are these test failures expected/known (to be fair, 16 is a small number compared to 3000)? I can send the test log too if that helps. Thanks, William