Hi Pascal,

If I don’t use the install_name_tool, and I just leave the compiled binary 
without changing the paths to QT or anything, it all runs fine.
The issue is, I need to copy the libraries into my application bundle to make 
it easy to distribute for OS X,

Can you explain what you mean how I may load the libraries at run-time? I 
looked up CFFI and all I came up with was C Foreign Function Interface, 

Thanks for your help,

-John
> On Sep 25, 2017, at 18:07, Pascal Bourguignon <p...@informatimago.com> wrote:
> 
> 
>> On 26 Sep 2017, at 00:41, John Mercouris <jmercou...@gmail.com 
>> <mailto:jmercou...@gmail.com>> wrote:
>> 
>> Hi Pascal, I’ve done exactly as you said and have the following output:
>> 
>> <output.pdf>
> 
> (format nil "~x"(+ 1025 #xe70))  —> "1271"
> Since it looks like the functions around this address are unrelated to file 
> accesses, then we may suppose that we have an error due to the modifications 
> made by install_name_tool to the binary.
> 
> 
> Try without using this tool.
> 
> If my hypothesis is correct, you will have to load the libraries explicitely 
> at run-time as we’ve always done with cffi…
> 
> 
> 
>> Honestly, I’m not sure what to make of it, it looks very similar to your 
>> output as well,
>> 
>> -John
>>> On Sep 25, 2017, at 16:58, Pascal Bourguignon <p...@informatimago.com 
>>> <mailto:p...@informatimago.com>> wrote:
>>> 
>>> 
>>> 
>>> 
>>>> On 25 Sep 2017, at 22:47, John Mercouris <jmercou...@gmail.com 
>>>> <mailto:jmercou...@gmail.com>> wrote:
>>>> 
>>>> Hi Pascal,
>>>> 
>>>> Thank you for your email,
>>>> 
>>>> 1. You’re correct, I had to manually copy the libraries in to the app 
>>>> bundle, I just did something like:
>>>> 
>>>>  > cp /usr/local/lib/libeql5.1.dylib ./next.app/Contents/Frameworks/
>>>> 
>>>> 2. I saw the message is within ECL, I found the exact file with the error 
>>>> message, it is located in ecl/src/c/unixint.d
>>>> 
>>>> I figured my problem was unrelated to the libraries, but I wasn’t 100% 
>>>> sure, just wanted to include all information,
>>>> 
>>>> 3. I have no idea how to read assembly, I mean I can pick through it, but 
>>>> I won’t be able to really understand what’s going on, nor would I know how 
>>>> to even attach a debugger to the process, are there any other ways that I 
>>>> can examine what’s going on? A source file I can look at? Should I be 
>>>> looking for issues within ECL or EQL?
>>> 
>>> You don’t need to understand the assembly code; you can just watch the name 
>>> of the functions around the indicated location.
>>> 
>>> In the case of my version of libecl, I would find:
>>> 
>>> [pjb@despina :0.0 documentation]$ otool -t -v -V  
>>> /opt/local/lib/libecl.dylib|grep -A300 -e '^_cl_boot:'
>>> _cl_boot:
>>> 0000000000001d34    movl    0x22ddce(%rip), %eax
>>> 0000000000001d3a    testl   %eax, %eax
>>> 
>>> #x1d34 + 1025 = #x2135
>>> 
>>> 00000000000020e2    callq   0x151748 ## symbol stub for: _si_getcwd
>>> 00000000000020e7    movq    %rax, 0x708(%r13)
>>> 00000000000020ee    movl    $0x1003, %esi
>>> 00000000000020f3    movl    $0x1, %edx
>>> 00000000000020f8    movl    $0x1, %ecx
>>> 00000000000020fd    movl    $0x1, %r8d
>>> 0000000000002103    movl    $0x1, %r9d
>>> 0000000000002109    movq    %r14, %rdi
>>> 000000000000210c    callq   0x151814 ## symbol stub for: _si_make_vector
>>> 0000000000002111    movq    %rax, 0x250(%r15)
>>> 0000000000002118    movl    $0x4, %esi
>>> 000000000000211d    movl    $0x3, %edx
>>> 0000000000002122    movl    $0x1, %ecx
>>> 0000000000002127    movq    %rax, %rdi
>>> 000000000000212a    callq   0x15163a ## symbol stub for: 
>>> _si_fill_array_with_elt
>>> 000000000000212f    movq    0x250(%r15), %rax
>>> 0000000000002136    movq    0x10(%rax), %rcx
>>> 000000000000213a    movq    %rcx, 0x240(%r15)
>>> 0000000000002141    movq    0x20(%rax), %rax
>>> 0000000000002145    movq    %rax, 0x248(%r15)
>>> 000000000000214c    movq    0x320(%r15), %rax
>>> 0000000000002153    movq    %rax, 0x134b0(%r13)
>>> 000000000000215a    movq    0x22dbef(%rip), %rdx
>>> 0000000000002161    movq    0x22dbf0(%rip), %rcx
>>> 0000000000002168    leaq    0x4980(%r13), %rdi
>>> 000000000000216f    movl    $0x203, %esi
>>> 0000000000002174    callq   0x150026 ## symbol stub for: 
>>> _cl__make_hash_table
>>> 0000000000002179    movq    %rax, %r15
>>> 000000000000217c    movq    %r15, 0x22daad(%rip)
>>> 0000000000002183    leaq    _char_names(%rip), %rbx
>>> 
>>> we can see that calls to SI:GETCWD, SI:MAKE-VECTOR and 
>>> SI-FILL-ARRAY-WITH-ELT are made just before that address, and a call to 
>>> CL:MAKE-HASH-TABLE will be called just after.
>>> 
>>> So if I had the error at the same cl_boot+1025 offset, I would infer 
>>> there’s some problem with the allocation of a vector.
>>> (But this is not consistent with your file not found error, so check your 
>>> own copy of the library, you may find other functions around the 
>>> cl_boot+1025 address).
>>> 
>>> 
>>> -- 
>>> __Pascal J. Bourguignon__
>> 
> 

Reply via email to