From 67eca5ca6e3915b3097239c07f1c0b9d86434197 Mon Sep 17 00:00:00 2001 From: Karol Krenski Date: Fri, 5 Aug 2011 19:10:43 +0000 Subject: [PATCH] - implement DWARF comparison and shift operators; fixed: Warning: DWARF2 CFI reader: unhandled DW_OP_ opcode 0x2a m_debuginfo/readdwarf.c:2338 (copy_convert_CfiExpr_tree): Assertion 'srcix >= 0 && srcix < VG_(sizeXA)(srcxa)' failed. Changed files: valgrind-opge.patch -> 1.1 --- valgrind-opge.patch | 78 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 valgrind-opge.patch diff --git a/valgrind-opge.patch b/valgrind-opge.patch new file mode 100644 index 0000000..331025a --- /dev/null +++ b/valgrind-opge.patch @@ -0,0 +1,78 @@ +--- valgrind-3.6.1/coregrind/m_debuginfo/debuginfo.c.orig 2010-10-20 22:19:43.000000000 +0200 ++++ valgrind-3.6.1/coregrind/m_debuginfo/debuginfo.c 2011-08-03 01:18:33.724000500 +0200 +@@ -1958,6 +1958,14 @@ + case Cop_Sub: return wL - wR; + case Cop_And: return wL & wR; + case Cop_Mul: return wL * wR; ++ case Cop_Shl: return wL << wR; ++ case Cop_Shr: return wL >> wR; ++ case Cop_Eq: return wL == wR ? 1 : 0; ++ case Cop_Ge: return (Word) wL >= (Word) wR ? 1 : 0; ++ case Cop_Gt: return (Word) wL > (Word) wR ? 1 : 0; ++ case Cop_Le: return (Word) wL <= (Word) wR ? 1 : 0; ++ case Cop_Lt: return (Word) wL < (Word) wR ? 1 : 0; ++ case Cop_Ne: return wL != wR ? 1 : 0; + default: goto unhandled; + } + /*NOTREACHED*/ +--- valgrind-3.6.1/coregrind/m_debuginfo/priv_storage.h.orig 2010-10-20 22:19:43.000000000 +0200 ++++ valgrind-3.6.1/coregrind/m_debuginfo/priv_storage.h 2011-08-03 01:09:29.536000499 +0200 +@@ -218,7 +218,15 @@ + Cop_Add=0x321, + Cop_Sub, + Cop_And, +- Cop_Mul ++ Cop_Mul, ++ Cop_Shl, ++ Cop_Shr, ++ Cop_Eq, ++ Cop_Ge, ++ Cop_Gt, ++ Cop_Le, ++ Cop_Lt, ++ Cop_Ne + } + CfiOp; + +--- valgrind-3.6.1/coregrind/m_debuginfo/readdwarf.c.orig 2010-10-20 22:19:43.000000000 +0200 ++++ valgrind-3.6.1/coregrind/m_debuginfo/readdwarf.c 2011-08-03 01:09:29.533000512 +0200 +@@ -2831,6 +2831,22 @@ + op = Cop_And; opname = "and"; goto binop; + case DW_OP_mul: + op = Cop_Mul; opname = "mul"; goto binop; ++ case DW_OP_shl: ++ op = Cop_Shl; opname = "shl"; goto binop; ++ case DW_OP_shr: ++ op = Cop_Shr; opname = "shr"; goto binop; ++ case DW_OP_eq: ++ op = Cop_Eq; opname = "eq"; goto binop; ++ case DW_OP_ge: ++ op = Cop_Ge; opname = "ge"; goto binop; ++ case DW_OP_gt: ++ op = Cop_Gt; opname = "gt"; goto binop; ++ case DW_OP_le: ++ op = Cop_Le; opname = "le"; goto binop; ++ case DW_OP_lt: ++ op = Cop_Lt; opname = "lt"; goto binop; ++ case DW_OP_ne: ++ op = Cop_Ne; opname = "ne"; goto binop; + binop: + POP( ix ); + POP( ix2 ); +--- valgrind-3.6.1/coregrind/m_debuginfo/storage.c.orig 2010-10-20 22:19:43.000000000 +0200 ++++ valgrind-3.6.1/coregrind/m_debuginfo/storage.c 2011-08-03 01:09:29.535000503 +0200 +@@ -595,6 +595,14 @@ + case Cop_Sub: VG_(printf)("-"); break; + case Cop_And: VG_(printf)("&"); break; + case Cop_Mul: VG_(printf)("*"); break; ++ case Cop_Shl: VG_(printf)("<<"); break; ++ case Cop_Shr: VG_(printf)(">>"); break; ++ case Cop_Eq: VG_(printf)("=="); break; ++ case Cop_Ge: VG_(printf)(">="); break; ++ case Cop_Gt: VG_(printf)(">"); break; ++ case Cop_Le: VG_(printf)("<="); break; ++ case Cop_Lt: VG_(printf)("<"); break; ++ case Cop_Ne: VG_(printf)("!="); break; + default: vg_assert(0); + } + } -- 2.44.0