[haiku-commits] Re: haiku: hrev46150 - src/kits/package/solver build/jam src/tools/create_repository_config src/build/libroot

  • From: Jessica Hamilton <jessica.l.hamilton@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 1 Oct 2013 11:35:39 +1300

On 1 October 2013 11:34, Jessica Hamilton <jessica.l.hamilton@xxxxxxxxx>wrote:

> On 1 October 2013 11:28, Jessica Hamilton <jessica.l.hamilton@xxxxxxxxx>wrote:
>
>>
>>
>> On 1 October 2013 10:50, Rene Gollent <anevilyak@xxxxxxxxx> wrote:
>>
>>>
>>> On Sep 30, 2013 5:47 PM, "Jessica Hamilton" <
>>> jessica.l.hamilton@xxxxxxxxx> wrote:
>>> >
>>> > No, the problem is the dlopen call is failing because of the
>>> unresolved dependency on libroot_build.so for whatever reason as per my
>>> other email.
>>>
>>> Not on FreeBSD, I did in fact verify what was going on before sending my
>>> reply.
>>>
>> I take that back then :-) Linkers are definitely an arcane art...
>>
>> On Linux I get this error from dlerror:
>>
>> libpackage-add-on-libsolv_build.so: invalid mode for dlopen(): Invalid
>> argument
>>
>> Still digging...
>>
>
> Okay, so the problem is passing the value 0 to dlopen instead of the
> proper flags. Obviously they differ across platforms.
>
> diff --git a/src/kits/package/solver/Solver.cpp
> b/src/kits/package/solver/Solver
> index 7f5c630..8a7bfc4
> --- a/src/kits/package/solver/Solver.cpp
> +++ b/src/kits/package/solver/Solver.cpp
> @@ -28,7 +28,7 @@ load_libsolv_solver_add_on()
>  #ifdef HAIKU_TARGET_PLATFORM_HAIKU
>         void* imageHandle = dlopen("libpackage-add-on-libsolv.so", 0);
>  #else
> -       void* imageHandle = dlopen("libpackage-add-on-libsolv_build.so",
> 0);
> +       void* imageHandle = dlopen("libpackage-add-on-libsolv_build.so",
> RTLD_LA
>  #endif
>         if (imageHandle == NULL)
>                 return;
>
> Seems to be a working fix for me.
>

Oops, that should be: void* imageHandle =
dlopen("libpackage-add-on-libsolv_build.so", RTLD_LAZY | RTLD_LOCAL);

Cheers.
Jessica

Other related posts: