-
Notifications
You must be signed in to change notification settings - Fork 414
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ctypes stanza does not compile cstubs .o files with -fPIC #5809
Comments
cc @mbacarella |
Hmm, should the ctypes stuff be compiled using the value in EDIT: or, rather, whatever corresponds to
Darwin
|
Anyway, I believe the problem here is in Ideally instead of replacing Is there a clean way to do this? The interface doesn't expose such functions. I wonder if this is a design decision on purpose or if it's fine to add something like an |
Feel free to extend the interface as you wish to the fix the bug. |
@mbacarella #5816 solves my problem; the stubs are compiled with -fPIC (and the rest of |
…ne-site, dune-rpc, dune-rpc-lwt, dune-private-libs, dune-glob, dune-configurator, dune-build-info, dune-action-plugin and chrome-trace (3.3.0) CHANGES: - Sandbox preprocessing, lint, and dialect rules by default. All these rules now require precise dependency specifications (ocaml/dune#5807, @rgrinberg) - Allow list expansion in the `pps` specification for preprocessing (ocaml/dune#5820, @Firobe) - Add warnings 67-69 to dune's default set of warnings. These are warnings of the form "unused X.." (ocaml/dune#5844, @rgrinbreg) - Introduce project "composition" for coq theories. Coq theories in separate projects can now refer to each other when in the same workspace (ocaml/dune#5784, @Alitzer, @rgrinberg) - Fix hint message for ``data_only_dirs`` that wrongly mentions the unknown constructor ``data_only`` (ocaml/dune#5803, @lambdaxdotx) - Fix creating sandbox directory trees by getting rid of buggy memoization (@5794, @rgrinberg, @snowleopard) - Handle directory dependencies in sandboxed rules. Previously, the parents of these directory dependencies weren't created. (ocaml/dune#5754, @rgrinberg) - Set the exit code to 130 when dune is terminated with a signal (ocaml/dune#5769, fixes ocaml/dune#5757) - Support new locations of unix, str, dynlink in OCaml >= 5.0 (ocaml/dune#5582, @dra27) - The ``coq.theory`` stanza now produces rules for running ``coqdoc``. Given a theory named ``mytheory``, the directory targets ``mytheory.html/`` and ``mytheory.tex/`` or additionally the aliases `@doc` and `@doc-latex` will build the HTML and LaTeX documentation repsectively. (ocaml/dune#5695, fixes ocaml/dune#3760, @Alizter) - Coq theories marked as `(boot)` cannot depend on other theories (ocaml/dune#5867, @ejgallego) - Ignore `bigarray` in `(libraries)` with OCaml >= 5.0. (ocaml/dune#5526, fixes ocaml/dune#5494, @moyodiallo) - Start with :standard when building the ctypes generated foreign stubs so that we include important compiler flags, such as -fPIC (ocaml/dune#5816, fixes ocaml/dune#5809).
looks like this issue is back in dune 3.11.1 at least |
would you mind sharing reproduction steps? I upgraded to dune 3.11.1 and updated my reproduction, but the gcc command building the object file includes
And using the |
Please see my minimal example here: https://github.com/droyo/dune32-ctypes-fpic
Expected Behavior
When building a library with the ctypes stub generation in dune 3.2.0, dune should generate position-independent object files. This ensures that they can be put into the shared library
$lib/dll$lib_stubs.so
later in the build.Actual Behavior
Dune runs a command like the following:
note the lack of
-fPIC
. In my example, this does not cause a problem on its own, because the relocations that gcc generates are not deemed incompatible with dynamic linking by gcc:However, if I patch dune to enable use of the
return_errno
policy, and use it, the generated c code now requires aR_X86_64_PC32
relocation forCaml_state
:And then compilation fails with the error:
I can work around this issue with a
vendored
build_flags_resolver
:Reproduction
ctypes
(dune might pull this in already)dune build
-fPIC
option is absent from the gcc command (or any other flags in:standard
, really).Specifications
dune
(output ofdune --version
): 3.2.0ocaml
(output ofocamlc --version
): reproduced on 4.13.1, 4.14.0The text was updated successfully, but these errors were encountered: