This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]