Accepting request 652030 from devel:tools
- update valgrind.xen.patch to branch bug390553-20181125-ddfc274b2 - build against Toolchain module for SLE12 - add 0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch 0001-Bug-400490-s390x-Fix-register-allocation-for-VRs-vs-.patch, 0001-Bug-400491-s390x-Sign-extend-immediate-operand-of-LO.patch, 0001-s390x-more-fixes.patch, Implement-emulated-system-registers.-Fixes-392146.patch (FATE#326355) - enable check (poo#36751) - update to 3.14.0 (bsc#1114575, FATE#326355): see http://www.valgrind.org/docs/manual/dist.news.html * The new option --keep-debuginfo=no|yes (default no) can be used to retain debug info for unloaded code. This allows saved stack traces (e.g. for memory leaks) to include file/line info for code that has been dlclose'd (or similar). See the user manual for more information and known limitations. * Ability to specify suppressions based on source file name and line number. * Majorly overhauled register allocator. No end-user changes, but the JIT generates code a bit more quickly now. * Preliminary support for macOS 10.13 has been added. * mips: support for MIPS32/MIPS64 Revision 6 has been added. * mips: support for MIPS SIMD architecture (MSA) has been added. * mips: support for MIPS N32 ABI has been added. * s390: partial support for vector instructions (integer and string) has been added. * Helgrind: Addition of a flag --delta-stacktrace=no|yes [yes on linux amd64/x86] which specifies how full history stack traces should be computed. Setting this to =yes can speed up Helgrind by 25% when using --history-level=full. OBS-URL: https://build.opensuse.org/request/show/652030 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/valgrind?expand=0&rev=111
This commit is contained in:
commit
21bf0e2098
@ -1,102 +0,0 @@
|
|||||||
From cb72566ac3af13889f7ae88068c3b3ee6a6b757b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Thu, 12 Jul 2018 13:56:00 +0200
|
|
||||||
Subject: [PATCH] Accept read-only PT_LOAD segments and .rodata.
|
|
||||||
|
|
||||||
The new binutils ld -z separate-code option creates multiple read-only
|
|
||||||
PT_LOAD segments and might place .rodata in a non-executable segment.
|
|
||||||
|
|
||||||
Allow and keep track of separate read-only segments and allow a readonly
|
|
||||||
page with .rodata section.
|
|
||||||
|
|
||||||
Based on patches from Tom Hughes <tom@compton.nu> and
|
|
||||||
H.J. Lu <hjl.tools@gmail.com>.
|
|
||||||
|
|
||||||
https://bugs.kde.org/show_bug.cgi?id=395682
|
|
||||||
|
|
||||||
[sbruens] Backported to 3.13.0 release
|
|
||||||
---
|
|
||||||
coregrind/m_debuginfo/debuginfo.c | 2 --
|
|
||||||
coregrind/m_debuginfo/readelf.c | 34 +++++++++++++++++++++++--------
|
|
||||||
2 files changed, 26 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c
|
|
||||||
index 24814d8..2cf433a 100644
|
|
||||||
--- a/coregrind/m_debuginfo/debuginfo.c
|
|
||||||
+++ b/coregrind/m_debuginfo/debuginfo.c
|
|
||||||
@@ -957,9 +957,7 @@ ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV, Int use_fd )
|
|
||||||
# error "Unknown platform"
|
|
||||||
# endif
|
|
||||||
|
|
||||||
-# if defined(VGP_x86_darwin) && DARWIN_VERS >= DARWIN_10_7
|
|
||||||
is_ro_map = seg->hasR && !seg->hasW && !seg->hasX;
|
|
||||||
-# endif
|
|
||||||
|
|
||||||
# if defined(VGO_solaris)
|
|
||||||
is_rx_map = seg->hasR && seg->hasX && !seg->hasW;
|
|
||||||
diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c
|
|
||||||
index 3c8e62b..34a40c9 100644
|
|
||||||
--- a/coregrind/m_debuginfo/readelf.c
|
|
||||||
+++ b/coregrind/m_debuginfo/readelf.c
|
|
||||||
@@ -1785,7 +1785,7 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
|
|
||||||
Bool loaded = False;
|
|
||||||
for (j = 0; j < VG_(sizeXA)(di->fsm.maps); j++) {
|
|
||||||
const DebugInfoMapping* map = VG_(indexXA)(di->fsm.maps, j);
|
|
||||||
- if ( (map->rx || map->rw)
|
|
||||||
+ if ( (map->rx || map->rw || map->ro)
|
|
||||||
&& map->size > 0 /* stay sane */
|
|
||||||
&& a_phdr.p_offset >= map->foff
|
|
||||||
&& a_phdr.p_offset < map->foff + map->size
|
|
||||||
@@ -1816,6 +1816,16 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
|
|
||||||
i, (UWord)item.bias);
|
|
||||||
loaded = True;
|
|
||||||
}
|
|
||||||
+ if (map->ro
|
|
||||||
+ && (a_phdr.p_flags & (PF_R | PF_W | PF_X))
|
|
||||||
+ == PF_R) {
|
|
||||||
+ item.exec = False;
|
|
||||||
+ VG_(addToXA)(svma_ranges, &item);
|
|
||||||
+ TRACE_SYMTAB(
|
|
||||||
+ "PT_LOAD[%ld]: acquired as ro, bias 0x%lx\n",
|
|
||||||
+ i, (UWord)item.bias);
|
|
||||||
+ loaded = True;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!loaded) {
|
|
||||||
@@ -2083,17 +2093,25 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- /* Accept .rodata where mapped as rx (data), even if zero-sized */
|
|
||||||
+ /* Accept .rodata where mapped as rx or rw (data), even if zero-sized */
|
|
||||||
if (0 == VG_(strcmp)(name, ".rodata")) {
|
|
||||||
- if (inrx && !di->rodata_present) {
|
|
||||||
- di->rodata_present = True;
|
|
||||||
+ if (!di->rodata_present) {
|
|
||||||
di->rodata_svma = svma;
|
|
||||||
- di->rodata_avma = svma + inrx->bias;
|
|
||||||
+ di->rodata_avma = svma;
|
|
||||||
di->rodata_size = size;
|
|
||||||
- di->rodata_bias = inrx->bias;
|
|
||||||
di->rodata_debug_svma = svma;
|
|
||||||
- di->rodata_debug_bias = inrx->bias;
|
|
||||||
- /* NB was 'inrw' prior to r11794 */
|
|
||||||
+ if (inrx) {
|
|
||||||
+ di->rodata_avma += inrx->bias;
|
|
||||||
+ di->rodata_bias = inrx->bias;
|
|
||||||
+ di->rodata_debug_bias = inrx->bias;
|
|
||||||
+ } else if (inrw) {
|
|
||||||
+ di->rodata_avma += inrw->bias;
|
|
||||||
+ di->rodata_bias = inrw->bias;
|
|
||||||
+ di->rodata_debug_bias = inrw->bias;
|
|
||||||
+ } else {
|
|
||||||
+ BAD(".rodata");
|
|
||||||
+ }
|
|
||||||
+ di->rodata_present = True;
|
|
||||||
TRACE_SYMTAB("acquiring .rodata svma = %#lx .. %#lx\n",
|
|
||||||
di->rodata_svma,
|
|
||||||
di->rodata_svma + di->rodata_size - 1);
|
|
||||||
--
|
|
||||||
2.18.0
|
|
||||||
|
|
402
0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch
Normal file
402
0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch
Normal file
@ -0,0 +1,402 @@
|
|||||||
|
From 50bd2282bce101012a5668b670cb185375600d2d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Arnez <arnez@linux.ibm.com>
|
||||||
|
Date: Thu, 18 Oct 2018 17:51:57 +0200
|
||||||
|
Subject: [PATCH] Bug 397187 s390x: Add vector register support for vgdb
|
||||||
|
|
||||||
|
On s390x machines with a vector facility, Valgrind's gdbserver didn't
|
||||||
|
represent the vector registers. This is fixed.
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
coregrind/Makefile.am | 5 +
|
||||||
|
coregrind/m_gdbserver/s390-vx-valgrind-s1.xml | 43 ++++++++
|
||||||
|
coregrind/m_gdbserver/s390-vx-valgrind-s2.xml | 43 ++++++++
|
||||||
|
coregrind/m_gdbserver/s390-vx.xml | 59 +++++++++++
|
||||||
|
.../m_gdbserver/s390x-vx-linux-valgrind.xml | 28 ++++++
|
||||||
|
coregrind/m_gdbserver/s390x-vx-linux.xml | 18 ++++
|
||||||
|
coregrind/m_gdbserver/valgrind-low-s390x.c | 97 +++++++++++++++++--
|
||||||
|
8 files changed, 288 insertions(+), 6 deletions(-)
|
||||||
|
create mode 100644 coregrind/m_gdbserver/s390-vx-valgrind-s1.xml
|
||||||
|
create mode 100644 coregrind/m_gdbserver/s390-vx-valgrind-s2.xml
|
||||||
|
create mode 100644 coregrind/m_gdbserver/s390-vx.xml
|
||||||
|
create mode 100644 coregrind/m_gdbserver/s390x-vx-linux-valgrind.xml
|
||||||
|
create mode 100644 coregrind/m_gdbserver/s390x-vx-linux.xml
|
||||||
|
|
||||||
|
Index: valgrind-3.14.0/coregrind/Makefile.am
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.14.0.orig/coregrind/Makefile.am
|
||||||
|
+++ valgrind-3.14.0/coregrind/Makefile.am
|
||||||
|
@@ -681,6 +681,11 @@ GDBSERVER_XML_FILES = \
|
||||||
|
m_gdbserver/s390x-linux64-valgrind-s1.xml \
|
||||||
|
m_gdbserver/s390x-linux64-valgrind-s2.xml \
|
||||||
|
m_gdbserver/s390x-linux64.xml \
|
||||||
|
+ m_gdbserver/s390-vx-valgrind-s1.xml \
|
||||||
|
+ m_gdbserver/s390-vx-valgrind-s2.xml \
|
||||||
|
+ m_gdbserver/s390-vx.xml \
|
||||||
|
+ m_gdbserver/s390x-vx-linux-valgrind.xml \
|
||||||
|
+ m_gdbserver/s390x-vx-linux.xml \
|
||||||
|
m_gdbserver/mips-cp0-valgrind-s1.xml \
|
||||||
|
m_gdbserver/mips-cp0-valgrind-s2.xml \
|
||||||
|
m_gdbserver/mips-cp0.xml \
|
||||||
|
Index: valgrind-3.14.0/coregrind/m_gdbserver/s390-vx-valgrind-s1.xml
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ valgrind-3.14.0/coregrind/m_gdbserver/s390-vx-valgrind-s1.xml
|
||||||
|
@@ -0,0 +1,43 @@
|
||||||
|
+<?xml version="1.0"?>
|
||||||
|
+<!-- Copyright (C) 2015-2018 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+ Copying and distribution of this file, with or without modification,
|
||||||
|
+ are permitted in any medium without royalty provided the copyright
|
||||||
|
+ notice and this notice are preserved. -->
|
||||||
|
+
|
||||||
|
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||||
|
+<feature name="org.gnu.gdb.s390.vx-valgrind-s1">
|
||||||
|
+ <reg name="v0ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v1ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v2ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v3ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v4ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v5ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v6ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v7ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v8ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v9ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v10ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v11ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v12ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v13ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v14ls1" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v15ls1" bitsize="64" type="uint64"/>
|
||||||
|
+
|
||||||
|
+ <reg name="v16s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v17s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v18s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v19s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v20s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v21s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v22s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v23s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v24s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v25s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v26s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v27s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v28s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v29s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v30s1" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v31s1" bitsize="128" type="uint128"/>
|
||||||
|
+</feature>
|
||||||
|
Index: valgrind-3.14.0/coregrind/m_gdbserver/s390-vx-valgrind-s2.xml
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ valgrind-3.14.0/coregrind/m_gdbserver/s390-vx-valgrind-s2.xml
|
||||||
|
@@ -0,0 +1,43 @@
|
||||||
|
+<?xml version="1.0"?>
|
||||||
|
+<!-- Copyright (C) 2015-2018 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+ Copying and distribution of this file, with or without modification,
|
||||||
|
+ are permitted in any medium without royalty provided the copyright
|
||||||
|
+ notice and this notice are preserved. -->
|
||||||
|
+
|
||||||
|
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||||
|
+<feature name="org.gnu.gdb.s390.vx-valgrind-s2">
|
||||||
|
+ <reg name="v0ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v1ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v2ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v3ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v4ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v5ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v6ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v7ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v8ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v9ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v10ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v11ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v12ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v13ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v14ls2" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v15ls2" bitsize="64" type="uint64"/>
|
||||||
|
+
|
||||||
|
+ <reg name="v16s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v17s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v18s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v19s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v20s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v21s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v22s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v23s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v24s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v25s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v26s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v27s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v28s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v29s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v30s2" bitsize="128" type="uint128"/>
|
||||||
|
+ <reg name="v31s2" bitsize="128" type="uint128"/>
|
||||||
|
+</feature>
|
||||||
|
Index: valgrind-3.14.0/coregrind/m_gdbserver/s390-vx.xml
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ valgrind-3.14.0/coregrind/m_gdbserver/s390-vx.xml
|
||||||
|
@@ -0,0 +1,59 @@
|
||||||
|
+<?xml version="1.0"?>
|
||||||
|
+<!-- Copyright (C) 2015-2018 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+ Copying and distribution of this file, with or without modification,
|
||||||
|
+ are permitted in any medium without royalty provided the copyright
|
||||||
|
+ notice and this notice are preserved. -->
|
||||||
|
+
|
||||||
|
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||||
|
+<feature name="org.gnu.gdb.s390.vx">
|
||||||
|
+ <vector id="v4f" type="ieee_single" count="4"/>
|
||||||
|
+ <vector id="v2d" type="ieee_double" count="2"/>
|
||||||
|
+ <vector id="v16i8" type="int8" count="16"/>
|
||||||
|
+ <vector id="v8i16" type="int16" count="8"/>
|
||||||
|
+ <vector id="v4i32" type="int32" count="4"/>
|
||||||
|
+ <vector id="v2i64" type="int64" count="2"/>
|
||||||
|
+ <union id="vec128">
|
||||||
|
+ <field name="v4_float" type="v4f"/>
|
||||||
|
+ <field name="v2_double" type="v2d"/>
|
||||||
|
+ <field name="v16_int8" type="v16i8"/>
|
||||||
|
+ <field name="v8_int16" type="v8i16"/>
|
||||||
|
+ <field name="v4_int32" type="v4i32"/>
|
||||||
|
+ <field name="v2_int64" type="v2i64"/>
|
||||||
|
+ <field name="uint128" type="uint128"/>
|
||||||
|
+ </union>
|
||||||
|
+
|
||||||
|
+ <reg name="v0l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v1l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v2l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v3l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v4l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v5l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v6l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v7l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v8l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v9l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v10l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v11l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v12l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v13l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v14l" bitsize="64" type="uint64"/>
|
||||||
|
+ <reg name="v15l" bitsize="64" type="uint64"/>
|
||||||
|
+
|
||||||
|
+ <reg name="v16" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v17" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v18" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v19" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v20" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v21" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v22" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v23" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v24" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v25" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v26" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v27" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v28" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v29" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v30" bitsize="128" type="vec128"/>
|
||||||
|
+ <reg name="v31" bitsize="128" type="vec128"/>
|
||||||
|
+</feature>
|
||||||
|
Index: valgrind-3.14.0/coregrind/m_gdbserver/s390x-vx-linux-valgrind.xml
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ valgrind-3.14.0/coregrind/m_gdbserver/s390x-vx-linux-valgrind.xml
|
||||||
|
@@ -0,0 +1,28 @@
|
||||||
|
+<?xml version="1.0"?>
|
||||||
|
+<!-- Copyright (C) 2010-2018 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+ Copying and distribution of this file, with or without modification,
|
||||||
|
+ are permitted in any medium without royalty provided the copyright
|
||||||
|
+ notice and this notice are preserved. -->
|
||||||
|
+
|
||||||
|
+<!-- S/390 64-bit user-level code. -->
|
||||||
|
+
|
||||||
|
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||||
|
+<target>
|
||||||
|
+ <architecture>s390:64-bit</architecture>
|
||||||
|
+ <xi:include href="s390x-core64.xml"/>
|
||||||
|
+ <xi:include href="s390-acr.xml"/>
|
||||||
|
+ <xi:include href="s390-fpr.xml"/>
|
||||||
|
+ <xi:include href="s390x-linux64.xml"/>
|
||||||
|
+ <xi:include href="s390-vx.xml"/>
|
||||||
|
+ <xi:include href="s390x-core64-valgrind-s1.xml"/>
|
||||||
|
+ <xi:include href="s390-acr-valgrind-s1.xml"/>
|
||||||
|
+ <xi:include href="s390-fpr-valgrind-s1.xml"/>
|
||||||
|
+ <xi:include href="s390x-linux64-valgrind-s1.xml"/>
|
||||||
|
+ <xi:include href="s390-vx-valgrind-s1.xml"/>
|
||||||
|
+ <xi:include href="s390x-core64-valgrind-s2.xml"/>
|
||||||
|
+ <xi:include href="s390-acr-valgrind-s2.xml"/>
|
||||||
|
+ <xi:include href="s390-fpr-valgrind-s2.xml"/>
|
||||||
|
+ <xi:include href="s390x-linux64-valgrind-s2.xml"/>
|
||||||
|
+ <xi:include href="s390-vx-valgrind-s2.xml"/>
|
||||||
|
+</target>
|
||||||
|
Index: valgrind-3.14.0/coregrind/m_gdbserver/s390x-vx-linux.xml
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ valgrind-3.14.0/coregrind/m_gdbserver/s390x-vx-linux.xml
|
||||||
|
@@ -0,0 +1,18 @@
|
||||||
|
+<?xml version="1.0"?>
|
||||||
|
+<!-- Copyright (C) 2010-2018 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+ Copying and distribution of this file, with or without modification,
|
||||||
|
+ are permitted in any medium without royalty provided the copyright
|
||||||
|
+ notice and this notice are preserved. -->
|
||||||
|
+
|
||||||
|
+<!-- S/390 64-bit user-level code. -->
|
||||||
|
+
|
||||||
|
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||||
|
+<target>
|
||||||
|
+ <architecture>s390:64-bit</architecture>
|
||||||
|
+ <xi:include href="s390x-core64.xml"/>
|
||||||
|
+ <xi:include href="s390-acr.xml"/>
|
||||||
|
+ <xi:include href="s390-fpr.xml"/>
|
||||||
|
+ <xi:include href="s390x-linux64.xml"/>
|
||||||
|
+ <xi:include href="s390-vx.xml"/>
|
||||||
|
+</target>
|
||||||
|
Index: valgrind-3.14.0/coregrind/m_gdbserver/valgrind-low-s390x.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.14.0.orig/coregrind/m_gdbserver/valgrind-low-s390x.c
|
||||||
|
+++ valgrind-3.14.0/coregrind/m_gdbserver/valgrind-low-s390x.c
|
||||||
|
@@ -88,9 +88,42 @@ static struct reg regs[] = {
|
||||||
|
{ "f14", 2592, 64 },
|
||||||
|
{ "f15", 2656, 64 },
|
||||||
|
{ "orig_r2", 2720, 64 },
|
||||||
|
+ { "v0l", 2784, 64 },
|
||||||
|
+ { "v1l", 2848, 64 },
|
||||||
|
+ { "v2l", 2912, 64 },
|
||||||
|
+ { "v3l", 2976, 64 },
|
||||||
|
+ { "v4l", 3040, 64 },
|
||||||
|
+ { "v5l", 3104, 64 },
|
||||||
|
+ { "v6l", 3168, 64 },
|
||||||
|
+ { "v7l", 3232, 64 },
|
||||||
|
+ { "v8l", 3296, 64 },
|
||||||
|
+ { "v9l", 3360, 64 },
|
||||||
|
+ { "v10l", 3424, 64 },
|
||||||
|
+ { "v11l", 3488, 64 },
|
||||||
|
+ { "v12l", 3552, 64 },
|
||||||
|
+ { "v13l", 3616, 64 },
|
||||||
|
+ { "v14l", 3680, 64 },
|
||||||
|
+ { "v15l", 3744, 64 },
|
||||||
|
+ { "v16", 3808, 128 },
|
||||||
|
+ { "v17", 3936, 128 },
|
||||||
|
+ { "v18", 4064, 128 },
|
||||||
|
+ { "v19", 4192, 128 },
|
||||||
|
+ { "v20", 4320, 128 },
|
||||||
|
+ { "v21", 4448, 128 },
|
||||||
|
+ { "v22", 4576, 128 },
|
||||||
|
+ { "v23", 4704, 128 },
|
||||||
|
+ { "v24", 4832, 128 },
|
||||||
|
+ { "v25", 4960, 128 },
|
||||||
|
+ { "v26", 5088, 128 },
|
||||||
|
+ { "v27", 5216, 128 },
|
||||||
|
+ { "v28", 5344, 128 },
|
||||||
|
+ { "v29", 5472, 128 },
|
||||||
|
+ { "v30", 5600, 128 },
|
||||||
|
+ { "v31", 5728, 128 },
|
||||||
|
};
|
||||||
|
static const char *expedite_regs[] = { "r14", "r15", "pswa", 0 };
|
||||||
|
-#define num_regs (sizeof (regs) / sizeof (regs[0]))
|
||||||
|
+#define num_regs_all (sizeof (regs) / sizeof (regs[0]))
|
||||||
|
+static int num_regs;
|
||||||
|
|
||||||
|
static
|
||||||
|
CORE_ADDR get_pc (void)
|
||||||
|
@@ -165,7 +198,7 @@ void transfer_register (ThreadId tid, in
|
||||||
|
case 32: VG_(transfer) (&s390x->guest_a14, buf, dir, size, mod); break;
|
||||||
|
case 33: VG_(transfer) (&s390x->guest_a15, buf, dir, size, mod); break;
|
||||||
|
case 34: VG_(transfer) (&s390x->guest_fpc, buf, dir, size, mod); break;
|
||||||
|
- case 35: VG_(transfer) (&s390x->guest_v0, buf, dir, size, mod); break;
|
||||||
|
+ case 35: VG_(transfer) (&s390x->guest_v0.w64[0], buf, dir, size, mod); break;
|
||||||
|
case 36: VG_(transfer) (&s390x->guest_v1.w64[0], buf, dir, size, mod); break;
|
||||||
|
case 37: VG_(transfer) (&s390x->guest_v2.w64[0], buf, dir, size, mod); break;
|
||||||
|
case 38: VG_(transfer) (&s390x->guest_v3.w64[0], buf, dir, size, mod); break;
|
||||||
|
@@ -182,18 +215,65 @@ void transfer_register (ThreadId tid, in
|
||||||
|
case 49: VG_(transfer) (&s390x->guest_v14.w64[0], buf, dir, size, mod); break;
|
||||||
|
case 50: VG_(transfer) (&s390x->guest_v15.w64[0], buf, dir, size, mod); break;
|
||||||
|
case 51: *mod = False; break; //GDBTD??? { "orig_r2", 0, 64 },
|
||||||
|
+ case 52: VG_(transfer) (&s390x->guest_v0.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 53: VG_(transfer) (&s390x->guest_v1.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 54: VG_(transfer) (&s390x->guest_v2.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 55: VG_(transfer) (&s390x->guest_v3.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 56: VG_(transfer) (&s390x->guest_v4.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 57: VG_(transfer) (&s390x->guest_v5.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 58: VG_(transfer) (&s390x->guest_v6.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 59: VG_(transfer) (&s390x->guest_v7.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 60: VG_(transfer) (&s390x->guest_v8.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 61: VG_(transfer) (&s390x->guest_v9.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 62: VG_(transfer) (&s390x->guest_v10.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 63: VG_(transfer) (&s390x->guest_v11.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 64: VG_(transfer) (&s390x->guest_v12.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 65: VG_(transfer) (&s390x->guest_v13.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 66: VG_(transfer) (&s390x->guest_v14.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 67: VG_(transfer) (&s390x->guest_v15.w64[1], buf, dir, size, mod); break;
|
||||||
|
+ case 68: VG_(transfer) (&s390x->guest_v16, buf, dir, size, mod); break;
|
||||||
|
+ case 69: VG_(transfer) (&s390x->guest_v17, buf, dir, size, mod); break;
|
||||||
|
+ case 70: VG_(transfer) (&s390x->guest_v18, buf, dir, size, mod); break;
|
||||||
|
+ case 71: VG_(transfer) (&s390x->guest_v19, buf, dir, size, mod); break;
|
||||||
|
+ case 72: VG_(transfer) (&s390x->guest_v20, buf, dir, size, mod); break;
|
||||||
|
+ case 73: VG_(transfer) (&s390x->guest_v21, buf, dir, size, mod); break;
|
||||||
|
+ case 74: VG_(transfer) (&s390x->guest_v22, buf, dir, size, mod); break;
|
||||||
|
+ case 75: VG_(transfer) (&s390x->guest_v23, buf, dir, size, mod); break;
|
||||||
|
+ case 76: VG_(transfer) (&s390x->guest_v24, buf, dir, size, mod); break;
|
||||||
|
+ case 77: VG_(transfer) (&s390x->guest_v25, buf, dir, size, mod); break;
|
||||||
|
+ case 78: VG_(transfer) (&s390x->guest_v26, buf, dir, size, mod); break;
|
||||||
|
+ case 79: VG_(transfer) (&s390x->guest_v27, buf, dir, size, mod); break;
|
||||||
|
+ case 80: VG_(transfer) (&s390x->guest_v28, buf, dir, size, mod); break;
|
||||||
|
+ case 81: VG_(transfer) (&s390x->guest_v29, buf, dir, size, mod); break;
|
||||||
|
+ case 82: VG_(transfer) (&s390x->guest_v30, buf, dir, size, mod); break;
|
||||||
|
+ case 83: VG_(transfer) (&s390x->guest_v31, buf, dir, size, mod); break;
|
||||||
|
default: vg_assert(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
+Bool have_vx (void)
|
||||||
|
+{
|
||||||
|
+ VexArch va;
|
||||||
|
+ VexArchInfo vai;
|
||||||
|
+ VG_(machine_get_VexArchInfo) (&va, &vai);
|
||||||
|
+ return (vai.hwcaps & VEX_HWCAPS_S390X_VX) != 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static
|
||||||
|
const char* target_xml (Bool shadow_mode)
|
||||||
|
{
|
||||||
|
if (shadow_mode) {
|
||||||
|
- return "s390x-generic-valgrind.xml";
|
||||||
|
+ if (have_vx())
|
||||||
|
+ return "s390x-vx-linux-valgrind.xml";
|
||||||
|
+ else
|
||||||
|
+ return "s390x-generic-valgrind.xml";
|
||||||
|
} else {
|
||||||
|
- return "s390x-generic.xml";
|
||||||
|
- }
|
||||||
|
+ if (have_vx())
|
||||||
|
+ return "s390x-vx-linux.xml";
|
||||||
|
+ else
|
||||||
|
+ return "s390x-generic.xml";
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
static CORE_ADDR** target_get_dtv (ThreadState *tst)
|
||||||
|
@@ -206,7 +286,7 @@ static CORE_ADDR** target_get_dtv (Threa
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct valgrind_target_ops low_target = {
|
||||||
|
- num_regs,
|
||||||
|
+ -1, // Override at init time.
|
||||||
|
regs,
|
||||||
|
17, //sp = r15, which is register offset 17 in regs
|
||||||
|
transfer_register,
|
||||||
|
@@ -220,6 +300,11 @@ static struct valgrind_target_ops low_ta
|
||||||
|
void s390x_init_architecture (struct valgrind_target_ops *target)
|
||||||
|
{
|
||||||
|
*target = low_target;
|
||||||
|
+ if (have_vx())
|
||||||
|
+ num_regs = num_regs_all;
|
||||||
|
+ else
|
||||||
|
+ num_regs = num_regs_all - 32; // Remove all VX registers.
|
||||||
|
+ target->num_regs = num_regs;
|
||||||
|
set_register_cache (regs, num_regs);
|
||||||
|
gdbserver_expedite_regs = expedite_regs;
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
From 71002d8a5111d02ce8049c55017a8d948c820e35 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Arnez <arnez@linux.ibm.com>
|
||||||
|
Date: Thu, 25 Oct 2018 13:47:12 +0200
|
||||||
|
Subject: [PATCH] Bug 400490 s390x: Fix register allocation for VRs vs FPRs
|
||||||
|
|
||||||
|
On s390x, if vector registers are available, they are fed to the register
|
||||||
|
allocator as if they were separate from the floating-point registers. But
|
||||||
|
in fact the FPRs are embedded in the VRs. So for instance, if both f3 and
|
||||||
|
v3 are allocated and used at the same time, corruption will result.
|
||||||
|
|
||||||
|
This is fixed by offering only the non-overlapping VRs, v16 to v31, to the
|
||||||
|
register allocator instead.
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
VEX/priv/host_s390_defs.c | 17 +++++++----------
|
||||||
|
2 files changed, 8 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
Index: valgrind-3.14.0/VEX/priv/host_s390_defs.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.14.0.orig/VEX/priv/host_s390_defs.c
|
||||||
|
+++ valgrind-3.14.0/VEX/priv/host_s390_defs.c
|
||||||
|
@@ -59,7 +59,6 @@ static UInt s390_tchain_load64_len(void)
|
||||||
|
|
||||||
|
/* A mapping from register number to register index */
|
||||||
|
static Int gpr_index[16]; // GPR regno -> register index
|
||||||
|
-static Int fpr_index[16]; // FPR regno -> register index
|
||||||
|
static Int vr_index[32]; // VR regno -> register index
|
||||||
|
|
||||||
|
HReg
|
||||||
|
@@ -73,7 +72,7 @@ s390_hreg_gpr(UInt regno)
|
||||||
|
HReg
|
||||||
|
s390_hreg_fpr(UInt regno)
|
||||||
|
{
|
||||||
|
- Int ix = fpr_index[regno];
|
||||||
|
+ Int ix = vr_index[regno];
|
||||||
|
vassert(ix >= 0);
|
||||||
|
return mkHReg(/*virtual*/False, HRcFlt64, regno, ix);
|
||||||
|
}
|
||||||
|
@@ -463,11 +462,9 @@ getRRegUniverse_S390(void)
|
||||||
|
|
||||||
|
RRegUniverse__init(ru);
|
||||||
|
|
||||||
|
- /* Assign invalid values to the gpr/fpr/vr_index */
|
||||||
|
+ /* Assign invalid values to the gpr/vr_index */
|
||||||
|
for (UInt i = 0; i < sizeof gpr_index / sizeof gpr_index[0]; ++i)
|
||||||
|
gpr_index[i] = -1;
|
||||||
|
- for (UInt i = 0; i < sizeof fpr_index / sizeof fpr_index[0]; ++i)
|
||||||
|
- fpr_index[i] = -1;
|
||||||
|
for (UInt i = 0; i < sizeof vr_index / sizeof vr_index[0]; ++i)
|
||||||
|
vr_index[i] = -1;
|
||||||
|
|
||||||
|
@@ -494,17 +491,17 @@ getRRegUniverse_S390(void)
|
||||||
|
|
||||||
|
ru->allocable_start[HRcFlt64] = ru->size;
|
||||||
|
for (UInt regno = 8; regno <= 15; ++regno) {
|
||||||
|
- fpr_index[regno] = ru->size;
|
||||||
|
+ vr_index[regno] = ru->size;
|
||||||
|
ru->regs[ru->size++] = s390_hreg_fpr(regno);
|
||||||
|
}
|
||||||
|
for (UInt regno = 0; regno <= 7; ++regno) {
|
||||||
|
- fpr_index[regno] = ru->size;
|
||||||
|
+ vr_index[regno] = ru->size;
|
||||||
|
ru->regs[ru->size++] = s390_hreg_fpr(regno);
|
||||||
|
}
|
||||||
|
ru->allocable_end[HRcFlt64] = ru->size - 1;
|
||||||
|
|
||||||
|
ru->allocable_start[HRcVec128] = ru->size;
|
||||||
|
- for (UInt regno = 0; regno <= 31; ++regno) {
|
||||||
|
+ for (UInt regno = 16; regno <= 31; ++regno) {
|
||||||
|
vr_index[regno] = ru->size;
|
||||||
|
ru->regs[ru->size++] = s390_hreg_vr(regno);
|
||||||
|
}
|
||||||
|
@@ -527,12 +524,12 @@ getRRegUniverse_S390(void)
|
||||||
|
/* Sanity checking */
|
||||||
|
for (UInt i = 0; i < sizeof gpr_index / sizeof gpr_index[0]; ++i)
|
||||||
|
vassert(gpr_index[i] >= 0);
|
||||||
|
- for (UInt i = 0; i < sizeof fpr_index / sizeof fpr_index[0]; ++i)
|
||||||
|
- vassert(fpr_index[i] >= 0);
|
||||||
|
for (UInt i = 0; i < sizeof vr_index / sizeof vr_index[0]; ++i)
|
||||||
|
vassert(vr_index[i] >= 0);
|
||||||
|
|
||||||
|
initialised = True;
|
||||||
|
+
|
||||||
|
+ RRegUniverse__check_is_sane(ru);
|
||||||
|
return ru;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
From 9545e9f96beda6e9f2205bdb3c3e96edaf8d9e2b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Arnez <arnez@linux.ibm.com>
|
||||||
|
Date: Tue, 30 Oct 2018 17:06:38 +0100
|
||||||
|
Subject: [PATCH] Bug 400491 s390x: Sign-extend immediate operand of LOCHI and
|
||||||
|
friends
|
||||||
|
|
||||||
|
The VEX implementation of each of the z/Architecture instructions LOCHI,
|
||||||
|
LOCHHI, and LOCGHI treats the immediate 16-bit operand as an unsigned
|
||||||
|
integer instead of a signed integer. This is fixed.
|
||||||
|
---
|
||||||
|
NEWS | 1 +
|
||||||
|
VEX/priv/guest_s390_toIR.c | 6 +++---
|
||||||
|
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
Index: valgrind-3.14.0/VEX/priv/guest_s390_toIR.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.14.0.orig/VEX/priv/guest_s390_toIR.c
|
||||||
|
+++ valgrind-3.14.0/VEX/priv/guest_s390_toIR.c
|
||||||
|
@@ -16307,7 +16307,7 @@ static const HChar *
|
||||||
|
s390_irgen_LOCHHI(UChar r1, UChar m3, UShort i2, UChar unused)
|
||||||
|
{
|
||||||
|
next_insn_if(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0)));
|
||||||
|
- put_gpr_w0(r1, mkU32(i2));
|
||||||
|
+ put_gpr_w0(r1, mkU32((UInt)(Int)(Short)i2));
|
||||||
|
|
||||||
|
return "lochhi";
|
||||||
|
}
|
||||||
|
@@ -16316,7 +16316,7 @@ static const HChar *
|
||||||
|
s390_irgen_LOCHI(UChar r1, UChar m3, UShort i2, UChar unused)
|
||||||
|
{
|
||||||
|
next_insn_if(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0)));
|
||||||
|
- put_gpr_w1(r1, mkU32(i2));
|
||||||
|
+ put_gpr_w1(r1, mkU32((UInt)(Int)(Short)i2));
|
||||||
|
|
||||||
|
return "lochi";
|
||||||
|
}
|
||||||
|
@@ -16325,7 +16325,7 @@ static const HChar *
|
||||||
|
s390_irgen_LOCGHI(UChar r1, UChar m3, UShort i2, UChar unused)
|
||||||
|
{
|
||||||
|
next_insn_if(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0)));
|
||||||
|
- put_gpr_dw0(r1, mkU64(i2));
|
||||||
|
+ put_gpr_dw0(r1, mkU64((UInt)(Int)(Short)i2));
|
||||||
|
|
||||||
|
return "locghi";
|
||||||
|
}
|
51
0001-s390x-more-fixes.patch
Normal file
51
0001-s390x-more-fixes.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
From d10cd86ee32bf76495f79c02df62fc242adbcbe3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andreas Arnez <arnez@linux.vnet.ibm.com>
|
||||||
|
Date: Thu, 26 Jul 2018 16:35:24 +0200
|
||||||
|
Subject: [PATCH] s390x: More fixes for z13 support
|
||||||
|
|
||||||
|
This patch addresses the following:
|
||||||
|
|
||||||
|
* Fix the implementation of LOCGHI. Previously Valgrind performed 32-bit
|
||||||
|
sign extension instead of 64-bit sign extension on the immediate value.
|
||||||
|
|
||||||
|
* Advertise VXRS in HWCAP. If no VXRS are advertised, but the program
|
||||||
|
uses vector registers, this could cause problems with a glibc built with
|
||||||
|
"-march=z13".
|
||||||
|
---
|
||||||
|
VEX/priv/guest_s390_toIR.c | 2 +-
|
||||||
|
coregrind/m_initimg/initimg-linux.c | 6 +++---
|
||||||
|
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c
|
||||||
|
index 9c4d79b87..50a5a4177 100644
|
||||||
|
--- a/VEX/priv/guest_s390_toIR.c
|
||||||
|
+++ b/VEX/priv/guest_s390_toIR.c
|
||||||
|
@@ -16325,7 +16325,7 @@ static const HChar *
|
||||||
|
s390_irgen_LOCGHI(UChar r1, UChar m3, UShort i2, UChar unused)
|
||||||
|
{
|
||||||
|
next_insn_if(binop(Iop_CmpEQ32, s390_call_calculate_cond(m3), mkU32(0)));
|
||||||
|
- put_gpr_dw0(r1, mkU64((UInt)(Int)(Short)i2));
|
||||||
|
+ put_gpr_dw0(r1, mkU64((ULong)(Long)(Short)i2));
|
||||||
|
|
||||||
|
return "locghi";
|
||||||
|
}
|
||||||
|
diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c
|
||||||
|
index 61cc458bc..8a7f0d024 100644
|
||||||
|
--- a/coregrind/m_initimg/initimg-linux.c
|
||||||
|
+++ b/coregrind/m_initimg/initimg-linux.c
|
||||||
|
@@ -699,9 +699,9 @@ Addr setup_client_stack( void* init_sp,
|
||||||
|
}
|
||||||
|
# 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;
|
||||||
|
+ /* Advertise hardware features "below" TE and VXRS. TE itself
|
||||||
|
+ and anything above VXRS is not supported by Valgrind. */
|
||||||
|
+ auxv->u.a_val &= (VKI_HWCAP_S390_TE - 1) | VKI_HWCAP_S390_VXRS;
|
||||||
|
}
|
||||||
|
# elif defined(VGP_arm64_linux)
|
||||||
|
{
|
||||||
|
--
|
||||||
|
2.17.0
|
||||||
|
|
@ -1,115 +0,0 @@
|
|||||||
From 6a55b1e82ccda3f0d663d2cc89eb543ae2d096bf Mon Sep 17 00:00:00 2001
|
|
||||||
From: Carl Love <carll@us.ibm.com>
|
|
||||||
Date: Tue, 31 Oct 2017 13:45:28 -0500
|
|
||||||
Subject: [PATCH] Fix access to time base register to return 64-bits.
|
|
||||||
|
|
||||||
---
|
|
||||||
NEWS | 1 +
|
|
||||||
VEX/priv/guest_ppc_toIR.c | 70 +++++++++++++++++++++++++++++++++++++----------
|
|
||||||
2 files changed, 56 insertions(+), 15 deletions(-)
|
|
||||||
|
|
||||||
--- valgrind-3.13.0/NEWS 2017-06-15 15:37:40.000000000 +0200
|
|
||||||
+++ valgrind-3.13.0/NEWS 2018-09-25 12:08:56.395509577 +0200
|
|
||||||
@@ -250,6 +250,7 @@
|
|
||||||
380200 xtree generated callgrind files refer to files without directory name
|
|
||||||
380202 Assertion failure for cache line size (cls == 64) on aarch64.
|
|
||||||
380397 s390x: __GI_strcspn() replacement needed
|
|
||||||
+386397 PPC64, valgrind truncates powerpc timebase to 32-bits.
|
|
||||||
n-i-bz Fix pub_tool_basics.h build issue with g++ 4.4.7.
|
|
||||||
|
|
||||||
(3.13.0.RC1: 2 June 2017, vex r3386, valgrind r16434)
|
|
||||||
diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c
|
|
||||||
index f63146e7e256..4ec37f5f994f 100644
|
|
||||||
--- a/VEX/priv/guest_ppc_toIR.c
|
|
||||||
+++ b/VEX/priv/guest_ppc_toIR.c
|
|
||||||
@@ -9419,26 +9419,60 @@ static Bool dis_proc_ctl ( const VexAbiInfo* vbi, UInt theInstr )
|
|
||||||
putIReg( rD_addr, getGST( PPC_GST_SPRG3_RO ) );
|
|
||||||
break;
|
|
||||||
|
|
||||||
- /* Even a lowly PPC7400 can run the associated helper, so no
|
|
||||||
- obvious need for feature testing at this point. */
|
|
||||||
- case 268 /* 0x10C */:
|
|
||||||
- case 269 /* 0x10D */: {
|
|
||||||
- UInt arg = SPR==268 ? 0 : 1;
|
|
||||||
- IRTemp val = newTemp(Ity_I32);
|
|
||||||
- IRExpr** args = mkIRExprVec_1( mkU32(arg) );
|
|
||||||
+ case 268 /* 0x10C TB - 64 bit time base register */:
|
|
||||||
+ {
|
|
||||||
+ IRTemp val = newTemp(Ity_I64);
|
|
||||||
+ IRExpr** args = mkIRExprVec_0();
|
|
||||||
IRDirty* d = unsafeIRDirty_1_N(
|
|
||||||
- val,
|
|
||||||
- 0/*regparms*/,
|
|
||||||
- "ppc32g_dirtyhelper_MFSPR_268_269",
|
|
||||||
- fnptr_to_fnentry
|
|
||||||
- (vbi, &ppc32g_dirtyhelper_MFSPR_268_269),
|
|
||||||
- args
|
|
||||||
- );
|
|
||||||
+ val,
|
|
||||||
+ 0/*regparms*/,
|
|
||||||
+ "ppcg_dirtyhelper_MFTB",
|
|
||||||
+ fnptr_to_fnentry(vbi,
|
|
||||||
+ &ppcg_dirtyhelper_MFTB),
|
|
||||||
+ args );
|
|
||||||
+ /* execute the dirty call, dumping the result in val. */
|
|
||||||
+ stmt( IRStmt_Dirty(d) );
|
|
||||||
+ putIReg( rD_addr, (mode64) ? mkexpr(val) :
|
|
||||||
+ unop(Iop_64to32, mkexpr(val)) );
|
|
||||||
+
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ case 269 /* 0x10D TBU - upper 32-bits of time base register */:
|
|
||||||
+ {
|
|
||||||
+ DIP("mfspr r%u,%u", rD_addr, SPR);
|
|
||||||
+ IRTemp val = newTemp(Ity_I64);
|
|
||||||
+ IRExpr** args = mkIRExprVec_0();
|
|
||||||
+ IRDirty* d = unsafeIRDirty_1_N(
|
|
||||||
+ val,
|
|
||||||
+ 0/*regparms*/,
|
|
||||||
+ "ppcg_dirtyhelper_MFTB",
|
|
||||||
+ fnptr_to_fnentry(vbi,
|
|
||||||
+ &ppcg_dirtyhelper_MFTB),
|
|
||||||
+ args );
|
|
||||||
/* execute the dirty call, dumping the result in val. */
|
|
||||||
stmt( IRStmt_Dirty(d) );
|
|
||||||
putIReg( rD_addr,
|
|
||||||
- mkWidenFrom32(ty, mkexpr(val), False/*unsigned*/) );
|
|
||||||
+ mkWidenFrom32(ty, unop(Iop_64HIto32, mkexpr(val)),
|
|
||||||
+ /* Signed */False) );
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ case 284 /* 0x1 TBL - lower 32-bits of time base register */:
|
|
||||||
+ {
|
|
||||||
DIP("mfspr r%u,%u", rD_addr, SPR);
|
|
||||||
+ IRTemp val = newTemp(Ity_I64);
|
|
||||||
+ IRExpr** args = mkIRExprVec_0();
|
|
||||||
+ IRDirty* d = unsafeIRDirty_1_N(
|
|
||||||
+ val,
|
|
||||||
+ 0/*regparms*/,
|
|
||||||
+ "ppcg_dirtyhelper_MFTB",
|
|
||||||
+ fnptr_to_fnentry(vbi,
|
|
||||||
+ &ppcg_dirtyhelper_MFTB),
|
|
||||||
+ args );
|
|
||||||
+ /* execute the dirty call, dumping the result in val. */
|
|
||||||
+ stmt( IRStmt_Dirty(d) );
|
|
||||||
+ putIReg( rD_addr,
|
|
||||||
+ mkWidenFrom32(ty, unop(Iop_64to32, mkexpr(val)),
|
|
||||||
+ /* Signed */False) );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -9493,6 +9527,12 @@ static Bool dis_proc_ctl ( const VexAbiInfo* vbi, UInt theInstr )
|
|
||||||
putIReg( rD_addr, (mode64) ? mkexpr(val) :
|
|
||||||
unop(Iop_64to32, mkexpr(val)) );
|
|
||||||
break;
|
|
||||||
+ case 284:
|
|
||||||
+ DIP("mftbl r%u", rD_addr);
|
|
||||||
+ putIReg( rD_addr,
|
|
||||||
+ mkWidenFrom32(ty, unop(Iop_64to32, mkexpr(val)),
|
|
||||||
+ /* Signed */False) );
|
|
||||||
+ break;
|
|
||||||
default:
|
|
||||||
return False; /* illegal instruction */
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.13.7
|
|
@ -10,11 +10,11 @@ Signed-off-by: Matthias Brugger <mbrugger@suse.com>
|
|||||||
VEX/priv/guest_arm64_toIR.c | 222 +++++++++++++++++++++++++++++++++
|
VEX/priv/guest_arm64_toIR.c | 222 +++++++++++++++++++++++++++++++++
|
||||||
3 files changed, 331 insertions(+)
|
3 files changed, 331 insertions(+)
|
||||||
|
|
||||||
diff --git a/VEX/priv/guest_arm64_defs.h b/VEX/priv/guest_arm64_defs.h
|
Index: valgrind-3.14.0/VEX/priv/guest_arm64_defs.h
|
||||||
index b28f326c2..ae01e6f3b 100644
|
===================================================================
|
||||||
--- a/VEX/priv/guest_arm64_defs.h
|
--- valgrind-3.14.0.orig/VEX/priv/guest_arm64_defs.h
|
||||||
+++ b/VEX/priv/guest_arm64_defs.h
|
+++ valgrind-3.14.0/VEX/priv/guest_arm64_defs.h
|
||||||
@@ -126,6 +126,15 @@ extern ULong arm64g_dirtyhelper_MRS_CNTVCT_EL0 ( void );
|
@@ -126,6 +126,15 @@ extern ULong arm64g_dirtyhelper_MRS_CNTV
|
||||||
|
|
||||||
extern ULong arm64g_dirtyhelper_MRS_CNTFRQ_EL0 ( void );
|
extern ULong arm64g_dirtyhelper_MRS_CNTFRQ_EL0 ( void );
|
||||||
|
|
||||||
@ -30,11 +30,11 @@ index b28f326c2..ae01e6f3b 100644
|
|||||||
extern void arm64g_dirtyhelper_PMULLQ ( /*OUT*/V128* res,
|
extern void arm64g_dirtyhelper_PMULLQ ( /*OUT*/V128* res,
|
||||||
ULong arg1, ULong arg2 );
|
ULong arg1, ULong arg2 );
|
||||||
|
|
||||||
diff --git a/VEX/priv/guest_arm64_helpers.c b/VEX/priv/guest_arm64_helpers.c
|
Index: valgrind-3.14.0/VEX/priv/guest_arm64_helpers.c
|
||||||
index 10065d547..c579c9e1b 100644
|
===================================================================
|
||||||
--- a/VEX/priv/guest_arm64_helpers.c
|
--- valgrind-3.14.0.orig/VEX/priv/guest_arm64_helpers.c
|
||||||
+++ b/VEX/priv/guest_arm64_helpers.c
|
+++ valgrind-3.14.0/VEX/priv/guest_arm64_helpers.c
|
||||||
@@ -788,6 +788,106 @@ ULong arm64g_dirtyhelper_MRS_CNTFRQ_EL0 ( void )
|
@@ -788,6 +788,106 @@ ULong arm64g_dirtyhelper_MRS_CNTFRQ_EL0
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,11 +141,11 @@ index 10065d547..c579c9e1b 100644
|
|||||||
|
|
||||||
void arm64g_dirtyhelper_PMULLQ ( /*OUT*/V128* res, ULong arg1, ULong arg2 )
|
void arm64g_dirtyhelper_PMULLQ ( /*OUT*/V128* res, ULong arg1, ULong arg2 )
|
||||||
{
|
{
|
||||||
diff --git a/VEX/priv/guest_arm64_toIR.c b/VEX/priv/guest_arm64_toIR.c
|
Index: valgrind-3.14.0/VEX/priv/guest_arm64_toIR.c
|
||||||
index e5af388e1..ed6c1ffa5 100644
|
===================================================================
|
||||||
--- a/VEX/priv/guest_arm64_toIR.c
|
--- valgrind-3.14.0.orig/VEX/priv/guest_arm64_toIR.c
|
||||||
+++ b/VEX/priv/guest_arm64_toIR.c
|
+++ valgrind-3.14.0/VEX/priv/guest_arm64_toIR.c
|
||||||
@@ -6872,6 +6872,228 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn,
|
@@ -6891,6 +6891,228 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisR
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------ M{SR,RS} ------------------ */
|
/* ------------------ M{SR,RS} ------------------ */
|
||||||
@ -374,6 +374,3 @@ index e5af388e1..ed6c1ffa5 100644
|
|||||||
/* ---- Cases for TPIDR_EL0 ----
|
/* ---- Cases for TPIDR_EL0 ----
|
||||||
0xD51BD0 010 Rt MSR tpidr_el0, rT
|
0xD51BD0 010 Rt MSR tpidr_el0, rT
|
||||||
0xD53BD0 010 Rt MRS rT, tpidr_el0
|
0xD53BD0 010 Rt MRS rT, tpidr_el0
|
||||||
--
|
|
||||||
2.17.0
|
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ Index: configure.ac
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- configure.ac.orig
|
--- configure.ac.orig
|
||||||
+++ configure.ac
|
+++ configure.ac
|
||||||
@@ -234,7 +234,7 @@ case "${host_cpu}" in
|
@@ -252,7 +252,7 @@ case "${host_cpu}" in
|
||||||
ARCH_MAX="s390x"
|
ARCH_MAX="s390x"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
backport of https://bugs.kde.org/show_bug.cgi?id=381289
|
|
||||||
see https://bugzilla.suse.com/show_bug.cgi?id=1064958
|
|
||||||
|
|
||||||
--- coregrind/m_syswrap/syswrap-linux.c (revision 16470)
|
|
||||||
+++ coregrind/m_syswrap/syswrap-linux.c (working copy)
|
|
||||||
@@ -1901,7 +1901,7 @@ PRE(sys_epoll_pwait)
|
|
||||||
int, maxevents, int, timeout, vki_sigset_t *, sigmask,
|
|
||||||
vki_size_t, sigsetsize);
|
|
||||||
PRE_MEM_WRITE( "epoll_pwait(events)", ARG2, sizeof(struct vki_epoll_event)*ARG3);
|
|
||||||
- if (ARG4)
|
|
||||||
+ if (ARG5)
|
|
||||||
PRE_MEM_READ( "epoll_pwait(sigmask)", ARG5, sizeof(vki_sigset_t) );
|
|
||||||
}
|
|
||||||
POST(sys_epoll_pwait)
|
|
||||||
Index: memcheck/tests/linux/syscalls-2007.c
|
|
||||||
===================================================================
|
|
||||||
--- memcheck/tests/linux/syscalls-2007.c (revision 16470)
|
|
||||||
+++ memcheck/tests/linux/syscalls-2007.c (working copy)
|
|
||||||
@@ -79,5 +79,16 @@ int main (void)
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if defined(HAVE_EPOLL_CREATE) && defined(HAVE_EPOLL_PWAIT)
|
|
||||||
+ {
|
|
||||||
+ int fd3;
|
|
||||||
+ struct epoll_event evs[10];
|
|
||||||
+
|
|
||||||
+ fd3 = epoll_create (10);
|
|
||||||
+ /* epoll_pwait can take a NULL sigmask. */
|
|
||||||
+ epoll_pwait (fd3, evs, 10, 1, NULL);
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:d76680ef03f00cd5e970bbdcd4e57fb1f6df7d2e2c071635ef2be74790190c3b
|
|
||||||
size 14723076
|
|
3
valgrind-3.14.0.tar.bz2
Normal file
3
valgrind-3.14.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:037c11bfefd477cc6e9ebe8f193bb237fe397f7ce791b4a4ce3fa1c6a520baa5
|
||||||
|
size 16602858
|
@ -1,3 +1,56 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Nov 25 21:06:20 UTC 2018 - olaf@aepfle.de
|
||||||
|
|
||||||
|
- update valgrind.xen.patch to branch bug390553-20181125-ddfc274b2
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Nov 22 09:21:45 UTC 2018 - Dirk Mueller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- build against Toolchain module for SLE12
|
||||||
|
- add 0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch
|
||||||
|
0001-Bug-400490-s390x-Fix-register-allocation-for-VRs-vs-.patch,
|
||||||
|
0001-Bug-400491-s390x-Sign-extend-immediate-operand-of-LO.patch,
|
||||||
|
0001-s390x-more-fixes.patch,
|
||||||
|
Implement-emulated-system-registers.-Fixes-392146.patch (FATE#326355)
|
||||||
|
- enable check (poo#36751)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Nov 21 11:51:45 UTC 2018 - Dirk Mueller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 3.14.0 (bsc#1114575, FATE#326355):
|
||||||
|
see http://www.valgrind.org/docs/manual/dist.news.html
|
||||||
|
* The new option --keep-debuginfo=no|yes (default no) can be used to retain
|
||||||
|
debug info for unloaded code. This allows saved stack traces (e.g. for
|
||||||
|
memory leaks) to include file/line info for code that has been dlclose'd (or
|
||||||
|
similar). See the user manual for more information and known limitations.
|
||||||
|
* Ability to specify suppressions based on source file name and line number.
|
||||||
|
* Majorly overhauled register allocator. No end-user changes, but the JIT
|
||||||
|
generates code a bit more quickly now.
|
||||||
|
* Preliminary support for macOS 10.13 has been added.
|
||||||
|
* mips: support for MIPS32/MIPS64 Revision 6 has been added.
|
||||||
|
* mips: support for MIPS SIMD architecture (MSA) has been added.
|
||||||
|
* mips: support for MIPS N32 ABI has been added.
|
||||||
|
* s390: partial support for vector instructions (integer and string) has been
|
||||||
|
added.
|
||||||
|
* Helgrind: Addition of a flag
|
||||||
|
--delta-stacktrace=no|yes [yes on linux amd64/x86]
|
||||||
|
which specifies how full history stack traces should be computed.
|
||||||
|
Setting this to =yes can speed up Helgrind by 25% when using
|
||||||
|
--history-level=full.
|
||||||
|
* Memcheck: reduced false positive rate for optimised code created by Clang 6
|
||||||
|
/ LLVM 6 on x86, amd64 and arm64. In particular, Memcheck analyses code
|
||||||
|
blocks more carefully to determine where it can avoid expensive definedness
|
||||||
|
checks without loss of precision. This is controlled by the flag
|
||||||
|
--expensive-definedness-checks=no|auto|yes [auto].
|
||||||
|
* Valgrind is now buildable with link-time optimisation (LTO). A new
|
||||||
|
configure option --enable-lto=yes allows building Valgrind with LTO. If the
|
||||||
|
toolchain supports it, this produces a smaller/faster Valgrind (up to 10%).
|
||||||
|
Note that if you are doing Valgrind development, --enable-lto=yes massively
|
||||||
|
slows down the build process.
|
||||||
|
- remove epoll-wait-fix.patch,
|
||||||
|
Fix-access-to-time-base-register-to-return-64-bits.patch,
|
||||||
|
0001-Accept-read-only-PT_LOAD-segments-and-.rodata.patch (upstream),
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Sep 25 16:32:22 UTC 2018 - Michal Suchanek <msuchanek@suse.com>
|
Tue Sep 25 16:32:22 UTC 2018 - Michal Suchanek <msuchanek@suse.com>
|
||||||
|
|
||||||
|
@ -22,31 +22,35 @@
|
|||||||
%define building_docs 1
|
%define building_docs 1
|
||||||
|
|
||||||
Name: valgrind
|
Name: valgrind
|
||||||
Version: 3.13.0
|
Version: 3.14.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Memory Management Debugger
|
Summary: Memory Management Debugger
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
Group: Development/Tools/Debuggers
|
Group: Development/Tools/Debuggers
|
||||||
Url: http://valgrind.org/
|
Url: http://valgrind.org/
|
||||||
Source0: ftp://sourceware.org/pub/valgrind/valgrind-%{version}.tar.bz2
|
Source0: ftp://sourceware.org/pub/valgrind/valgrind-%{version}.tar.bz2
|
||||||
# svn di svn://svn.valgrind.org/valgrind/tags/VALGRIND_3_5_0 svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_5_BRANCH > 3_5_BRANCH.diff
|
# https://bugs.kde.org/show_bug.cgi?id=390553
|
||||||
# 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
|
# https://github.com/olafhering/valgrind/compare/olh-base-master...olh-fixes-master
|
||||||
Patch0: valgrind.xen.patch
|
Patch0: valgrind.xen.patch
|
||||||
Patch1: jit-register-unregister.diff
|
Patch1: jit-register-unregister.diff
|
||||||
Patch2: armv6-support.diff
|
Patch2: armv6-support.diff
|
||||||
Patch3: epoll-wait-fix.patch
|
|
||||||
Patch4: Implement-emulated-system-registers.-Fixes-392146.patch
|
Patch4: Implement-emulated-system-registers.-Fixes-392146.patch
|
||||||
# PATCH-FIX-UPSTREAM [backport] - https://sourceware.org/git/?p=valgrind.git;a=commit;h=64aa729bfae71561505a40c12755bd6b55bb3061
|
Patch5: 0001-Bug-400490-s390x-Fix-register-allocation-for-VRs-vs-.patch
|
||||||
Patch5: 0001-Accept-read-only-PT_LOAD-segments-and-.rodata.patch
|
Patch6: 0001-Bug-400491-s390x-Sign-extend-immediate-operand-of-LO.patch
|
||||||
# PATCH-FIX-UPSTREAM - https://sourceware.org/git/?p=valgrind.git;a=commit;h=6a55b1e82ccda3f0d663d2cc89eb543ae2d096bf
|
Patch7: 0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch
|
||||||
Patch6: Fix-access-to-time-base-register-to-return-64-bits.patch
|
Patch8: 0001-s390x-more-fixes.patch
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: docbook-xsl-stylesheets
|
BuildRequires: docbook-xsl-stylesheets
|
||||||
BuildRequires: docbook_4
|
BuildRequires: docbook_4
|
||||||
|
%if 0%{?suse_version} < 1320
|
||||||
|
BuildRequires: gcc8-c++
|
||||||
|
%else
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
|
%endif
|
||||||
BuildRequires: glibc-devel-32bit
|
BuildRequires: glibc-devel-32bit
|
||||||
BuildRequires: libxslt
|
BuildRequires: libxslt
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
|
BuildRequires: procps
|
||||||
Requires: glibc >= %{glibc_main_version}.%{glibc_major_version}
|
Requires: glibc >= %{glibc_main_version}.%{glibc_major_version}
|
||||||
Requires: glibc < %{glibc_main_version}.%{lua:print(rpm.expand("%{glibc_major_version}")+1)}
|
Requires: glibc < %{glibc_main_version}.%{lua:print(rpm.expand("%{glibc_major_version}")+1)}
|
||||||
Provides: callgrind = %{version}
|
Provides: callgrind = %{version}
|
||||||
@ -110,12 +114,18 @@ but it has been successfully used to optimize several KDE applications.
|
|||||||
# needs porting to 3.11
|
# needs porting to 3.11
|
||||||
##%patch1
|
##%patch1
|
||||||
%patch2
|
%patch2
|
||||||
%patch3
|
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5 -p1
|
%patch5 -p1
|
||||||
%patch6 -p1
|
%patch6 -p1
|
||||||
|
%patch7 -p1
|
||||||
|
%patch8 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
%if 0%{?suse_version} < 1320
|
||||||
|
export CC="%{_bindir}/gcc-8"
|
||||||
|
export CXX="%{_bindir}/g++-8"
|
||||||
|
%endif
|
||||||
|
|
||||||
export FLAGS="%{optflags}"
|
export FLAGS="%{optflags}"
|
||||||
%ifarch %arm
|
%ifarch %arm
|
||||||
# Valgrind doesn't support compiling for Thumb yet. Remove when it gets
|
# Valgrind doesn't support compiling for Thumb yet. Remove when it gets
|
||||||
@ -135,8 +145,9 @@ autoreconf -fi
|
|||||||
|
|
||||||
export GDB=%{_bindir}/gdb
|
export GDB=%{_bindir}/gdb
|
||||||
%configure \
|
%configure \
|
||||||
|
--enable-lto=yes \
|
||||||
%ifarch aarch64
|
%ifarch aarch64
|
||||||
--enable-only64bit
|
--enable-only64bit
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
@ -157,8 +168,17 @@ fi
|
|||||||
mkdir -p %{buildroot}%{_docdir}/%{name}
|
mkdir -p %{buildroot}%{_docdir}/%{name}
|
||||||
cp -a README* NEWS AUTHORS %{buildroot}/%{_defaultdocdir}/%{name}
|
cp -a README* NEWS AUTHORS %{buildroot}/%{_defaultdocdir}/%{name}
|
||||||
|
|
||||||
|
%check
|
||||||
|
# OBS doesn't have a z13
|
||||||
|
%ifnarch s390x
|
||||||
|
# has too many spurious failures
|
||||||
|
# make %{?_smp_mflags} regtest
|
||||||
|
#patent pending self test
|
||||||
|
VALGRIND_LIB=$PWD/.in_place VALGRIND_LIB_INNER=$PWD/.in_place ./coregrind/valgrind /usr/bin/perl -wc tests/vg_regtest
|
||||||
|
%endif
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%license COPYING COPYING.DOCS
|
%license COPYING COPYING.DOCS
|
||||||
%{_bindir}/*
|
%{_bindir}/*
|
||||||
%doc %{_defaultdocdir}/%{name}
|
%doc %{_defaultdocdir}/%{name}
|
||||||
%doc %{_mandir}/*/*
|
%doc %{_mandir}/*/*
|
||||||
@ -257,12 +277,16 @@ cp -a README* NEWS AUTHORS %{buildroot}/%{_defaultdocdir}/%{name}
|
|||||||
%{_libdir}/valgrind/s390-acr.xml
|
%{_libdir}/valgrind/s390-acr.xml
|
||||||
%{_libdir}/valgrind/s390-fpr-valgrind-s*.xml
|
%{_libdir}/valgrind/s390-fpr-valgrind-s*.xml
|
||||||
%{_libdir}/valgrind/s390-fpr.xml
|
%{_libdir}/valgrind/s390-fpr.xml
|
||||||
|
%{_libdir}/valgrind/s390-vx-valgrind-s*.xml
|
||||||
|
%{_libdir}/valgrind/s390-vx.xml
|
||||||
%{_libdir}/valgrind/s390x-core64-valgrind-s*.xml
|
%{_libdir}/valgrind/s390x-core64-valgrind-s*.xml
|
||||||
%{_libdir}/valgrind/s390x-core64.xml
|
%{_libdir}/valgrind/s390x-core64.xml
|
||||||
%{_libdir}/valgrind/s390x-generic-valgrind.xml
|
%{_libdir}/valgrind/s390x-generic-valgrind.xml
|
||||||
%{_libdir}/valgrind/s390x-generic.xml
|
%{_libdir}/valgrind/s390x-generic.xml
|
||||||
%{_libdir}/valgrind/s390x-linux64-valgrind-s*.xml
|
%{_libdir}/valgrind/s390x-linux64-valgrind-s*.xml
|
||||||
%{_libdir}/valgrind/s390x-linux64.xml
|
%{_libdir}/valgrind/s390x-linux64.xml
|
||||||
|
%{_libdir}/valgrind/s390x-vx-linux-valgrind.xml
|
||||||
|
%{_libdir}/valgrind/s390x-vx-linux.xml
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%{_libdir}/valgrind/lib*.a
|
%{_libdir}/valgrind/lib*.a
|
||||||
|
1853
valgrind.xen.patch
1853
valgrind.xen.patch
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user