The adapter_helper_* functions are defined in qemu/include/exec/helper-gen.h, and may be included in different source files causing pointers to the same adapter to differ. In particular, tcg.c records the pointers in the s->helpers map, while the helper generation commands issued from qemu/target-* are pointing to different adapters, whose pointers are not registered in s->helpers.
This causes a null-pointer dereference which Emscripten ignores. Incorrect flags value are returned for queried functions causing the cpu_exit wrappers to be optimized away and Unicorn.js gets stuck in an endless loop.
Stick to v1.0-rc3 until I fix this. Probably earlier versions weren't affected out of sheer luck.
The
adapter_helper_*
functions are defined inqemu/include/exec/helper-gen.h
, and may be included in different source files causing pointers to the same adapter to differ. In particular,tcg.c
records the pointers in thes->helpers
map, while the helper generation commands issued fromqemu/target-*
are pointing to different adapters, whose pointers are not registered ins->helpers
.This causes a null-pointer dereference which Emscripten ignores. Incorrect flags value are returned for queried functions causing the cpu_exit wrappers to be optimized away and Unicorn.js gets stuck in an endless loop.
Stick to v1.0-rc3 until I fix this. Probably earlier versions weren't affected out of sheer luck.