Bug 448293

Summary: vex amd64->IR: unhandled instruction bytes: 0xC5 0xE5 0x47 0xDB 0xC5 0xDD 0x47 0xE4 0x66 0xF
Product: [Developer tools] valgrind Reporter: kdebugs
Component: memcheckAssignee: Julian Seward <jseward>
Status: REPORTED ---    
Severity: normal    
Priority: NOR    
Version First Reported In: 3.18.1   
Target Milestone: ---   
Platform: Gentoo Packages   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description kdebugs 2022-01-12 00:44:22 UTC
I'm trying to run Memcheck on a binary for tigerlake and I keep getting this error:


==3748== Memcheck, a memory error detector
==3748== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==3748== Using Valgrind-3.19.0.GIT and LibVEX; rerun with -h for copyright info
==3748== Command: ./test
==3748== 
vex amd64->IR: unhandled instruction bytes: 0xC5 0xE5 0x47 0xDB 0xC5 0xDD 0x47 0xE4 0x66 0xF
vex amd64->IR:   REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR:   VEX=1 VEX.L=1 VEX.nVVVV=0x3 ESC=0F
vex amd64->IR:   PFX.66=1 PFX.F2=0 PFX.F3=0
==3748== valgrind: Unrecognised instruction at address 0x401c00f.
==3748==    at 0x401C00F: _dl_sysdep_start (in /lib64/ld-2.33.so)
==3748==    by 0x4002086: _dl_start (in /lib64/ld-2.33.so)
==3748==    by 0x4001057: ??? (in /lib64/ld-2.33.so)
==3748== Your program just tried to execute an instruction that Valgrind
==3748== did not recognise.  There are two possible reasons for this.
==3748== 1. Your program has a bug and erroneously jumped to a non-code
==3748==    location.  If you are running Memcheck and you just saw a
==3748==    warning about a bad jump, it's probably your program's fault.
==3748== 2. The instruction is legitimate but Valgrind doesn't handle it,
==3748==    i.e. it's Valgrind's fault.  If you think this is the case or
==3748==    you are not sure, please let us know and we'll try to fix it.
==3748== Either way, Valgrind will now raise a SIGILL signal which will
==3748== probably kill your program.
==3748== 
==3748== Process terminating with default action of signal 4 (SIGILL)
==3748==  Illegal opcode at address 0x401C00F
==3748==    at 0x401C00F: _dl_sysdep_start (in /lib64/ld-2.33.so)
==3748==    by 0x4002086: _dl_start (in /lib64/ld-2.33.so)
==3748==    by 0x4001057: ??? (in /lib64/ld-2.33.so)
==3748== 
==3748== HEAP SUMMARY:
==3748==     in use at exit: 0 bytes in 0 blocks
==3748==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==3748== 
==3748== All heap blocks were freed -- no leaks are possible
==3748== 
==3748== For lists of detected and suppressed errors, rerun with: -s
==3748== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Illegal instruction

STEPS TO REPRODUCE
- Write trivial C file: test.c
- gcc -o test test.c
- valgrind ./test

SOFTWARE/OS VERSIONS
Linux: Gentoo, GCC with -march=tigerlake
CPU: Core i5-1135G7