One thing I notice is that caml_c_call is the only function that uses the instruction "ret xM" (in all other places the code uses the default "ret" with implicit x30). Hmmm .. do we emulate "ret xM"?
-- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1263747 Title: Arm64 fails to run a binary which runs OK on real hardware Status in QEMU: New Bug description: Note this is using the not-yet-upstream aarch64 patches from: https://github.com/susematz/qemu/tree/aarch64-1.6 ---- ---- This binary: http://oirase.annexia.org/tmp/test.gz runs OK on real aarch64 hardware. It is a statically linked Linux binary which (if successful) will print "hello, world" and exit cleanly. On qemu-arm64 userspace emulator it doesn't print anything and loops forever using 100% CPU. ---- ---- The following section is only if you wish to compile this binary from source, otherwise you can ignore it. First compile OCaml from: https://github.com/ocaml/ocaml (note you have to compile it on aarch64 or in qemu, it's not possible to cross-compile). You will have to apply the one-line patch from: https://sympa.inria.fr/sympa/arc/caml-list/2013-12/msg00179.html ./configure make -j1 world.opt Then do: echo 'print_endline "hello, world"' > test.ml ./boot/ocamlrun ./ocamlopt -I stdlib stdlib.cmxa test.ml -o test ./test To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1263747/+subscriptions