[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:34:10 +1300

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.

Other related posts: