unison-2.48 build fails with latest ocaml and flexdll (ping: Yaakov, Damien)

Mark Geisert mark@maxrnd.com
Fri Apr 29 19:32:00 GMT 2016


Andrew Schulman wrote:
>> On 26/04/2016 21:47, Andrew Schulman wrote:
>>>> I'm trying to build unison 2.48.3, which worked fine the last time I tried
>>>> it, in June 2015.  Today the build fails, with "flexdll error: cannot
>>>> relocate":
>>>>
>>>>>>> Compiling unison2.48-2.48.3-2.x86_64
>>>> ocamlc -o mkProjectInfo unix.cma str.cma mkProjectInfo.ml
>>>> File "mkProjectInfo.ml", line 1:
>>>> Error: Error on dynamically loaded library:
>>>> /usr/lib/ocaml/stublibs/dllunix.so: flexdll error: cannot relocate
>>>> RELOC_REL32, target is too far: 0xfffffffc0f997112  0xf997112
>>>>
>>>> I ran /bin/rebaseall and tried again, with the same result.
>>
>> There was an issue rebasing that file some time ago.
>>
>> https://cygwin.com/ml/cygwin/2016-02/msg00410.html
>>
>> I suggest at least to try a full rebase with
>>    /usr/bin/rebase-trigger full
>> and re-running setup.
>
> Thanks for the pointer. I tried that, but unfortunately it didn't help. The
> error is the same as before.
>
> rebaseall apparently did run:
>
> $ ll /var/cache/rebase
> total 375K
> -rw-r--r-- 1 ASchulma Domain Users  115 Apr 29 10:27 fullrebase.done
> -rw-r--r-- 1 ASchulma Domain Users  35K Apr 29 10:29 rebase_all
> -r--r--r-- 1 ASchulma Domain Users 2.3K Apr 29 10:29 rebase_dyn
> -rw-r--r-- 1 ASchulma Domain Users 2.3K Apr 29 10:29 rebase_dyn.old
> -r--r--r-- 1 ASchulma Domain Users  30K Apr 29 10:29 rebase_exe
> -rw-r--r-- 1 ASchulma Domain Users  30K Apr 29 10:29 rebase_exe.old
> -r--r--r-- 1 ASchulma Domain Users  35K Apr 29 10:29 rebase_lst
> -rw-r--r-- 1 ASchulma Domain Users  35K Apr 29 10:29 rebase_lst.old
> -r--r--r-- 1 ASchulma Domain Users  96K Apr 29 10:29 rebase_pkg
> -rw-r--r-- 1 ASchulma Domain Users  96K Apr 29 10:29 rebase_pkg.old
> -r--r--r-- 1 ASchulma Domain Users   31 Apr 29 10:29 rebase_user
> -rw-r--r-- 1 ASchulma Domain Users    0 Jan  1  1970 rebase_user.old
> -r--r--r-- 1 ASchulma Domain Users   31 Apr 29 10:29 rebase_user_exe
> -rw-r--r-- 1 ASchulma Domain Users    0 Jan  1  1970 rebase_user_exe.old
>
> And dllunix.so does seem to have been rebased:
>
> $ grep dllunix /var/cache/rebase/rebase_all
> /usr/lib/ocaml/stublibs/dllunix.so
>
> $ rebase -i /usr/lib/ocaml/stublibs/dllunix.so
> /usr/lib/ocaml/stublibs/dllunix.so        base 0x0003eff30000 size
> 0x0004b000
>
> But still every ocaml run fails with
>
> Error: Error on dynamically loaded library:
> /usr/lib/ocaml/stublibs/dllunix.so: flexdll error: cannot relocate
> RELOC_REL32, target is too far: 0xfffffffc0f997112  0xf997112
>
> Any other ideas for how I can get ocaml to work?

This looks kind of reminiscent of issues I've run into and reported on the main 
list, issues with xpdf and GMP-ECM.  I can't promise these incantations below 
will work, but maybe you'll be lucky.  I suspect there's something more 
widespread going on with relocations on 64-bit Cygwin but I can't pin it down.

A bald xpdf run failed with...
Cygwin runtime failure: /usr/bin/xpdf.exe: Invalid relocation.  Offset 
0x2fb02bad9 at address 0x100494523 doesn't fit into 32 bits
I rebased /usr/bin/cygXt-6.dll from 0x0003fb480000 down to 0x0000fb480000, i.e. 
just turn the first 3 in the address to 0, and that allowed xpdf to run.

Interestingly, rebuilding xpdf with gcc 5.3.0 made an executable that runs even 
with cygXt-6.dll at its original address.  The machine instruction that provoked 
the relocation error is different in a 5.3.0 object than a 4.9.2 object such as 
the distributed xpdf.exe.  Might be a major clue here.

The GMP-ECM issue was another Cygwin runtime failure just like xpdf's but 
involving /usr/bin/cyggmp-10.dll and I worked around that by rebasing that DLL 
in similar fashion.

So for your case I'd first try rebasing flexdll.so down to 0x0000eff30000 (you 
may collide with something else so pay attention to rebase complaints and try a 
different address if necessary).  If that doesn't help then try rebuilding 
flexdll.so with gcc 5.3.0 if it is currently being built with an older gcc.

..mark



More information about the Cygwin-apps mailing list