I have an aarch64 Linux application that has the following instruction in its code: 7d48c: d53be002 mrs x2, cntfrq_el0 That causes valgrind to abort execution with ARM64 front end: branch_etc disInstr(arm64): unhandled instruction 0xD53BE002 disInstr(arm64): 1101'0101 0011'1011 1110'0000 0000'0010 ==2561== valgrind: Unrecognised instruction at address 0x48eb48c. ==2561== at 0x48EB48C: xlnkGetGlobalCounter (in /media/card/libfilter2d_optflow.so) ==2561== Your program just tried to execute an instruction that Valgrind ==2561== did not recognise. There are two possible reasons for this. ==2561== 1. Your program has a bug and erroneously jumped to a non-code ==2561== location. If you are running Memcheck and you just saw a ==2561== warning about a bad jump, it's probably your program's fault. ==2561== 2. The instruction is legitimate but Valgrind doesn't handle it, ==2561== i.e. it's Valgrind's fault. If you think this is the case or ==2561== you are not sure, please let us know and we'll try to fix it. ==2561== Either way, Valgrind will now raise a SIGILL signal which will ==2561== probably kill your program. ==2561== ==2561== Process terminating with default action of signal 4 (SIGILL) ==2561== Illegal opcode at address 0x48EB48C ==2561== at 0x48EB48C: xlnkGetGlobalCounter (in /media/card/libfilter2d_optflow.so)
uname -a: Linux plnx_aarch64 4.9.0 #141 SMP Wed Jun 21 15:49:29 PDT 2017 aarch64 aarch64 aarch64 GNU/Linux
Created attachment 106221 [details] Full valgrind output This is the output from the valgrind run with the '-v' option.
This has been fixed already, in the 3.13.0 release which you can now download from valgrind.org. Upgrade!
Thanks, Julian. Correct 3.13 works, unfortunately that's not available through open-embedded yet.