[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 03/14] target-i386: fix pcmpxstrx equal-ordered (strs
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 03/14] target-i386: fix pcmpxstrx equal-ordered (strstr) mode |
Date: |
Wed, 4 Nov 2015 17:18:21 +0100 |
In this mode, referring an invalid element of the source forces the
result to false (table 4-7, last column) but referring an invalid
element of the destination forces the result to true, so the outer
loop should still be run even if some elements of the destination
will be invalid. They will be avoided in the inner loop, which
correctly bounds "i" to validd, but they will still contribute to a
positive outcome of the search.
This fixes tst_strstr in glibc 2.17.
Reported-by: Florian Weimer <address@hidden>
Cc: Richard Henderson <address@hidden>
Cc: Eduardo Habkost <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
target-i386/ops_sse.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target-i386/ops_sse.h b/target-i386/ops_sse.h
index 7aa693a..1780d1d 100644
--- a/target-i386/ops_sse.h
+++ b/target-i386/ops_sse.h
@@ -2037,10 +2037,10 @@ static inline unsigned pcmpxstrx(CPUX86State *env, Reg
*d, Reg *s,
}
break;
case 3:
- for (j = valids - validd; j >= 0; j--) {
+ for (j = valids; j >= 0; j--) {
res <<= 1;
v = 1;
- for (i = MIN(upper - j, validd); i >= 0; i--) {
+ for (i = MIN(valids - j, validd); i >= 0; i--) {
v &= (pcmp_val(s, ctrl, i + j) == pcmp_val(d, ctrl, i));
}
res |= v;
--
1.8.3.1
- [Qemu-devel] [PULL 00/14] Misc changes for QEMU 2.4-rc1, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 02/14] scripts/text2pod.pl: Escape left brace, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 05/14] qemu-log: remove -d ioport, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 01/14] file_ram_alloc: propagate error to caller instead of terminating QEMU, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 04/14] ioport: do not use CPU_LOG_IOPORT, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 03/14] target-i386: fix pcmpxstrx equal-ordered (strstr) mode,
Paolo Bonzini <=
- [Qemu-devel] [PULL 10/14] cpu-exec: Fix compiler warning (-Werror=clobbered), Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 06/14] pc: Set hw_version on all machine classes, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 09/14] memory: call begin, log_start and commit when registering a new listener, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 11/14] configure: disallow ccache during compile tests, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 14/14] configure: disable FORTIFY_SOURCE under clang, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 07/14] osdep: Rename qemu_{get, set}_version() to qemu_{, set_}hw_version(), Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 12/14] backends/hostmem-file: Allow to specify full pathname for backing file, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 13/14] iscsi: Translate scsi sense into error code, Paolo Bonzini, 2015/11/04
- [Qemu-devel] [PULL 08/14] megasas: Use qemu_hw_version() instead of QEMU_VERSION, Paolo Bonzini, 2015/11/04
- Re: [Qemu-devel] [PULL 00/14] Misc changes for QEMU 2.4-rc1, Peter Maydell, 2015/11/04