[m-rev.] for post-commit review: classify oc_link options by target language

Zoltan Somogyi zoltan.somogyi at runbox.com
Fri Jun 13 14:43:54 AEST 2025



On Fri, 13 Jun 2025 11:59:42 +1000, Peter Wang <novalazy at gmail.com> wrote:

> On Thu, 12 Jun 2025 23:05:34 +1000 "Zoltan Somogyi" <zoltan.somogyi at runbox.com> wrote:
> > For review by anyone.
> > 
> > The diff to handle_options.m points out what may be a bug, but I cannot tell,
> > because the only effect is on the value of an option whose meaning I don't understand:
> > default_runtime_library_directory. Does anyone else know?
> 
> --no-default-runtime-library-directory prevents the compiler adding any
> directories to the runtime search path automatically. You can see the
> RUNPATH/RPATH that gets embedded into a binary with (on Linux):
>     objdump -x $binary | grep 'R.*PATH'
> 
> If you are distributing dynamically linked binaries to the world,
> you probably don't want the binary to be searching for shared libraries
> in locations specific to YOUR machine.
> 
> > The obvious fix is
> > to switch the order of the two calls involved, but my guess iis that if that happens
> > to be wrong, we don't have an automatic test catch it. Can anyone confirm or
> > deny that?
> 
> If I understood properly, the bug you mention could occur in this situation:
> 
> In handle_directory_options, if mercury_linkage = "static",
> then standard library directories are NOT added to
> runtime_link_library_directories, and default_runtime_library_directory
> is also forced to 'no'.
> 
> In handle_target_compile_link_symlink_options,
> if shared_lib_not_executable = yes, then linkage and mercury_linkage
> will be set to "shared". But no libraries will be have been added to
> runtime_link_library_directories, even if
> default_runtime_library_directory was originally 'yes'.
> 
> --compile-to-shared-lib (shared_lib_not_executable) is an undocumented
> option only used to implement interactive queries in the debugger.
> The debugger doesn't pass --mercury-linkage static at the same time
> (obviously, since it is trying to build a shared library),
> so the bug should never arise in practice.
> 
> As for a fix, I think we just need to move the shared_lib_not_executable
> implications before handle_directory_options?

The attached diff does this.

Zoltan.



-------------- next part --------------
A non-text attachment was scrubbed...
Name: Log.ml
Type: application/octet-stream
Size: 39 bytes
Desc: not available
URL: <http://lists.mercurylang.org/archives/reviews/attachments/20250613/708eb4fb/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: DIFF.ml
Type: application/octet-stream
Size: 2073 bytes
Desc: not available
URL: <http://lists.mercurylang.org/archives/reviews/attachments/20250613/708eb4fb/attachment-0001.obj>


More information about the reviews mailing list