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
I'm using AIX 5.3
Caml-list mailing list. Subscription management:
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs
I confirm that ocamlopt/AIX works well (thanks to Christoph).
The best solution is maybe to understand why ocamlopt cannot be built ?
Sylvain Le Gall
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
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
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
as -o power-aix.o power-aix.S
power-aix.S: line 103: 1252-023 The symbol .caml_garbage_collection is
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
..... (many similar messages)
How have you obtained running ocamlopt?
$ cd asmrun
$ cpp -DSYS_aix power-aix.S > power-aix.s
$ as -u power-aix.s
$ cd ..
$ make opt
$ 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.
> 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: