I have to build the bytecode on a different machine (because it's
difficult to do on AIX). I believe this shouldn't induce any problems.
Trivial bytecode executes correctly regardless where it is created.
I set LIBPATH to point to ocaml/stublibs and try running some bytecode
uning Unix module. This results in:
Fatal error: unknown C primitive `unix_getsockopt_bool'
If I compile simple "let _ = Unix.sleep 1" on the target machine, I get
bytecode that causes ocamlrun to crash with:
Illegal instruction (core dumped)
Does anybody have an idea for workaround? Some understanding what's
going on?
I'm using AIX 5.3
Dawid
_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs
Christoph Bauer
I confirm that ocamlopt/AIX works well (thanks to Christoph).
The best solution is maybe to understand why ocamlopt cannot be built ?
Regards
Sylvain Le Gall
Regards,
Sylvain Le Gall
It's a long time since I worked on that.
I suspected that ld, didn't export all needed symbols.
Playing with linker flags didn't help.
With an older version (3.09.3) I also cannot load unix.cma.
I get this error message:
Cannot load required shared library dllunix.
Reason: dynamic loading not supported on this platform.
So in config/s.h I defined for 3.11.0
#define SUPPORT_DYNAMIC_LINKING
and tried to fix the compiler/linker flags in config/Makefile.
The linker is called with -bexpall, but as you can see, it doesn't solve the
case.
Regards,
Christoph Bauer
Ceterum censeo Ocaml 3.11.2 Issue #4844, #4034 et #4644 includam esse
The problem is that the assembler available on AIX doesn't unserstand
power-aix.S:
as -o power-aix.o power-aix.S
Assembler:
power-aix.S: line 103: 1252-023 The symbol .caml_garbage_collection is
not defined.
power-aix.S: line 103: 1252-087 The target of the branch instruction
must be a relocatable or external expression.
power-aix.S: line 457: 1252-023 The symbol caml_young_limit is not defined.
power-aix.S: line 457: 1252-040 The specified expression is not valid.
Make sure that all symbols are defined.
Check the rules on symbols used in an arithmetic expression
concerning relocation.
..... (many similar messages)
How have you obtained running ocamlopt?
Please try:
$ cd asmrun
$ cpp -DSYS_aix power-aix.S > power-aix.s
$ as -u power-aix.s
$ cd ..
$ make opt
Christoph Bauer
$ cp power-aix.S power-aix.s
$ as -u -o power-aix.o power-aix.s
$ cd ..
$ gmake opt
So I get working native code.
The remaining problem is that camlp4 crashes on some Unix call when
preprocessing. I solved it by preprocessing all the code on another machine.
Thank you for your help.
Dawid
> So I get working native code.
> The remaining problem is that camlp4 crashes on some Unix call when preprocessing. I solved it by preprocessing all > the code on another machine.
I looked again into that problem. ocamlrun opens a DLL (dllunix.so)
and this dll trys to use symbols from ocamlrun (caml_alloc_string).
Unfortunatly this doesn't work.
The easiest solution is, to link ocamlrun agains libcamlrun_shared.so and to
set an internal libpath.
Download it from here:
http://home.arcor.de/chr_bauer/ocaml-aix.html
Christoph Bauer