Add valgrind-3.8.0-cfi_dw_ops.patch (KDE#307038)
DWARF2 CFI reader: unhandled DW_OP_ opcode 0x8 (DW_OP_const1u and friends)
This commit is contained in:
parent
fb1be10383
commit
a928b785dd
175
valgrind-3.8.0-cfi_dw_ops.patch
Normal file
175
valgrind-3.8.0-cfi_dw_ops.patch
Normal file
@ -0,0 +1,175 @@
|
||||
--- valgrind-3.8.0/coregrind/m_debuginfo/readdwarf.c (revision 12990)
|
||||
+++ valgrind-3.8.0/coregrind/m_debuginfo/readdwarf.c (working copy)
|
||||
@@ -2733,6 +2733,7 @@
|
||||
Word sw;
|
||||
UWord uw;
|
||||
CfiOp op;
|
||||
+ CfiUnop uop;
|
||||
HChar* opname;
|
||||
|
||||
Int sp; /* # of top element: valid is -1 .. N_EXPR_STACK-1 */
|
||||
@@ -2778,7 +2779,7 @@
|
||||
break;
|
||||
}
|
||||
|
||||
- op = 0; opname = NULL; /* excessively conservative */
|
||||
+ op = 0; uop = 0; opname = NULL; /* excessively conservative */
|
||||
|
||||
opcode = *expr++;
|
||||
switch (opcode) {
|
||||
@@ -2836,6 +2837,15 @@
|
||||
VG_(printf)("DW_OP_const4s: %ld", sw);
|
||||
break;
|
||||
|
||||
+ case DW_OP_const2s:
|
||||
+ /* push: 16-bit signed immediate */
|
||||
+ sw = read_le_s_encoded_literal( expr, 4 );
|
||||
+ expr += 2;
|
||||
+ PUSH( ML_(CfiExpr_Const)( dst, (UWord)sw ) );
|
||||
+ if (ddump_frames)
|
||||
+ VG_(printf)("DW_OP_const2s: %ld", sw);
|
||||
+ break;
|
||||
+
|
||||
case DW_OP_const1s:
|
||||
/* push: 8-bit signed immediate */
|
||||
sw = read_le_s_encoded_literal( expr, 1 );
|
||||
@@ -2845,6 +2855,46 @@
|
||||
VG_(printf)("DW_OP_const1s: %ld", sw);
|
||||
break;
|
||||
|
||||
+ case DW_OP_const1u:
|
||||
+ /* push: 8-bit unsigned immediate */
|
||||
+ uw = read_le_u_encoded_literal( expr, 1 );
|
||||
+ expr += 1;
|
||||
+ PUSH( ML_(CfiExpr_Const)( dst, uw ) );
|
||||
+ if (ddump_frames)
|
||||
+ VG_(printf)("DW_OP_const1: %lu", uw);
|
||||
+ break;
|
||||
+
|
||||
+ case DW_OP_const2u:
|
||||
+ /* push: 16-bit unsigned immediate */
|
||||
+ uw = read_le_u_encoded_literal( expr, 2 );
|
||||
+ expr += 2;
|
||||
+ PUSH( ML_(CfiExpr_Const)( dst, uw ) );
|
||||
+ if (ddump_frames)
|
||||
+ VG_(printf)("DW_OP_const2: %lu", uw);
|
||||
+ break;
|
||||
+
|
||||
+ case DW_OP_const4u:
|
||||
+ /* push: 32-bit unsigned immediate */
|
||||
+ uw = read_le_u_encoded_literal( expr, 4 );
|
||||
+ expr += 4;
|
||||
+ PUSH( ML_(CfiExpr_Const)( dst, uw ) );
|
||||
+ if (ddump_frames)
|
||||
+ VG_(printf)("DW_OP_const4: %lu", uw);
|
||||
+ break;
|
||||
+
|
||||
+ case DW_OP_abs:
|
||||
+ uop = Cunop_Abs; opname = "abs"; goto unop;
|
||||
+ case DW_OP_neg:
|
||||
+ uop = Cunop_Neg; opname = "neg"; goto unop;
|
||||
+ case DW_OP_not:
|
||||
+ uop = Cunop_Not; opname = "not"; goto unop;
|
||||
+ unop:
|
||||
+ POP( ix );
|
||||
+ PUSH( ML_(CfiExpr_Unop)( dst, uop, ix ) );
|
||||
+ if (ddump_frames)
|
||||
+ VG_(printf)("DW_OP_%s", opname);
|
||||
+ break;
|
||||
+
|
||||
case DW_OP_minus:
|
||||
op = Cop_Sub; opname = "minus"; goto binop;
|
||||
case DW_OP_plus:
|
||||
--- valgrind-3.8.0/coregrind/m_debuginfo/debuginfo.c (revision 12990)
|
||||
+++ valgrind-3.8.0/coregrind/m_debuginfo/debuginfo.c (working copy)
|
||||
@@ -2051,7 +2051,7 @@
|
||||
UWord evalCfiExpr ( XArray* exprs, Int ix,
|
||||
CfiExprEvalContext* eec, Bool* ok )
|
||||
{
|
||||
- UWord wL, wR;
|
||||
+ UWord w, wL, wR;
|
||||
Addr a;
|
||||
CfiExpr* e;
|
||||
vg_assert(sizeof(Addr) == sizeof(UWord));
|
||||
@@ -2118,6 +2118,16 @@
|
||||
}
|
||||
/* let's hope it doesn't trap! */
|
||||
return ML_(read_UWord)((void *)a);
|
||||
+ case Cex_Unop:
|
||||
+ w = evalCfiExpr( exprs, e->Cex.Unop.ix, eec, ok );
|
||||
+ if (!(*ok)) return 0;
|
||||
+ switch (e->Cex.Unop.op) {
|
||||
+ case Cunop_Abs: return (Word) w < 0 ? - w : w;
|
||||
+ case Cunop_Neg: return - (Word) w;
|
||||
+ case Cunop_Not: return ~ w;
|
||||
+ default: goto unhandled;
|
||||
+ }
|
||||
+ /*NOTREACHED*/
|
||||
default:
|
||||
goto unhandled;
|
||||
}
|
||||
--- valgrind-3.8.0/coregrind/m_debuginfo/storage.c (revision 12990)
|
||||
+++ valgrind-3.8.0/coregrind/m_debuginfo/storage.c (working copy)
|
||||
@@ -595,6 +595,16 @@
|
||||
e.Cex.Binop.ixR = ixR;
|
||||
return (Int)VG_(addToXA)( dst, &e );
|
||||
}
|
||||
+Int ML_(CfiExpr_Unop)( XArray* dst, CfiUnop op, Int ix )
|
||||
+{
|
||||
+ CfiExpr e;
|
||||
+ VG_(memset)( &e, 0, sizeof(e) );
|
||||
+ e.tag = Cex_Unop;
|
||||
+ e.Cex.Unop.op = op;
|
||||
+ e.Cex.Unop.ix = ix;
|
||||
+ return (Int)VG_(addToXA)( dst, &e );
|
||||
+}
|
||||
+
|
||||
Int ML_(CfiExpr_CfiReg)( XArray* dst, CfiReg reg )
|
||||
{
|
||||
CfiExpr e;
|
||||
--- valgrind-3.8.0/coregrind/m_debuginfo/priv_storage.h (revision 12990)
|
||||
+++ valgrind-3.8.0/coregrind/m_debuginfo/priv_storage.h (working copy)
|
||||
@@ -296,6 +296,14 @@
|
||||
|
||||
typedef
|
||||
enum {
|
||||
+ Cunop_Abs=0x231,
|
||||
+ Cunop_Neg,
|
||||
+ Cunop_Not
|
||||
+ }
|
||||
+ CfiUnop;
|
||||
+
|
||||
+typedef
|
||||
+ enum {
|
||||
Creg_IA_SP=0x213,
|
||||
Creg_IA_BP,
|
||||
Creg_IA_IP,
|
||||
@@ -315,7 +323,8 @@
|
||||
Cex_Const,
|
||||
Cex_Binop,
|
||||
Cex_CfiReg,
|
||||
- Cex_DwReg
|
||||
+ Cex_DwReg,
|
||||
+ Cex_Unop
|
||||
}
|
||||
CfiExprTag;
|
||||
|
||||
@@ -342,6 +351,10 @@
|
||||
struct {
|
||||
Int reg;
|
||||
} DwReg;
|
||||
+ struct {
|
||||
+ CfiUnop op;
|
||||
+ Int ix;
|
||||
+ } Unop;
|
||||
}
|
||||
Cex;
|
||||
}
|
||||
@@ -353,6 +366,7 @@
|
||||
extern Int ML_(CfiExpr_Binop) ( XArray* dst, CfiOp op, Int ixL, Int ixR );
|
||||
extern Int ML_(CfiExpr_CfiReg)( XArray* dst, CfiReg reg );
|
||||
extern Int ML_(CfiExpr_DwReg) ( XArray* dst, Int reg );
|
||||
+extern Int ML_(CfiExpr_Unop) ( XArray* dst, CfiUnop op, Int ix );
|
||||
|
||||
extern void ML_(ppCfiExpr)( XArray* src, Int ix );
|
||||
|
@ -52,6 +52,8 @@ Patch17: valgrind-3.8.0-bmi-conf-check.patch
|
||||
# insn is broken under memcheck.
|
||||
Patch18: valgrind-3.8.0-memcheck-mc_translate-Iop_8HLto16.patch
|
||||
|
||||
Patch19: valgrind-3.8.0-cfi_dw_ops.patch
|
||||
|
||||
Obsoletes: valgrind-callgrind
|
||||
%ifarch x86_64 ppc64
|
||||
# Ensure glibc{,-devel} is installed for both multilib arches
|
||||
@ -153,6 +155,8 @@ touch ./none/tests/amd64/bmi.stderr.exp
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
|
||||
%patch19 -p1
|
||||
|
||||
%build
|
||||
CC=gcc
|
||||
%ifarch x86_64 ppc64
|
||||
@ -262,10 +266,12 @@ echo ===============END TESTING===============
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Sep 12 2012 Mark Wielaard <mjw@redhat.com>
|
||||
* Wed Sep 19 2012 Mark Wielaard <mjw@redhat.com>
|
||||
- Add partial backport of upstream revision 12884
|
||||
valgrind-3.8.0-memcheck-mc_translate-Iop_8HLto16.patch
|
||||
without it AVX2 VPBROADCASTB insn is broken under memcheck.
|
||||
- Add valgrind-3.8.0-cfi_dw_ops.patch (KDE#307038)
|
||||
DWARF2 CFI reader: unhandled DW_OP_ opcode 0x8 (DW_OP_const1u and friends)
|
||||
|
||||
* Wed Sep 12 2012 Mark Wielaard <mjw@redhat.com> 3.8.0-8
|
||||
- Add configure fixup valgrind-3.8.0-bmi-conf-check.patch
|
||||
|
Loading…
Reference in New Issue
Block a user