This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: bndmov MPX instructions in dynamic linker breaks valgrind
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Roland McGrath <roland at hack dot frob dot com>
- Cc: Markus Trippelsdorf <markus at trippelsdorf dot de>, GNU C Library <libc-alpha at sourceware dot org>, Igor Zamyatin <igor dot zamyatin at intel dot com>
- Date: Wed, 6 Aug 2014 17:53:41 -0700
- Subject: Re: bndmov MPX instructions in dynamic linker breaks valgrind
- Authentication-results: sourceware.org; auth=none
- References: <20140802175103 dot GC294 at x4> <20140806211851 dot D3F5A2C3983 at topped-with-meat dot com> <20140806223112 dot GA296 at x4> <20140806223515 dot 4166C2C3980 at topped-with-meat dot com>
On Wed, Aug 6, 2014 at 3:35 PM, Roland McGrath <roland@hack.frob.com> wrote:
>> Since Intel's 14 nm process isn't working as expected, there's no
>> shipping MPX capable processor in sight yet. So it wouldn't hurt anyone
>> if MPX support would be disabled for another release or two.
>
> There are pretty long lead times for most users to actually get a system
> with a new libc on it. So it would be a mistake to think that the first
> libc release after a piece of hardware actually ships is early enough for
> every user (or even most users) buying the new hardware to wind up running
> a system with the new libc.
I agree with Roland. Valgrind should be fixed.
While you are on it, all NOPs are documented in opcode tables in Intel SDM Vol 2
and gas/testsuite/gas/i386/nops.s from binutils has
.byte 0x0f, 0x1f, 0x0
.byte 0x0f, 0x1f, 0x40, 0x0
.byte 0x0f, 0x1f, 0x44, 0x0, 0x0
.byte 0x66, 0x0f, 0x1f, 0x44, 0x0, 0x0
.byte 0x0f, 0x1f, 0x80, 0x0, 0x0, 0x0, 0x0
.byte 0x0f, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0
.byte 0x66, 0x0f, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0
.byte 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x0, 0x0, 0x0, 0x0, 0x0
# reg,reg
.byte 0x0f, 0x19, 0xff
.byte 0x0f, 0x1a, 0xff
.byte 0x0f, 0x1b, 0xff
.byte 0x0f, 0x1c, 0xff
.byte 0x0f, 0x1d, 0xff
.byte 0x0f, 0x1e, 0xff
.byte 0x0f, 0x1f, 0xff
# with base and imm8
.byte 0x0f, 0x19, 0x5A, 0x22
.byte 0x0f, 0x1c, 0x5A, 0x22
.byte 0x0f, 0x1d, 0x5A, 0x22
.byte 0x0f, 0x1e, 0x5A, 0x22
.byte 0x0f, 0x1f, 0x5A, 0x22
# with sib and imm32
.byte 0x0f, 0x19, 0x9C, 0x1D, 0x11, 0x22, 0x33, 0x44
.byte 0x0f, 0x1c, 0x9C, 0x1D, 0x11, 0x22, 0x33, 0x44
.byte 0x0f, 0x1d, 0x9C, 0x1D, 0x11, 0x22, 0x33, 0x44
.byte 0x0f, 0x1e, 0x9C, 0x1D, 0x11, 0x22, 0x33, 0x44
.byte 0x0f, 0x1f, 0x9C, 0x1D, 0x11, 0x22, 0x33, 0x44
.byte 0x0f, 0x19, 0x04, 0x60
.byte 0x0f, 0x1c, 0x04, 0x60
.byte 0x0f, 0x1d, 0x04, 0x60
.byte 0x0f, 0x1e, 0x04, 0x60
.byte 0x0f, 0x1f, 0x04, 0x60
.byte 0x0f, 0x19, 0x04, 0x59
.byte 0x0f, 0x1c, 0x04, 0x59
.byte 0x0f, 0x1d, 0x04, 0x59
.byte 0x0f, 0x1e, 0x04, 0x59
.byte 0x0f, 0x1f, 0x04, 0x59
--
H.J.