Bug 110274 - valgrind requires SSE extensions on x86
Summary: valgrind requires SSE extensions on x86
Status: RESOLVED FIXED
Alias: None
Product: valgrind
Classification: Developer tools
Component: general (show other bugs)
Version: 3.0.0
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Julian Seward
URL:
Keywords:
: 111739 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-08-06 04:16 UTC by John Reiser
Modified: 2005-08-30 04:37 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Reiser 2005-08-06 04:16:16 UTC
Version:           3.0.0 (using KDE Devel)
Installed from:    Compiled sources
Compiler:          gcc (GCC) 3.2 20020903 (Red Hat Linux 8.0 3.2-7) 
OS:                Linux

$ gdb valgrind3  # valgrind 3.0.0 from .bz2
(gdb) run /bin/date
Starting program: /usr/local/valgrind3/bin/valgrind /bin/date
==14109== Memcheck, a memory error detector.
==14109== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==14109== Using LibVEX rev 1313, a library for dynamic binary translation.
==14109== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP.
==14109== Using valgrind-3.0.0, a dynamic binary instrumentation framework.
==14109== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==14109== For more details, rerun with: -v
==14109==

Program received signal SIGILL, Illegal instruction.
0xb003773c in ?? ()
(gdb) x/i $pc
0xb003773c:     ldmxcsr (%esp,1)
(gdb) bt
#0  0xb003773c in ?? ()
(gdb) x/12i $pc-0x18
0xb0037724:     and    $0x1c,%al
0xb0037726:     mov    0x38(%ebp),%eax
0xb0037729:     finit
0xb003772c:     push   $0x27f
0xb0037731:     fldcw  (%esp,1)
0xb0037734:     add    $0x4,%esp
0xb0037737:     push   $0x1f80
0xb003773c:     ldmxcsr (%esp,1)
0xb0037740:     add    $0x4,%esp
0xb0037743:     cld
0xb0037744:     mov    %eax,0x38(%ebp)
0xb0037747:     subl   $0x1,0xb07e2120
(gdb) x/x 0xb003773c
0xb003773c:     0x2414ae0f   # instruction stream bytes

Intel document 25366514.pdf, IA-32 Intel Architecture Software Developer's Manual (2004), vol.1 Basic Architecture, Ch.10.1 Overview of SSE Extensions, says that the MXCSR register was added with the SSE extensions.  Intel document 241430-001, Pentium Processor User's Manual (1993), vol.3 Architecture and Programming Manual, Appendix A Opcode Map, says that opcode 0x0F 0xAE is vacant [undefined.]

$ cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 6
model           : 4
model name      : AMD Athlon(tm) Processor
stepping        : 2
cpu MHz         : 1095.126
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr syscall mmxext 3dnowext 3dnow
bogomips        : 2182.34
$ 

Valgrind-2.4.1 from .bz2 works on this machine.
Comment 1 Julian Seward 2005-08-06 10:54:09 UTC
Correct.  SSE1 is now a minimum requirement.  Supporting non-SSE
variants is too much hassle and everybody, more or less, has at
least a Pentium-III or equivalent CPU anyway.
Comment 2 John Reiser 2005-08-06 15:20:23 UTC
Requiring SSE hardware is a significant Limitation that as of 2005-08-06 is not mentioned in http://www.valgrind.org/docs/manual/manual-core.html#manual-core.limits [or other place in the manual; but this looks like a very good one].
Comment 3 Julian Seward 2005-08-08 02:45:58 UTC
Fixed (vex 1321, valgrind 4339).
Comment 4 Julian Seward 2005-08-30 04:37:40 UTC
*** Bug 111739 has been marked as a duplicate of this bug. ***