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:
Dominique Leuenberger 2018-11-28 10:11:53 +00:00 committed by Git OBS Bridge
commit 21bf0e2098
14 changed files with 2147 additions and 683 deletions

View File

@ -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

View 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;
}

View File

@ -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;
}

View File

@ -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";
}

View 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

View File

@ -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

View File

@ -10,11 +10,11 @@ Signed-off-by: Matthias Brugger <mbrugger@suse.com>
VEX/priv/guest_arm64_toIR.c | 222 +++++++++++++++++++++++++++++++++
3 files changed, 331 insertions(+)
diff --git a/VEX/priv/guest_arm64_defs.h b/VEX/priv/guest_arm64_defs.h
index b28f326c2..ae01e6f3b 100644
--- a/VEX/priv/guest_arm64_defs.h
+++ b/VEX/priv/guest_arm64_defs.h
@@ -126,6 +126,15 @@ extern ULong arm64g_dirtyhelper_MRS_CNTVCT_EL0 ( void );
Index: valgrind-3.14.0/VEX/priv/guest_arm64_defs.h
===================================================================
--- valgrind-3.14.0.orig/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_CNTV
extern ULong arm64g_dirtyhelper_MRS_CNTFRQ_EL0 ( void );
@ -30,11 +30,11 @@ index b28f326c2..ae01e6f3b 100644
extern void arm64g_dirtyhelper_PMULLQ ( /*OUT*/V128* res,
ULong arg1, ULong arg2 );
diff --git a/VEX/priv/guest_arm64_helpers.c b/VEX/priv/guest_arm64_helpers.c
index 10065d547..c579c9e1b 100644
--- a/VEX/priv/guest_arm64_helpers.c
+++ b/VEX/priv/guest_arm64_helpers.c
@@ -788,6 +788,106 @@ ULong arm64g_dirtyhelper_MRS_CNTFRQ_EL0 ( void )
Index: valgrind-3.14.0/VEX/priv/guest_arm64_helpers.c
===================================================================
--- valgrind-3.14.0.orig/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
# endif
}
@ -141,11 +141,11 @@ index 10065d547..c579c9e1b 100644
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 e5af388e1..ed6c1ffa5 100644
--- a/VEX/priv/guest_arm64_toIR.c
+++ b/VEX/priv/guest_arm64_toIR.c
@@ -6872,6 +6872,228 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisResult* dres, UInt insn,
Index: valgrind-3.14.0/VEX/priv/guest_arm64_toIR.c
===================================================================
--- valgrind-3.14.0.orig/VEX/priv/guest_arm64_toIR.c
+++ valgrind-3.14.0/VEX/priv/guest_arm64_toIR.c
@@ -6891,6 +6891,228 @@ Bool dis_ARM64_branch_etc(/*MB_OUT*/DisR
}
/* ------------------ M{SR,RS} ------------------ */
@ -374,6 +374,3 @@ index e5af388e1..ed6c1ffa5 100644
/* ---- Cases for TPIDR_EL0 ----
0xD51BD0 010 Rt MSR tpidr_el0, rT
0xD53BD0 010 Rt MRS rT, tpidr_el0
--
2.17.0

View File

@ -2,7 +2,7 @@ Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -234,7 +234,7 @@ case "${host_cpu}" in
@@ -252,7 +252,7 @@ case "${host_cpu}" in
ARCH_MAX="s390x"
;;

View File

@ -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;
}

View File

@ -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
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:037c11bfefd477cc6e9ebe8f193bb237fe397f7ce791b4a4ce3fa1c6a520baa5
size 16602858

View File

@ -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>

View File

@ -22,31 +22,35 @@
%define building_docs 1
Name: valgrind
Version: 3.13.0
Version: 3.14.0
Release: 0
Summary: Memory Management Debugger
License: GPL-2.0-or-later
Group: Development/Tools/Debuggers
Url: http://valgrind.org/
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
# 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://bugs.kde.org/show_bug.cgi?id=390553
# https://github.com/olafhering/valgrind/compare/olh-base-master...olh-fixes-master
Patch0: valgrind.xen.patch
Patch1: jit-register-unregister.diff
Patch2: armv6-support.diff
Patch3: epoll-wait-fix.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-Accept-read-only-PT_LOAD-segments-and-.rodata.patch
# PATCH-FIX-UPSTREAM - https://sourceware.org/git/?p=valgrind.git;a=commit;h=6a55b1e82ccda3f0d663d2cc89eb543ae2d096bf
Patch6: Fix-access-to-time-base-register-to-return-64-bits.patch
Patch5: 0001-Bug-400490-s390x-Fix-register-allocation-for-VRs-vs-.patch
Patch6: 0001-Bug-400491-s390x-Sign-extend-immediate-operand-of-LO.patch
Patch7: 0001-Bug-397187-s390x-Add-vector-register-support-for-vgd.patch
Patch8: 0001-s390x-more-fixes.patch
BuildRequires: automake
BuildRequires: docbook-xsl-stylesheets
BuildRequires: docbook_4
%if 0%{?suse_version} < 1320
BuildRequires: gcc8-c++
%else
BuildRequires: gcc-c++
%endif
BuildRequires: glibc-devel-32bit
BuildRequires: libxslt
BuildRequires: pkgconfig
BuildRequires: procps
Requires: glibc >= %{glibc_main_version}.%{glibc_major_version}
Requires: glibc < %{glibc_main_version}.%{lua:print(rpm.expand("%{glibc_major_version}")+1)}
Provides: callgrind = %{version}
@ -110,12 +114,18 @@ but it has been successfully used to optimize several KDE applications.
# needs porting to 3.11
##%patch1
%patch2
%patch3
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%build
%if 0%{?suse_version} < 1320
export CC="%{_bindir}/gcc-8"
export CXX="%{_bindir}/g++-8"
%endif
export FLAGS="%{optflags}"
%ifarch %arm
# Valgrind doesn't support compiling for Thumb yet. Remove when it gets
@ -135,8 +145,9 @@ autoreconf -fi
export GDB=%{_bindir}/gdb
%configure \
--enable-lto=yes \
%ifarch aarch64
--enable-only64bit
--enable-only64bit
%endif
make %{?_smp_mflags}
@ -157,6 +168,15 @@ fi
mkdir -p %{buildroot}%{_docdir}/%{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
%license COPYING COPYING.DOCS
%{_bindir}/*
@ -257,12 +277,16 @@ cp -a README* NEWS AUTHORS %{buildroot}/%{_defaultdocdir}/%{name}
%{_libdir}/valgrind/s390-acr.xml
%{_libdir}/valgrind/s390-fpr-valgrind-s*.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.xml
%{_libdir}/valgrind/s390x-generic-valgrind.xml
%{_libdir}/valgrind/s390x-generic.xml
%{_libdir}/valgrind/s390x-linux64-valgrind-s*.xml
%{_libdir}/valgrind/s390x-linux64.xml
%{_libdir}/valgrind/s390x-vx-linux-valgrind.xml
%{_libdir}/valgrind/s390x-vx-linux.xml
%files devel
%{_libdir}/valgrind/lib*.a

File diff suppressed because it is too large Load Diff