mer-tools/valgrind — pull request #1 by amtep (2013-08-06 20:35:56+00:00)
Title: [arm] Implement missing VCVT modes

Implement conversion between floating point and fixed point for ARM VFP.

Taken from upstream valgrind/VEX svn r2694 and r2695,
with corresponding tests from upstream valgrind svn r13312 and r13313.

Those instructions are generated by newer versions of gcc.
The patch fixes this crash:

disInstr(arm): unhandled instruction: 0xEEBA0BEF
cond=14(0xE) 27:20=235(0xEB) 4:4=0 3:0=15(0xF)
==6868== valgrind: Unrecognised instruction at address 0x49b4e3c.
==6868== at 0x49B4E3C: QQuickImage::updatePaintNode(QSGNode*, QQuickItem::UpdatePaintNodeData*) (qquickimage.cpp:628)
==6868== by 0x495B337: QQuickWindowPrivate::updateDirtyNode(QQuickItem*) (qquickwindow.cpp:2441)
==6868== by 0x495BB9B: QQuickWindowPrivate::updateDirtyNodes() (qquickwindow.cpp:2262)
==6868== by 0x495BBE7: QQuickWindowPrivate::syncSceneGraph() (qquickwindow.cpp:308)
==6868== by 0x493C6A3: QSGRenderThread::sync() (qsgthreadedrenderloop.cpp:530)
==6868== by 0x493CA03: QSGRenderThread::syncAndRender() (qsgthreadedrenderloop.cpp:569)
==6868== by 0x493CF07: QSGRenderThread::run() (qsgthreadedrenderloop.cpp:666)
==6868== by 0x517BEAB: ??? (in /usr/lib/libQt5Core.so.5.1.0)
==6868== Your program just tried to execute an instruction that Valgrind
==6868== did not recognise. There are two possible reasons for this.
==6868== 1. Your program has a bug and erroneously jumped to a non-code
==6868== location. If you are running Memcheck and you just saw a
==6868== warning about a bad jump, it's probably your program's fault.
==6868== 2. The instruction is legitimate but Valgrind doesn't handle it,
==6868== i.e. it's Valgrind's fault. If you think this is the case or
==6868== you are not sure, please let us know and we'll try to fix it.
==6868== Either way, Valgrind will now raise a SIGILL signal which will
==6868== probably kill your program.
==6868==
==6868== Process terminating with default action of signal 4 (SIGILL)
==6868== Illegal opcode at address 0x49B4E3C
==6868== at 0x49B4E3C: QQuickImage::updatePaintNode(QSGNode*, QQuickItem::UpdatePaintNodeData*) (qquickimage.cpp:628)
==6868== by 0x495B337: QQuickWindowPrivate::updateDirtyNode(QQuickItem*) (qquickwindow.cpp:2441)
==6868== by 0x495BB9B: QQuickWindowPrivate::updateDirtyNodes() (qquickwindow.cpp:2262)
==6868== by 0x495BBE7: QQuickWindowPrivate::syncSceneGraph() (qquickwindow.cpp:308)
==6868== by 0x493C6A3: QSGRenderThread::sync() (qsgthreadedrenderloop.cpp:530)
==6868== by 0x493CA03: QSGRenderThread::syncAndRender() (qsgthreadedrenderloop.cpp:569)
==6868== by 0x493CF07: QSGRenderThread::run() (qsgthreadedrenderloop.cpp:666)
==6868== by 0x517BEAB: ??? (in /usr/lib/libQt5Core.so.5.1.0)