Version: 3.4.1 (using Devel) Compiler: gcc-4.1.2 OS: Linux Installed from: Compiled sources On my Quad G5 using glibc-2.9 + gentoo patches and fixes, _start uses the instruction: mfspr %0, 268 When this is translated into VEX, the handler "ppc32g_dirtyhelper_MFSPR_268_269" is added to the VEX stream. Unfortunately, the return value of this function is 32 bits. This results in a 32 bit write to a temporary register which isn't allowed by the assertion on line 940 of toIR.c. Possbile solutions to this problem would be either allowing 32 bit register writes by removing this assertion or adapting the handler into a ppc64 specific version. If you let me know which you would prefer, I'd be happy to write a patch to fix this issue.
This must have been fixed in the meantime. I don't see any assertion when pushing this through valgrind int main() { asm volatile ( "mfspr 8, 268"); return 0; }