Accepting request 447939 from home:mathletic:branches:devel:tools

update to 3.12.0

OBS-URL: https://build.opensuse.org/request/show/447939
OBS-URL: https://build.opensuse.org/package/show/devel:tools/valgrind?expand=0&rev=149
This commit is contained in:
Martin Pluskal 2016-12-28 07:51:29 +00:00 committed by Git OBS Bridge
parent 9d1b3ab9be
commit ac7ac5e535
11 changed files with 21 additions and 516 deletions

View File

@ -1,70 +0,0 @@
------------------------------------------------------------------------
r15702 | florian | 2015-10-12 22:35:56 +0200 (Mo, 12. Okt 2015) | 14 Zeilen
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 (arnez@linux.vnet.ibm.com).
Fixes BZ #353680.
------------------------------------------------------------------------
Index: include/vki/vki-s390x-linux.h
===================================================================
--- include/vki/vki-s390x-linux.h.orig
+++ include/vki/vki-s390x-linux.h
@@ -800,12 +800,15 @@ typedef struct
#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
Index: coregrind/m_initimg/initimg-linux.c
===================================================================
--- coregrind/m_initimg/initimg-linux.c.orig
+++ coregrind/m_initimg/initimg-linux.c
@@ -701,6 +701,12 @@ Addr setup_client_stack( void* init_sp,
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)
Index: README.s390
===================================================================
--- README.s390.orig
+++ README.s390
@@ -22,6 +22,9 @@ Limitations
- 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

View File

@ -1,104 +0,0 @@
------------------------------------------------------------------------
r15792 | florian | 2016-02-17 21:00:59 +0100 (Mi, 17. Feb 2016) | 4 Zeilen
s390: Fix BZ #359289, adding support for popcnt insn.
Companion patch is VEX r3210.
Patch by Andreas Arnez (arnez@linux.vnet.ibm.com).
------------------------------------------------------------------------
Index: tests/s390x_features.c
===================================================================
--- tests/s390x_features.c.orig
+++ tests/s390x_features.c
@@ -231,6 +231,8 @@ static int go(char *feature, char *cpu)
match = facilities & FAC_BIT(42);
} else if (strcmp(feature, "s390x-pfpo") == 0 ) {
match = facilities & FAC_BIT(44);
+ } else if (strcmp(feature, "s390x-highw") == 0 ) {
+ match = facilities & FAC_BIT(45);
} else {
return 2; // Unrecognised feature.
}
Index: none/tests/s390x/popcnt.stderr.exp
===================================================================
--- /dev/null
+++ none/tests/s390x/popcnt.stderr.exp
@@ -0,0 +1,2 @@
+
+
Index: none/tests/s390x/Makefile.am
===================================================================
--- none/tests/s390x/Makefile.am.orig
+++ none/tests/s390x/Makefile.am
@@ -11,7 +11,7 @@ INSN_TESTS = clc clcle cvb cvd icm lpr t
ex_sig ex_clone cu14 cu14_1 cu41 fpconv ecag fpext_warn \
rounding-1 rounding-2 rounding-3 rounding-4 rounding-5 bfp-1 \
bfp-2 bfp-3 bfp-4 srnm srnmb comp-1 comp-2 exrl tmll tm stmg \
- ex clst mvc test_fork test_sig rounding-6 rxsbg\
+ ex clst mvc test_fork test_sig rounding-6 rxsbg popcnt \
spechelper-alr spechelper-algr \
spechelper-slr spechelper-slgr \
spechelper-cr spechelper-clr \
Index: none/tests/s390x/opcodes.h
===================================================================
--- none/tests/s390x/opcodes.h.orig
+++ none/tests/s390x/opcodes.h
@@ -324,6 +324,7 @@
#define OY(r1,x2,b2,dl2,dh2) RXY_RRRD(e3,r1,x2,b2,dl2,dh2,56)
#define PFD(r1,x2,b2,dl2,dh2) RXY_URRD(e3,r1,x2,b2,dl2,dh2,36)
#define PFDRL(r1,i2) RIL_UP(c6,r1,2,i2)
+#define POPCNT(r1,r2) RRE_RR(b9e1,00,r1,r2)
#define RISBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,55)
#define RNSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,54)
#define ROSBG(r1,r2,i3,i4,i5) RIE_RRUUU(ec,r1,r2,i3,i4,i5,56)
Index: none/tests/s390x/popcnt.stdout.exp
===================================================================
--- /dev/null
+++ none/tests/s390x/popcnt.stdout.exp
@@ -0,0 +1,5 @@
+popcnt 0 -> 0 cc=0
+popcnt 1 -> 1 cc=1
+popcnt 8000000000000000 -> 100000000000000 cc=1
+popcnt ffffffffffffffff -> 808080808080808 cc=1
+popcnt ff427e3800556bcd -> 802060300040505 cc=1
Index: none/tests/s390x/popcnt.vgtest
===================================================================
--- /dev/null
+++ none/tests/s390x/popcnt.vgtest
@@ -0,0 +1 @@
+prog: popcnt
Index: none/tests/s390x/popcnt.c
===================================================================
--- /dev/null
+++ none/tests/s390x/popcnt.c
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <stdint.h>
+
+
+static void check_popcnt(uint64_t in, uint64_t expected_result,
+ int expected_cc)
+{
+ uint64_t out = ~expected_result;
+ int cc = ~expected_cc;
+
+ asm volatile(".insn rre, 0xb9e10000, %[out], %[in]\n\t"
+ "ipm %[cc]\n\t"
+ "srl %[cc],28\n\t"
+ : [cc]"=d" (cc), [out]"=d" (out)
+ : [in]"d" (in)
+ : "cc");
+ printf("popcnt %16lx -> %16lx %s cc=%d %s\n",
+ in, out, (out == expected_result ? " " : "ERR"),
+ cc, (cc == expected_cc ? " " : "ERR"));
+}
+
+int main()
+{
+ check_popcnt(0, 0, 0);
+ check_popcnt(1, 1, 1);
+ check_popcnt(0x8000000000000000ULL, 0x0100000000000000ULL, 1);
+ check_popcnt(0xffffffffffffffffULL, 0x0808080808080808ULL, 1);
+ check_popcnt(0xff427e3800556bcdULL, 0x0802060300040505ULL, 1);
+ return 0;
+}

View File

@ -1,76 +0,0 @@
------------------------------------------------------------------------
r15802 | mjw | 2016-02-23 16:19:49 +0100 (Di, 23. Feb 2016) | 9 Zeilen
Bug 359703 s390: wire up separate socketcalls system calls
The linux 4.3 s390 kernel has separate system calls that were originally
hidden behind the socketcall multiplexer system call. Newer glibc versions
will use these direct system calls instead of socketcall when available.
Causing several regtest failures.
This fix simply wires up the split out system calls directly to the
existing syswrap handlers for s390.
------------------------------------------------------------------------
Index: include/vki/vki-scnums-s390x-linux.h
===================================================================
--- include/vki/vki-scnums-s390x-linux.h (Revision 15801)
+++ include/vki/vki-scnums-s390x-linux.h (Revision 15802)
@@ -316,7 +316,26 @@
#define __NR_seccomp 348
#define __NR_getrandom 349
#define __NR_memfd_create 350
-#define NR_syscalls 351
+
+#define __NR_recvmmsg 357
+#define __NR_sendmmsg 358
+#define __NR_socket 359
+#define __NR_socketpair 360
+#define __NR_bind 361
+#define __NR_connect 362
+#define __NR_listen 363
+#define __NR_accept4 364
+#define __NR_getsockopt 365
+#define __NR_setsockopt 366
+#define __NR_getsockname 367
+#define __NR_getpeername 368
+#define __NR_sendto 369
+#define __NR_sendmsg 370
+#define __NR_recvfrom 371
+#define __NR_recvmsg 372
+#define __NR_shutdown 373
+
+#define NR_syscalls 374
/*
* There are some system calls that are not present on 64 bit, some
Index: coregrind/m_syswrap/syswrap-s390x-linux.c
===================================================================
--- coregrind/m_syswrap/syswrap-s390x-linux.c (Revision 15801)
+++ coregrind/m_syswrap/syswrap-s390x-linux.c (Revision 15802)
@@ -1051,7 +1051,25 @@ static SyscallTableEntry syscall_table[]
// ?????(__NR_seccomp, ), // 348
LINXY(__NR_getrandom, sys_getrandom), // 349
- LINXY(__NR_memfd_create, sys_memfd_create) // 350
+ LINXY(__NR_memfd_create, sys_memfd_create), // 350
+
+ LINXY(__NR_recvmmsg, sys_recvmmsg), // 357
+ LINXY(__NR_sendmmsg, sys_sendmmsg), // 358
+ LINXY(__NR_socket, sys_socket), // 359
+ LINXY(__NR_socketpair, sys_socketpair), // 360
+ LINX_(__NR_bind, sys_bind), // 361
+ LINX_(__NR_connect, sys_connect), // 362
+ LINX_(__NR_listen, sys_listen), // 363
+ LINXY(__NR_accept4, sys_accept4), // 364
+ LINXY(__NR_getsockopt, sys_getsockopt), // 365
+ LINX_(__NR_setsockopt, sys_setsockopt), // 366
+ LINXY(__NR_getsockname, sys_getsockname), // 367
+ LINXY(__NR_getpeername, sys_getpeername), // 368
+ LINX_(__NR_sendto, sys_sendto), // 369
+ LINX_(__NR_sendmsg, sys_sendmsg), // 270
+ LINXY(__NR_recvfrom, sys_recvfrom), // 371
+ LINXY(__NR_recvmsg, sys_recvmsg), // 372
+ LINX_(__NR_shutdown, sys_shutdown) // 373
};
SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )

View File

@ -1,133 +0,0 @@
------------------------------------------------------------------------
r15766 | mjw | 2016-01-21 12:37:43 +0100 (Do, 21. Jan 2016) | 13 Zeilen
Bug #357833 Setting RLIMIT_DATA to zero breaks with linux 4.5+
We used to set the process datasize rlimit to zero to prevent
any internal use of brk() from having any effect. But later
linux kernels redefine RLIMIT_DATA as the size of any data
areas, including some dynamic mmap memory allocations.
See bug #357833 for the commit that went into linux 4.5
changing the definition of RLIMIT_DATA. So don't mess with
RLIMIT_DATA anymore. Just remember it for use in the syscall
wrappers.
This also cleans up some hacks around the execv and spawn wrappers.
------------------------------------------------------------------------
Index: coregrind/m_syswrap/syswrap-generic.c
===================================================================
--- coregrind/m_syswrap/syswrap-generic.c.orig
+++ coregrind/m_syswrap/syswrap-generic.c
@@ -3014,9 +3014,6 @@ PRE(sys_execve)
vg_assert(j == tot_args+1);
}
- /* restore the DATA rlimit for the child */
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
-
/*
Set the signal state up for exec.
Index: coregrind/m_syswrap/syswrap-solaris.c
===================================================================
--- coregrind/m_syswrap/syswrap-solaris.c.orig
+++ coregrind/m_syswrap/syswrap-solaris.c
@@ -1539,21 +1539,12 @@ PRE(sys_spawn)
#undef COPY_CHAR_TO_ARGENV
#undef COPY_STRING_TOARGENV
- /* HACK: Temporarily restore the DATA rlimit for spawned child.
- This is a terrible hack to provide sensible brk limit for child. */
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
-
/* Actual spawn() syscall. */
SysRes res = VG_(do_syscall5)(__NR_spawn, (UWord) path, (UWord) attrs,
attrs_size, (UWord) argenv, argenv_size);
SET_STATUS_from_SysRes(res);
VG_(free)(argenv);
- /* Restore DATA rlimit back to its previous value set in m_main.c. */
- struct vki_rlimit zero = { 0, 0 };
- zero.rlim_max = VG_(client_rlimit_data).rlim_max;
- VG_(setrlimit)(VKI_RLIMIT_DATA, &zero);
-
if (SUCCESS) {
PRINT(" spawn: process %d spawned child %ld\n", VG_(getpid)(), RES);
}
@@ -3619,9 +3610,6 @@ PRE(sys_execve)
VG_(sigprocmask)(VKI_SIG_SETMASK, &tst->sig_mask, NULL);
}
- /* Restore the DATA rlimit for the child. */
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
-
/* Debug-only printing. */
if (0) {
HChar **cpp;
Index: coregrind/m_main.c
===================================================================
--- coregrind/m_main.c.orig
+++ coregrind/m_main.c
@@ -1627,7 +1627,6 @@ Int valgrind_main ( Int argc, HChar **ar
Bool logging_to_fd = False;
const HChar* xml_fname_unexpanded = NULL;
Int loglevel, i;
- struct vki_rlimit zero = { 0, 0 };
XArray* addr2dihandle = NULL;
//============================================================
@@ -1800,13 +1799,15 @@ Int valgrind_main ( Int argc, HChar **ar
VG_(debugLog)(1, "main", "... %s\n", VG_(name_of_launcher));
//--------------------------------------------------------------
- // Get the current process datasize rlimit, and set it to zero.
- // This prevents any internal uses of brk() from having any effect.
- // We remember the old value so we can restore it on exec, so that
- // child processes will have a reasonable brk value.
+ // We used to set the process datasize rlimit to zero to prevent
+ // any internal use of brk() from having any effect. But later
+ // linux kernels redefine RLIMIT_DATA as the size of any data
+ // areas, including some dynamic mmap memory allocations.
+ // See bug #357833 for the commit that went into linux 4.5
+ // changing the definition of RLIMIT_DATA. So don't mess with
+ // RLIMIT_DATA here now anymore. Just remember it for use in
+ // the syscall wrappers.
VG_(getrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
- zero.rlim_max = VG_(client_rlimit_data).rlim_max;
- VG_(setrlimit)(VKI_RLIMIT_DATA, &zero);
// Get the current process stack rlimit.
VG_(getrlimit)(VKI_RLIMIT_STACK, &VG_(client_rlimit_stack));
Index: coregrind/m_libcproc.c
===================================================================
--- coregrind/m_libcproc.c.orig
+++ coregrind/m_libcproc.c
@@ -450,9 +450,6 @@ void VG_(execv) ( const HChar* filename,
HChar** envp;
SysRes res;
- /* restore the DATA rlimit for the child */
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
-
envp = VG_(env_clone)(VG_(client_envp));
VG_(env_remove_valgrind_env_stuff)( envp, True /*ro_strings*/, NULL );
@@ -511,17 +508,9 @@ Int VG_(spawn) ( const HChar *filename,
# undef COPY_CHAR_TO_ARGENV
# undef COPY_STRING_TOARGENV
- /* HACK: Temporarily restore the DATA rlimit for spawned child. */
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
-
SysRes res = VG_(do_syscall5)(__NR_spawn, (UWord) filename, (UWord) NULL, 0,
(UWord) argenv, argenv_size);
- /* Restore DATA rlimit back to its previous value set in m_main.c. */
- struct vki_rlimit zero = { 0, 0 };
- zero.rlim_max = VG_(client_rlimit_data).rlim_max;
- VG_(setrlimit)(VKI_RLIMIT_DATA, &zero);
-
VG_(free)(argenv);
for (HChar **p = envp; *p != NULL; p++) {
VG_(free)(*p);

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6c396271a8c1ddd5a6fb9abe714ea1e8a86fce85b30ab26b4266aeb4c2413b42
size 11910809

3
valgrind-3.12.0.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:67ca4395b2527247780f36148b084f5743a68ab0c850cb43e4a5b4b012cf76a1
size 12788556

View File

@ -1,3 +1,16 @@
-------------------------------------------------------------------
Tue Dec 27 21:48:56 UTC 2016 - foss@grueninger.de
- update to 3.12.0
* 3.12.0 is a feature release with many improvements and the usual
collection of bug fixes. The full changelog can be found at
http://valgrind.org/docs/manual/dist.news.html
or
/usr/share/doc/packages/valgrind/NEWS
- droped patches which are part of the release:
r15702.diff, r15792.diff, r15802.diff, svn-r15766.patch,
vex-r3197.diff, vex-r3210.diff, vex-r3213.diff
-------------------------------------------------------------------
Thu Oct 20 00:42:48 UTC 2016 - stefan.bruens@rwth-aachen.de

View File

@ -25,7 +25,7 @@
%define building_docs 0
%endif
Name: valgrind
Version: 3.11.0
Version: 3.12.0
Release: 0
Summary: Memory Management Debugger
License: GPL-2.0+
@ -36,14 +36,6 @@ Source0: http://valgrind.org/downloads/%{name}-%{version}.tar.bz2
# svn di svn://svn.valgrind.org/vex/tags/VEX_3_5_0 svn://svn.valgrind.org/vex/branches/VEX_3_5_BRANCH > VEX_3_5_BRANCH.diff
Patch1: jit-register-unregister.diff
Patch2: armv6-support.diff
Patch4: gcc5.patch
Patch5: svn-r15766.patch
Patch6: r15702.diff
Patch7: r15792.diff
Patch8: r15802.diff
Patch100: vex-r3197.diff
Patch101: vex-r3210.diff
Patch102: vex-r3213.diff
BuildRequires: automake
BuildRequires: docbook-xsl-stylesheets
BuildRequires: docbook_4
@ -118,14 +110,6 @@ but it has been successfully used to optimize several KDE applications.
# needs porting to 3.11
##%patch1
%patch2
%patch4
%patch5
%patch6
%patch7
%patch8
%patch100
%patch101
%patch102
%build
export FLAGS="%{optflags}"
@ -229,8 +213,12 @@ cp -a README* NEWS AUTHORS COPYING COPYING.DOCS %{buildroot}/%{_defaultdocdir}/%
%{_libdir}/valgrind/power-fpu.xml
%{_libdir}/valgrind/power-linux-valgrind-s*.xml
%{_libdir}/valgrind/power-linux.xml
%{_libdir}/valgrind/power-vsx-valgrind-s1.xml
%{_libdir}/valgrind/power-vsx-valgrind-s2.xml
%{_libdir}/valgrind/power-vsx.xml
%{_libdir}/valgrind/power64-core-valgrind-s*.xml
%{_libdir}/valgrind/power64-core.xml
%{_libdir}/valgrind/power64-core2-valgrind-s*.xml
%{_libdir}/valgrind/power64-linux-valgrind-s*.xml
%{_libdir}/valgrind/power64-linux.xml
%{_libdir}/valgrind/powerpc-altivec32l-valgrind.xml

View File

@ -1,23 +0,0 @@
------------------------------------------------------------------------
r3197 | mjw | 2015-10-01 14:31:19 +0200 (Do, 01. Okt 2015) | 5 Zeilen
Don't advertise RDRAND in cpuid for Core-i7-4910-like avx2 machine.
Bug#353370. In amd64g_dirtyhelper_CPUID_avx2 we set the RDRAND bit
but we don't implement support for RDRAND. Turn the bit off so programs
don't try to use RDRAND when running under valgrind.
------------------------------------------------------------------------
Index: priv/guest_amd64_helpers.c
===================================================================
--- VEX/priv/guest_amd64_helpers.c (Revision 3196)
+++ VEX/priv/guest_amd64_helpers.c (Revision 3197)
@@ -3101,7 +3101,8 @@ void amd64g_dirtyhelper_CPUID_avx2 ( Vex
SET_ABCD(0x0000000d, 0x756e6547, 0x6c65746e, 0x49656e69);
break;
case 0x00000001:
- SET_ABCD(0x000306c3, 0x02100800, 0x7ffafbff, 0xbfebfbff);
+ /* Don't advertise RDRAND support, bit 30 in ECX. */
+ SET_ABCD(0x000306c3, 0x02100800, 0x3ffafbff, 0xbfebfbff);
break;
case 0x00000002:
SET_ABCD(0x76036301, 0x00f0b6ff, 0x00000000, 0x00c10000);

View File

@ -1,69 +0,0 @@
------------------------------------------------------------------------
r3210 | florian | 2016-02-17 20:57:01 +0100 (Mi, 17. Feb 2016) | 3 Zeilen
s390: Implement popcnt insn. Part of fixing BZ #359289.
Patch by Andreas Arnez (arnez@linux.vnet.ibm.com)
------------------------------------------------------------------------
Index: priv/guest_s390_toIR.c
===================================================================
--- VEX/priv/guest_s390_toIR.c (Revision 3209)
+++ VEX/priv/guest_s390_toIR.c (Revision 3210)
@@ -8,7 +8,7 @@
This file is part of Valgrind, a dynamic binary instrumentation
framework.
- Copyright IBM Corp. 2010-2015
+ Copyright IBM Corp. 2010-2016
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@@ -12938,6 +12938,38 @@ s390_irgen_FLOGR(UChar r1, UChar r2)
}
static const HChar *
+s390_irgen_POPCNT(UChar r1, UChar r2)
+{
+ Int i;
+ IRTemp val = newTemp(Ity_I64);
+ IRTemp mask[3];
+
+ assign(val, get_gpr_dw0(r2));
+ for (i = 0; i < 3; i++) {
+ mask[i] = newTemp(Ity_I64);
+ }
+ assign(mask[0], mkU64(0x5555555555555555ULL));
+ assign(mask[1], mkU64(0x3333333333333333ULL));
+ assign(mask[2], mkU64(0x0F0F0F0F0F0F0F0FULL));
+ for (i = 0; i < 3; i++) {
+ IRTemp tmp = newTemp(Ity_I64);
+
+ assign(tmp,
+ binop(Iop_Add64,
+ binop(Iop_And64,
+ mkexpr(val),
+ mkexpr(mask[i])),
+ binop(Iop_And64,
+ binop(Iop_Shr64, mkexpr(val), mkU8(1 << i)),
+ mkexpr(mask[i]))));
+ val = tmp;
+ }
+ s390_cc_thunk_putZ(S390_CC_OP_BITWISE, val);
+ put_gpr_dw0(r1, mkexpr(val));
+ return "popcnt";
+}
+
+static const HChar *
s390_irgen_STCK(IRTemp op2addr)
{
IRDirty *d;
@@ -14999,7 +15031,8 @@ s390_decode_4byte_and_irgen(const UChar
ovl.fmt.RRE.r2); goto ok;
case 0xb9df: s390_format_RRE_RR(s390_irgen_CLHLR, ovl.fmt.RRE.r1,
ovl.fmt.RRE.r2); goto ok;
- case 0xb9e1: /* POPCNT */ goto unimplemented;
+ case 0xb9e1: s390_format_RRE_RR(s390_irgen_POPCNT, ovl.fmt.RRE.r1,
+ ovl.fmt.RRE.r2); goto ok;
case 0xb9e2: s390_format_RRF_U0RR(s390_irgen_LOCGR, ovl.fmt.RRF3.r3,
ovl.fmt.RRF3.r1, ovl.fmt.RRF3.r2,
S390_XMNM_LOCGR); goto ok;

View File

@ -1,21 +0,0 @@
svn log --diff -c r3213 svn://svn.valgrind.org/vex
------------------------------------------------------------------------
r3213 | sewardj | 2016-03-21 20:29:20 +0100 (Mo, 21. Mär 2016) | 2 Zeilen
Make isZeroU handle the V256 case. Fixes #356393.
Index: trunk/priv/ir_opt.c
===================================================================
--- VEX/priv/ir_opt.c (Revision 3212)
+++ VEX/priv/ir_opt.c (Revision 3213)
@@ -1223,6 +1223,7 @@
case Ico_U16: return toBool( e->Iex.Const.con->Ico.U16 == 0);
case Ico_U32: return toBool( e->Iex.Const.con->Ico.U32 == 0);
case Ico_U64: return toBool( e->Iex.Const.con->Ico.U64 == 0);
+ case Ico_V256: return toBool( e->Iex.Const.con->Ico.V256 == 0x00000000);
default: vpanic("isZeroU");
}
}
------------------------------------------------------------------------