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