You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
(3) |
2
(2) |
3
(1) |
|
4
(1) |
5
|
6
(4) |
7
(3) |
8
|
9
(1) |
10
(1) |
|
11
(1) |
12
(9) |
13
|
14
(1) |
15
(6) |
16
(4) |
17
(2) |
|
18
|
19
(3) |
20
|
21
(1) |
22
(2) |
23
(2) |
24
(2) |
|
25
|
26
(1) |
27
(1) |
28
(1) |
29
(2) |
30
|
31
|
|
From: <sv...@va...> - 2015-10-12 20:36:03
|
Author: florian
Date: Mon Oct 12 21:35:56 2015
New Revision: 15702
Log:
On a zEC12 or z13, a glibc with lock elision enabled infers from HWCAP
that the prerequisites for lock elision are met. Then it may use TBEGIN
and other transactional-execution instructions which are not implemented
by Valgrind. Likewise, the upcoming glibc 2.23 will exploit vector
instructions if they are advertised by HWCAP; and those are currently
not implemented by Valgrind either. In general, the increased use of
ifunc may lead to more such cases in the future.
This patch suppresses the advertising of those hardware features via
HWCAP which are either not known to Valgrind or currently unsupported.
Patch by Andreas Arnez (ar...@li...).
Fixes BZ #353680.
Modified:
trunk/NEWS
trunk/README.s390
trunk/coregrind/m_initimg/initimg-linux.c
trunk/include/vki/vki-s390x-linux.h
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Mon Oct 12 21:35:56 2015
@@ -35,6 +35,7 @@
353084 arm64 doesn't support sigpending system call
353370 don't advertise RDRAND in cpuid for Core-i7-4910-like avx2 machine
353398 WARNING: unhandled amd64-solaris syscall: 207
+353680 s390x: Crash with certain glibc versions due to non-implemented TBEGIN
Modified: trunk/README.s390
==============================================================================
--- trunk/README.s390 (original)
+++ trunk/README.s390 Mon Oct 12 21:35:56 2015
@@ -22,6 +22,9 @@
- Some gcc versions use mvc to copy 4/8 byte values. This will affect
certain debug messages. For example, memcheck will complain about
4 one-byte reads/writes instead of just a single read/write.
+- The transactional-execution facility is not supported; it is masked
+ off from HWCAP.
+- The vector facility is not supported; it is masked off from HWCAP.
Hardware facilities
Modified: trunk/coregrind/m_initimg/initimg-linux.c
==============================================================================
--- trunk/coregrind/m_initimg/initimg-linux.c (original)
+++ trunk/coregrind/m_initimg/initimg-linux.c Mon Oct 12 21:35:56 2015
@@ -701,6 +701,12 @@
in syswrap-arm-linux.c rather than to base this on
conditional compilation. */
}
+# elif defined(VGP_s390x_linux)
+ {
+ /* Advertise hardware features "below" TE only. TE and VXRS
+ (and anything above) are not supported by Valgrind. */
+ auxv->u.a_val &= VKI_HWCAP_S390_TE - 1;
+ }
# endif
break;
# if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
Modified: trunk/include/vki/vki-s390x-linux.h
==============================================================================
--- trunk/include/vki/vki-s390x-linux.h (original)
+++ trunk/include/vki/vki-s390x-linux.h Mon Oct 12 21:35:56 2015
@@ -800,12 +800,15 @@
#define VKI_PTRACE_POKEUSR_AREA 0x5001
//----------------------------------------------------------------------
-// From linux-2.6.16.60/include/asm-s390/elf.h
+// From linux-3.18/include/asm-s390/elf.h
//----------------------------------------------------------------------
typedef vki_s390_fp_regs vki_elf_fpregset_t;
typedef vki_s390_regs vki_elf_gregset_t;
+#define VKI_HWCAP_S390_TE 1024
+#define VKI_HWCAP_S390_VXRS 2048
+
//----------------------------------------------------------------------
// From linux-2.6.16.60/include/asm-s390/ucontext.h
|
|
From: Florian K. <fl...@ei...> - 2015-10-12 20:16:12
|
Patch applied as r15701. I also fixed the mips part which had the same problem. Florian On 10.10.2015 13:56, Matthias Schwarzott wrote: > Hi! > > I found this patch in the gentoo package. > > it changes the inline asm in m_libcassert.c to use local labels instead > of global ones. > > If the compiler duplicates the code it will not link otherwise. > > The patch can be applied against latest trunk, but I could not test it > as I have no ppc. > > Regards > Matthias > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Mark W. <mj...@re...> - 2015-10-12 20:16:10
|
On Mon, Oct 12, 2015 at 10:04:00PM +0200, Florian Krohm wrote:
> On 12.10.2015 16:30, sv...@va... wrote:
> > @@ -13396,7 +13396,8 @@
> > case 0x5A:
> > /* 0F 5A = CVTPS2PD -- convert 2 x F32 in low half mem/xmm to 2 x
> > F64 in xmm(G). */
> > - if (haveNo66noF2noF3(pfx) && sz == 4) {
> > + if (haveNo66noF2noF3(pfx)
> > + && sz == 4 || /* ignore redundant REX.W */ sz == 8) {
>
> I'm seeing this with gcc (GCC) 4.9.2 20141101 (Red Hat 4.9.2-1):
>
> priv/guest_amd64_toIR.c: In function 'dis_ESC_0F__SSE2':
> priv/guest_amd64_toIR.c:13400:11: warning: suggest parentheses around
> '&&' within '||' [-Wparentheses]
> && sz == 4 || /* ignore redundant REX.W */ sz == 8) {
Smart GCC. Yes, it should have parentheses around the (sz == 4 || sz == 8).
Fixed in VEX svn r3199.
Thanks,
Mark
|
|
From: <sv...@va...> - 2015-10-12 20:15:18
|
Author: florian
Date: Mon Oct 12 21:15:12 2015
New Revision: 15701
Log:
Use local labels instead of global labels (ppc and mips
specific code).
Modified:
trunk/coregrind/m_libcassert.c
Modified: trunk/coregrind/m_libcassert.c
==============================================================================
--- trunk/coregrind/m_libcassert.c (original)
+++ trunk/coregrind/m_libcassert.c Mon Oct 12 21:15:12 2015
@@ -87,8 +87,8 @@
{ UInt cia, r1, lr; \
__asm__ __volatile__( \
"mflr 0;" /* r0 = lr */ \
- "bl m_libcassert_get_ip;" /* lr = pc */ \
- "m_libcassert_get_ip:\n" \
+ "bl 0f;" /* lr = pc */ \
+ "0:\n" \
"mflr %0;" /* %0 = pc */ \
"mtlr 0;" /* restore lr */ \
"mr %1,1;" /* %1 = r1 */ \
@@ -106,8 +106,8 @@
{ ULong cia, r1, lr; \
__asm__ __volatile__( \
"mflr 0;" /* r0 = lr */ \
- "bl .m_libcassert_get_ip;" /* lr = pc */ \
- ".m_libcassert_get_ip:\n" \
+ "bl 0f;" /* lr = pc */ \
+ "0:\n" \
"mflr %0;" /* %0 = pc */ \
"mtlr 0;" /* restore lr */ \
"mr %1,1;" /* %1 = r1 */ \
@@ -180,8 +180,8 @@
# define GET_STARTREGS(srP) \
{ UInt pc, sp, fp, ra, gp; \
asm("move $8, $31;" /* t0 = ra */ \
- "bal m_libcassert_get_ip;" /* ra = pc */ \
- "m_libcassert_get_ip:\n" \
+ "bal 0f;" /* ra = pc */ \
+ "0:\n" \
"move %0, $31;" \
"move $31, $8;" /* restore lr */ \
"move %1, $29;" \
@@ -203,10 +203,10 @@
}
#elif defined(VGP_mips64_linux)
# define GET_STARTREGS(srP) \
- { ULong pc, sp, fp, ra, gp; \
+ { ULong pc, sp, fp, ra, gp; \
asm("move $8, $31;" /* t0 = ra */ \
- "bal m_libcassert_get_ip;" /* ra = pc */ \
- "m_libcassert_get_ip:\n" \
+ "bal 0f;" /* ra = pc */ \
+ "0:\n" \
"move %0, $31;" \
"move $31, $8;" /* restore lr */ \
"move %1, $29;" \
|
|
From: <sv...@va...> - 2015-10-12 20:14:56
|
Author: mjw
Date: Mon Oct 12 21:14:48 2015
New Revision: 3199
Log:
Bug 278744 cvtps2pd with redundant RexW followup.
Add correct parentheses as pointed out by GCC 4.9.2 -Wparentheses.
Modified:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c
==============================================================================
--- trunk/priv/guest_amd64_toIR.c (original)
+++ trunk/priv/guest_amd64_toIR.c Mon Oct 12 21:14:48 2015
@@ -13397,7 +13397,7 @@
/* 0F 5A = CVTPS2PD -- convert 2 x F32 in low half mem/xmm to 2 x
F64 in xmm(G). */
if (haveNo66noF2noF3(pfx)
- && sz == 4 || /* ignore redundant REX.W */ sz == 8) {
+ && (sz == 4 || /* ignore redundant REX.W */ sz == 8)) {
delta = dis_CVTPS2PD_128( vbi, pfx, delta, False/*!isAvx*/ );
goto decode_success;
}
|
|
From: Florian K. <fl...@ei...> - 2015-10-12 20:04:10
|
On 12.10.2015 16:30, sv...@va... wrote:
> Author: mjw
> Date: Mon Oct 12 15:30:58 2015
> New Revision: 3198
>
> Log:
> Bug 278744 cvtps2pd with redundant RexW
>
> Modified:
> trunk/priv/guest_amd64_toIR.c
>
> Modified: trunk/priv/guest_amd64_toIR.c
> ==============================================================================
> --- trunk/priv/guest_amd64_toIR.c (original)
> +++ trunk/priv/guest_amd64_toIR.c Mon Oct 12 15:30:58 2015
> @@ -13396,7 +13396,8 @@
> case 0x5A:
> /* 0F 5A = CVTPS2PD -- convert 2 x F32 in low half mem/xmm to 2 x
> F64 in xmm(G). */
> - if (haveNo66noF2noF3(pfx) && sz == 4) {
> + if (haveNo66noF2noF3(pfx)
> + && sz == 4 || /* ignore redundant REX.W */ sz == 8) {
I'm seeing this with gcc (GCC) 4.9.2 20141101 (Red Hat 4.9.2-1):
priv/guest_amd64_toIR.c: In function 'dis_ESC_0F__SSE2':
priv/guest_amd64_toIR.c:13400:11: warning: suggest parentheses around
'&&' within '||' [-Wparentheses]
&& sz == 4 || /* ignore redundant REX.W */ sz == 8) {
Florian
|
Author: iraisr
Date: Mon Oct 12 20:10:42 2015
New Revision: 15700
Log:
Solaris syscall: Add support for pset family (207).
Provide scalar tests as well.
Fixes BZ #353398.
Modified:
trunk/NEWS
trunk/configure.ac
trunk/coregrind/m_syswrap/syswrap-solaris.c
trunk/include/vki/vki-scnums-solaris.h
trunk/include/vki/vki-solaris.h
trunk/memcheck/tests/solaris/scalar.c
trunk/memcheck/tests/solaris/scalar.stderr.exp
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Mon Oct 12 20:10:42 2015
@@ -34,6 +34,7 @@
353083 arm64 doesn't implement various xattr system calls
353084 arm64 doesn't support sigpending system call
353370 don't advertise RDRAND in cpuid for Core-i7-4910-like avx2 machine
+353398 WARNING: unhandled amd64-solaris syscall: 207
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Mon Oct 12 20:10:42 2015
@@ -3142,6 +3142,30 @@
AM_CONDITIONAL(SOLARIS_TSOL_CLEARANCE, test x$solaris_tsol_clearance = xyes)
+# Solaris-specific check determining if the new pset() syscall subcode
+# PSET_GET_NAME is available. This subcode was added in Solaris 12 but
+# is missing on illumos and Solaris 11.
+#
+# C-level symbol: SOLARIS_PSET_GET_NAME
+# Automake-level symbol: SOLARIS_PSET_GET_NAME
+#
+AC_MSG_CHECKING([for PSET_GET_NAME (Solaris-specific)])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/pset.h>
+]], [[
+ return !(PSET_GET_NAME);
+]])], [
+solaris_pset_get_name=yes
+AC_MSG_RESULT([yes])
+AC_DEFINE([SOLARIS_PSET_GET_NAME], 1,
+ [Define to 1 if you have the `PSET_GET_NAME' constants.])
+], [
+solaris_pset_get_name=no
+AC_MSG_RESULT([no])
+])
+AM_CONDITIONAL(SOLARIS_PSET_GET_NAME, test x$solaris_pset_get_name = xyes)
+
+
# Solaris-specific check determining if the utimesys() syscall is
# available (on illumos and older Solaris).
#
@@ -3450,6 +3474,7 @@
AM_CONDITIONAL(SOLARIS_UUIDSYS_SYSCALL, false)
AM_CONDITIONAL(SOLARIS_TNDB_GET_TNIP, false)
AM_CONDITIONAL(SOLARIS_TSOL_CLEARANCE, false)
+AM_CONDITIONAL(SOLARIS_PSET_GET_NAME, false)
AM_CONDITIONAL(SOLARIS_UTIMESYS_SYSCALL, false)
AM_CONDITIONAL(SOLARIS_UTIMENSAT_SYSCALL, false)
AM_CONDITIONAL(SOLARIS_SPAWN_SYSCALL, false)
Modified: trunk/coregrind/m_syswrap/syswrap-solaris.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-solaris.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-solaris.c Mon Oct 12 20:10:42 2015
@@ -1035,6 +1035,7 @@
DECL_TEMPLATE(solaris, sys_facl);
DECL_TEMPLATE(solaris, sys_door);
DECL_TEMPLATE(solaris, sys_schedctl);
+DECL_TEMPLATE(solaris, sys_pset);
DECL_TEMPLATE(solaris, sys_resolvepath);
DECL_TEMPLATE(solaris, sys_lwp_mutex_timedlock);
DECL_TEMPLATE(solaris, sys_lwp_rwlock_sys);
@@ -9115,6 +9116,210 @@
POST_MEM_WRITE(a, sizeof(struct vki_sc_shared));
}
+PRE(sys_pset)
+{
+ /* Kernel: int pset(int subcode, long arg1, long arg2, long arg3,
+ long arg4); */
+ switch (ARG1 /* subcode */) {
+ case VKI_PSET_CREATE:
+ /* Libc: int pset_create(psetid_t *newpset); */
+ PRINT("sys_pset ( %ld, %#lx )", SARG1, ARG2);
+ PRE_REG_READ2(long, SC2("pset", "create"), int, subcode,
+ vki_psetid_t *, newpset);
+ PRE_MEM_WRITE("pset(newpset)", ARG2, sizeof(vki_psetid_t));
+ break;
+ case VKI_PSET_DESTROY:
+ /* Libc: int pset_destroy(psetid_t pset); */
+ PRINT("sys_pset ( %ld, %ld )", SARG1, SARG2);
+ PRE_REG_READ2(long, SC2("pset", "destroy"), int, subcode,
+ vki_psetid_t, pset);
+ break;
+ case VKI_PSET_ASSIGN:
+ /* Libc: int pset_assign(psetid_t pset, processorid_t cpu,
+ psetid_t *opset); */
+ PRINT("sys_pset ( %ld, %ld, %ld, %#lx )", SARG1, SARG2, SARG3, ARG4);
+ PRE_REG_READ4(long, SC2("pset", "assign"), int, subcode,
+ vki_psetid_t, pset, vki_processorid_t, cpu,
+ vki_psetid_t *, opset);
+ if (ARG4 != 0)
+ PRE_MEM_WRITE("pset(opset)", ARG4, sizeof(vki_psetid_t));
+ break;
+ case VKI_PSET_INFO:
+ /* Libc: int pset_info(psetid_t pset, int *type, uint_t *numcpus,
+ processorid_t *cpulist); */
+ PRINT("sys_pset ( %ld, %ld, %#lx, %#lx, %#lx )", SARG1, SARG2, ARG3,
+ ARG4, ARG5);
+ PRE_REG_READ5(long, SC2("pset", "info"), int, subcode, vki_psetid_t, pset,
+ int *, type, vki_uint_t *, numcpus,
+ vki_processorid_t *, cpulist);
+ if (ARG3 != 0)
+ PRE_MEM_WRITE("pset(type)", ARG3, sizeof(int));
+ if (ARG4 != 0)
+ PRE_MEM_WRITE("pset(numcpus)", ARG4, sizeof(vki_uint_t));
+ if ((ARG4 != 0) && (ARG5 != 0)) {
+ vki_uint_t *numcpus = (vki_uint_t *) ARG4;
+ if (ML_(safe_to_deref(numcpus, sizeof(vki_uint_t)))) {
+ PRE_MEM_WRITE("pset(cpulist)", ARG5,
+ *numcpus * sizeof(vki_processorid_t));
+ /* If cpulist buffer is not large enough, it will hold only as many
+ entries as fit in the buffer. However numcpus will contain the
+ real number of cpus which will be greater than originally passed
+ in. Stash the original value in unused ARG6. */
+ ARG6 = *numcpus;
+ }
+ }
+ break;
+ case VKI_PSET_BIND:
+ /* Libc: int pset_bind(psetid_t pset, idtype_t idtype, id_t id,
+ psetid_t *opset); */
+ PRINT("sys_pset ( %ld, %ld, %ld, %ld, %#lx )", SARG1, SARG2, SARG3,
+ SARG4, ARG5);
+ PRE_REG_READ5(long, SC2("pset", "bind"), int, subcode, vki_psetid_t, pset,
+ vki_idtype_t, idtype, vki_id_t, id, vki_psetid_t *, opset);
+ if (ARG5 != 0)
+ PRE_MEM_WRITE("pset(opset)", ARG5, sizeof(vki_psetid_t));
+ break;
+ case VKI_PSET_BIND_LWP:
+ /* Libc: int pset_bind_lwp(psetid_t pset, id_t id, pid_t pid,
+ psetid_t *opset); */
+ PRINT("sys_pset ( %ld, %ld, %ld, %ld, %#lx )", SARG1, SARG2, SARG3,
+ SARG4, ARG5);
+ PRE_REG_READ5(long, SC2("pset", "bind_lwp"), int, subcode,
+ vki_psetid_t, pset, vki_id_t, id, vki_pid_t, pid,
+ vki_psetid_t *, opset);
+ if (ARG5 != 0)
+ PRE_MEM_WRITE("pset(opset)", ARG5, sizeof(vki_psetid_t));
+ break;
+ case VKI_PSET_GETLOADAVG:
+ /* Libc: int pset_getloadavg(psetid_t pset, double loadavg[],
+ int nelem); */
+ PRINT("sys_pset ( %ld, %ld, %#lx, %ld )", SARG1, SARG2, ARG3, SARG4);
+ PRE_REG_READ4(long, SC2("pset", "getloadavg"), int, subcode,
+ vki_psetid_t, pset, double, loadavg[], int, nelem);
+ if (ARG3 != 0)
+ PRE_MEM_WRITE("pset(loadavg)", ARG3, SARG4 * sizeof(double));
+ break;
+ case VKI_PSET_LIST:
+ /* Libc: int pset_list(psetid_t *psetlist, uint_t *numpsets); */
+ PRINT("sys_pset ( %ld, %#lx, %#lx )", SARG1, ARG2, ARG3);
+ PRE_REG_READ3(long, SC2("pset", "list"), int, subcode,
+ vki_psetid_t *, psetlist, vki_uint_t *, numpsets);
+ if (ARG3 != 0)
+ PRE_MEM_WRITE("pset(numpsets)", ARG3, sizeof(vki_uint_t));
+ if ((ARG2 != 0) && (ARG3 != 0)) {
+ vki_uint_t *numpsets = (vki_uint_t *) ARG3;
+ if (ML_(safe_to_deref(numpsets, sizeof(vki_uint_t)))) {
+ PRE_MEM_WRITE("pset(psetlist)", ARG2,
+ *numpsets * sizeof(vki_psetid_t));
+ /* If psetlist buffer is not large enough, it will hold only as many
+ entries as fit in the buffer. However numpsets will contain the
+ real number of processor sets which will be greater than
+ originally passed in. Stash the original value in unused ARG6. */
+ ARG6 = *numpsets;
+ }
+ }
+ break;
+# if defined(SOLARIS_PSET_GET_NAME)
+ case VKI_PSET_GET_NAME:
+ /* Libc: int pset_get_name(psetid_t psetid, char *buf, uint_t len); */
+ PRINT("sys_pset ( %ld, %ld, %#lx, %ld )", SARG1, SARG2, ARG3, SARG4);
+ PRE_REG_READ4(long, SC2("pset", "get_name"), int, subcode,
+ vki_psetid_t, pset, char *, buf, vki_uint_t, len);
+ PRE_MEM_WRITE("pset(buf)", ARG3, ARG4);
+ break;
+# endif /* SOLARIS_PSET_GET_NAME */
+ case VKI_PSET_SETATTR:
+ /* Libc: int pset_setattr(psetid_t pset, uint_t attr); */
+ PRINT("sys_pset ( %ld, %ld, %ld )", SARG1, SARG2, ARG3);
+ PRE_REG_READ3(long, SC2("pset", "setattr"), int, subcode,
+ vki_psetid_t, pset, vki_uint_t, attr);
+ break;
+ case VKI_PSET_GETATTR:
+ /* Libc: int pset_getattr(psetid_t pset, uint_t *attr); */
+ PRINT("sys_pset ( %ld, %ld, %#lx )", SARG1, SARG2, ARG3);
+ PRE_REG_READ3(long, SC2("pset", "getattr"), int, subcode,
+ vki_psetid_t, pset, vki_uint_t *, attr);
+ PRE_MEM_WRITE("pset(attr)", ARG3, sizeof(vki_uint_t));
+ break;
+ case VKI_PSET_ASSIGN_FORCED:
+ /* Libc: int pset_assign_forced(psetid_t pset, processorid_t cpu,
+ psetid_t *opset); */
+ PRINT("sys_pset ( %ld, %ld, %ld, %#lx )", SARG1, SARG2, SARG3, ARG4);
+ PRE_REG_READ4(long, SC2("pset", "assign_forced"), int, subcode,
+ vki_psetid_t, pset, vki_processorid_t, cpu,
+ vki_psetid_t *, opset);
+ if (ARG4 != 0)
+ PRE_MEM_WRITE("pset(opset)", ARG4, sizeof(vki_psetid_t));
+ break;
+ default:
+ VG_(unimplemented)("Syswrap of pset syscall with subcode %ld.", SARG1);
+ /*NOTREACHED*/
+ break;
+ }
+}
+
+POST(sys_pset)
+{
+ switch (ARG1 /*subcode*/) {
+ case VKI_PSET_CREATE:
+ POST_MEM_WRITE(ARG2, sizeof(vki_psetid_t));
+ break;
+ case VKI_PSET_DESTROY:
+ break;
+ case VKI_PSET_ASSIGN:
+ if (ARG4 != 0)
+ POST_MEM_WRITE(ARG4, sizeof(vki_psetid_t));
+ break;
+ case VKI_PSET_INFO:
+ if (ARG3 != 0)
+ POST_MEM_WRITE(ARG3, sizeof(int));
+ if (ARG4 != 0)
+ POST_MEM_WRITE(ARG4, sizeof(vki_uint_t));
+ if ((ARG4 != 0) && (ARG5 != 0)) {
+ vki_uint_t *numcpus = (vki_uint_t *) ARG4;
+ POST_MEM_WRITE(ARG5, MIN(*numcpus, ARG6) * sizeof(vki_processorid_t));
+ }
+ break;
+ case VKI_PSET_BIND:
+ if (ARG5 != 0)
+ POST_MEM_WRITE(ARG5, sizeof(vki_psetid_t));
+ break;
+ case VKI_PSET_BIND_LWP:
+ if (ARG5 != 0)
+ POST_MEM_WRITE(ARG5, sizeof(vki_psetid_t));
+ break;
+ case VKI_PSET_GETLOADAVG:
+ if (ARG3 != 0)
+ POST_MEM_WRITE(ARG3, MIN(SARG4, VKI_LOADAVG_NSTATS) * sizeof(double));
+ break;
+ case VKI_PSET_LIST:
+ if (ARG3 != 0)
+ POST_MEM_WRITE(ARG3, sizeof(vki_uint_t));
+ if ((ARG2 != 0) && (ARG3 != 0)) {
+ vki_uint_t *numpsets = (vki_uint_t *) ARG3;
+ POST_MEM_WRITE(ARG2, MIN(*numpsets, ARG6) * sizeof(vki_psetid_t));
+ }
+ break;
+# if defined(SOLARIS_PSET_GET_NAME)
+ case VKI_PSET_GET_NAME:
+ POST_MEM_WRITE(ARG3, VG_(strlen)((HChar *) ARG3) + 1);
+ break;
+# endif /* SOLARIS_PSET_GET_NAME */
+ case VKI_PSET_SETATTR:
+ break;
+ case VKI_PSET_GETATTR:
+ POST_MEM_WRITE(ARG3, sizeof(vki_uint_t));
+ break;
+ case VKI_PSET_ASSIGN_FORCED:
+ if (ARG4 != 0)
+ POST_MEM_WRITE(ARG4, sizeof(vki_psetid_t));
+ break;
+ default:
+ vg_assert(0);
+ break;
+ }
+}
+
PRE(sys_resolvepath)
{
/* int resolvepath(const char *path, char *buf, size_t bufsiz); */
@@ -9408,7 +9613,7 @@
break;
case VKI_ZONE_LOOKUP:
/* Libc: zoneid_t zone_lookup(const char *name); */
- PRINT("sys_zone ( %ld, %#lx )", SARG1, ARG2);
+ PRINT("sys_zone ( %ld, %#lx(%s) )", SARG1, ARG2, (HChar *) ARG2);
PRE_REG_READ2(long, SC2("zone", "lookup"), int, cmd,
const char *, name);
if (ARG2)
@@ -10197,6 +10402,7 @@
GENX_(__NR_setreuid, sys_setreuid), /* 202 */
GENX_(__NR_setregid, sys_setregid), /* 202 */
SOLXY(__NR_schedctl, sys_schedctl), /* 206 */
+ SOLXY(__NR_pset, sys_pset), /* 207 */
SOLXY(__NR_resolvepath, sys_resolvepath), /* 209 */
SOLXY(__NR_lwp_mutex_timedlock, sys_lwp_mutex_timedlock), /* 210 */
SOLXY(__NR_lwp_sema_timedwait, sys_lwp_sema_timedwait), /* 211 */
Modified: trunk/include/vki/vki-scnums-solaris.h
==============================================================================
--- trunk/include/vki/vki-scnums-solaris.h (original)
+++ trunk/include/vki/vki-scnums-solaris.h Mon Oct 12 20:10:42 2015
@@ -262,7 +262,7 @@
//#define __NR_install_utrap SYS_install_utrap
//#define __NR_signotify SYS_signotify
#define __NR_schedctl SYS_schedctl
-//#define __NR_pset SYS_pset
+#define __NR_pset SYS_pset
//#define SYS_sparc_utrap_install
#define __NR_resolvepath SYS_resolvepath
#define __NR_lwp_mutex_timedlock SYS_lwp_mutex_timedlock
Modified: trunk/include/vki/vki-solaris.h
==============================================================================
--- trunk/include/vki/vki-solaris.h (original)
+++ trunk/include/vki/vki-solaris.h Mon Oct 12 20:10:42 2015
@@ -581,6 +581,10 @@
#define vki_semid64_ds semid_ds64
+#include <sys/loadavg.h>
+#define VKI_LOADAVG_NSTATS LOADAVG_NSTATS
+
+
#include <sys/lwp.h>
#define VKI_LWP_DAEMON LWP_DAEMON
#define VKI_LWP_FSBASE _LWP_FSBASE
@@ -770,6 +774,24 @@
#define vki_procset_t procset_t
+#include <sys/pset.h>
+#define VKI_PSET_CREATE PSET_CREATE
+#define VKI_PSET_DESTROY PSET_DESTROY
+#define VKI_PSET_ASSIGN PSET_ASSIGN
+#define VKI_PSET_INFO PSET_INFO
+#define VKI_PSET_BIND PSET_BIND
+#define VKI_PSET_GETLOADAVG PSET_GETLOADAVG
+#define VKI_PSET_LIST PSET_LIST
+#define VKI_PSET_SETATTR PSET_SETATTR
+#define VKI_PSET_GETATTR PSET_GETATTR
+#define VKI_PSET_ASSIGN_FORCED PSET_ASSIGN_FORCED
+#define VKI_PSET_BIND_LWP PSET_BIND_LWP
+#if defined(SOLARIS_PSET_GET_NAME)
+#define VKI_PSET_GET_NAME PSET_GET_NAME
+#endif /* SOLARIS_PSET_GET_NAME */
+#define vki_psetid_t psetid_t
+
+
#include <sys/regset.h>
#define vki_prgregset_t prgregset_t
Modified: trunk/memcheck/tests/solaris/scalar.c
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.c (original)
+++ trunk/memcheck/tests/solaris/scalar.c Mon Oct 12 20:10:42 2015
@@ -1188,6 +1188,102 @@
SY(SYS_door, x0, x0 + ¶ms, x0, x0, x0, x0 + DOOR_CALL); FAIL;
}
+__attribute__((noinline))
+static void sys_pset(void)
+{
+ GO(SYS_pset, "(CREATE) 2s 1m");
+ SY(SYS_pset, x0 + PSET_CREATE, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset2(void)
+{
+ GO(SYS_pset, "(DESTROY) 2s 0m");
+ SY(SYS_pset, x0 + PSET_DESTROY, x0); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset3(void)
+{
+ GO(SYS_pset, "(ASSIGN) 4s 1m");
+ SY(SYS_pset, x0 + PSET_ASSIGN, x0 + 1, x0 + 1, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset4(void)
+{
+ GO(SYS_pset, "(INFO) 5s 3m");
+ SY(SYS_pset, x0 + PSET_INFO, x0 + 1, x0 + 1, x0 + 1, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset5(void)
+{
+ int type;
+ uint_t numcpus = x0 + 1;
+
+ GO(SYS_pset, "(INFO) 5s 1m");
+ SY(SYS_pset, x0 + PSET_INFO, x0 + 1, x0 + &type, x0 + &numcpus,
+ x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset6(void)
+{
+ GO(SYS_pset, "(BIND) 5s 1m");
+ SY(SYS_pset, x0 + PSET_BIND, x0 + 1, x0 + 1, x0 + 1, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset7(void)
+{
+ GO(SYS_pset, "(BIND_LWP) 5s 1m");
+ SY(SYS_pset, x0 + PSET_BIND_LWP, x0 + 1, x0 + 1, x0 + 1, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset8(void)
+{
+ GO(SYS_pset, "(GETLOADAVG) 4s 1m");
+ SY(SYS_pset, x0 + PSET_GETLOADAVG, x0 + 1, x0 + 1, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset9(void)
+{
+ GO(SYS_pset, "(LIST) 3s 1m");
+ SY(SYS_pset, x0 + PSET_LIST, x0 + 1, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset10(void)
+{
+ uint_t numpsets = x0 + 1;
+
+ GO(SYS_pset, "(LIST) 3s 1m");
+ SY(SYS_pset, x0 + PSET_LIST, x0 + 1, x0 + &numpsets);
+}
+
+__attribute__((noinline))
+static void sys_pset11(void)
+{
+ GO(SYS_pset, "(SETATTR) 3s 0m");
+ SY(SYS_pset, x0 + PSET_SETATTR, x0, x0); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset12(void)
+{
+ GO(SYS_pset, "(GETATTR) 3s 1m");
+ SY(SYS_pset, x0 + PSET_GETATTR, x0, x0 + 1); FAIL;
+}
+
+__attribute__((noinline))
+static void sys_pset13(void)
+{
+ GO(SYS_pset, "(ASSIGN_FORCED) 4s 1m");
+ SY(SYS_pset, x0 + PSET_ASSIGN_FORCED, x0 + 1, x0 + 1, x0 + 1); FAIL;
+}
__attribute__((noinline))
static void sys_lwp_rwlock(void)
@@ -2204,7 +2300,19 @@
SY(SYS_schedctl); SUCC;
/* SYS_pset 207 */
- /* XXX Missing wrapper. */
+ sys_pset();
+ sys_pset2();
+ sys_pset3();
+ sys_pset4();
+ sys_pset5();
+ sys_pset6();
+ sys_pset7();
+ sys_pset8();
+ sys_pset9();
+ sys_pset10();
+ sys_pset11();
+ sys_pset12();
+ sys_pset13();
/* SYS_sparc_utrap_install 208 */
/* XXX Missing wrapper. */
Modified: trunk/memcheck/tests/solaris/scalar.stderr.exp
==============================================================================
--- trunk/memcheck/tests/solaris/scalar.stderr.exp (original)
+++ trunk/memcheck/tests/solaris/scalar.stderr.exp Mon Oct 12 20:10:42 2015
@@ -4142,6 +4142,237 @@
206: SYS_schedctl 0s 0m
---------------------------------------------------------
---------------------------------------------------------
+207: SYS_pset (CREATE) 2s 1m
+---------------------------------------------------------
+Syscall param pset_create(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_create(newpset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(newpset) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (DESTROY) 2s 0m
+---------------------------------------------------------
+Syscall param pset_destroy(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_destroy(pset) contains uninitialised byte(s)
+ ...
+
+---------------------------------------------------------
+207: SYS_pset (ASSIGN) 4s 1m
+---------------------------------------------------------
+Syscall param pset_assign(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_assign(pset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_assign(cpu) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_assign(opset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(opset) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (INFO) 5s 3m
+---------------------------------------------------------
+Syscall param pset_info(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_info(pset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_info(type) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_info(numcpus) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_info(cpulist) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(type) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param pset(numcpus) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (INFO) 5s 1m
+---------------------------------------------------------
+Syscall param pset_info(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_info(pset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_info(type) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_info(numcpus) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_info(cpulist) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(cpulist) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (BIND) 5s 1m
+---------------------------------------------------------
+Syscall param pset_bind(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_bind(pset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_bind(idtype) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_bind(id) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_bind(opset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(opset) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (BIND_LWP) 5s 1m
+---------------------------------------------------------
+Syscall param pset_bind_lwp(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_bind_lwp(pset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_bind_lwp(id) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_bind_lwp(pid) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_bind_lwp(opset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(opset) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (GETLOADAVG) 4s 1m
+---------------------------------------------------------
+Syscall param pset_getloadavg(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_getloadavg(pset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_getloadavg(loadavg[]) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_getloadavg(nelem) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(loadavg) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (LIST) 3s 1m
+---------------------------------------------------------
+Syscall param pset_list(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_list(psetlist) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_list(numpsets) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(numpsets) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (LIST) 3s 1m
+---------------------------------------------------------
+Syscall param pset_list(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_list(psetlist) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_list(numpsets) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(psetlist) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (SETATTR) 3s 0m
+---------------------------------------------------------
+Syscall param pset_setattr(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_setattr(pset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_setattr(attr) contains uninitialised byte(s)
+ ...
+
+---------------------------------------------------------
+207: SYS_pset (GETATTR) 3s 1m
+---------------------------------------------------------
+Syscall param pset_getattr(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_getattr(pset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_getattr(attr) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(attr) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
+207: SYS_pset (ASSIGN_FORCED) 4s 1m
+---------------------------------------------------------
+Syscall param pset_assign_forced(subcode) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_assign_forced(pset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_assign_forced(cpu) contains uninitialised byte(s)
+ ...
+
+Syscall param pset_assign_forced(opset) contains uninitialised byte(s)
+ ...
+
+Syscall param pset(opset) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+---------------------------------------------------------
209: SYS_resolvepath 3s 2m
---------------------------------------------------------
Syscall param resolvepath(path) contains uninitialised byte(s)
|
|
From: <sv...@va...> - 2015-10-12 14:32:10
|
Author: mjw
Date: Mon Oct 12 15:32:03 2015
New Revision: 15699
Log:
Bug #278744 cvtps2pd with redundant RexW.
Add testcase for VEX svn r3198.
Modified:
trunk/NEWS
trunk/none/tests/amd64/redundantRexW.c
trunk/none/tests/amd64/redundantRexW.stdout.exp
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Mon Oct 12 15:32:03 2015
@@ -30,6 +30,7 @@
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
where XXXXXX is the bug number as listed below.
+278744 cvtps2pd with redundant RexW
353083 arm64 doesn't implement various xattr system calls
353084 arm64 doesn't support sigpending system call
353370 don't advertise RDRAND in cpuid for Core-i7-4910-like avx2 machine
Modified: trunk/none/tests/amd64/redundantRexW.c
==============================================================================
--- trunk/none/tests/amd64/redundantRexW.c (original)
+++ trunk/none/tests/amd64/redundantRexW.c Mon Oct 12 15:32:03 2015
@@ -596,6 +596,23 @@
after_test( "rex.WB subsd -0x8(%r13),%xmm1", regs, mem );
}
+ /* cvtps2pd mem, reg 48 0f 5a 07 rex.W cvtps2pd (%rdi),%xmm0 */
+ {
+ before_test( regs, mem );
+ __asm__ __volatile__(
+ "movq %0, %%r14\n"
+ "\tmovq %1, %%r15\n"
+ LOAD_XMMREGS_from_r14
+ "\tmovq %%r15, %%rdi\n"
+ "\t.byte 0x48,0x0f,0x5a,0x07\n"
+ SAVE_XMMREGS_to_r14
+ : /*out*/ : /*in*/ "r"(regs), "r"( -0 + (char*)&mem->dqw[2] )
+ : /*trash*/ "r14","r15","memory", XMMREGS,
+ "rdi"
+ );
+ after_test( "rex.W cvtps2pd (%rdi),%xmm0", regs, mem );
+ }
+
free(regs);
free(mem);
return 0;
Modified: trunk/none/tests/amd64/redundantRexW.stdout.exp
==============================================================================
--- trunk/none/tests/amd64/redundantRexW.stdout.exp (original)
+++ trunk/none/tests/amd64/redundantRexW.stdout.exp Mon Oct 12 15:32:03 2015
@@ -648,3 +648,29 @@
%xmm15 ................................
}
+after "rex.W cvtps2pd (%rdi),%xmm0" (dqws in order [15 .. 0]) {
+ [0] ................................
+ [1] ................................
+ [2] ................................
+ [3] ................................
+ [4] ................................
+}
+after "rex.W cvtps2pd (%rdi),%xmm0" (xmms in order [15..0]) {
+ %xmm 0 113a1c7d5554535213bd9cffd4535251
+ %xmm 1 ................................
+ %xmm 2 ................................
+ %xmm 3 ................................
+ %xmm 4 ................................
+ %xmm 5 ................................
+ %xmm 6 ................................
+ %xmm 7 ................................
+ %xmm 8 ................................
+ %xmm 9 ................................
+ %xmm10 ................................
+ %xmm11 ................................
+ %xmm12 ................................
+ %xmm13 ................................
+ %xmm14 ................................
+ %xmm15 ................................
+}
+
|
|
From: <sv...@va...> - 2015-10-12 14:31:07
|
Author: mjw
Date: Mon Oct 12 15:30:58 2015
New Revision: 3198
Log:
Bug 278744 cvtps2pd with redundant RexW
Modified:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c
==============================================================================
--- trunk/priv/guest_amd64_toIR.c (original)
+++ trunk/priv/guest_amd64_toIR.c Mon Oct 12 15:30:58 2015
@@ -13396,7 +13396,8 @@
case 0x5A:
/* 0F 5A = CVTPS2PD -- convert 2 x F32 in low half mem/xmm to 2 x
F64 in xmm(G). */
- if (haveNo66noF2noF3(pfx) && sz == 4) {
+ if (haveNo66noF2noF3(pfx)
+ && sz == 4 || /* ignore redundant REX.W */ sz == 8) {
delta = dis_CVTPS2PD_128( vbi, pfx, delta, False/*!isAvx*/ );
goto decode_success;
}
|