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:
parent
9d1b3ab9be
commit
ac7ac5e535
70
r15702.diff
70
r15702.diff
@ -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
|
104
r15792.diff
104
r15792.diff
@ -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;
|
||||
+}
|
76
r15802.diff
76
r15802.diff
@ -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 )
|
133
svn-r15766.patch
133
svn-r15766.patch
@ -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);
|
@ -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
3
valgrind-3.12.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:67ca4395b2527247780f36148b084f5743a68ab0c850cb43e4a5b4b012cf76a1
|
||||
size 12788556
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
@ -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;
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
------------------------------------------------------------------------
|
Loading…
Reference in New Issue
Block a user