Disable DL_LOAD_PATH prepending for @-paths on Darwin#42721
Disable DL_LOAD_PATH prepending for @-paths on Darwin#42721staticfloat merged 3 commits intomasterfrom
DL_LOAD_PATH prepending for @-paths on Darwin#42721Conversation
Many thanks to Randy Rucker from Apple for pointing out that we were
technically relying on undefined behavior in `dyld` for loading things
via `jl_dlopen("@loader_path/@rpath/libfoo.dylib")`, due to the
composition of `dlopen("@rpath/libfoo.dylib")` in our Julia code, and
the `DL_LOAD_PATH` prepending we do in `jl_load_dynamic_library()`.
This PR uses a slightly modified version of a patch emailed to me by
Randy, and should solve
JuliaLang/Downloads.jl#149 on macOS Monterey
where the undefined behavior in `dyld` has changed.
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
|
Confirmed to fix JuliaLang/Downloads.jl#149 |
|
Why is this code trying to handle full paths (with Also, seems like we have special handling here for |
Ironically, the
I don't quite understand what you're asking. |
|
I don't understand why this code is combining |
|
Aha, I see what you mean. Yeah, that's not necessarily useful. I think we can probably refactor this to be a three-step process:
This way, we'll have consistent handling across platforms as much as possible, and we cut down on unnecessary |
|
I agree |
|
Looking into this a bit deeper, I see that we are actually transforming the entries of I had forgotten that that was how I designed this, and I'm not at all sure that this is precisely what we want. I don't think we're actively using this feature yet, so we can still change it if we want to. This was done to serve these changes from my JLL stdlibs PR, where I wanted to get |
* Disable `DL_LOAD_PATH` prepending for `@`-paths on Darwin
Many thanks to Randy Rucker from Apple for pointing out that we were
technically relying on undefined behavior in `dyld` for loading things
via `jl_dlopen("@loader_path/@rpath/libfoo.dylib")`, due to the
composition of `dlopen("@rpath/libfoo.dylib")` in our Julia code, and
the `DL_LOAD_PATH` prepending we do in `jl_load_dynamic_library()`.
This PR uses a slightly modified version of a patch emailed to me by
Randy, and should solve
JuliaLang/Downloads.jl#149 on macOS Monterey
where the undefined behavior in `dyld` has changed.
* Apply suggestions from code review
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
* Use `[]` instead of `*`
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
(cherry picked from commit 76c2431)
* Disable `DL_LOAD_PATH` prepending for `@`-paths on Darwin
Many thanks to Randy Rucker from Apple for pointing out that we were
technically relying on undefined behavior in `dyld` for loading things
via `jl_dlopen("@loader_path/@rpath/libfoo.dylib")`, due to the
composition of `dlopen("@rpath/libfoo.dylib")` in our Julia code, and
the `DL_LOAD_PATH` prepending we do in `jl_load_dynamic_library()`.
This PR uses a slightly modified version of a patch emailed to me by
Randy, and should solve
JuliaLang/Downloads.jl#149 on macOS Monterey
where the undefined behavior in `dyld` has changed.
* Apply suggestions from code review
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
* Use `[]` instead of `*`
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
(cherry picked from commit 76c2431)
* Disable `DL_LOAD_PATH` prepending for `@`-paths on Darwin
Many thanks to Randy Rucker from Apple for pointing out that we were
technically relying on undefined behavior in `dyld` for loading things
via `jl_dlopen("@loader_path/@rpath/libfoo.dylib")`, due to the
composition of `dlopen("@rpath/libfoo.dylib")` in our Julia code, and
the `DL_LOAD_PATH` prepending we do in `jl_load_dynamic_library()`.
This PR uses a slightly modified version of a patch emailed to me by
Randy, and should solve
JuliaLang/Downloads.jl#149 on macOS Monterey
where the undefined behavior in `dyld` has changed.
* Apply suggestions from code review
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
* Use `[]` instead of `*`
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
(cherry picked from commit 76c2431)
* Disable `DL_LOAD_PATH` prepending for `@`-paths on Darwin
Many thanks to Randy Rucker from Apple for pointing out that we were
technically relying on undefined behavior in `dyld` for loading things
via `jl_dlopen("@loader_path/@rpath/libfoo.dylib")`, due to the
composition of `dlopen("@rpath/libfoo.dylib")` in our Julia code, and
the `DL_LOAD_PATH` prepending we do in `jl_load_dynamic_library()`.
This PR uses a slightly modified version of a patch emailed to me by
Randy, and should solve
JuliaLang/Downloads.jl#149 on macOS Monterey
where the undefined behavior in `dyld` has changed.
* Apply suggestions from code review
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
* Use `[]` instead of `*`
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
(cherry picked from commit 76c2431)
…42721) * Disable `DL_LOAD_PATH` prepending for `@`-paths on Darwin Many thanks to Randy Rucker from Apple for pointing out that we were technically relying on undefined behavior in `dyld` for loading things via `jl_dlopen("@loader_path/@rpath/libfoo.dylib")`, due to the composition of `dlopen("@rpath/libfoo.dylib")` in our Julia code, and the `DL_LOAD_PATH` prepending we do in `jl_load_dynamic_library()`. This PR uses a slightly modified version of a patch emailed to me by Randy, and should solve JuliaLang/Downloads.jl#149 on macOS Monterey where the undefined behavior in `dyld` has changed. * Apply suggestions from code review Co-authored-by: Jameson Nash <vtjnash@gmail.com> * Use `[]` instead of `*` Co-authored-by: Jameson Nash <vtjnash@gmail.com>
…42721) * Disable `DL_LOAD_PATH` prepending for `@`-paths on Darwin Many thanks to Randy Rucker from Apple for pointing out that we were technically relying on undefined behavior in `dyld` for loading things via `jl_dlopen("@loader_path/@rpath/libfoo.dylib")`, due to the composition of `dlopen("@rpath/libfoo.dylib")` in our Julia code, and the `DL_LOAD_PATH` prepending we do in `jl_load_dynamic_library()`. This PR uses a slightly modified version of a patch emailed to me by Randy, and should solve JuliaLang/Downloads.jl#149 on macOS Monterey where the undefined behavior in `dyld` has changed. * Apply suggestions from code review Co-authored-by: Jameson Nash <vtjnash@gmail.com> * Use `[]` instead of `*` Co-authored-by: Jameson Nash <vtjnash@gmail.com>
* Disable `DL_LOAD_PATH` prepending for `@`-paths on Darwin
Many thanks to Randy Rucker from Apple for pointing out that we were
technically relying on undefined behavior in `dyld` for loading things
via `jl_dlopen("@loader_path/@rpath/libfoo.dylib")`, due to the
composition of `dlopen("@rpath/libfoo.dylib")` in our Julia code, and
the `DL_LOAD_PATH` prepending we do in `jl_load_dynamic_library()`.
This PR uses a slightly modified version of a patch emailed to me by
Randy, and should solve
JuliaLang/Downloads.jl#149 on macOS Monterey
where the undefined behavior in `dyld` has changed.
* Apply suggestions from code review
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
* Use `[]` instead of `*`
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
(cherry picked from commit 76c2431)
Many thanks to Randy Rucker from Apple for pointing out that we were
technically relying on undefined behavior in
dyldfor loading thingsvia
jl_dlopen("@loader_path/@rpath/libfoo.dylib"), due to thecomposition of
dlopen("@rpath/libfoo.dylib")in our Julia code, andthe
DL_LOAD_PATHprepending we do injl_load_dynamic_library().This PR uses a slightly modified version of a patch emailed to me by
Randy, and should solve
JuliaLang/Downloads.jl#149 on macOS Monterey
where the undefined behavior in
dyldhas changed.