Bug 260935 - vex x86->IR: unhandled instruction bytes: 0xDF 0x20 0x66 0x83
Summary: vex x86->IR: unhandled instruction bytes: 0xDF 0x20 0x66 0x83
Status: REPORTED
Alias: None
Product: valgrind
Classification: Developer tools
Component: memcheck (show other bugs)
Version: 3.6.0
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Julian Seward
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-12-22 02:53 UTC by Jeff Frontz
Modified: 2013-12-03 01:29 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
output of run using -v -v -d -d (50.51 KB, text/plain)
2010-12-22 02:53 UTC, Jeff Frontz
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jeff Frontz 2010-12-22 02:53:29 UTC
Created attachment 55150 [details]
output of run using -v -v -d -d

Version:           3.6.0
OS:                Linux

Trying to run valgrind (memcheck) on an otherwise working program.  Note that the program makes use of National Instruments (Labview) libraries that seem to do non-standard things (and are built/run against the previous generation C++ stdlib, from GCC 3.3.4).

Reproducible: Always

Steps to Reproduce:
Just run valgrind on the target executable.

Actual Results:  
SIGILL (apparently erroneously) sent to target program.


Note that target program uses the compatibility standard C++ library from GCC 3.3.4.

See attached debug (-v -v -d -d) output for more info.
Comment 1 Jeff Frontz 2010-12-30 21:22:56 UTC
(In reply to comment #0)
> Note that
> the program makes use of National Instruments (Labview) libraries

Said unimplemented instruction does indeed appear to be originating from inside the National Instruments DAQmx Base libraries.  Considering that the offending instruction is related to BCD data conversion, this would make sense-- the libraries are used to interface with data acquisition hardware that is undoubtedly using BCD encoding to simplify interaction with display components.

Although I suspect the complexity of the task exceeds my capabilities, I'd be glad to take a stab at implementing the FBLD instruction for x86 if someone could give me a few pointers on where to start (e.g., I see where I think the front-end parsing is done in IRExpr_Binop, but I'm clueless about where in the virtual machine I'd need to do the actual implementation).
Comment 2 Julian Seward 2011-01-11 00:33:33 UTC
Wiring up the implementation isn't that difficult.  The two key things
you need here are:

* a C implementation (function) that does the core functionality.
  Possibly of type    double do_FBLD ( unsigned char* )

* enough of a test framework around it to demonstrate convincingly that
  the C function does the same conversion as FBLD, including whatever
  nasty corner cases there are (I have no idea)
Comment 3 Jeff Frontz 2013-12-03 01:29:40 UTC
Adding cross-reference to message posted at National Instruments website : http://forums.ni.com/t5/Multifunction-DAQ/Does-anyone-try-to-use-valgrind-with-software-linked-against/td-p/1400674