import gcc-toolset-10-valgrind-3.16.0-3.el8

This commit is contained in:
CentOS Sources 2020-07-14 01:20:28 +00:00 committed by Andrew Lukoshko
parent 5382a115c7
commit 86635e85b3
3 changed files with 107 additions and 1 deletions

View File

@ -0,0 +1,64 @@
commit 6aa4f7e7e76b40c183fb29650540d119ce1b4a4a
Author: Julian Seward <jseward@acm.org>
Date: Thu Jun 11 09:01:52 2020 +0200
expr_is_guardable, stmt_is_guardable, add_guarded_stmt_to_end_of: handle GetI/PutI cases.
This fixes #422715.
diff --git a/VEX/priv/guest_generic_bb_to_IR.c b/VEX/priv/guest_generic_bb_to_IR.c
index 2f204c5b0..0cee970e4 100644
--- a/VEX/priv/guest_generic_bb_to_IR.c
+++ b/VEX/priv/guest_generic_bb_to_IR.c
@@ -425,6 +425,7 @@ static Bool expr_is_guardable ( const IRExpr* e )
case Iex_ITE:
case Iex_CCall:
case Iex_Get:
+ case Iex_GetI:
case Iex_Const:
case Iex_RdTmp:
return True;
@@ -450,6 +451,7 @@ static Bool stmt_is_guardable ( const IRStmt* st )
case Ist_NoOp:
case Ist_IMark:
case Ist_Put:
+ case Ist_PutI:
return True;
// These are definitely not guardable, or at least it's way too much
// hassle to do so.
@@ -506,7 +508,7 @@ static void add_guarded_stmt_to_end_of ( /*MOD*/IRSB* bb,
// Put(offs, e) ==> Put(offs, ITE(guard, e, Get(offs, sizeof(e))))
// Which when flattened out is:
// t1 = Get(offs, sizeof(e))
- // t2 = ITE(guard, e, t2)
+ // t2 = ITE(guard, e, t1)
// Put(offs, t2)
Int offset = st->Ist.Put.offset;
IRExpr* e = st->Ist.Put.data;
@@ -519,6 +521,26 @@ static void add_guarded_stmt_to_end_of ( /*MOD*/IRSB* bb,
addStmtToIRSB(bb, IRStmt_Put(offset, IRExpr_RdTmp(t2)));
break;
}
+ case Ist_PutI: {
+ // PutI(descr,ix,bias, e) ==> Put(descr,ix,bias, ITE(guard, e, GetI(descr,ix,bias)))
+ // Which when flattened out is:
+ // t1 = GetI(descr,ix,bias)
+ // t2 = ITE(guard, e, t1)
+ // PutI(descr,ix,bias, t2)
+ IRPutI* details = st->Ist.PutI.details;
+ IRRegArray* descr = details->descr;
+ IRExpr* ix = details->ix;
+ Int bias = details->bias;
+ IRExpr* e = details->data;
+ IRType ty = typeOfIRExpr(bb->tyenv, e);
+ IRTemp t1 = newIRTemp(bb->tyenv, ty);
+ IRTemp t2 = newIRTemp(bb->tyenv, ty);
+ addStmtToIRSB(bb, IRStmt_WrTmp(t1, IRExpr_GetI(descr,ix,bias)));
+ addStmtToIRSB(bb, IRStmt_WrTmp(t2, IRExpr_ITE(IRExpr_RdTmp(guard),
+ e, IRExpr_RdTmp(t1))));
+ addStmtToIRSB(bb, IRStmt_PutI(mkIRPutI(descr,ix,bias, IRExpr_RdTmp(t2))));
+ break;
+ }
case Ist_Exit: {
// Exit(xguard, dst, jk, offsIP)
// ==> t1 = And1(xguard, guard)

View File

@ -0,0 +1,29 @@
commit fb6f7abcbc92506d302fb18a2c5fc853d2929248
Author: Carl Love <cel@us.ibm.com>
Date: Tue Jun 9 10:42:03 2020 -0500
Power PC Fix extraction of the L field for sync instruction
The L field is currently a two bit[22:21] field in ISA 3.0. The size of the
L field has changed over time.
Currently the ISA 3.0 Valgrind sync instruction support code sets the
flag_L for the instruction L field to a five bit value that includes bits
that are marked reserved the sync instruction. This patch fixes the issue for ISA 3.0
to only setting flag_L the specified two bits.
Valgrind bugzilla: https://bugs.kde.org/show_bug.cgi?id=422677
diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c
index 582c59ec0..c4965a19e 100644
--- a/VEX/priv/guest_ppc_toIR.c
+++ b/VEX/priv/guest_ppc_toIR.c
@@ -8777,7 +8777,7 @@ static Bool dis_memsync ( UInt theInstr )
/* X-Form, XL-Form */
UChar opc1 = ifieldOPC(theInstr);
UInt b11to25 = IFIELD(theInstr, 11, 15);
- UChar flag_L = ifieldRegDS(theInstr);
+ UChar flag_L = IFIELD(theInstr, 21, 2); //ISA 3.0
UInt b11to20 = IFIELD(theInstr, 11, 10);
UInt M0 = IFIELD(theInstr, 11, 5);
UChar rD_addr = ifieldRegDS(theInstr);

View File

@ -6,7 +6,7 @@
Summary: Tool for finding memory management bugs in programs
Name: %{?scl_prefix}valgrind
Version: 3.16.0
Release: 2%{?dist}
Release: 3%{?dist}
Epoch: 1
License: GPLv2+
URL: http://www.valgrind.org/
@ -96,6 +96,12 @@ Patch5: valgrind-3.16.0-some-stack-protector.patch
# Add some -Wl,z,now.
Patch6: valgrind-3.16.0-some-Wl-z-now.patch
# KDE#422677 PPC sync instruction L field should only be 2 bits in ISA 3.0
Patch7: valgrind-3.16.0-ppc-L-field.patch
# KDE#422715 x86: vex: the `impossible' happened: expr_is_guardable
Patch8: valgrind-3.16.0-387-float.patch
BuildRequires: glibc-devel
%if %{build_openmpi}
@ -227,6 +233,9 @@ Valgrind User Manual for details.
%patch6 -p1
%endif
%patch7 -p1
%patch8 -p1
%build
# Some patches (might) touch Makefile.am or configure.ac files.
@ -446,6 +455,10 @@ fi
%endif
%changelog
* Wed Jun 24 2020 Mark Wielaard <mjw@redhat.com> - 3.16.0-3
- Add valgrind-3.16.0-ppc-L-field.patch
- Add valgrind-3.16.0-387-float.patch
* Thu May 28 2020 Mark Wielaard <mjw@redhat.com> - 3.16.0-2
- Apply stack-protector and -Wl,z,now patches.