You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
1
(11) |
2
(26) |
3
(15) |
4
(4) |
|
5
(2) |
6
(7) |
7
(6) |
8
(22) |
9
(15) |
10
(13) |
11
(8) |
|
12
(6) |
13
(4) |
14
(9) |
15
(5) |
16
(2) |
17
(7) |
18
(7) |
|
19
(8) |
20
(14) |
21
(7) |
22
(21) |
23
(12) |
24
(12) |
25
(6) |
|
26
(6) |
27
(12) |
28
(17) |
29
(8) |
30
(8) |
|
|
|
From: <sv...@va...> - 2010-09-22 22:27:50
|
Author: sewardj
Date: 2010-09-22 23:27:41 +0100 (Wed, 22 Sep 2010)
New Revision: 11373
Log:
Enable --track-origins on ARM code which accesses CPSR.GE3/2/1/0.
Modified:
trunk/memcheck/mc_machine.c
Modified: trunk/memcheck/mc_machine.c
===================================================================
--- trunk/memcheck/mc_machine.c 2010-09-22 01:00:06 UTC (rev 11372)
+++ trunk/memcheck/mc_machine.c 2010-09-22 22:27:41 UTC (rev 11373)
@@ -721,6 +721,11 @@
if (o == GOF(QFLAG32) && sz == 4) return o;
+ if (o == GOF(GEFLAG0) && sz == 4) return o;
+ if (o == GOF(GEFLAG1) && sz == 4) return o;
+ if (o == GOF(GEFLAG2) && sz == 4) return o;
+ if (o == GOF(GEFLAG3) && sz == 4) return o;
+
//if (o == GOF(SYSCALLNO) && sz == 4) return -1; /* slot unused */
//if (o == GOF(CC) && sz == 4) return -1; /* slot unused */
//if (o == GOF(EMWARN) && sz == 4) return -1; /* slot unused */
|
|
From: <sv...@va...> - 2010-09-22 22:26:50
|
Author: sewardj
Date: 2010-09-22 23:26:40 +0100 (Wed, 22 Sep 2010)
New Revision: 2040
Log:
Implement (ARM): REV, REV16, SMMUL.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-09-22 16:27:08 UTC (rev 2039)
+++ trunk/priv/guest_arm_toIR.c 2010-09-22 22:26:40 UTC (rev 2040)
@@ -13719,6 +13719,67 @@
/* fall through */
}
+ /* ------------------- rev16, rev ------------------ */
+ if (INSN(27,16) == 0x6BF
+ && (INSN(11,4) == 0xFB/*rev16*/ || INSN(11,4) == 0xF3/*rev*/)) {
+ Bool isREV = INSN(11,4) == 0xF3;
+ UInt rM = INSN(3,0);
+ UInt rD = INSN(15,12);
+ if (rM != 15 && rD != 15) {
+ IRTemp rMt = newTemp(Ity_I32);
+ assign(rMt, getIRegA(rM));
+ IRExpr* res;
+ if (isREV) {
+ res
+ = binop(Iop_Or32,
+ binop(Iop_Shl32, mkexpr(rMt), mkU8(24)),
+ binop(Iop_Or32,
+ binop(Iop_And32, binop(Iop_Shl32, mkexpr(rMt), mkU8(8)),
+ mkU32(0x00FF0000)),
+ binop(Iop_Or32,
+ binop(Iop_And32, binop(Iop_Shr32, mkexpr(rMt), mkU8(8)),
+ mkU32(0x0000FF00)),
+ binop(Iop_And32, binop(Iop_Shr32, mkexpr(rMt), mkU8(24)),
+ mkU32(0x000000FF) )
+ )));
+ } else {
+ res
+ = binop(Iop_Or32,
+ binop(Iop_And32,
+ binop(Iop_Shl32, mkexpr(rMt), mkU8(8)),
+ mkU32(0xFF00FF00)),
+ binop(Iop_And32,
+ binop(Iop_Shr32, mkexpr(rMt), mkU8(8)),
+ mkU32(0x00FF00FF)));
+ }
+ putIRegA(rD, res, condT, Ijk_Boring);
+ DIP("rev%s%s r%u, r%u\n", isREV ? "" : "16",
+ nCC(INSN_COND), rD, rM);
+ goto decode_success;
+ }
+ }
+
+ /* ------------------- smmul ------------------ */
+ if (INSN(27,20) == BITS8(0,1,1,1,0,1,0,1)
+ && INSN(15,12) == BITS4(1,1,1,1)
+ && (INSN(7,4) & BITS4(1,1,0,1)) == BITS4(0,0,0,1)) {
+ UInt bitR = INSN(5,5);
+ UInt rD = INSN(19,16);
+ UInt rM = INSN(11,8);
+ UInt rN = INSN(3,0);
+ if (rD != 15 && rM != 15 && rN != 15) {
+ IRExpr* res
+ = unop(Iop_64HIto32,
+ binop(Iop_Add64,
+ binop(Iop_MullS32, getIRegA(rN), getIRegA(rM)),
+ mkU64(bitR ? 0x80000000ULL : 0ULL)));
+ putIRegA(rD, res, condT, Ijk_Boring);
+ DIP("smmul%s%s r%u, r%u, r%u\n",
+ nCC(INSN_COND), bitR ? "r" : "", rD, rN, rM);
+ goto decode_success;
+ }
+ }
+
/* ----------------------------------------------------------- */
/* -- ARMv7 instructions -- */
/* ----------------------------------------------------------- */
|
|
From: John R. <jr...@bi...> - 2010-09-22 21:32:55
|
On 09/22/2010, Cristian Oneţ wrote: > vex amd64->IR: unhandled instruction bytes: 0xF3 0xF 0xB8 0x4 0x11 0x48 The first five bytes are: popcnt (%rcx,%rdx,1),%eax On 09/20/2010, Julian Seward wrote: > cat /proc/cpuinfo on the cpu emulated since r2011 says > > flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca mov > pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm > constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf > pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm > sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept > vpid Note that 'popcnt' is in the list [so is 'aes'.] However, there is no case for 0x0F 0xB8 in file VEX/priv/guest_x86_toIR.c. Oops. [It doesn't help that there is an "extra" 0xF3 prefix.] -- |
|
From: Cristian O. <one...@gm...> - 2010-09-22 18:09:54
|
Hi, I'm getting this error while trying to use valgrind to profile an application: vex amd64->IR: unhandled instruction bytes: 0xF3 0xF 0xB8 0x4 0x11 0x48 ==19771== valgrind: Unrecognised instruction at address 0xf728338. ==19771== Your program just tried to execute an instruction that Valgrind ==19771== did not recognise. There are two possible reasons for this. ==19771== 1. Your program has a bug and erroneously jumped to a non-code ==19771== location. If you are running Memcheck and you just saw a ==19771== warning about a bad jump, it's probably your program's fault. ==19771== 2. The instruction is legitimate but Valgrind doesn't handle it, ==19771== i.e. it's Valgrind's fault. If you think this is the case or ==19771== you are not sure, please let us know and we'll try to fix it. ==19771== Either way, Valgrind will now raise a SIGILL signal which will ==19771== probably kill your program. I get this error regardless of which program I am profiling and which valgrind tool I am using. $ valgrind --version valgrind-3.5.0 $ uname -a Linux localhost 2.6.34-gentoo-r6 #1 SMP PREEMPT Sat Sep 11 21:04:31 EEST 2010 x86_64 Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz GenuineIntel GNU/Linux Searching the web for a solution I found that errors like this are actually valgrind bugs. Is there any workaround this? Thanks, Regards, Cristian Oneț |
|
From: Kirill B. <bat...@is...> - 2010-09-22 16:53:20
|
On 22.09.2010 19:04, jen...@ta... wrote: > Thanks for coming back to me. I realised I was using a wrong tool-chain > for compilation. But if use the correct tool-chain for our arm-linux > platform to compile valgrind, I got an error "Host (arm) not supoorted". > > Attached is the config.log and the make file used, I wonder would > valgrind support our the version of arm-linux we got (arm926ejs)? Current Valgrind trunk support only ARMv7. I've made a patch some time ago which adds ARMv5 and v6 compatibility. See https://bugs.kde.org/show_bug.cgi?id=248998 for details. >> Yes, the arm-linux box lacks /lib/ld-linux.so.3 for the PT_INTERP. >> The arm-linux box has ld-linux.so.2 which is not the same; >> note the '2' instead of '3'. This may mean that your target platform uses OABI while your cross-toolchain - EABI. I'm not sure if Valgrind can run on OABI targets. ---- Kirill. |
|
From: <sv...@va...> - 2010-09-22 16:27:16
|
Author: sewardj
Date: 2010-09-22 17:27:08 +0100 (Wed, 22 Sep 2010)
New Revision: 2039
Log:
Fix incorrect handling of VTRN.32 insn. (Dmitry Zhurikhin, zh...@is...)
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-09-22 16:15:50 UTC (rev 2038)
+++ trunk/priv/guest_arm_toIR.c 2010-09-22 16:27:08 UTC (rev 2039)
@@ -7153,8 +7153,8 @@
op_hi = Iop_InterleaveEvenLanes16x4;
break;
case 2:
- op_lo = Iop_InterleaveHI32x2;
- op_hi = Iop_InterleaveLO32x2;
+ op_lo = Iop_InterleaveLO32x2;
+ op_hi = Iop_InterleaveHI32x2;
break;
case 3:
return False;
|
|
From: <sv...@va...> - 2010-09-22 16:16:00
|
Author: sewardj
Date: 2010-09-22 17:15:50 +0100 (Wed, 22 Sep 2010)
New Revision: 2038
Log:
Accept d16-d31 register arguments in VFP code. Fixes #244493.
(Dmitry Zhurikhin, zh...@is...)
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-09-22 00:56:37 UTC (rev 2037)
+++ trunk/priv/guest_arm_toIR.c 2010-09-22 16:15:50 UTC (rev 2038)
@@ -10645,7 +10645,7 @@
UInt dM = INSN(3,0) | (INSN(5,5) << 4);
UInt rD = INSN(15,12); /* lo32 */
UInt rN = INSN(19,16); /* hi32 */
- if (rD == 15 || rN == 15) {
+ if (rD == 15 || rN == 15 || (isT && (rD == 13 || rN == 13))) {
/* fall through */
} else {
putDReg(dM,
@@ -10665,7 +10665,8 @@
UInt dM = INSN(3,0) | (INSN(5,5) << 4);
UInt rD = INSN(15,12); /* lo32 */
UInt rN = INSN(19,16); /* hi32 */
- if (rD == 15 || rN == 15 || rD == rN) {
+ if (rD == 15 || rN == 15 || (isT && (rD == 13 || rN == 13))
+ || rD == rN) {
/* fall through */
} else {
IRTemp i64 = newTemp(Ity_I64);
@@ -10685,13 +10686,58 @@
/* fall through */
}
- // VMOV rD[x], rT
+ // VMOV sD, sD+1, rN, rM
+ if (0x0C400A10 == (insn28 & 0x0FF00FD0)) {
+ UInt sD = (INSN(3,0) << 1) | INSN(5,5);
+ UInt rN = INSN(15,12);
+ UInt rM = INSN(19,16);
+ if (rM == 15 || rN == 15 || (isT && (rM == 13 || rN == 13))
+ || sD == 31) {
+ /* fall through */
+ } else {
+ putFReg(sD,
+ unop(Iop_ReinterpI32asF32, isT ? getIRegT(rN) : getIRegA(rN)),
+ condT);
+ putFReg(sD+1,
+ unop(Iop_ReinterpI32asF32, isT ? getIRegT(rM) : getIRegA(rM)),
+ condT);
+ DIP("vmov%s, s%u, s%u, r%u, r%u\n",
+ nCC(conq), sD, sD + 1, rN, rM);
+ goto decode_success_vfp;
+ }
+ }
+
+ // VMOV rN, rM, sD, sD+1
+ if (0x0C500A10 == (insn28 & 0x0FF00FD0)) {
+ UInt sD = (INSN(3,0) << 1) | INSN(5,5);
+ UInt rN = INSN(15,12);
+ UInt rM = INSN(19,16);
+ if (rM == 15 || rN == 15 || (isT && (rM == 13 || rN == 13))
+ || sD == 31 || rN == rM) {
+ /* fall through */
+ } else {
+ IRExpr* res0 = unop(Iop_ReinterpF32asI32, getFReg(sD));
+ IRExpr* res1 = unop(Iop_ReinterpF32asI32, getFReg(sD+1));
+ if (isT) {
+ putIRegT(rN, res0, condT);
+ putIRegT(rM, res1, condT);
+ } else {
+ putIRegA(rN, res0, condT, Ijk_Boring);
+ putIRegA(rM, res1, condT, Ijk_Boring);
+ }
+ DIP("vmov%s, r%u, r%u, s%u, s%u\n",
+ nCC(conq), rN, rM, sD, sD + 1);
+ goto decode_success_vfp;
+ }
+ }
+
+ // VMOV rD[x], rT (ARM core register to scalar)
if (0x0E000B10 == (insn28 & 0x0F900F1F)) {
UInt rD = (INSN(7,7) << 4) | INSN(19,16);
UInt rT = INSN(15,12);
UInt opc = (INSN(22,21) << 2) | INSN(6,5);
UInt index;
- if (rT == 15) {
+ if (rT == 15 || (isT && rT == 13)) {
/* fall through */
} else {
if ((opc & BITS4(1,0,0,0)) == BITS4(1,0,0,0)) {
@@ -10731,6 +10777,7 @@
}
}
+ // VMOV (scalar to ARM core register)
// VMOV rT, rD[x]
if (0x0E100B10 == (insn28 & 0x0F100F1F)) {
UInt rN = (INSN(7,7) << 4) | INSN(19,16);
@@ -10738,7 +10785,7 @@
UInt U = INSN(23,23);
UInt opc = (INSN(22,21) << 2) | INSN(6,5);
UInt index;
- if (rT == 15) {
+ if (rT == 15 || (isT && rT == 13)) {
/* fall through */
} else {
if ((opc & BITS4(1,0,0,0)) == BITS4(1,0,0,0)) {
@@ -10825,7 +10872,7 @@
UInt rT = INSN(15,12);
UInt Q = INSN(21,21);
UInt size = (INSN(22,22) << 1) | INSN(5,5);
- if (rT == 15 || size == 3i || (Q && (rD & 1))) {
+ if (rT == 15 || (isT && rT == 13) || size == 3i || (Q && (rD & 1))) {
/* fall through */
} else {
IRExpr* e = isT ? getIRegT(rT) : getIRegA(rT);
@@ -10871,9 +10918,9 @@
/* --------------------- f{ld,st}d --------------------- */
// FLDD, FSTD
- if (BITS8(1,1,0,1,0,0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,0,1,1,0))
+ if (BITS8(1,1,0,1,0,0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,0,0,1,0))
&& BITS4(1,0,1,1) == INSN(11,8)) {
- UInt dD = INSN(15,12);
+ UInt dD = INSN(15,12) | (INSN(22,22) << 4);
UInt rN = INSN(19,16);
UInt offset = (insn28 & 0xFF) << 2;
UInt bU = (insn28 >> 23) & 1; /* 1: +offset 0: -offset */
@@ -10903,12 +10950,12 @@
}
/* --------------------- dp insns (D) --------------------- */
- if (BITS8(1,1,1,0,0,0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,0,1,0,0))
+ if (BITS8(1,1,1,0,0,0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,0,0,0,0))
&& BITS4(1,0,1,1) == INSN(11,8)
- && BITS4(0,0,0,0) == (INSN(7,4) & BITS4(1,0,1,1))) {
- UInt dM = INSN(3,0); /* argR */
- UInt dD = INSN(15,12); /* dst/acc */
- UInt dN = INSN(19,16); /* argL */
+ && BITS4(0,0,0,0) == (INSN(7,4) & BITS4(0,0,0,1))) {
+ UInt dM = INSN(3,0) | (INSN(5,5) << 4); /* argR */
+ UInt dD = INSN(15,12) | (INSN(22,22) << 4); /* dst/acc */
+ UInt dN = INSN(19,16) | (INSN(7,7) << 4); /* argL */
UInt bP = (insn28 >> 23) & 1;
UInt bQ = (insn28 >> 21) & 1;
UInt bR = (insn28 >> 20) & 1;
@@ -10924,11 +10971,12 @@
condT);
DIP("fmacd%s d%u, d%u, d%u\n", nCC(conq), dD, dN, dM);
goto decode_success_vfp;
- case BITS4(0,0,0,1): /* NMAC: d - n * m */
- putDReg(dD, triop(Iop_SubF64, rm,
+ case BITS4(0,0,0,1): /* NMAC: d + -(n * m) */
+ putDReg(dD, triop(Iop_AddF64, rm,
getDReg(dD),
- triop(Iop_MulF64, rm, getDReg(dN),
- getDReg(dM))),
+ unop(Iop_NegF64,
+ triop(Iop_MulF64, rm, getDReg(dN),
+ getDReg(dM)))),
condT);
DIP("fnmacd%s d%u, d%u, d%u\n", nCC(conq), dD, dN, dM);
goto decode_success_vfp;
@@ -10940,11 +10988,12 @@
condT);
DIP("fmscd%s d%u, d%u, d%u\n", nCC(conq), dD, dN, dM);
goto decode_success_vfp;
- case BITS4(0,0,1,1): /* NMSC: - d - n * m */
- putDReg(dD, triop(Iop_SubF64, rm,
+ case BITS4(0,0,1,1): /* NMSC: - d + -(n * m) */
+ putDReg(dD, triop(Iop_AddF64, rm,
unop(Iop_NegF64, getDReg(dD)),
- triop(Iop_MulF64, rm, getDReg(dN),
- getDReg(dM))),
+ unop(Iop_NegF64,
+ triop(Iop_MulF64, rm, getDReg(dN),
+ getDReg(dM)))),
condT);
DIP("fnmscd%s d%u, d%u, d%u\n", nCC(conq), dD, dN, dM);
goto decode_success_vfp;
@@ -10983,10 +11032,10 @@
/* --------------------- compares (D) --------------------- */
/* 31 27 23 19 15 11 7 3
28 24 20 16 12 8 4 0
- FCMPD cond 1110 1011 0100 Dd 1011 0100 Dm
- FCMPED cond 1110 1011 0100 Dd 1011 1100 Dm
- FCMPZD cond 1110 1011 0101 Dd 1011 0100 0000
- FCMPZED cond 1110 1011 0101 Dd 1011 1100 0000
+ FCMPD cond 1110 1D11 0100 Dd 1011 0100 Dm
+ FCMPED cond 1110 1D11 0100 Dd 1011 1100 Dm
+ FCMPZD cond 1110 1D11 0101 Dd 1011 0100 0000
+ FCMPZED cond 1110 1D11 0101 Dd 1011 1100 0000
Z N
Z=0 Compare Dd vs Dm and set FPSCR 31:28 accordingly
@@ -10996,14 +11045,14 @@
N=0 generates Invalid Operation exn if either arg is a signalling NaN
(Not that we pay any attention to N here)
*/
- if (BITS8(1,1,1,0,1,0,1,1) == INSN(27,20)
+ if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
&& BITS4(0,1,0,0) == (INSN(19,16) & BITS4(1,1,1,0))
&& BITS4(1,0,1,1) == INSN(11,8)
- && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,1,1))) {
+ && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
UInt bZ = (insn28 >> 16) & 1;
UInt bN = (insn28 >> 7) & 1;
- UInt dD = INSN(15,12);
- UInt dM = INSN(3,0);
+ UInt dD = INSN(15,12) | (INSN(22,22) << 4);
+ UInt dM = INSN(3,0) | (INSN(5,5) << 4);
if (bZ && INSN(3,0) != 0) {
/* does not decode; fall through */
} else {
@@ -11053,12 +11102,12 @@
}
/* --------------------- unary (D) --------------------- */
- if (BITS8(1,1,1,0,1,0,1,1) == INSN(27,20)
+ if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
&& BITS4(0,0,0,0) == (INSN(19,16) & BITS4(1,1,1,0))
&& BITS4(1,0,1,1) == INSN(11,8)
- && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,1,1))) {
- UInt dD = INSN(15,12);
- UInt dM = INSN(3,0);
+ && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
+ UInt dD = INSN(15,12) | (INSN(22,22) << 4);
+ UInt dM = INSN(3,0) | (INSN(5,5) << 4);
UInt b16 = (insn28 >> 16) & 1;
UInt b7 = (insn28 >> 7) & 1;
/**/ if (b16 == 0 && b7 == 0) {
@@ -11095,13 +11144,13 @@
/* ----------------- I <-> D conversions ----------------- */
// F{S,U}ITOD dD, fM
- if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,1,1,1))
+ if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
&& BITS4(1,0,0,0) == (INSN(19,16) & BITS4(1,1,1,1))
&& BITS4(1,0,1,1) == INSN(11,8)
&& BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
UInt bM = (insn28 >> 5) & 1;
UInt fM = (INSN(3,0) << 1) | bM;
- UInt dD = INSN(15,12);
+ UInt dD = INSN(15,12) | (INSN(22,22) << 4);
UInt syned = (insn28 >> 7) & 1;
if (syned) {
// FSITOD
@@ -11123,10 +11172,10 @@
if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
&& BITS4(1,1,0,0) == (INSN(19,16) & BITS4(1,1,1,0))
&& BITS4(1,0,1,1) == INSN(11,8)
- && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,1,1))) {
+ && BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
UInt bD = (insn28 >> 22) & 1;
UInt fD = (INSN(15,12) << 1) | bD;
- UInt dM = INSN(3,0);
+ UInt dM = INSN(3,0) | (INSN(5,5) << 4);
UInt bZ = (insn28 >> 7) & 1;
UInt syned = (insn28 >> 16) & 1;
IRTemp rmode = newTemp(Ity_I32);
@@ -11364,7 +11413,7 @@
/* --------------------- dp insns (F) --------------------- */
if (BITS8(1,1,1,0,0,0,0,0) == (INSN(27,20) & BITS8(1,1,1,1,0,0,0,0))
- && BITS4(1,0,1,0) == INSN(11,8)
+ && BITS4(1,0,1,0) == (INSN(11,8) & BITS4(1,1,1,0))
&& BITS4(0,0,0,0) == (INSN(7,4) & BITS4(0,0,0,1))) {
UInt bM = (insn28 >> 5) & 1;
UInt bD = (insn28 >> 22) & 1;
@@ -11386,10 +11435,12 @@
condT);
DIP("fmacs%s s%u, s%u, s%u\n", nCC(conq), fD, fN, fM);
goto decode_success_vfp;
- case BITS4(0,0,0,1): /* NMAC: d - n * m */
- putFReg(fD, triop(Iop_SubF32, rm,
+ case BITS4(0,0,0,1): /* NMAC: d + -(n * m) */
+ putFReg(fD, triop(Iop_AddF32, rm,
getFReg(fD),
- triop(Iop_MulF32, rm, getFReg(fN), getFReg(fM))),
+ unop(Iop_NegF32,
+ triop(Iop_MulF32, rm, getFReg(fN),
+ getFReg(fM)))),
condT);
DIP("fnmacs%s s%u, s%u, s%u\n", nCC(conq), fD, fN, fM);
goto decode_success_vfp;
@@ -11400,8 +11451,16 @@
condT);
DIP("fmscs%s s%u, s%u, s%u\n", nCC(conq), fD, fN, fM);
goto decode_success_vfp;
- case BITS4(0,0,1,1): /* NMSC: - d - n * m */
- break; //ATC
+ case BITS4(0,0,1,1): /* NMSC: - d + -(n * m) */
+ putFReg(fD, triop(Iop_AddF32, rm,
+ unop(Iop_NegF32, getFReg(fD)),
+ unop(Iop_NegF32,
+ triop(Iop_MulF32, rm,
+ getFReg(fN),
+ getFReg(fM)))),
+ condT);
+ DIP("fnmscs%s s%u, s%u, s%u\n", nCC(conq), fD, fN, fM);
+ goto decode_success_vfp;
case BITS4(0,1,0,0): /* MUL: n * m */
putFReg(fD, triop(Iop_MulF32, rm, getFReg(fN), getFReg(fM)),
condT);
@@ -11562,8 +11621,8 @@
the case here. Hence this case possibly requires rounding, and
so it drags in the current rounding mode. */
if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
- && BITS4(1,0,0,0) == (INSN(19,16) & BITS4(1,1,1,1))
- && BITS4(1,0,1,0) == INSN(11,8)
+ && BITS4(1,0,0,0) == INSN(19,16)
+ && BITS4(1,0,1,0) == (INSN(11,8) & BITS4(1,1,1,0))
&& BITS4(0,1,0,0) == (INSN(7,4) & BITS4(0,1,0,1))) {
UInt bM = (insn28 >> 5) & 1;
UInt bD = (insn28 >> 22) & 1;
@@ -11630,11 +11689,11 @@
/* ----------------- S <-> D conversions ----------------- */
// FCVTDS
- if (BITS8(1,1,1,0,1,0,1,1) == INSN(27,20)
+ if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
&& BITS4(0,1,1,1) == INSN(19,16)
&& BITS4(1,0,1,0) == INSN(11,8)
&& BITS4(1,1,0,0) == (INSN(7,4) & BITS4(1,1,0,1))) {
- UInt dD = INSN(15,12);
+ UInt dD = INSN(15,12) | (INSN(22,22) << 4);
UInt bM = (insn28 >> 5) & 1;
UInt fM = (INSN(3,0) << 1) | bM;
putDReg(dD, unop(Iop_F32toF64, getFReg(fM)), condT);
@@ -11646,10 +11705,10 @@
if (BITS8(1,1,1,0,1,0,1,1) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,1))
&& BITS4(0,1,1,1) == INSN(19,16)
&& BITS4(1,0,1,1) == INSN(11,8)
- && BITS4(1,1,0,0) == INSN(7,4)) {
+ && BITS4(1,1,0,0) == (INSN(7,4) & BITS4(1,1,0,1))) {
UInt bD = (insn28 >> 22) & 1;
UInt fD = (INSN(15,12) << 1) | bD;
- UInt dM = INSN(3,0);
+ UInt dM = INSN(3,0) | (INSN(5,5) << 4);
IRTemp rmode = newTemp(Ity_I32);
assign(rmode, mkexpr(mk_get_IR_rounding_mode()));
putFReg(fD, binop(Iop_F64toF32, mkexpr(rmode), getDReg(dM)),
|
|
From: Rich C. <Ric...@me...> - 2010-09-22 16:12:35
|
I think you need to verify your path to valgrind. bash is telling you it cannot execute the command because the path is invalid. Rich On Wed, 22 Sep 2010 03:59:53 -0400 jen...@ta... wrote: > Hi Rich, > > Sorry for getting back to you late, I was not in the office yesterday. > > I just tried the following command on our arm-linux box as you > suggested, I got the same error message "No such file or directory": > > > camera # > >/mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgri > nd --tool=memcheck /bin/ls -lh > -bash: > /mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrind: > No such file or directory > camera # >/mnt/chlorine/testing_log/mem/Cross-compile/valgrind > --tool=memcheck > /bin/ls -lh > -bash: /mnt/chlorine/testing_log/mem/Cross-compile/valgrind: No such > file or dir ectory > > > It seems the binary (\bin\ls) was ingored. Any idea what is wrong? > > Thanks for the help! > > Jenny > > -----Original Message----- > From: Rich Coe <Ric...@me...> > To: jen...@ta... > Sent: Mon, 20 Sep 2010 18:07 > Subject: Re: [Valgrind-developers] valgrind can not be located on > target platform > > what binary do you want to run valgrind against ? > You have to specify that too on the command line. > > eg. > .../valgind --tool=memcheck /bin/ls > > rich > > On Mon, 20 Sep 2010 12:34:29 -0400 > jen...@ta... wrote: > > Hi Rich, > > > > I am still getting the same error after I tried as the following: > > > > camera # export > > VALGRIND_LIB=/mnt/chlorine/testing_log/mem/Cross-compile/.in_pl > > ace > > camera # /mnt/chlorine/testing_log/mem/Cross-compile/valgrind > > --tool=memcheck > > -bash: /mnt/chlorine/testing_log/mem/Cross-compile/valgrind: is a > > directory > > camera # > > /mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrin > > d --tool=memcheck > > -bash: > > > /mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrind: > > > No such file or directory > > camera # pwd > > /mnt/chlorine/testing_log/mem/Cross-compile/valgrind > > camera # cd coregrind > > camera # > > /mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrin > > d --tool=memcheck > > -bash: > > > /mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrind: > > > No such file or directory > > > > > > ----- > > I wonder is there any other environment parameter I have to define on > > my arm-linux platform, such as LD_LIBRARY_PATH etc? > > > > Really appreciate your help! > > > > Regards > > > > Jenny > > > > > > -----Original Message----- > > From: Rich Coe <Ric...@me...> > > To: jen...@ta... > > Sent: Mon, 20 Sep 2010 17:06 > > Subject: Re: [Valgrind-developers] valgrind can not be located on > > target platform > > > > Hi Jenny, > > > > You only need prefix defined for where you are going to install it on > > the > > target. > > > > For running it in place with-out installing it, you need to set the > env > > variable and then run it. If you are running the the bash shell, > > it looks like this: > > > > export > > VALGRIND_LIB=/mnt/chlorine/testing_log/mem/Cross-compile/.in_place > > /mnt/chlorine/testing_log/mem/Cross-compile/valgrind > > --tool=memcheck [...] > > > > where [...] is the arguments to valgrind memcheck you want to run. > > > > Rich > > > > > > > > On Mon, 20 Sep 2010 11:57:42 -0400 > > jen...@ta... wrote: > > > Hi Rich, > > > > > > Thanks again for the message and sorry I could not reply to you > > earlier. > > > > > > I tried to put valgrind on our file server under the directory: > > > "/mnt/chlorine/valgrind" using the script attached (make without > > > install), and then mount the same directory on our arm-linux target; > > > also I did "export VALGRIND_LIB=/mnt/chlorine/valgrind/memcheck" on > > the > > > target platform; > > > > > > But when I run "./coregrind/valgrind", I got the same error "No such > > > file or directory". > > > > > > I wonder could you spot anything I have done wrong so far? > > > > > > Regards > > > > > > Jenny > > > > > > -----Original Message----- > > > From: Rich Coe <Ric...@me...> > > > To: jen...@ta... > > > Sent: Fri, 17 Sep 2010 16:35 > > > Subject: Re: [Valgrind-developers] valgrind can not be located on > > > target platform > > > > > > Hi Jenny, > > > > > > In the file README_DEVELOPERS, top of the vg tree, the first section > > > 'Building and not installing it' describes running valgrind > in-place. > > > > > > Rich > > > > > > On Fri, 17 Sep 2010 06:37:05 -0400 > > > jen...@ta... wrote: > > > > Hi Richard, > > > > > > > > Thank you very much for replying to my message, I was away for a > > > while, > > > > so sorry for getting back to you late. > > > > > > > > I wonder could you tell me where I can find "developer notes for > > > > running valgrind 'in-place'" please? > > > > > > > > Our arm-linux platform has a cut down version of linux, so I can > not > > > > run "strace" "ldconfig" etc., I wonder could you tell me is there > > > > another way to find out which library valgrind is looking for > when > > it > > > > gives the "No such file or directory" error message please? > > > > > > > > Really appreciate your help! > > > > > > > > Regards > > > > > > > > Jenny > > > > > > > > > > > > -----Original Message----- > > > > From: Rich Coe <Ric...@me...> > > > > To: jen...@ta... > > > > Sent: Thu, 16 Sep 2010 16:16 > > > > Subject: Re: [Valgrind-developers] valgrind can not be located on > > > > target platform > > > > > > > > I don't if anyone else replied. > > > > > > > > If you look at the developer notes for running valgrind > 'in-place' > > it > > > > might > > > > help. valgrind the binary is merely the front end of several > > binaries > > > > and needs to be able to find those other objects in order to run. > > > > > > > > Rich > > > > > > > > On Sun, 12 Sep 2010 15:19:19 -0400 > > > > jen...@ta... wrote: > > > > > Hi there, > > > > > > > > > > I am trying to run Valgrind on our arm-linux platform to help > > > > debuging > > > > > the memory leak problem. > > > > > > > > > > After cross compiled Valgrind on Red Hat Linux using the script > as > > > > > attached,I try to run Valgrind from the target platform as such > > > > > "/mnt/chlorine/testing_log/mem/Cross-compile/bin/valgrind", I > got > > > "No > > > > > such file or Directory" error message. > > > > > > > > > > There was no error reported during the compilation and > > installation > > > > and > > > > > I have edited $PATH at the target platform to point to > > > > > /mnt/chlorine/testing_log/mem/Cross-compile/bin, and done > > "chmod+x" > > > > to > > > > > the .../bin folder. > > > > > > > > > > I wonder has anybody else experienced the same problem before? > > Have > > > I > > > > > done anything wrong during the compilation/ installation? > > > > > > > > > > Many thanks for your help in advance! > > > > > > > > > > Regards > > > > > > > > > > Jenny > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > -- > > > > > -- |
|
From: John R. <jr...@bi...> - 2010-09-22 15:37:38
|
> If I use the correct tool-chain for our arm-linux
> platform to compile valgrind, I got an error "Host (arm) not supoorted".
>
> Attached is the config.log and the make file used, I wonder would
> valgrind support our the version of arm-linux we got (arm926ejs)?
> config.log:
> $ /opt/r20969/sw/external/valgrind/valgrind/configure --build=i686-pc-linux-gnu --host=arm-3d-linux --with-cpu=armv5 --enable-wide-getaddrinfo --prefix=/opt/r20969/work/valgrind-build.arm/install --disable-debug
What is the output of "uname -a" for the system that is associated with
"--host=arm-3d-linux"? (And what is "3d" ?)
Which system has the file /lib/ld-linux.so.3 [note the '3']
that was named in the PT_INTERP, and what is its "uname -a"?
Please show the exact command and inputs which generated:
Host (arm) not supported
I could not find it in config.log.
Anybody who successfully runs valgrind on ARM, please show your
successful config!
--
|
|
From: <jen...@ta...> - 2010-09-22 15:04:44
|
Hi John,
Thanks for coming back to me. I realised I was using a wrong tool-chain
for compilation. But if use the correct tool-chain for our arm-linux
platform to compile valgrind, I got an error "Host (arm) not
supoorted".
Attached is the config.log and the make file used, I wonder would
valgrind support our the version of arm-linux we got (arm926ejs)?
Deeply appreciate your help!
Regards
Jenny
-----Original Message-----
From: John Reiser <jr...@bi...>
To: jen...@ta...
CC: val...@li...
Sent: Wed, 22 Sep 2010 13:57
Subject: Re: [Valgrind-developers] valgrind can not be located on
target platform
> jennyo@curium 09:02:07 valgrind $ readelf --segments
./coregrind/valgrind
> INTERP 0x000134 0x00008134 0x00008134 0x00013 0x00013 R 0x1
> [Requesting program interpreter: /lib/ld-linux.so.3]
> And then I checked on our arm-linux box, under \lib directory as the
> following:
>
> camera # cd /lib
> camera # ls -lh
> total 7.2M
> -rwxr-xr-x 1 root root 28K Jan 1 1970 klibc-0.so
> -rwxr-xr-x 1 root root 127K Jan 1 1970 ld-2.3.5.so
> lrwxrwxrwx 1 root root 16 Jan 1 1970 ld-linux.so.2 ->
/lib/ld-2.3.5.so
> I wonder is there something missiing on our arm-linux box?
Yes, the arm-linux box lacks /lib/ld-linux.so.3 for the PT_INTERP.
The arm-linux box has ld-linux.so.2 which is not the same;
note the '2' instead of '3'.
--
|
|
From: John R. <jr...@bi...> - 2010-09-22 12:57:00
|
> jennyo@curium 09:02:07 valgrind $ readelf --segments ./coregrind/valgrind
> INTERP 0x000134 0x00008134 0x00008134 0x00013 0x00013 R 0x1
> [Requesting program interpreter: /lib/ld-linux.so.3]
> And then I checked on our arm-linux box, under \lib directory as the
> following:
>
> camera # cd /lib
> camera # ls -lh
> total 7.2M
> -rwxr-xr-x 1 root root 28K Jan 1 1970 klibc-0.so
> -rwxr-xr-x 1 root root 127K Jan 1 1970 ld-2.3.5.so
> lrwxrwxrwx 1 root root 16 Jan 1 1970 ld-linux.so.2 -> /lib/ld-2.3.5.so
> I wonder is there something missiing on our arm-linux box?
Yes, the arm-linux box lacks /lib/ld-linux.so.3 for the PT_INTERP.
The arm-linux box has ld-linux.so.2 which is not the same;
note the '2' instead of '3'.
--
|
|
From: Nicholas N. <n.n...@gm...> - 2010-09-22 09:34:56
|
Nightly build on ocean ( Ubuntu 9.10, x86_64 )
Started at 2010-09-22 02:00:01 PDT
Ended at 2010-09-22 02:34:39 PDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 555 tests, 7 stderr failures, 3 stdout failures, 0 post failures ==
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/long_namespace_xml (stderr)
none/tests/amd64/bug132918 (stdout)
none/tests/amd64/fxtract (stdout)
none/tests/x86/fxtract (stdout)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc20_verifywrap (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
exp-ptrcheck/tests/bad_percentify (stderr)
=================================================
./valgrind-new/exp-ptrcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2010-09-22 02:17:57.000000000 -0700
+++ bad_percentify.stderr.out 2010-09-22 02:33:24.000000000 -0700
@@ -1,32 +1,29 @@
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:...)
- by 0x........: ...
+ at 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:88)
by 0x........: main (bad_percentify.c:107)
Address 0x........ expected vs actual:
- Expected: stack array "buf" in frame 3 back from here
+ Expected: stack array "buf" in frame 2 back from here
Actual: unknown
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:...)
- by 0x........: ...
+ at 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:93)
by 0x........: main (bad_percentify.c:107)
Address 0x........ expected vs actual:
- Expected: stack array "buf" in frame 3 back from here
+ Expected: stack array "buf" in frame 2 back from here
Actual: unknown
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:...)
- by 0x........: ...
+ at 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:98)
by 0x........: main (bad_percentify.c:107)
Address 0x........ expected vs actual:
- Expected: stack array "buf" in frame 3 back from here
+ Expected: stack array "buf" in frame 2 back from here
Actual: unknown
=================================================
./valgrind-new/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2010-09-22 02:17:54.000000000 -0700
+++ tc06_two_races_xml.stderr.out 2010-09-22 02:28:54.000000000 -0700
@@ -40,16 +40,25 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>do_clone</fn>
+ <fn>T.102</fn>
+ <dir>...</dir>
+ <file>createthread.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>pthread_create@@GLIBC_2.2.5</fn>
+ <dir>...</dir>
+ <file>createthread.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -121,11 +130,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -175,11 +190,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -229,11 +250,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
@@ -283,11 +310,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
</stack>
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc23-amd64
=================================================
--- tc09_bad_unlock.stderr.exp-glibc23-amd64 2010-09-22 02:17:54.000000000 -0700
+++ tc09_bad_unlock.stderr.out 2010-09-22 02:28:56.000000000 -0700
@@ -31,14 +31,13 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
+---------------------
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
@@ -46,6 +45,20 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:23)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Attempt to re-lock a non-recursive lock I already hold
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:50)
+ Lock was previously acquired
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
Thread #x was created
@@ -62,20 +75,21 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
+Thread #x: Exiting thread still holds 1 lock
+ ...
+
-ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc25-amd64
=================================================
--- tc09_bad_unlock.stderr.exp-glibc25-amd64 2010-09-22 02:17:54.000000000 -0700
+++ tc09_bad_unlock.stderr.out 2010-09-22 02:28:56.000000000 -0700
@@ -51,6 +51,10 @@
at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
+ Lock was previously acquired
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc25-x86
=================================================
--- tc09_bad_unlock.stderr.exp-glibc25-x86 2010-09-22 02:17:54.000000000 -0700
+++ tc09_bad_unlock.stderr.out 2010-09-22 02:28:56.000000000 -0700
@@ -37,14 +37,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:49)
-
+---------------------
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
@@ -52,6 +45,20 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:23)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Attempt to re-lock a non-recursive lock I already hold
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:50)
+ Lock was previously acquired
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
Thread #x was created
@@ -68,7 +75,7 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
@@ -81,13 +88,8 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+Thread #x: Exiting thread still holds 1 lock
+ ...
-ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc20_verifywrap.stderr.diff-glibc25-amd64
=================================================
--- tc20_verifywrap.stderr.exp-glibc25-amd64 2010-09-22 02:17:54.000000000 -0700
+++ tc20_verifywrap.stderr.out 2010-09-22 02:29:15.000000000 -0700
@@ -71,12 +71,14 @@
---------------- pthread_cond_wait et al ----------------
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
Thread #x's call to pthread_cond_wait failed
with error code 1 (EPERM: Operation not permitted)
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
@@ -86,12 +88,14 @@
FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:165)
Thread #x's call to pthread_cond_timedwait failed
with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:165)
@@ -142,6 +146,12 @@
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:242)
+Thread #x's call to sem_post failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: sem_post_WRK (hg_intercepts.c:...)
+ by 0x........: sem_post (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:245)
+
FIXME: can't figure out how to verify wrap of sem_post
@@ -152,4 +162,4 @@
...
-ERROR SUMMARY: 20 errors from 20 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 21 errors from 21 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc20_verifywrap.stderr.diff-glibc27-amd64
=================================================
--- tc20_verifywrap.stderr.exp-glibc27-amd64 2010-09-22 02:17:54.000000000 -0700
+++ tc20_verifywrap.stderr.out 2010-09-22 02:29:15.000000000 -0700
@@ -71,12 +71,14 @@
---------------- pthread_cond_wait et al ----------------
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
Thread #x's call to pthread_cond_wait failed
with error code 1 (EPERM: Operation not permitted)
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
@@ -86,12 +88,14 @@
FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:165)
Thread #x's call to pthread_cond_timedwait failed
with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:165)
=================================================
./valgrind-new/helgrind/tests/tc23_bogus_condwait.stderr.diff
=================================================
--- tc23_bogus_condwait.stderr.exp 2010-09-22 02:17:54.000000000 -0700
+++ tc23_bogus_condwait.stderr.out 2010-09-22 02:29:26.000000000 -0700
@@ -2,31 +2,38 @@
Thread #x is the program's root thread
Thread #x: pthread_cond_{timed}wait called with invalid mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:69)
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:72)
Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:72)
Thread #x: pthread_cond_{timed}wait called with mutex of type pthread_rwlock_t*
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:75)
Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:75)
Thread #x: pthread_cond_{timed}wait called with mutex held by a different thread
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:78)
Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:78)
=================================================
./valgrind-new/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2010-09-22 02:18:11.000000000 -0700
+++ stack_switch.stderr.out 2010-09-22 02:24:25.000000000 -0700
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-new/memcheck/tests/long_namespace_xml.stderr.diff
=================================================
--- long_namespace_xml.stderr.exp 2010-09-22 02:18:14.000000000 -0700
+++ long_namespace_xml.stderr.out 2010-09-22 02:24:34.000000000 -0700
@@ -37,7 +37,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm</fn>
+ <fn>_ZN53044basic_iostreamIwSt11char_traitsIwEE</fn>
<dir>...</dir>
<file>long_namespace_xml.cpp</file>
<line>...</line>
@@ -64,7 +64,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm</fn>
+ <fn>_ZN53044basic_iostreamIwSt11char_traitsIwEE</fn>
<dir>...</dir>
<file>long_namespace_xml.cpp</file>
<line>...</line>
=================================================
./valgrind-new/none/tests/amd64/bug132918.stdout.diff
=================================================
--- bug132918.stdout.exp 2010-09-22 02:18:30.000000000 -0700
+++ bug132918.stdout.out 2010-09-22 02:26:44.000000000 -0700
@@ -1,6 +1,6 @@
xx1 -> 0x4200 8.300000
xx2 -> 0x0000 1.440000
-xx -> 0x0000 -nan
+xx -> 0x0000 nan
xx -> 0x0000 0.809017
xx -> 0x0000 0.309018
xx -> 0x0000 -0.309015
=================================================
./valgrind-new/none/tests/amd64/fxtract.stdout.diff
=================================================
--- fxtract.stdout.exp 2010-09-22 02:18:30.000000000 -0700
+++ fxtract.stdout.out 2010-09-22 02:26:45.000000000 -0700
@@ -40,7 +40,7 @@
2.7049662808e+02 -> 1.0566274534 8.0000000000
0.0000000000e+00 -> 0.0000000000 -inf
inf -> inf inf
- -nan -> -nan -nan
+ nan -> nan nan
7.2124891681e-308 -> 1.6207302828 -1021.0000000000
5.7982756057e-308 -> 1.3029400313 -1021.0000000000
4.3840620434e-308 -> 1.9702995595 -1022.0000000000
=================================================
./valgrind-new/none/tests/x86/fxtract.stdout.diff
=================================================
--- fxtract.stdout.exp 2010-09-22 02:18:41.000000000 -0700
+++ fxtract.stdout.out 2010-09-22 02:27:51.000000000 -0700
@@ -40,7 +40,7 @@
2.7049662808e+02 -> 1.0566274534 8.0000000000
0.0000000000e+00 -> 0.0000000000 -inf
inf -> inf inf
- -nan -> -nan -nan
+ nan -> nan nan
7.2124891681e-308 -> 1.6207302828 -1021.0000000000
5.7982756057e-308 -> 1.3029400313 -1021.0000000000
4.3840620434e-308 -> 1.9702995595 -1022.0000000000
=================================================
./valgrind-old/exp-ptrcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2010-09-22 02:00:40.000000000 -0700
+++ bad_percentify.stderr.out 2010-09-22 02:16:22.000000000 -0700
@@ -1,32 +1,29 @@
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:...)
- by 0x........: ...
+ at 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:88)
by 0x........: main (bad_percentify.c:107)
Address 0x........ expected vs actual:
- Expected: stack array "buf" in frame 3 back from here
+ Expected: stack array "buf" in frame 2 back from here
Actual: unknown
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:...)
- by 0x........: ...
+ at 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:93)
by 0x........: main (bad_percentify.c:107)
Address 0x........ expected vs actual:
- Expected: stack array "buf" in frame 3 back from here
+ Expected: stack array "buf" in frame 2 back from here
Actual: unknown
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:...)
- by 0x........: ...
+ at 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:98)
by 0x........: main (bad_percentify.c:107)
Address 0x........ expected vs actual:
- Expected: stack array "buf" in frame 3 back from here
+ Expected: stack array "buf" in frame 2 back from here
Actual: unknown
=================================================
./valgrind-old/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2010-09-22 02:00:38.000000000 -0700
+++ tc06_two_races_xml.stderr.out 2010-09-22 02:11:53.000000000 -0700
@@ -40,16 +40,25 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>do_clone</fn>
+ <fn>T.102</fn>
+ <dir>...</dir>
+ <file>createthread.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>pthread_create@@GLIBC_2.2.5</fn>
+ <dir>...</dir>
+ <file>createthread.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -121,11 +130,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -175,11 +190,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -229,11 +250,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
@@ -283,11 +310,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
</stack>
<truncated beyond 100 lines>
=================================================
./valgrind-old/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc23-amd64
=================================================
--- tc09_bad_unlock.stderr.exp-glibc23-amd64 2010-09-22 02:00:38.000000000 -0700
+++ tc09_bad_unlock.stderr.out 2010-09-22 02:11:55.000000000 -0700
@@ -31,14 +31,13 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
+---------------------
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
@@ -46,6 +45,20 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:23)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Attempt to re-lock a non-recursive lock I already hold
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:50)
+ Lock was previously acquired
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
Thread #x was created
@@ -62,20 +75,21 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
+Thread #x: Exiting thread still holds 1 lock
+ ...
+
-ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc25-amd64
=================================================
--- tc09_bad_unlock.stderr.exp-glibc25-amd64 2010-09-22 02:00:38.000000000 -0700
+++ tc09_bad_unlock.stderr.out 2010-09-22 02:11:55.000000000 -0700
@@ -51,6 +51,10 @@
at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
+ Lock was previously acquired
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
=================================================
./valgrind-old/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc25-x86
=================================================
--- tc09_bad_unlock.stderr.exp-glibc25-x86 2010-09-22 02:00:38.000000000 -0700
+++ tc09_bad_unlock.stderr.out 2010-09-22 02:11:55.000000000 -0700
@@ -37,14 +37,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:49)
-
+---------------------
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
@@ -52,6 +45,20 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:23)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Attempt to re-lock a non-recursive lock I already hold
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:50)
+ Lock was previously acquired
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
Thread #x was created
@@ -68,7 +75,7 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
@@ -81,13 +88,8 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+Thread #x: Exiting thread still holds 1 lock
+ ...
-ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/helgrind/tests/tc20_verifywrap.stderr.diff-glibc25-amd64
=================================================
--- tc20_verifywrap.stderr.exp-glibc25-amd64 2010-09-22 02:00:38.000000000 -0700
+++ tc20_verifywrap.stderr.out 2010-09-22 02:12:13.000000000 -0700
@@ -71,12 +71,14 @@
---------------- pthread_cond_wait et al ----------------
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
Thread #x's call to pthread_cond_wait failed
with error code 1 (EPERM: Operation not permitted)
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
@@ -86,12 +88,14 @@
FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:165)
Thread #x's call to pthread_cond_timedwait failed
with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:165)
@@ -142,6 +146,12 @@
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:242)
+Thread #x's call to sem_post failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: sem_post_WRK (hg_intercepts.c:...)
+ by 0x........: sem_post (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:245)
+
FIXME: can't figure out how to verify wrap of sem_post
@@ -152,4 +162,4 @@
...
-ERROR SUMMARY: 20 errors from 20 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 21 errors from 21 contexts (suppressed: 0 from 0)
=================================================
./valgrind-old/helgrind/tests/tc20_verifywrap.stderr.diff-glibc27-amd64
=================================================
--- tc20_verifywrap.stderr.exp-glibc27-amd64 2010-09-22 02:00:38.000000000 -0700
+++ tc20_verifywrap.stderr.out 2010-09-22 02:12:13.000000000 -0700
@@ -71,12 +71,14 @@
---------------- pthread_cond_wait et al ----------------
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
Thread #x's call to pthread_cond_wait failed
with error code 1 (EPERM: Operation not permitted)
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
@@ -86,12 +88,14 @@
FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:165)
Thread #x's call to pthread_cond_timedwait failed
with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:165)
=================================================
./valgrind-old/helgrind/tests/tc23_bogus_condwait.stderr.diff
=================================================
--- tc23_bogus_condwait.stderr.exp 2010-09-22 02:00:38.000000000 -0700
+++ tc23_bogus_condwait.stderr.out 2010-09-22 02:12:25.000000000 -0700
@@ -2,31 +2,38 @@
Thread #x is the program's root thread
Thread #x: pthread_cond_{timed}wait called with invalid mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:69)
Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:72)
Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:72)
Thread #x: pthread_cond_{timed}wait called with mutex of type pthread_rwlock_t*
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:75)
Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:75)
Thread #x: pthread_cond_{timed}wait called with mutex held by a different thread
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:78)
Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:78)
=================================================
./valgrind-old/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2010-09-22 02:00:56.000000000 -0700
+++ stack_switch.stderr.out 2010-09-22 02:07:24.000000000 -0700
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-old/memcheck/tests/long_namespace_xml.stderr.diff
=================================================
--- long_namespace_xml.stderr.exp 2010-09-22 02:00:58.000000000 -0700
+++ long_namespace_xml.stderr.out 2010-09-22 02:07:33.000000000 -0700
@@ -37,7 +37,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm</fn>
+ <fn>_ZN53044basic_iostreamIwSt11char_traitsIwEE</fn>
<dir>...</dir>
<file>long_namespace_xml.cpp</file>
<line>...</line>
@@ -64,7 +64,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm</fn>
+ <fn>_ZN53044basic_iostreamIwSt11char_traitsIwEE</fn>
<dir>...</dir>
<file>long_namespace_xml.cpp</file>
<line>...</line>
=================================================
./valgrind-old/none/tests/amd64/bug132918.stdout.diff
=================================================
--- bug132918.stdout.exp 2010-09-22 02:01:15.000000000 -0700
+++ bug132918.stdout.out 2010-09-22 02:09:50.000000000 -0700
@@ -1,6 +1,6 @@
xx1 -> 0x4200 8.300000
xx2 -> 0x0000 1.440000
-xx -> 0x0000 -nan
+xx -> 0x0000 nan
xx -> 0x0000 0.809017
xx -> 0x0000 0.309018
xx -> 0x0000 -0.309015
=================================================
./valgrind-old/none/tests/amd64/fxtract.stdout.diff
=================================================
--- fxtract.stdout.exp 2010-09-22 02:01:15.000000000 -0700
+++ fxtract.stdout.out 2010-09-22 02:09:51.000000000 -0700
@@ -40,7 +40,7 @@
2.7049662808e+02 -> 1.0566274534 8.0000000000
0.0000000000e+00 -> 0.0000000000 -inf
inf -> inf inf
- -nan -> -nan -nan
+ nan -> nan nan
7.2124891681e-308 -> 1.6207302828 -1021.0000000000
5.7982756057e-308 -> 1.3029400313 -1021.0000000000
4.3840620434e-308 -> 1.9702995595 -1022.0000000000
=================================================
./valgrind-old/none/tests/x86/fxtract.stdout.diff
=================================================
--- fxtract.stdout.exp 2010-09-22 02:01:26.000000000 -0700
+++ fxtract.stdout.out 2010-09-22 02:10:57.000000000 -0700
@@ -40,7 +40,7 @@
2.7049662808e+02 -> 1.0566274534 8.0000000000
0.0000000000e+00 -> 0.0000000000 -inf
inf -> inf inf
- -nan -> -nan -nan
+ nan -> nan nan
7.2124891681e-308 -> 1.6207302828 -1021.0000000000
5.7982756057e-308 -> 1.3029400313 -1021.0000000000
4.3840620434e-308 -> 1.9702995595 -1022.0000000000
|
|
From: <jen...@ta...> - 2010-09-22 08:08:00
|
Hi John,
Sorry for getting back to you late, I was out of the office yesterday.
I just tried the "readelf" command on our red-hat linux box, and got
the following print out:
jennyo@curium 09:02:07 valgrind $ readelf --segments
./coregrind/valgrind
Elf file type is EXEC (Executable file)
Entry point 0x88e8
There are 8 program headers, starting at offset 52
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg
Align
EXIDX 0x003604 0x0000b604 0x0000b604 0x000a8 0x000a8 R 0x4
PHDR 0x000034 0x00008034 0x00008034 0x00100 0x00100 R E 0x4
INTERP 0x000134 0x00008134 0x00008134 0x00013 0x00013 R 0x1
[Requesting program interpreter: /lib/ld-linux.so.3]
LOAD 0x000000 0x00008000 0x00008000 0x036ac 0x036ac R E
0x8000
LOAD 0x0036ac 0x000136ac 0x000136ac 0x00190 0x011a0 RW
0x8000
DYNAMIC 0x0036b8 0x000136b8 0x000136b8 0x000f0 0x000f0 RW 0x4
NOTE 0x000148 0x00008148 0x00008148 0x00020 0x00020 R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
Section to Segment mapping:
Segment Sections...
00 .ARM.exidx
01
02 .interp
03 .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version
.gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata
.ARM.extab .ARM.exidx
04 .init_array .fini_array .jcr .dynamic .got .data .bss
05 .dynamic
06 .note.ABI-tag
07
And then I checked on our arm-linux box, under \lib directory as the
following:
camera # cd /lib
camera # ls -lh
total 7.2M
-rwxr-xr-x 1 root root 28K Jan 1 1970 klibc-0.so
-rwxr-xr-x 1 root root 127K Jan 1 1970 ld-2.3.5.so
lrwxrwxrwx 1 root root 16 Jan 1 1970 ld-linux.so.2 ->
/lib/ld-2.3.5.so
-rwxr-xr-x 1 root root 8.8K Jan 1 1970 libBrokenLocale-2.3.5.so
lrwxrwxrwx 1 root root 29 Jan 1 1970 libBrokenLocale.so.1 ->
/lib/libBrokenLocale-2.3.5.so
-rwxr-xr-x 1 root root 20K Jan 1 1970 libanl-2.3.5.so
lrwxrwxrwx 1 root root 20 Jan 1 1970 libanl.so.1 ->
/lib/libanl-2.3.5.so
lrwxrwxrwx 1 root root 20 Jan 1 1970 libapm.so ->
/lib/libapm.so.1.0.0
lrwxrwxrwx 1 root root 20 Jan 1 1970 libapm.so.1 ->
/lib/libapm.so.1.0.0
---------- 1 755 root 15K Jan 1 1970 libapm.so.1.0.0
-rwxr-xr-x 1 root root 1.4M Jan 1 1970 libc-2.3.5.so
lrwxrwxrwx 1 root root 18 Jan 1 1970 libc.so.6 ->
/lib/libc-2.3.5.so
-rwxr-xr-x 1 root root 28K Jan 1 1970 libcrypt-2.3.5.so
lrwxrwxrwx 1 root root 22 Jan 1 1970 libcrypt.so.1 ->
/lib/libcrypt-2.3.5.so
-rwxr-xr-x 1 root root 16K Jan 1 1970 libdl-2.3.5.so
lrwxrwxrwx 1 root root 19 Jan 1 1970 libdl.so.2 ->
/lib/libdl-2.3.5.so
lrwxrwxrwx 1 root root 18 Jan 1 1970 libgcc_s.so ->
/lib/libgcc_s.so.1
-rwxr-xr-x 1 root root 56K Jan 1 1970 libgcc_s.so.1
-r-xr-xr-x 1 root root 428K Jan 1 1970 libjwsmtp-1.32.so
-rwxr-xr-x 1 root root 764K Jan 1 1970 libm-2.3.5.so
lrwxrwxrwx 1 root root 18 Jan 1 1970 libm.so.6 ->
/lib/libm-2.3.5.so
-rwxr-xr-x 1 root root 93K Jan 1 1970 libnsl-2.3.5.so
lrwxrwxrwx 1 root root 20 Jan 1 1970 libnsl.so.1 ->
/lib/libnsl-2.3.5.so
-rwxr-xr-x 1 root root 39K Jan 1 1970 libnss_compat-2.3.5.so
lrwxrwxrwx 1 root root 27 Jan 1 1970 libnss_compat.so.2 ->
/lib/libnss_compat-2.3.5.so
-rwxr-xr-x 1 root root 23K Jan 1 1970 libnss_dns-2.3.5.so
lrwxrwxrwx 1 root root 24 Jan 1 1970 libnss_dns.so.2 ->
/lib/libnss_dns-2.3.5.so
-rwxr-xr-x 1 root root 50K Jan 1 1970 libnss_files-2.3.5.so
lrwxrwxrwx 1 root root 26 Jan 1 1970 libnss_files.so.2 ->
/lib/libnss_files-2.3.5.so
-rwxr-xr-x 1 root root 24K Jan 1 1970 libnss_hesiod-2.3.5.so
lrwxrwxrwx 1 root root 27 Jan 1 1970 libnss_hesiod.so.2 ->
/lib/libnss_hesiod-2.3.5.so
-rwxr-xr-x 1 root root 50K Jan 1 1970 libnss_nis-2.3.5.so
lrwxrwxrwx 1 root root 24 Jan 1 1970 libnss_nis.so.2 ->
/lib/libnss_nis-2.3.5.so
-rwxr-xr-x 1 root root 58K Jan 1 1970 libnss_nisplus-2.3.5.so
lrwxrwxrwx 1 root root 28 Jan 1 1970 libnss_nisplus.so.2 ->
/lib/libnss_nisplus-2.3.5.so
-rwxr-xr-x 1 root root 9.1K Jan 1 1970 libpcprofile.so
-rwxr-xr-x 1 root root 52K Jan 1 1970 libproc-3.2.5.so
-rwxr-xr-x 1 root root 95K Jan 1 1970 libpthread-0.10.so
lrwxrwxrwx 1 root root 23 Jan 1 1970 libpthread.so.0 ->
/lib/libpthread-0.10.so
-rwxr-xr-x 1 root root 77K Jan 1 1970 libresolv-2.3.5.so
lrwxrwxrwx 1 root root 23 Jan 1 1970 libresolv.so.2 ->
/lib/libresolv-2.3.5.so
-rwxr-xr-x 1 root root 44K Jan 1 1970 librt-2.3.5.so
lrwxrwxrwx 1 root root 19 Jan 1 1970 librt.so.1 ->
/lib/librt-2.3.5.so
lrwxrwxrwx 1 root root 23 Jan 1 1970 libstdc++.so ->
/lib/libstdc++.so.6.0.1
lrwxrwxrwx 1 root root 23 Jan 1 1970 libstdc++.so.6 ->
/lib/libstdc++.so.6.0.1
-rwxr-xr-x 1 root root 3.7M Jan 1 1970 libstdc++.so.6.0.1
-rwxr-xr-x 1 root root 28K Jan 1 1970 libthread_db-1.0.so
lrwxrwxrwx 1 root root 24 Jan 1 1970 libthread_db.so.1 ->
/lib/libthread_db-1.0.so
-rwxr-xr-x 1 root root 15K Jan 1 1970 libutil-2.3.5.so
lrwxrwxrwx 1 root root 21 Jan 1 1970 libutil.so.1 ->
/lib/libutil-2.3.5.so
drwxr-xr-x 3 root root 0 Jan 1 1970 modules
camera #
I wonder is there something missiing on our arm-linux box?
Thanks for the help!
Jenny
-----Original Message-----
From: John Reiser <jr...@bi...>
To: val...@li...
Sent: Mon, 20 Sep 2010 17:11
Subject: Re: [Valgrind-developers] valgrind can not be located on
target platform
> But when I run "./coregrind/valgrind", I got the same error "No such
> file or directory".
Such a message might arise "mysteriously" because the Linux operating
system kernel cannot find the PT_INTERP that is requested by an
executable
that is named in an execve() system call from the shell. It is the
shell
which gets the ENOENT, then writes "No such file or directory."
In order to diagnose this, run "readelf --segments ./coregrind/valgrind"
and look for the PT_INTERP segment, such as this example on x86_64:
$ readelf --segments ./coregrind/valgrind
INTERP 0x0000000000000200 0x0000000000400200
0x0000000000400200
0x000000000000001c 0x000000000000001c R 1
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
The file "/lib64/ld-linux-x86-64.so.2" must exist on the target,
and have eXecute permissions, etc.
--
-------------------------------------------------------------------------
-----
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Valgrind-developers mailing list
Val...@li...
https://lists.sourceforge.net/lists/listinfo/valgrind-developers
|
|
From: Bart V. A. <bva...@ac...> - 2010-09-22 08:03:03
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2010-09-22 02:29:35 EDT Ended at 2010-09-22 04:02:38 EDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 13 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) callgrind/tests/simwork-both (stdout) callgrind/tests/simwork-both (stderr) callgrind/tests/simwork-branch (stdout) callgrind/tests/simwork-branch (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: <jen...@ta...> - 2010-09-22 08:00:02
|
Hi Rich,
Sorry for getting back to you late, I was not in the office yesterday.
I just tried the following command on our arm-linux box as you
suggested, I got the same error message "No such file or directory":
camera #
>/mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgri
nd --tool=memcheck /bin/ls -lh
-bash:
/mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrind:
No such file or directory
camera # >/mnt/chlorine/testing_log/mem/Cross-compile/valgrind
--tool=memcheck
/bin/ls -lh
-bash: /mnt/chlorine/testing_log/mem/Cross-compile/valgrind: No such
file or dir ectory
It seems the binary (\bin\ls) was ingored. Any idea what is wrong?
Thanks for the help!
Jenny
-----Original Message-----
From: Rich Coe <Ric...@me...>
To: jen...@ta...
Sent: Mon, 20 Sep 2010 18:07
Subject: Re: [Valgrind-developers] valgrind can not be located on
target platform
what binary do you want to run valgrind against ?
You have to specify that too on the command line.
eg.
.../valgind --tool=memcheck /bin/ls
rich
On Mon, 20 Sep 2010 12:34:29 -0400
jen...@ta... wrote:
> Hi Rich,
>
> I am still getting the same error after I tried as the following:
>
> camera # export
> VALGRIND_LIB=/mnt/chlorine/testing_log/mem/Cross-compile/.in_pl
> ace
> camera # /mnt/chlorine/testing_log/mem/Cross-compile/valgrind
> --tool=memcheck
> -bash: /mnt/chlorine/testing_log/mem/Cross-compile/valgrind: is a
> directory
> camera #
> /mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrin
> d --tool=memcheck
> -bash:
>
/mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrind:
> No such file or directory
> camera # pwd
> /mnt/chlorine/testing_log/mem/Cross-compile/valgrind
> camera # cd coregrind
> camera #
> /mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrin
> d --tool=memcheck
> -bash:
>
/mnt/chlorine/testing_log/mem/Cross-compile/valgrind/coregrind/valgrind:
> No such file or directory
>
>
> -----
> I wonder is there any other environment parameter I have to define on
> my arm-linux platform, such as LD_LIBRARY_PATH etc?
>
> Really appreciate your help!
>
> Regards
>
> Jenny
>
>
> -----Original Message-----
> From: Rich Coe <Ric...@me...>
> To: jen...@ta...
> Sent: Mon, 20 Sep 2010 17:06
> Subject: Re: [Valgrind-developers] valgrind can not be located on
> target platform
>
> Hi Jenny,
>
> You only need prefix defined for where you are going to install it on
> the
> target.
>
> For running it in place with-out installing it, you need to set the
env
> variable and then run it. If you are running the the bash shell,
> it looks like this:
>
> export
> VALGRIND_LIB=/mnt/chlorine/testing_log/mem/Cross-compile/.in_place
> /mnt/chlorine/testing_log/mem/Cross-compile/valgrind
> --tool=memcheck [...]
>
> where [...] is the arguments to valgrind memcheck you want to run.
>
> Rich
>
>
>
> On Mon, 20 Sep 2010 11:57:42 -0400
> jen...@ta... wrote:
> > Hi Rich,
> >
> > Thanks again for the message and sorry I could not reply to you
> earlier.
> >
> > I tried to put valgrind on our file server under the directory:
> > "/mnt/chlorine/valgrind" using the script attached (make without
> > install), and then mount the same directory on our arm-linux target;
> > also I did "export VALGRIND_LIB=/mnt/chlorine/valgrind/memcheck" on
> the
> > target platform;
> >
> > But when I run "./coregrind/valgrind", I got the same error "No such
> > file or directory".
> >
> > I wonder could you spot anything I have done wrong so far?
> >
> > Regards
> >
> > Jenny
> >
> > -----Original Message-----
> > From: Rich Coe <Ric...@me...>
> > To: jen...@ta...
> > Sent: Fri, 17 Sep 2010 16:35
> > Subject: Re: [Valgrind-developers] valgrind can not be located on
> > target platform
> >
> > Hi Jenny,
> >
> > In the file README_DEVELOPERS, top of the vg tree, the first section
> > 'Building and not installing it' describes running valgrind
in-place.
> >
> > Rich
> >
> > On Fri, 17 Sep 2010 06:37:05 -0400
> > jen...@ta... wrote:
> > > Hi Richard,
> > >
> > > Thank you very much for replying to my message, I was away for a
> > while,
> > > so sorry for getting back to you late.
> > >
> > > I wonder could you tell me where I can find "developer notes for
> > > running valgrind 'in-place'" please?
> > >
> > > Our arm-linux platform has a cut down version of linux, so I can
not
> > > run "strace" "ldconfig" etc., I wonder could you tell me is there
> > > another way to find out which library valgrind is looking for
when
> it
> > > gives the "No such file or directory" error message please?
> > >
> > > Really appreciate your help!
> > >
> > > Regards
> > >
> > > Jenny
> > >
> > >
> > > -----Original Message-----
> > > From: Rich Coe <Ric...@me...>
> > > To: jen...@ta...
> > > Sent: Thu, 16 Sep 2010 16:16
> > > Subject: Re: [Valgrind-developers] valgrind can not be located on
> > > target platform
> > >
> > > I don't if anyone else replied.
> > >
> > > If you look at the developer notes for running valgrind
'in-place'
> it
> > > might
> > > help. valgrind the binary is merely the front end of several
> binaries
> > > and needs to be able to find those other objects in order to run.
> > >
> > > Rich
> > >
> > > On Sun, 12 Sep 2010 15:19:19 -0400
> > > jen...@ta... wrote:
> > > > Hi there,
> > > >
> > > > I am trying to run Valgrind on our arm-linux platform to help
> > > debuging
> > > > the memory leak problem.
> > > >
> > > > After cross compiled Valgrind on Red Hat Linux using the script
as
> > > > attached,I try to run Valgrind from the target platform as such
> > > > "/mnt/chlorine/testing_log/mem/Cross-compile/bin/valgrind", I
got
> > "No
> > > > such file or Directory" error message.
> > > >
> > > > There was no error reported during the compilation and
> installation
> > > and
> > > > I have edited $PATH at the target platform to point to
> > > > /mnt/chlorine/testing_log/mem/Cross-compile/bin, and done
> "chmod+x"
> > > to
> > > > the .../bin folder.
> > > >
> > > > I wonder has anybody else experienced the same problem before?
> Have
> > I
> > > > done anything wrong during the compilation/ installation?
> > > >
> > > > Many thanks for your help in advance!
> > > >
> > > > Regards
> > > >
> > > > Jenny
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > >
> > >
> > >
> > >
> > >
> >
> >
> > --
> >
> >
> >
>
>
> --
>
>
>
>
>
--
|
|
From: Rich C. <rc...@wi...> - 2010-09-22 05:40:12
|
Nightly build on ppc32 ( Linux 2.6.27.45-0.1-default ppc )
Started at 2010-09-21 23:26:01 CDT
Ended at 2010-09-22 00:39:58 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 443 tests, 18 stderr failures, 5 stdout failures, 2 post failures ==
memcheck/tests/badjump (stderr)
memcheck/tests/badjump2 (stderr)
memcheck/tests/linux/capget (stderr)
memcheck/tests/linux/stack_changes (stderr)
memcheck/tests/linux-syscalls-2007 (stderr)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/supp_unknown (stderr)
memcheck/tests/varinfo6 (stderr)
massif/tests/deep-D (post)
massif/tests/overloaded-new (post)
none/tests/linux/mremap (stderr)
none/tests/ppc32/jm-fp (stdout)
none/tests/ppc32/jm-fp (stderr)
none/tests/ppc32/power5+_round (stdout)
none/tests/ppc32/power5+_round (stderr)
none/tests/ppc32/round (stdout)
none/tests/ppc32/round (stderr)
none/tests/ppc32/test_fx (stdout)
none/tests/ppc32/test_fx (stderr)
none/tests/ppc32/test_gx (stdout)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
drd/tests/tc23_bogus_condwait (stderr)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-darwin
=================================================
--- tc23_bogus_condwait.stderr.exp-darwin 2010-09-22 00:03:22.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-09-22 00:39:40.000000000 -0500
@@ -3,61 +3,11 @@
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
-Mutex not locked: mutex 0x........, recursion count 0, owner 0.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:72)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:20)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 1:
-The object at address 0x........ is not a mutex.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:75)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:78)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) !
-Thread 2:
-Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1.
- at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
- by 0x........: grab_the_lock (tc23_bogus_condwait.c:42)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
+Process terminating with default action of signal 7 (SIGBUS)
+ Invalid address alignment at address 0x........
+ at 0x........: __pthread_mutex_unlock_usercnt (pthread_mutex_unlock.c:?)
+ by 0x........: pthread_cond_wait@@GLIBC_2.3.2 (pthread_cond_wait.c:?)
+ by 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
-ERROR SUMMARY: 9 errors from 7 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-ppc
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-ppc 2010-09-22 00:03:22.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-09-22 00:39:40.000000000 -0500
@@ -6,8 +6,8 @@
Process terminating with default action of signal 7 (SIGBUS)
Invalid address alignment at address 0x........
- at 0x........: (within libpthread-?.?.so)
- by 0x........: pthread_cond_wait@@GLIBC_2.3.2(within libpthread-?.?.so)
+ at 0x........: __pthread_mutex_unlock_usercnt (pthread_mutex_unlock.c:?)
+ by 0x........: pthread_cond_wait@@GLIBC_2.3.2 (pthread_cond_wait.c:?)
by 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-x86
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-x86 2010-09-22 00:03:22.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-09-22 00:39:40.000000000 -0500
@@ -3,84 +3,11 @@
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:20)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-
-Thread 1:
-Mutex not locked: mutex 0x........, recursion count 0, owner 0.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:72)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 1:
-The object at address 0x........ is not a mutex.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:75)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:28)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 1:
-Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:78)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:32)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) !
-Thread 2:
-Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1.
- at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
- by 0x........: grab_the_lock (tc23_bogus_condwait.c:42)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
+Process terminating with default action of signal 7 (SIGBUS)
+ Invalid address alignment at address 0x........
+ at 0x........: __pthread_mutex_unlock_usercnt (pthread_mutex_unlock.c:?)
+ by 0x........: pthread_cond_wait@@GLIBC_2.3.2 (pthread_cond_wait.c:?)
+ by 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
-ERROR SUMMARY: 11 errors from 9 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg05_race2.stderr.diff
=================================================
--- hg05_race2.stderr.exp 2010-09-22 00:03:01.000000000 -0500
+++ hg05_race2.stderr.out 2010-09-22 00:29:33.000000000 -0500
@@ -17,8 +17,6 @@
at 0x........: th (hg05_race2.c:17)
by 0x........: mythread_wrapper (hg_intercepts.c:...)
...
- Location 0x........ is 0 bytes inside foo.poot[5].plop[11],
- declared at hg05_race2.c:24, in frame #x of thread x
Possible data race during write of size 4 at 0x........ by thread #x
at 0x........: th (hg05_race2.c:17)
@@ -28,8 +26,6 @@
at 0x........: th (hg05_race2.c:17)
by 0x........: mythread_wrapper (hg_intercepts.c:...)
...
- Location 0x........ is 0 bytes inside foo.poot[5].plop[11],
- declared at hg05_race2.c:24, in frame #x of thread x
ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2010-09-22 00:03:01.000000000 -0500
+++ tc06_two_races_xml.stderr.out 2010-09-22 00:30:16.000000000 -0500
@@ -45,11 +45,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>do_clone</fn>
+ <dir>...</dir>
+ <file>createthread.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>pthread_create@@GLIBC_2.2.5</fn>
+ <fn>pthread_create@@GLIBC_2.1</fn>
+ <dir>...</dir>
+ <file>createthread.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -121,6 +127,9 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -175,6 +184,9 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -229,6 +241,9 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -283,6 +298,9 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc23-amd64
=================================================
--- tc09_bad_unlock.stderr.exp-glibc23-amd64 2010-09-22 00:03:01.000000000 -0500
+++ tc09_bad_unlock.stderr.out 2010-09-22 00:30:21.000000000 -0500
@@ -31,14 +31,13 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
+---------------------
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
@@ -46,6 +45,20 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:23)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Attempt to re-lock a non-recursive lock I already hold
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:50)
+ Lock was previously acquired
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
Thread #x was created
@@ -62,20 +75,21 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
+Thread #x: Exiting thread still holds 1 lock
+ ...
+
-ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc25-amd64
=================================================
--- tc09_bad_unlock.stderr.exp-glibc25-amd64 2010-09-22 00:03:01.000000000 -0500
+++ tc09_bad_unlock.stderr.out 2010-09-22 00:30:21.000000000 -0500
@@ -51,6 +51,10 @@
at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
+ Lock was previously acquired
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc25-x86
=================================================
--- tc09_bad_unlock.stderr.exp-glibc25-x86 2010-09-22 00:03:01.000000000 -0500
+++ tc09_bad_unlock.stderr.out 2010-09-22 00:30:21.000000000 -0500
@@ -37,14 +37,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:49)
-
+---------------------
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
@@ -52,6 +45,20 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:23)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Attempt to re-lock a non-recursive lock I already hold
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:50)
+ Lock was previously acquired
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
Thread #x was created
@@ -68,7 +75,7 @@
Lock at 0x........ was first observed
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
@@ -81,13 +88,8 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+Thread #x: Exiting thread still holds 1 lock
+ ...
-ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc23_bogus_condwait.stderr.diff
=================================================
--- tc23_bogus_condwait.stderr.exp 2010-09-22 00:03:01.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-09-22 00:31:34.000000000 -0500
@@ -5,29 +5,21 @@
at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:69)
-Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:72)
-
-Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:72)
-
-Thread #x: pthread_cond_{timed}wait called with mutex of type pthread_rwlock_t*
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:75)
-Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:75)
-
-Thread #x: pthread_cond_{timed}wait called with mutex held by a different thread
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:78)
+Process terminating with default action of signal 7 (SIGBUS)
+ Invalid address alignment at address 0x........
+ at 0x........: __pthread_mutex_unlock_usercnt (pthread_mutex_unlock.c:64)
+ by 0x........: pthread_cond_wait@@GLIBC_2.3.2 (pthread_cond_wait.c:108)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ by 0x........: main (tc23_bogus_condwait.c:69)
+Thread #x was created
+ ...
+ by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: main (tc23_bogus_condwait.c:61)
-Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:78)
+Thread #x: Exiting thread still holds 1 lock
+ ...
+ ...
-ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/massif/tests/deep-D.post.diff
=================================================
--- deep-D.post.exp 2010-09-22 00:03:11.000000000 -0500
+++ deep-D.post.out 2010-09-22 00:26:02.000000000 -0500
@@ -46,8 +46,9 @@
8 3,264 3,264 3,200 64 0
9 3,672 3,672 3,600 72 0
98.04% (3,600B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
-->98.04% (3,600B) 0x........: (below main)
-
+->98.04% (3,600B) 0x........: ??? (in /...libc...)
+ ->98.04% (3,600B) 0x........: (below main)
+
--------------------------------------------------------------------------------
n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B)
--------------------------------------------------------------------------------
=================================================
./valgrind-new/massif/tests/overloaded-new.post.diff
=================================================
--- overloaded-new.post.exp 2010-09-22 00:03:11.000000000 -0500
+++ overloaded-new.post.out 2010-09-22 00:26:13.000000000 -0500
@@ -42,14 +42,18 @@
4 12,032 12,032 12,000 32 0
5 12,032 12,032 12,000 32 0
99.73% (12,000B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
-->33.24% (4,000B) 0x........: main (overloaded-new.cpp:49)
-|
-->33.24% (4,000B) 0x........: main (overloaded-new.cpp:50)
-|
-->16.62% (2,000B) 0x........: main (overloaded-new.cpp:51)
-|
-->16.62% (2,000B) 0x........: main (overloaded-new.cpp:52)
-
+->33.24% (4,000B) 0x........: operator new(unsigned int) (overloaded-new.cpp:19)
+| ->33.24% (4,000B) 0x........: main (overloaded-new.cpp:49)
+|
+->33.24% (4,000B) 0x........: operator new(unsigned int, std::nothrow_t const&) (overloaded-new.cpp:24)
+| ->33.24% (4,000B) 0x........: main (overloaded-new.cpp:50)
+|
+->16.62% (2,000B) 0x........: operator new[](unsigned int) (overloaded-new.cpp:29)
+| ->16.62% (2,000B) 0x........: main (overloaded-new.cpp:51)
+|
+->16.62% (2,000B) 0x........: operator new[](unsigned int, std::nothrow_t const&) (overloaded-new.cpp:34)
+ ->16.62% (2,000B) 0x........: main (overloaded-new.cpp:52)
+
--------------------------------------------------------------------------------
n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B)
--------------------------------------------------------------------------------
=================================================
./valgrind-new/memcheck/tests/badjump.stderr.diff
=================================================
--- badjump.stderr.exp 2010-09-22 00:03:08.000000000 -0500
+++ badjump.stderr.out 2010-09-22 00:19:13.000000000 -0500
@@ -1,6 +1,7 @@
Jump to the invalid address stated on the next line
at 0x........: ???
+ by 0x........: ??? (in /...libc...)
by 0x........: (below main)
Address 0x........ is not stack'd, malloc'd or (recently) free'd
@@ -8,6 +9,7 @@
Process terminating with default action of signal 11 (SIGSEGV)
Access not within mapped region at address 0x........
at 0x........: ???
+ by 0x........: ??? (in /...libc...)
by 0x........: (below main)
If you believe this happened as a result of a stack
overflow in your program's main thread (unlikely but
=================================================
./valgrind-new/memcheck/tests/badjump2.stderr.diff
=================================================
--- badjump2.stderr.exp 2010-09-22 00:03:08.000000000 -0500
+++ badjump2.stderr.out 2010-09-22 00:19:14.000000000 -0500
@@ -1,5 +1,6 @@
Jump to the invalid address stated on the next line
at 0x........: ???
+ by 0x........: ??? (in /...libc...)
by 0x........: (below main)
Address 0x........ is not stack'd, malloc'd or (recently) free'd
=================================================
./valgrind-new/memcheck/tests/linux-syscalls-2007.stderr.diff
=================================================
--- linux-syscalls-2007.stderr.exp 2010-09-22 00:03:08.000000000 -0500
+++ linux-syscalls-2007.stderr.out 2010-09-22 00:20:51.000000000 -0500
@@ -1,4 +1,9 @@
+WARNING: unhandled syscall: 281
+You may be able to write your own handler.
+Read the file README_MISSING_SYSCALL_OR_IOCTL.
+Nevertheless we consider this a bug. Please report
+it at http://valgrind.org/support/bug_reports.html.
HEAP SUMMARY:
in use at exit: ... bytes in ... blocks
=================================================
./valgrind-new/memcheck/tests/linux/capget.stderr.diff
=================================================
--- capget.stderr.exp 2010-09-22 00:03:07.000000000 -0500
+++ capget.stderr.out 2010-09-22 00:20:16.000000000 -0500
@@ -1,7 +1,7 @@
capget result:
-effective 0
-permitted 0
+effective 0x........
+permitted 0x........
inheritable 0
HEAP SUMMARY:
=================================================
./valgrind-new/memcheck/tests/linux/stack_changes.stderr.diff
=================================================
--- stack_changes.stderr.exp 2010-09-22 00:03:07.000000000 -0500
+++ stack_changes.stderr.out 2010-09-22 00:20:37.000000000 -0500
@@ -0,0 +1,5 @@
+WARNING: unhandled syscall: 249
+You may be able to write your own handler.
+Read the file README_MISSING_SYSCALL_OR_IOCTL.
+Nevertheless we consider this a bug. Please report
+it at http://valgrind.org/support/bug_reports.html.
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2010-09-22 00:03:08.000000000 -0500
+++ origin5-bz2.stderr.out 2010-09-22 00:21:57.000000000 -0500
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,7 +27,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -38,7 +38,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -49,7 +49,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -60,7 +60,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -71,7 +71,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -82,7 +82,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -93,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -104,7 +104,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2010-09-22 00:03:08.000000000 -0500
+++ origin5-bz2.stderr.out 2010-09-22 00:21:57.000000000 -0500
@@ -28,7 +28,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -38,7 +39,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -48,7 +50,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -58,7 +61,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -68,7 +72,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -78,7 +83,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2010-09-22 00:03:08.000000000 -0500
+++ origin5-bz2.stderr.out 2010-09-22 00:21:57.000000000 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,25 +9,25 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -36,9 +36,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -47,9 +47,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -58,9 +58,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -69,9 +69,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -80,9 +80,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/supp_unknown.stderr.diff
=================================================
--- supp_unknown.stderr.exp 2010-09-22 00:03:08.000000000 -0500
+++ supp_unknown.stderr.out 2010-09-22 00:23:45.000000000 -0500
@@ -1,7 +1,14 @@
+Jump to the invalid address stated on the next line
+ at 0x........: ???
+ by 0x........: ??? (in /...libc...)
+ by 0x........: (below main)
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
Process terminating with default action of signal 11 (SIGSEGV)
Access not within mapped region at address 0x........
at 0x........: ???
+ by 0x........: ??? (in /...libc...)
by 0x........: (below main)
If you believe this happened as a result of a stack
overflow in your program's main thread (unlikely but
=================================================
./valgrind-new/memcheck/tests/varinfo6.stderr.diff
=================================================
--- varinfo6.stderr.exp 2010-09-22 00:03:08.000000000 -0500
+++ varinfo6.stderr.out 2010-09-22 00:24:23.000000000 -0500
@@ -7,8 +7,7 @@
by 0x........: BZ2_bzCompress (varinfo6.c:4860)
by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667)
by 0x........: main (varinfo6.c:6517)
- Location 0x........ is 2 bytes inside local var "budget"
- declared at varinfo6.c:3115, in frame #2 of thread 1
+ Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo6.c:34)
=================================================
./valgrind-new/memcheck/tests/varinfo6.stderr.diff-ppc64
=================================================
--- varinfo6.stderr.exp-ppc64 2010-09-22 00:03:08.000000000 -0500
+++ varinfo6.stderr.out 2010-09-22 00:24:23.000000000 -0500
@@ -1,5 +1,5 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: mainSort (varinfo6.c:2999)
by 0x........: BZ2_blockSort (varinfo6.c:3143)
by 0x........: BZ2_compressBlock (varinfo6.c:4072)
@@ -10,7 +10,7 @@
Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: BZ2_decompress (varinfo6.c:1699)
by 0x........: BZ2_bzDecompress (varinfo6.c:5230)
by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715)
=================================================
./valgrind-new/none/tests/linux/mremap.stderr.diff
=================================================
--- mremap.stderr.exp 2010-09-22 00:03:18.000000000 -0500
+++ mremap.stderr.out 2010-09-22 00:27:11.000000000 -0500
@@ -1,3 +1,12 @@
-mremap(grow, nomove, constrained): Cannot allocate memory
+mremap(shrink, fixed): Invalid argument
+shrink, nomove: p=0x........ np=0x........: shrink moved?!
+mremap(shrink, maymove): Invalid argument
+shrink, maymove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, fixed): Invalid argument
+grow, nomove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, maymove): Invalid argument
+grow, maymove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, nomove, constrained): Invalid argument
+mremap(grow, maymove, constrained): Invalid argument
=================================================
./valgrind-new/none/tests/linux/mremap.stderr.diff-glibc27
=================================================
--- mremap.stderr.exp-glibc27 2010-09-22 00:03:18.000000000 -0500
+++ mremap.stderr.out 2010-09-22 00:27:11.000000000 -0500
@@ -1,6 +1,12 @@
-mremap(grow, fixed): Cannot allocate memory
+mremap(shrink, fixed): Invalid argument
+shrink, nomove: p=0x........ np=0x........: shrink moved?!
+mremap(shrink, maymove): Invalid argument
+shrink, maymove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, fixed): Invalid argument
grow, nomove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, maymove): Invalid argument
grow, maymove: p=0x........ np=0x........: shrink moved?!
-mremap(grow, nomove, constrained): Cannot allocate memory
+mremap(grow, nomove, constrained): Invalid argument
+mremap(grow, maymove, constrained): Invalid argument
=================================================
./valgrind-new/none/tests/ppc32/jm-fp.stderr.diff
=================================================
--- jm-fp.stderr.exp 2010-09-22 00:03:17.000000000 -0500
+++ jm-fp.stderr.out 2010-09-22 00:27:44.000000000 -0500
@@ -1,2 +1,23 @@
+disInstr(ppc): declined to decode a GeneralPurpose-Optional insn.
+disInstr(ppc): unhandled instruction: 0x........
+ primary 63(0x........), secondary 44(0x........)
+valgrind: Unrecognised instruction at address 0x.........
+Your program just tried to execute an instruction that Valgrind
+did not recognise. There are two possible reasons for this.
+1. Your program has a bug and erroneously jumped to a non-code
+ location. If you are running Memcheck and you just saw a
+ warning about a bad jump, it's probably your program's fault.
+2. The instruction is legitimate but Valgrind doesn't handle it,
+ i.e. it's Valgrind's fault. If you think this is the case or
+ you are not sure, please let us know and we'll try to fix it.
+Either way, Valgrind will now raise a SIGILL signal which will
+probably kill your program.
+
+Process terminating with default action of signal 4 (SIGILL)
+ Illegal opcode at address 0x........
+ at 0x........: test_fsqrt (jm-insns.c:1979)
+ by 0x........: test_float_one_arg (jm-insns.c:5731)
+ by 0x........: ??? (in /...libc...)
+ by 0x........: (below main)
=================================================
./valgrind-new/none/tests/ppc32/jm-fp.stdout.diff
=================================================
--- jm-fp.stdout.exp 2010-09-22 00:03:17.000000000 -0500
+++ jm-fp.stdout.out 2010-09-22 00:27:44.000000000 -0500
@@ -794,570 +794,4 @@
fnabs 0010000000000001 => 8010000000000001
fnabs 00100094e0000359 => 80100094e0000359
- fnabs 3fe0000000000001 => bfe0000000000001
- fnabs 3fe00094e0000359 => bfe00094e0000359
- fnabs 8010000000000001 => 8010000000000001
- fnabs 80100094e0000359 => 80100094e0000359
- fnabs bfe0000000000001 => bfe0000000000001
- fnabs bfe00094e0000359 => bfe00094e0000359
- fnabs 0000000000000000 => 8000000000000000
- fnabs 8000000000000000 => 8000000000000000
- fnabs 7ff0000000000000 => fff0000000000000
- fnabs fff0000000000000 => fff0000000000000
- fnabs 7ff7ffffffffffff => fff7ffffffffffff
- fnabs fff7ffffffffffff => fff7ffffffffffff
- fnabs 7ff8000000000000 => fff8000000000000
- fnabs fff8000000000000 => fff8000000000000
-
- fsqrt 0010000000000001 => 2000000000000000
- fsqrt 00100094e0000359 => 2000004a6f52dd4a
- fsqrt 3fe0000000000001 => 3fe6a09e667f3bcd
- fsqrt 3fe00094e0000359 => 3fe6a107aacb50df
- fsqrt 8010000000000001 => 7ff8000000000000
- fsqrt 80100094e0000359 => 7ff8000000000000
- fsqrt bfe0000000000001 => 7ff8000000000000
- fsqrt bfe00094e0000359 => 7ff8000000000000
- fsqrt 0000000000000000 => 0000000000000000
- fsqrt 8000000000000000 => 8000000000000000
- fsqrt 7ff0000000000000 => 7ff0000000000000
- fsqrt fff0000000000000 => 7ff8000000000000
- fsqrt 7ff7ffffffffffff => 7fffffffffffffff
- fsqrt fff7ffffffffffff => ffffffffffffffff
- fsqrt 7ff8000000000000 => 7ff8000000000000
- fsqrt fff8000000000000 => fff8000000000000
-
-PPC floating point arith insns
- with one arg with flags update:
- frsp. 0010000000000001 => 0000000000000000
- frsp. 00100094e0000359 => 0000000000000000
- frsp. 3fe0000000000001 => 3fe0000000000000
- frsp. 3fe00094e0000359 => 3fe00094e0000000
- frsp. 8010000000000001 => 8000000000000000
- frsp. 80100094e0000359 => 8000000000000000
- frsp. bfe0000000000001 => bfe0000000000000
- frsp. bfe00094e0000359 => bfe00094e0000000
- frsp. 0000000000000000 => 0000000000000000
- frsp. 8000000000000000 => 8000000000000000
- frsp. 7ff0000000000000 => 7ff0000000000000
- frsp. fff0000000000000 => fff0000000000000
- frsp. 7ff7ffffffffffff => 7fffffffe0000000
- frsp. fff7ffffffffffff => ffffffffe0000000
- frsp. 7ff8000000000000 => 7ff8000000000000
- frsp. fff8000000000000 => fff8000000000000
-
- fctiw. 0010000000000001 => 0000000000000000
- fctiw. 00100094e0000359 => 0000000000000000
- fctiw. 3fe0000000000001 => 0000000000000001
- fctiw. 3fe00094e0000359 => 0000000000000001
- fctiw. 8010000000000001 => 0000000000000000
- fctiw. 80100094e0000359 => 0000000000000000
- fctiw. bfe0000000000001 => 00000000ffffffff
- fctiw. bfe00094e0000359 => 00000000ffffffff
- fctiw. 0000000000000000 => 0000000000000000
- fctiw. 8000000000000000 => 0000000000000000
- fctiw. 7ff0000000000000 => 000000007fffffff
- fctiw. fff0000000000000 => 0000000080000000
- fctiw. 7ff7ffffffffffff => 0000000080000000
- fctiw. fff7ffffffffffff => 0000000080000000
- fctiw. 7ff8000000000000 => 0000000080000000
- fctiw. fff8000000000000 => 0000000080000000
-
- fctiwz. 0010000000000001 => 0000000000000000
- fctiwz. 00100094e0000359 => 0000000000000000
- fctiwz. 3fe0000000000001 => 0000000000000000
- fctiwz. 3fe00094e0000359 => 0000000000000000
- fctiwz. 8010000000000001 => 0000000000000000
- fctiwz. 80100094e0000359 => 0000000000000000
- fctiwz. bfe0000000000001 => 0000000000000000
- fctiwz. bfe00094e0000359 => 0000000000000000
- fctiwz. 0000000000000000 => 0000000000000000
- fctiwz. 8000000000000000 => 0000000000000000
- fctiwz. 7ff0000000000000 => 000000007fffffff
- fctiwz. fff0000000000000 => 0000000080000000
- fctiwz. 7ff7ffffffffffff => 0000000080000000
- fctiwz. fff7ffffffffffff => 0000000080000000
- fctiwz. 7ff8000000000000 => 0000000080000000
- fctiwz. fff8000000000000 => 0000000080000000
-
- fmr. 0010000000000001 => 0010000000000001
- fmr. 00100094e0000359 => 00100094e0000359
- fmr. 3fe0000000000001 => 3fe0000000000001
- fmr. 3fe00094e0000359 => 3fe00094e0000359
- fmr. 8010000000000001 => 8010000000000001
- fmr. 80100094e0000359 => 80100094e0000359
- fmr. bfe0000000000001 => bfe0000000000001
- fmr. bfe00094e0000359 => bfe00094e0000359
- fmr. 0000000000000000 => 0000000000000000
<truncated beyond 100 lines>
=================================================
./valgrind-new/none/tests/ppc32/power5+_round.stderr.diff
=================================================
--- power5+_round.stderr.exp 2010-09-22 00:03:17.000000000 -0500
+++ power5+_round.stderr.out 2010-09-22 00:27:51.000000000 -0500
@@ -1,2 +1,19 @@
+disInstr(ppc): unhandled instruction: 0x........
+ primary 63(0x........), secondary 784(0x........)
+valgrind: Unrecognised instruction at address 0x.........
+Your program just tried to execute an instruction that Valgrind
+did not recognise. There are two possible reasons for this.
+1. Your program has a bug and erroneously jumped to a non-code
+ location. If you are running Memcheck and you just saw a
+ warning about a bad jump, it's probably your program's fault.
+2. The instruction is legitimate but Valgrind doesn't handle it,
+ i.e. it's Valgrind's fault. If you think this is the case or
+ you are not sure, please let us know and we'll try to fix it.
+Either way, Valgrind will now raise a SIGILL signal which will
+probably kill your program.
+
+Process terminating with default action of signal 4 (SIGILL)
+ Illegal opcode at address 0x........
+ at 0x........: main (power5+_round.c:124)
=================================================
./valgrind-new/none/tests/ppc32/power5+_round.stdout.diff
=================================================
--- power5+_round.stdout.exp 2010-09-22 00:03:17.000000000 -0500
+++ power5+_round.stdout.out 2010-09-22 00:27:51.000000000 -0500
@@ -1,60 +0,0 @@
-frin inf inf 0 PASS
-frin 1.9 2 0 PASS
-frin 1.1 1 0 PASS
-frin 0 0 0 PASS
-frin -0 -0 0 PASS
-frin -1.1 -1 0 PASS
-frin -1.9 -2 0 PASS
-frin -inf -inf 0 PASS
-frin nan nan 0 PASS
-frin 0.9 1 0 PASS
-frin 0.1 0 0 PASS
-frin -0.1 -0 0 PASS
-frin -0.9 -1 0 PASS
-frin 1e-40 0 0 PASS
-frin -1e-40 -0 0 PASS
-friz inf inf 0 PASS
-friz 1.9 1 0 PASS
-friz 1.1 1 0 PASS
-friz 0 0 0 PASS
-friz -0 -0 0 PASS
-friz -1.1 -1 0 PASS
-friz -1.9 -1 0 PASS
-friz -inf -inf 0 PASS
-friz nan nan 0 PASS
-friz 0.9 0 0 PASS
-friz 0.1 0 0 PASS
-friz -0.1 -0 0 PASS
-friz -0.9 -0 0 PASS
-friz 1e-40 0 0 PASS
-friz -1e-40 -0 0 PASS
-frip inf inf 0 PASS
-frip 1.9 2 0 PASS
-frip 1.1 2 0 PASS
-frip 0 0 0 PASS
-frip -0 -0 0 PASS
-frip -1.1 -1 0 PASS
-frip -1.9 -1 0 PASS
-frip -inf -inf 0 PASS
-frip nan nan 0 PASS
-frip 0.9 1 0 PASS
-frip 0.1 1 0 PASS
-frip -0.1 -0 0 PASS
-frip -0.9 -0 0 PASS
-frip 1e-40 1 0 PASS
-frip -1e-40 -0 0 PASS
-frim inf inf 0 PASS
-frim 1.9 1 0 PASS
-frim 1.1 1 0 PASS
-frim 0 0 0 PASS
-frim -0 -0 0 PASS
-frim -1.1 -2 0 PASS
-frim -1.9 -2 0 PASS
-frim -inf -inf 0 PASS
-frim nan nan 0 PASS
-frim 0.9 0 0 PASS
-frim 0.1 0 0 PASS
-frim -0.1 -1 0 PASS
-frim -0.9 -1 0 PASS
-frim 1e-40 0 0 PASS
-frim -1e-40 -1 0 PASS
=================================================
./valgrind-new/none/tests/ppc32/round.stderr.diff
=================================================
--- round.stderr.exp 2010-09-22 00:03:17.000000000 -0500
+++ round.stderr.out 2010-09-22 00:27:54.000000000 -0500
@@ -1,2 +1,22 @@
+disInstr(ppc): declined to decode a GeneralPurpose-Optional insn.
+disInstr(ppc): unhandled instruction: 0x........
+ primary 63(0x........), secondary 44(0x........)
+valgrind: Unrecognised instruction at address 0x.........
+Your program just tried to execute an instruction that Valgrind
+did not recognise. There are two possible reasons for this.
+1. Your program has a bug and erroneously jumped to a non-code
+ location. If you are running Memcheck and you just saw a
+ warning about a bad jump, it's probably your program's fault.
+2. The instruction is legitimate but Valgrind doesn't handle it,
+ i.e. it's Valgrind's fault. If you think this is the case or
+ you are not sure, please let us know and we'll try to fix it.
+Either way, Valgrind will now raise a SIGILL signal which will
+probably kill your program.
+
+Process terminating with default action of signal 4 (SIGILL)
+ Illegal opcode at address 0x........
+ at 0x........: check_double_guarded_arithmetic_op (round.c:1116)
+ by 0x........: test_float_arithmetic_ops (round.c:1185)
+ by 0x........: main (round.c:1206)
=================================================
./valgrind-new/none/tests/ppc32/round.stdout.diff
=================================================
--- round.stdout.exp 2010-09-22 00:03:17.000000000 -0500
+++ round.stdout.out 2010-09-22 00:27:53.000000000 -0500
@@ -2259,77 +2259,4 @@
-inf:PASSED:fnmsub(-0x1.000000000000bp+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a00000000000dp+0
-inf:PASSED:fnmsub(-0x1.000000000000cp+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a00000000000ep+0
-inf:PASSED:fnmsub(-0x1.000000000000dp+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a00000000001p+0
--inf:PASSED:fnmsub(-0x1.000000000000ep+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a000000000011p+0
--inf:PASSED:fnmsub(-0x1.000000000000fp+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a000000000012p+0
--inf:PASSED:fnmsub(0x1p+0 , 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.ap+0
--inf:PASSED:fnmsub(0x1.0000000000001p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000001p+0
--inf:PASSED:fnmsub(0x1.0000000000002p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000002p+0
--inf:PASSED:fnmsub(0x1.0000000000003p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000003p+0
--inf:PASSED:fnmsub(0x1.0000000000004p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000005p+0
--inf:PASSED:fnmsub(0x1.0000000000005p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000006p+0
--inf:PASSED:fnmsub(0x1.0000000000006p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000007p+0
--inf:PASSED:fnmsub(0x1.0000000000007p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000008p+0
--inf:PASSED:fnmsub(0x1.0000000000008p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000009p+0
--inf:PASSED:fnmsub(0x1.0000000000009p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000ap+0
--inf:PASSED:fnmsub(0x1.000000000000ap+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000bp+0
--inf:PASSED:fnmsub(0x1.000000000000bp+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000cp+0
--inf:PASSED:fnmsub(0x1.000000000000cp+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000ep+0
--inf:PASSED:fnmsub(0x1.000000000000dp+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000fp+0
--inf:PASSED:fnmsub(0x1.000000000000ep+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000001p+0
--inf:PASSED:fnmsub(0x1.000000000000fp+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000011p+0
-near:PASSED:fsqrt(0x1.a44p-1 ) = 0x1.cfdcaf353049ep-1
-near:PASSED:fsqrt(0x1.a822p+0 ) = 0x1.498302b49cd6dp+0
-near:PASSED:fsqrt(0x1.05a2p+0 ) = 0x1.02cd13b44f3bfp+0
-near:PASSED:fsqrt(0x1.9504p-1 ) = 0x1.c76073cec0937p-1
-near:PASSED:fsqrt(0x1.dca2p+0 ) = 0x1.5d4f8d4e4c2b2p+0
-near:PASSED:fsqrt(0x1.02c8p+0 ) = 0x1.016309cde7483p+0
-near:PASSED:fsqrt(0x1.b9p-1 ) = 0x1.db2cfe686fe7cp-1
-near:PASSED:fsqrt(0x1.1d02p+0 ) = 0x1.0e1d62e78ed9ep+0
-near:PASSED:fsqrt(0x1.c39p-1 ) = 0x1.e0d526020fb6cp-1
-near:PASSED:fsqrt(0x1.9p-1 ) = 0x1.c48c6001f0acp-1
-near:PASSED:fsqrt(0x1.4852p+0 ) = 0x1.21e9ed813e2e3p+0
-near:PASSED:fsqrt(0x1.e984p-1 ) = 0x1.f4a1b09bbf0b1p-1
-near:PASSED:fsqrt(0x1.9a1p-1 ) = 0x1.ca34879b907afp-1
-near:PASSED:fsqrt(0x1.76b2p+0 ) = 0x1.35b6781aed828p+0
-zero:PASSED:fsqrt(0x1.a44p-1 ) = 0x1.cfdcaf353049ep-1
-zero:PASSED:fsqrt(0x1.a822p+0 ) = 0x1.498302b49cd6dp+0
-zero:PASSED:fsqrt(0x1.05a2p+0 ) = 0x1.02cd13b44f3bfp+0
-zero:PASSED:fsqrt(0x1.9504p-1 ) = 0x1.c76073cec0937p-1
-zero:PASSED:fsqrt(0x1.dca2p+0 ) = 0x1.5d4f8d4e4c2b2p+0
-zero:PASSED:fsqrt(0x1.02c8p+0 ) = 0x1.016309cde7483p+0
-zero:PASSED:fsqrt(0x1.b9p-1 ) = 0x1.db2cfe686fe7cp-1
-zero:PASSED:fsqrt(0x1.1d02p+0 ) = 0x1.0e1d62e78ed9dp+0
-zero:PASSED:fsqrt(0x1.c39p-1 ) = 0x1.e0d526020fb6bp-1
-zero:PASSED:fsqrt(0x1.9p-1 ) = 0x1.c48c6001f0abfp-1
-zero:PASSED:fsqrt(0x1.4852p+0 ) = 0x1.21e9ed813e2e2p+0
-zero:PASSED:fsqrt(0x1.e984p-1 ) = 0x1.f4a1b09bbf0bp-1
-zero:PASSED:fsqrt(0x1.9a1p-1 ) = 0x1.ca34879b907aep-1
-zero:PASSED:fsqrt(0x1.76b2p+0 ) = 0x1.35b6781aed827p+0
-+inf:PASSED:fsqrt(0x1.a44p-1 ) = 0x1.cfdcaf353049fp-1
-+inf:PASSED:fsqrt(0x1.a822p+0 ) = 0x1.498302b49cd6ep+0
-+inf:PASSED:fsqrt(0x1.05a2p+0 ) = 0x1.02cd13b44f3cp+0
-+inf:PASSED:fsqrt(0x1.9504p-1 ) = 0x1.c76073cec0938p-1
-+inf:PASSED:fsqrt(0x1.dca2p+0 ) = 0x1.5d4f8d4e4c2b3p+0
-+inf:PASSED:fsqrt(0x1.02c8p+0 ) = 0x1.016309cde7484p+0
-+inf:PASSED:fsqrt(0x1.b9p-1 ) = 0x1.db2cfe686fe7dp-1
-+inf:PASSED:fsqrt(0x1.1d02p+0 ) = 0x1.0e1d62e78ed9ep+0
-+inf:PASSED:fsqrt(0x1.c39p-1 ) = 0x1.e0d526020fb6cp-1
-+inf:PASSED:fsqrt(0x1.9p-1 ) = 0x1.c48c6001f0acp-1
-+inf:PASSED:fsqrt(0x1.4852p+0 ) = 0x1.21e9ed813e2e3p+0
-+inf:PASSED:fsqrt(0x1.e984p-1 ) = 0x1.f4a1b09bbf0b1p-1
-+inf:PASSED:fsqrt(0x1.9a1p-1 ) = 0x1.ca34879b907afp-1
-+inf:PASSED:fsqrt(0x1.76b2p+0 ) = 0x1.35b6781aed828p+0
--inf:PASSED:fsqrt(0x1.a44p-1 ) = 0x1.cfdcaf353049ep-1
--inf:PASSED:fsqrt(0x1.a822p+0 ) = 0x1.498302b49cd6dp+0
--inf:PASSED:fsqrt(0x1.05a2p+0 ) = 0x1.02cd13b44f3bfp+0
--inf:PASSED:fsqrt(0x1.9504p-1 ) = 0x1.c76073cec0937p-1
--inf:PASSED:fsqrt(0x1.dca2p+0 ) = 0x1.5d4f8d4e4c2b2p+0
--inf:PASSED:fsqrt(0x1.02c8p+0 ) = 0x1.016309cde7483p+0
--inf:PASSED:fsqrt(0x1.b9p-1 ) = 0x1.db2cfe686fe7cp-1
--inf:PASSED:fsqrt(0x1.1d02p+0 ) = 0x1.0e1d62e78ed9dp+0
--inf:PASSED:...
[truncated message content] |
|
From: Tom H. <th...@cy...> - 2010-09-22 02:54:29
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2010-09-22 03:05:13 BST Ended at 2010-09-22 03:54:08 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 549 tests, 2 stderr failures, 3 stdout failures, 0 post failures == none/tests/amd64/bug132918 (stdout) none/tests/amd64/fxtract (stdout) none/tests/x86/fxtract (stdout) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) |
|
From: Tom H. <th...@cy...> - 2010-09-22 02:40:17
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2010-09-22 03:10:12 BST Ended at 2010-09-22 03:39:58 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 556 tests, 2 stderr failures, 3 stdout failures, 0 post failures == none/tests/amd64/bug132918 (stdout) none/tests/amd64/fxtract (stdout) none/tests/x86/fxtract (stdout) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) |
|
From: <sv...@va...> - 2010-09-22 01:00:16
|
Author: sewardj
Date: 2010-09-22 02:00:06 +0100 (Wed, 22 Sep 2010)
New Revision: 11372
Log:
Add more test cases for {U,S}{ADD,SUB}16.
Modified:
trunk/none/tests/arm/v6media.c
trunk/none/tests/arm/v6media.stdout.exp
Modified: trunk/none/tests/arm/v6media.c
===================================================================
--- trunk/none/tests/arm/v6media.c 2010-09-22 00:58:51 UTC (rev 11371)
+++ trunk/none/tests/arm/v6media.c 2010-09-22 01:00:06 UTC (rev 11372)
@@ -1022,6 +1022,23 @@
TESTINST3("uadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
TESTINST3("uadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
TESTINST3("uadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
+
+ TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
+
+ TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("uadd16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0);
+
TESTINST3("uadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
TESTINST3("uadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
TESTINST3("uadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
@@ -1078,6 +1095,23 @@
TESTINST3("sadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
TESTINST3("sadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
TESTINST3("sadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
+
+ TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
+
+ TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("sadd16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0);
+
TESTINST3("sadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
TESTINST3("sadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
TESTINST3("sadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
@@ -1135,6 +1169,23 @@
TESTINST3("usub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
TESTINST3("usub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
TESTINST3("usub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
+
+ TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
+
+ TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("usub16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0);
+
TESTINST3("usub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
TESTINST3("usub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
TESTINST3("usub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
@@ -1192,6 +1243,23 @@
TESTINST3("ssub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
TESTINST3("ssub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
TESTINST3("ssub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
+
+ TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
+
+ TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0);
+ TESTINST3("ssub16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0);
+
TESTINST3("ssub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
TESTINST3("ssub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
TESTINST3("ssub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
Modified: trunk/none/tests/arm/v6media.stdout.exp
===================================================================
--- trunk/none/tests/arm/v6media.stdout.exp 2010-09-22 00:58:51 UTC (rev 11371)
+++ trunk/none/tests/arm/v6media.stdout.exp 2010-09-22 01:00:06 UTC (rev 11372)
@@ -762,6 +762,20 @@
uadd16 r0, r1, r2 :: rd 0x00210002 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x00030000 ge[3:0]=0011
uadd16 r0, r1, r2 :: rd 0x00020021 rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
uadd16 r0, r1, r2 :: rd 0x00020021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
+uadd16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0x00000001 rm 0x00000001, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0x00000001 rm 0x00000000, rn 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0x00000002 rm 0x00000001, rn 0x00000001, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0x0000ffff rm 0x00000000, rn 0x0000ffff, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0x0000ffff rm 0x0000ffff, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0x0000fffe rm 0x0000ffff, rn 0x0000ffff, carryin 0, cpsr 0x00030000 ge[3:0]=0011
+uadd16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0x00010000 rm 0x00010000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0x00010000 rm 0x00000000, rn 0x00010000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0x00020000 rm 0x00010000, rn 0x00010000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0xffff0000 rm 0x00000000, rn 0xffff0000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0xffff0000 rm 0xffff0000, rn 0x00000000, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+uadd16 r0, r1, r2 :: rd 0xfffe0000 rm 0xffff0000, rn 0xffff0000, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
uadd16 r0, r1, r2 :: rd 0xa299daa0 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
uadd16 r0, r1, r2 :: rd 0x5d604bd2 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00030000 ge[3:0]=0011
uadd16 r0, r1, r2 :: rd 0x915a7c18 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00030000 ge[3:0]=0011
@@ -817,6 +831,20 @@
sadd16 r0, r1, r2 :: rd 0x00210002 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
sadd16 r0, r1, r2 :: rd 0x00020021 rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
sadd16 r0, r1, r2 :: rd 0x00020021 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+sadd16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+sadd16 r0, r1, r2 :: rd 0x00000001 rm 0x00000001, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+sadd16 r0, r1, r2 :: rd 0x00000001 rm 0x00000000, rn 0x00000001, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+sadd16 r0, r1, r2 :: rd 0x00000002 rm 0x00000001, rn 0x00000001, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+sadd16 r0, r1, r2 :: rd 0x0000ffff rm 0x00000000, rn 0x0000ffff, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
+sadd16 r0, r1, r2 :: rd 0x0000ffff rm 0x0000ffff, rn 0x00000000, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
+sadd16 r0, r1, r2 :: rd 0x0000fffe rm 0x0000ffff, rn 0x0000ffff, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
+sadd16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+sadd16 r0, r1, r2 :: rd 0x00010000 rm 0x00010000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+sadd16 r0, r1, r2 :: rd 0x00010000 rm 0x00000000, rn 0x00010000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+sadd16 r0, r1, r2 :: rd 0x00020000 rm 0x00010000, rn 0x00010000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+sadd16 r0, r1, r2 :: rd 0xffff0000 rm 0x00000000, rn 0xffff0000, carryin 0, cpsr 0x00030000 ge[3:0]=0011
+sadd16 r0, r1, r2 :: rd 0xffff0000 rm 0xffff0000, rn 0x00000000, carryin 0, cpsr 0x00030000 ge[3:0]=0011
+sadd16 r0, r1, r2 :: rd 0xfffe0000 rm 0xffff0000, rn 0xffff0000, carryin 0, cpsr 0x00030000 ge[3:0]=0011
sadd16 r0, r1, r2 :: rd 0xa299daa0 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x00000000 ge[3:0]=0000
sadd16 r0, r1, r2 :: rd 0x5d604bd2 rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
sadd16 r0, r1, r2 :: rd 0x915a7c18 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
@@ -873,6 +901,20 @@
usub16 r0, r1, r2 :: rd 0x000f0004 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
usub16 r0, r1, r2 :: rd 0x0004000f rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x00030000 ge[3:0]=0011
usub16 r0, r1, r2 :: rd 0xfffcfff1 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
+usub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+usub16 r0, r1, r2 :: rd 0x00000001 rm 0x00000001, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+usub16 r0, r1, r2 :: rd 0x0000ffff rm 0x00000000, rn 0x00000001, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
+usub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000001, rn 0x00000001, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+usub16 r0, r1, r2 :: rd 0x00000001 rm 0x00000000, rn 0x0000ffff, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
+usub16 r0, r1, r2 :: rd 0x0000ffff rm 0x0000ffff, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+usub16 r0, r1, r2 :: rd 0x00000000 rm 0x0000ffff, rn 0x0000ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+usub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+usub16 r0, r1, r2 :: rd 0x00010000 rm 0x00010000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+usub16 r0, r1, r2 :: rd 0xffff0000 rm 0x00000000, rn 0x00010000, carryin 0, cpsr 0x00030000 ge[3:0]=0011
+usub16 r0, r1, r2 :: rd 0x00000000 rm 0x00010000, rn 0x00010000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+usub16 r0, r1, r2 :: rd 0x00010000 rm 0x00000000, rn 0xffff0000, carryin 0, cpsr 0x00030000 ge[3:0]=0011
+usub16 r0, r1, r2 :: rd 0xffff0000 rm 0xffff0000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+usub16 r0, r1, r2 :: rd 0x00000000 rm 0xffff0000, rn 0xffff0000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
usub16 r0, r1, r2 :: rd 0x0ddd2e96 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
usub16 r0, r1, r2 :: rd 0xbc54a9aa rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00030000 ge[3:0]=0011
usub16 r0, r1, r2 :: rd 0xbd1665e6 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00030000 ge[3:0]=0011
@@ -929,6 +971,20 @@
ssub16 r0, r1, r2 :: rd 0x000f0004 rm 0x00180003, rn 0x0009ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
ssub16 r0, r1, r2 :: rd 0x0004000f rm 0x00030018, rn 0xffff0009, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
ssub16 r0, r1, r2 :: rd 0xfffcfff1 rm 0xffff0009, rn 0x00030018, carryin 0, cpsr 0x00000000 ge[3:0]=0000
+ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+ssub16 r0, r1, r2 :: rd 0x00000001 rm 0x00000001, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+ssub16 r0, r1, r2 :: rd 0x0000ffff rm 0x00000000, rn 0x00000001, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
+ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000001, rn 0x00000001, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+ssub16 r0, r1, r2 :: rd 0x00000001 rm 0x00000000, rn 0x0000ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+ssub16 r0, r1, r2 :: rd 0x0000ffff rm 0x0000ffff, rn 0x00000000, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
+ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x0000ffff, rn 0x0000ffff, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x00000000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+ssub16 r0, r1, r2 :: rd 0x00010000 rm 0x00010000, rn 0x00000000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+ssub16 r0, r1, r2 :: rd 0xffff0000 rm 0x00000000, rn 0x00010000, carryin 0, cpsr 0x00030000 ge[3:0]=0011
+ssub16 r0, r1, r2 :: rd 0x00000000 rm 0x00010000, rn 0x00010000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+ssub16 r0, r1, r2 :: rd 0x00010000 rm 0x00000000, rn 0xffff0000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
+ssub16 r0, r1, r2 :: rd 0xffff0000 rm 0xffff0000, rn 0x00000000, carryin 0, cpsr 0x00030000 ge[3:0]=0011
+ssub16 r0, r1, r2 :: rd 0x00000000 rm 0xffff0000, rn 0xffff0000, carryin 0, cpsr 0x000f0000 ge[3:0]=1111
ssub16 r0, r1, r2 :: rd 0x0ddd2e96 rm 0xd83b849b, rn 0xca5e5605, carryin 0, cpsr 0x000c0000 ge[3:0]=1100
ssub16 r0, r1, r2 :: rd 0xbc54a9aa rm 0x0cdafabe, rn 0x50865114, carryin 0, cpsr 0x00000000 ge[3:0]=0000
ssub16 r0, r1, r2 :: rd 0xbd1665e6 rm 0x2738f0ff, rn 0x6a228b19, carryin 0, cpsr 0x00030000 ge[3:0]=0011
|
|
From: <sv...@va...> - 2010-09-22 00:59:02
|
Author: sewardj
Date: 2010-09-22 01:58:51 +0100 (Wed, 22 Sep 2010)
New Revision: 11371
Log:
Handle new 32-bit SIMD integer primops introduced in vex r2037.
Modified:
trunk/memcheck/mc_translate.c
Modified: trunk/memcheck/mc_translate.c
===================================================================
--- trunk/memcheck/mc_translate.c 2010-09-21 09:05:20 UTC (rev 11370)
+++ trunk/memcheck/mc_translate.c 2010-09-22 00:58:51 UTC (rev 11371)
@@ -1724,7 +1724,17 @@
return assignNew('V', mce, Ity_I64, unop(Iop_CmpNEZ8x8, at));
}
+static IRAtom* mkPCast16x2 ( MCEnv* mce, IRAtom* at )
+{
+ return assignNew('V', mce, Ity_I32, unop(Iop_CmpNEZ16x2, at));
+}
+static IRAtom* mkPCast8x4 ( MCEnv* mce, IRAtom* at )
+{
+ return assignNew('V', mce, Ity_I32, unop(Iop_CmpNEZ8x4, at));
+}
+
+
/* Here's a simple scheme capable of handling ops derived from SSE1
code and while only generating ops that can be efficiently
implemented in SSE1. */
@@ -2071,7 +2081,27 @@
return at;
}
+/* --- 32-bit versions --- */
+static
+IRAtom* binary8Ix4 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
+{
+ IRAtom* at;
+ at = mkUifU32(mce, vatom1, vatom2);
+ at = mkPCast8x4(mce, at);
+ return at;
+}
+
+static
+IRAtom* binary16Ix2 ( MCEnv* mce, IRAtom* vatom1, IRAtom* vatom2 )
+{
+ IRAtom* at;
+ at = mkUifU32(mce, vatom1, vatom2);
+ at = mkPCast16x2(mce, at);
+ return at;
+}
+
+
/*------------------------------------------------------------*/
/*--- Generate shadow values from all kinds of IRExprs. ---*/
/*------------------------------------------------------------*/
@@ -2197,6 +2227,30 @@
tl_assert(sameKindedAtoms(atom2,vatom2));
switch (op) {
+ /* 32-bit SIMD */
+
+ case Iop_Add16x2:
+ case Iop_HAdd16Ux2:
+ case Iop_HAdd16Sx2:
+ case Iop_Sub16x2:
+ case Iop_HSub16Ux2:
+ case Iop_HSub16Sx2:
+ case Iop_QAdd16Sx2:
+ case Iop_QSub16Sx2:
+ return binary16Ix2(mce, vatom1, vatom2);
+
+ case Iop_Add8x4:
+ case Iop_HAdd8Ux4:
+ case Iop_HAdd8Sx4:
+ case Iop_Sub8x4:
+ case Iop_HSub8Ux4:
+ case Iop_HSub8Sx4:
+ case Iop_QSub8Ux4:
+ case Iop_QAdd8Ux4:
+ case Iop_QSub8Sx4:
+ case Iop_QAdd8Sx4:
+ return binary8Ix4(mce, vatom1, vatom2);
+
/* 64-bit SIMD */
case Iop_ShrN8x8:
|
|
From: <sv...@va...> - 2010-09-22 00:56:49
|
Author: sewardj
Date: 2010-09-22 01:56:37 +0100 (Wed, 22 Sep 2010)
New Revision: 2037
Log:
Add some 32-bit SIMD integer primops, and use these to shorten up the
implementation of some ARM media v6 instructions.
Modified:
trunk/priv/guest_arm_toIR.c
trunk/priv/host_arm_isel.c
trunk/priv/host_generic_simd64.c
trunk/priv/host_generic_simd64.h
trunk/priv/ir_defs.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-09-21 00:24:11 UTC (rev 2036)
+++ trunk/priv/guest_arm_toIR.c 2010-09-22 00:56:37 UTC (rev 2037)
@@ -966,7 +966,42 @@
}
}
+/* Set all 4 GE flags from the given 32-bit value as follows: GE 3 and
+ 2 are set from bit 31 of the value, and GE 1 and 0 are set from bit
+ 15 of the value. All other bits are ignored. */
+static void set_GE_32_10_from_bits_31_15 ( IRTemp t32, IRTemp condT )
+{
+ IRTemp ge10 = newTemp(Ity_I32);
+ IRTemp ge32 = newTemp(Ity_I32);
+ assign(ge10, binop(Iop_And32, mkexpr(t32), mkU32(0x00008000)));
+ assign(ge32, binop(Iop_And32, mkexpr(t32), mkU32(0x80000000)));
+ put_GEFLAG32( 0, 0, mkexpr(ge10), condT );
+ put_GEFLAG32( 1, 0, mkexpr(ge10), condT );
+ put_GEFLAG32( 2, 0, mkexpr(ge32), condT );
+ put_GEFLAG32( 3, 0, mkexpr(ge32), condT );
+}
+
+/* Set all 4 GE flags from the given 32-bit value as follows: GE 3
+ from bit 31, GE 2 from bit 23, GE 1 from bit 15, and GE0 from
+ bit 7. All other bits are ignored. */
+static void set_GE_3_2_1_0_from_bits_31_23_15_7 ( IRTemp t32, IRTemp condT )
+{
+ IRTemp ge0 = newTemp(Ity_I32);
+ IRTemp ge1 = newTemp(Ity_I32);
+ IRTemp ge2 = newTemp(Ity_I32);
+ IRTemp ge3 = newTemp(Ity_I32);
+ assign(ge0, binop(Iop_And32, mkexpr(t32), mkU32(0x00000080)));
+ assign(ge1, binop(Iop_And32, mkexpr(t32), mkU32(0x00008000)));
+ assign(ge2, binop(Iop_And32, mkexpr(t32), mkU32(0x00800000)));
+ assign(ge3, binop(Iop_And32, mkexpr(t32), mkU32(0x80000000)));
+ put_GEFLAG32( 0, 0, mkexpr(ge0), condT );
+ put_GEFLAG32( 1, 0, mkexpr(ge1), condT );
+ put_GEFLAG32( 2, 0, mkexpr(ge2), condT );
+ put_GEFLAG32( 3, 0, mkexpr(ge3), condT );
+}
+
+
/* ---------------- FPSCR stuff ---------------- */
/* Generate IR to get hold of the rounding mode bits in FPSCR, and
@@ -8623,38 +8658,23 @@
}
if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_sum_lo = newTemp(Ity_I32);
- IRTemp irt_sum_hi = newTemp(Ity_I32);
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp reso = newTemp(Ity_I32);
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
- assign( irt_sum_lo,
- binop(Iop_Add32,
- binop(Iop_And32, mkexpr(irt_regN), mkU32(0xFFFF)),
- binop(Iop_And32, mkexpr(irt_regM), mkU32(0xFFFF))) );
- assign( irt_sum_hi,
- binop(Iop_Add32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(16)),
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(16))) );
-
- put_GEFLAG32( 0, 16, mkexpr(irt_sum_lo), condT );
- put_GEFLAG32( 1, 16, mkexpr(irt_sum_lo), condT );
- put_GEFLAG32( 2, 16, mkexpr(irt_sum_hi), condT );
- put_GEFLAG32( 3, 16, mkexpr(irt_sum_hi), condT );
-
- IRExpr* ire_result
- = binop( Iop_Or32,
- binop(Iop_And32, mkexpr(irt_sum_lo), mkU32(0xFFFF)),
- binop(Iop_Shl32, mkexpr(irt_sum_hi), mkU8(16)) );
-
+ assign(res, binop(Iop_Add16x2, mkexpr(rNt), mkexpr(rMt)));
if (isT)
- putIRegT( regD, ire_result, condT );
+ putIRegT( regD, mkexpr(res), condT );
else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
+ putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+ assign(reso, binop(Iop_HAdd16Ux2, mkexpr(rNt), mkexpr(rMt)));
+ set_GE_32_10_from_bits_31_15(reso, condT);
+
DIP("uadd16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
return True;
}
@@ -8687,47 +8707,24 @@
}
if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_sum_lo = newTemp(Ity_I32);
- IRTemp irt_sum_hi = newTemp(Ity_I32);
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp reso = newTemp(Ity_I32);
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
- assign( irt_sum_lo,
- binop(Iop_Add32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(16)),
- mkU8(16)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(16)),
- mkU8(16)) ));
- assign( irt_sum_hi,
- binop(Iop_Add32,
- binop(Iop_Sar32, mkexpr(irt_regN), mkU8(16)),
- binop(Iop_Sar32, mkexpr(irt_regM), mkU8(16))) );
-
- IRTemp not_sum_lo = newTemp(Ity_I32);
- assign(not_sum_lo, unop(Iop_Not32, mkexpr(irt_sum_lo)));
- put_GEFLAG32( 0, 31, mkexpr(not_sum_lo), condT );
- put_GEFLAG32( 1, 31, mkexpr(not_sum_lo), condT );
-
- IRTemp not_sum_hi = newTemp(Ity_I32);
- assign(not_sum_hi, unop(Iop_Not32, mkexpr(irt_sum_hi)));
- put_GEFLAG32( 2, 31, mkexpr(not_sum_hi), condT );
- put_GEFLAG32( 3, 31, mkexpr(not_sum_hi), condT );
-
- IRExpr* ire_result
- = binop( Iop_Or32,
- binop(Iop_And32, mkexpr(irt_sum_lo), mkU32(0xFFFF)),
- binop(Iop_Shl32, mkexpr(irt_sum_hi), mkU8(16)) );
-
+ assign(res, binop(Iop_Add16x2, mkexpr(rNt), mkexpr(rMt)));
if (isT)
- putIRegT( regD, ire_result, condT );
+ putIRegT( regD, mkexpr(res), condT );
else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
+ putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+ assign(reso, unop(Iop_Not32,
+ binop(Iop_HAdd16Sx2, mkexpr(rNt), mkexpr(rMt))));
+ set_GE_32_10_from_bits_31_15(reso, condT);
+
DIP("sadd16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
return True;
}
@@ -8760,45 +8757,25 @@
}
if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_res_lo = newTemp(Ity_I32);
- IRTemp irt_res_hi = newTemp(Ity_I32);
- IRTemp irt_res_lo_not = newTemp(Ity_I32);
- IRTemp irt_res_hi_not = newTemp(Ity_I32);
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp reso = newTemp(Ity_I32);
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
- assign( irt_res_lo,
- binop( Iop_Sub32,
- binop(Iop_And32, mkexpr(irt_regN), mkU32(0xFFFF)),
- binop(Iop_And32, mkexpr(irt_regM), mkU32(0xFFFF)) ) );
- assign( irt_res_hi,
- binop( Iop_Sub32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(16)),
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(16)) ) );
-
- assign( irt_res_lo_not,
- unop(Iop_Not32, binop(Iop_Sar32, mkexpr(irt_res_lo), mkU8(31))) );
- assign( irt_res_hi_not,
- unop(Iop_Not32, binop(Iop_Sar32, mkexpr(irt_res_hi), mkU8(31))) );
- put_GEFLAG32( 0, 0, mkexpr(irt_res_lo_not), condT );
- put_GEFLAG32( 1, 0, mkexpr(irt_res_lo_not), condT );
- put_GEFLAG32( 2, 0, mkexpr(irt_res_hi_not), condT );
- put_GEFLAG32( 3, 0, mkexpr(irt_res_hi_not), condT );
-
- IRExpr* ire_result
- = binop( Iop_Or32,
- binop(Iop_And32, mkexpr(irt_res_lo), mkU32(0xFFFF)),
- binop(Iop_Shl32, mkexpr(irt_res_hi), mkU8(16)) );
-
+ assign(res, binop(Iop_Sub16x2, mkexpr(rNt), mkexpr(rMt)));
if (isT)
- putIRegT( regD, ire_result, condT );
+ putIRegT( regD, mkexpr(res), condT );
else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
+ putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
- DIP("usub16 %s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+ assign(reso, unop(Iop_Not32,
+ binop(Iop_HSub16Ux2, mkexpr(rNt), mkexpr(rMt))));
+ set_GE_32_10_from_bits_31_15(reso, condT);
+
+ DIP("usub16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
return True;
}
/* fall through */
@@ -8830,47 +8807,24 @@
}
if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_sum_lo = newTemp(Ity_I32);
- IRTemp irt_sum_hi = newTemp(Ity_I32);
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp reso = newTemp(Ity_I32);
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
- assign( irt_sum_lo,
- binop(Iop_Sub32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(16)),
- mkU8(16)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(16)),
- mkU8(16)) ));
- assign( irt_sum_hi,
- binop(Iop_Sub32,
- binop(Iop_Sar32, mkexpr(irt_regN), mkU8(16)),
- binop(Iop_Sar32, mkexpr(irt_regM), mkU8(16))) );
-
- IRTemp not_sum_lo = newTemp(Ity_I32);
- assign(not_sum_lo, unop(Iop_Not32, mkexpr(irt_sum_lo)));
- put_GEFLAG32( 0, 31, mkexpr(not_sum_lo), condT );
- put_GEFLAG32( 1, 31, mkexpr(not_sum_lo), condT );
-
- IRTemp not_sum_hi = newTemp(Ity_I32);
- assign(not_sum_hi, unop(Iop_Not32, mkexpr(irt_sum_hi)));
- put_GEFLAG32( 2, 31, mkexpr(not_sum_hi), condT );
- put_GEFLAG32( 3, 31, mkexpr(not_sum_hi), condT );
-
- IRExpr* ire_result
- = binop( Iop_Or32,
- binop(Iop_And32, mkexpr(irt_sum_lo), mkU32(0xFFFF)),
- binop(Iop_Shl32, mkexpr(irt_sum_hi), mkU8(16)) );
-
+ assign(res, binop(Iop_Sub16x2, mkexpr(rNt), mkexpr(rMt)));
if (isT)
- putIRegT( regD, ire_result, condT );
+ putIRegT( regD, mkexpr(res), condT );
else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
+ putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
+ assign(reso, unop(Iop_Not32,
+ binop(Iop_HSub16Sx2, mkexpr(rNt), mkexpr(rMt))));
+ set_GE_32_10_from_bits_31_15(reso, condT);
+
DIP("ssub16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
return True;
}
@@ -8903,74 +8857,74 @@
}
if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_sum_l0 = newTemp(Ity_I32);
- IRTemp irt_sum_l1 = newTemp(Ity_I32);
- IRTemp irt_sum_l2 = newTemp(Ity_I32);
- IRTemp irt_sum_l3 = newTemp(Ity_I32);
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp reso = newTemp(Ity_I32);
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
- IRExpr* ire_regN_l0 = binop( Iop_And32, mkexpr(irt_regN), mkU32(0xff) );
+ assign(res, binop(Iop_Add8x4, mkexpr(rNt), mkexpr(rMt)));
+ if (isT)
+ putIRegT( regD, mkexpr(res), condT );
+ else
+ putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
- IRExpr* ire_regN_l1 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(8)),
- mkU32(0xff) );
- IRExpr* ire_regN_l2 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(16)),
- mkU32(0xff) );
- IRExpr* ire_regN_l3 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(24)),
- mkU32(0xff) );
+ assign(reso, binop(Iop_HAdd8Ux4, mkexpr(rNt), mkexpr(rMt)));
+ set_GE_3_2_1_0_from_bits_31_23_15_7(reso, condT);
- IRExpr* ire_regM_l0 = binop( Iop_And32, mkexpr(irt_regM), mkU32(0xff) );
- IRExpr* ire_regM_l1 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(8)),
- mkU32(0xff) );
- IRExpr* ire_regM_l2 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(16)),
- mkU32(0xff) );
- IRExpr* ire_regM_l3 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(24)),
- mkU32(0xff) );
+ DIP("uadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+ return True;
+ }
+ /* fall through */
+ }
- assign(irt_sum_l0, binop(Iop_Add32, ire_regN_l0, ire_regM_l0));
- assign(irt_sum_l1, binop(Iop_Add32, ire_regN_l1, ire_regM_l1));
- assign(irt_sum_l2, binop(Iop_Add32, ire_regN_l2, ire_regM_l2));
- assign(irt_sum_l3, binop(Iop_Add32, ire_regN_l3, ire_regM_l3));
+ /* ------------------- sadd8<c> <Rd>,<Rn>,<Rm> ------------------ */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
- put_GEFLAG32( 0, 8, mkexpr(irt_sum_l0), condT );
- put_GEFLAG32( 1, 8, mkexpr(irt_sum_l1), condT );
- put_GEFLAG32( 2, 8, mkexpr(irt_sum_l2), condT );
- put_GEFLAG32( 3, 8, mkexpr(irt_sum_l3), condT );
+ if (isT) {
+ if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF000) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,1,1,0,0,0,0,1) &&
+ INSNA(11,8) == BITS4(1,1,1,1) &&
+ (INSNA(7,4) == BITS4(1,0,0,1))) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
- IRExpr* ire_res_a
- = binop( Iop_Or32,
- binop( Iop_And32, mkexpr(irt_sum_l0), mkU32(0xff) ),
- binop( Iop_Shl32,
- binop( Iop_And32, mkexpr(irt_sum_l1), mkU32(0xff) ),
- mkU8(8) ) );
- IRExpr* ire_res_b
- = binop( Iop_Or32,
- binop( Iop_Shl32,
- binop( Iop_And32, mkexpr(irt_sum_l2), mkU32(0xff) ),
- mkU8(16) ),
- ire_res_a );
- IRExpr* ire_result
- = binop( Iop_Or32,
- binop( Iop_Shl32,
- binop( Iop_And32, mkexpr(irt_sum_l3), mkU32(0xff) ),
- mkU8(24) ),
- ire_res_b );
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp reso = newTemp(Ity_I32);
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ assign(res, binop(Iop_Add8x4, mkexpr(rNt), mkexpr(rMt)));
if (isT)
- putIRegT( regD, ire_result, condT );
+ putIRegT( regD, mkexpr(res), condT );
else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
+ putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
- DIP("uadd8%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM);
+ assign(reso, unop(Iop_Not32,
+ binop(Iop_HAdd8Sx4, mkexpr(rNt), mkexpr(rMt))));
+ set_GE_3_2_1_0_from_bits_31_23_15_7(reso, condT);
+
+ DIP("sadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
return True;
}
/* fall through */
@@ -9002,94 +8956,87 @@
}
if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_diff_l0 = newTemp(Ity_I32);
- IRTemp irt_diff_l1 = newTemp(Ity_I32);
- IRTemp irt_diff_l2 = newTemp(Ity_I32);
- IRTemp irt_diff_l3 = newTemp(Ity_I32);
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp reso = newTemp(Ity_I32);
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
- IRExpr* ire_regN_l0 = binop( Iop_And32, mkexpr(irt_regN), mkU32(0xff) );
- IRExpr* ire_regN_l1 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(8)),
- mkU32(0xff));
- IRExpr* ire_regN_l2 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(16)),
- mkU32(0xff));
- IRExpr* ire_regN_l3 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(24)),
- mkU32(0xff));
+ assign(res, binop(Iop_Sub8x4, mkexpr(rNt), mkexpr(rMt)));
+ if (isT)
+ putIRegT( regD, mkexpr(res), condT );
+ else
+ putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
- IRExpr* ire_regM_l0 = binop(Iop_And32, mkexpr(irt_regM), mkU32(0xff) );
- IRExpr* ire_regM_l1 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(8)),
- mkU32(0xff));
- IRExpr* ire_regM_l2 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(16)),
- mkU32(0xff));
- IRExpr* ire_regM_l3 = binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(24)),
- mkU32(0xff));
+ assign(reso, unop(Iop_Not32,
+ binop(Iop_HSub8Ux4, mkexpr(rNt), mkexpr(rMt))));
+ set_GE_3_2_1_0_from_bits_31_23_15_7(reso, condT);
- assign( irt_diff_l0, binop(Iop_Sub32, ire_regN_l0, ire_regM_l0) );
- assign( irt_diff_l1, binop(Iop_Sub32, ire_regN_l1, ire_regM_l1) );
- assign( irt_diff_l2, binop(Iop_Sub32, ire_regN_l2, ire_regM_l2) );
- assign( irt_diff_l3, binop(Iop_Sub32, ire_regN_l3, ire_regM_l3) );
+ DIP("usub8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+ return True;
+ }
+ /* fall through */
+ }
- IRExpr* ire_not_l0 = unop(Iop_Not32,
- binop(Iop_Sar32, mkexpr(irt_diff_l0), mkU8(31)));
- IRExpr* ire_not_l1 = unop(Iop_Not32,
- binop(Iop_Sar32, mkexpr(irt_diff_l1), mkU8(31)));
- IRExpr* ire_not_l2 = unop(Iop_Not32,
- binop(Iop_Sar32, mkexpr(irt_diff_l2), mkU8(31)));
- IRExpr* ire_not_l3 = unop(Iop_Not32,
- binop(Iop_Sar32, mkexpr(irt_diff_l3), mkU8(31)));
+ /* ------------------- ssub8<c> <Rd>,<Rn>,<Rm> ------------------ */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
- put_GEFLAG32( 0, 0, ire_not_l0, condT );
- put_GEFLAG32( 1, 0, ire_not_l1, condT );
- put_GEFLAG32( 2, 0, ire_not_l2, condT );
- put_GEFLAG32( 3, 0, ire_not_l3, condT );
+ if (isT) {
+ if (INSNT0(15,4) == 0xFAC && (INSNT1(15,0) & 0xF0F0) == 0xF000) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,1,1,0,0,0,0,1) &&
+ INSNA(11,8) == BITS4(1,1,1,1) &&
+ INSNA(7,4) == BITS4(1,1,1,1)) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
- IRExpr* ire_res_a
- = binop( Iop_Or32,
- binop( Iop_And32, mkexpr(irt_diff_l0), mkU32(0xff) ),
- binop( Iop_Shl32,
- binop( Iop_And32, mkexpr(irt_diff_l1), mkU32(0xff) ),
- mkU8(8) ) );
- IRExpr* ire_res_b
- = binop( Iop_Or32,
- binop( Iop_Shl32,
- binop( Iop_And32, mkexpr(irt_diff_l2), mkU32(0xff) ),
- mkU8(16) ),
- ire_res_a );
- IRExpr* ire_result
- = binop( Iop_Or32,
- binop( Iop_Shl32,
- binop( Iop_And32, mkexpr(irt_diff_l3), mkU32(0xff) ),
- mkU8(24) ),
- ire_res_b );
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp reso = newTemp(Ity_I32);
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ assign(res, binop(Iop_Sub8x4, mkexpr(rNt), mkexpr(rMt)));
if (isT)
- putIRegT( regD, ire_result, condT );
+ putIRegT( regD, mkexpr(res), condT );
else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
+ putIRegA( regD, mkexpr(res), condT, Ijk_Boring );
- DIP("usub8%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM);
+ assign(reso, unop(Iop_Not32,
+ binop(Iop_HSub8Sx4, mkexpr(rNt), mkexpr(rMt))));
+ set_GE_3_2_1_0_from_bits_31_23_15_7(reso, condT);
+
+ DIP("ssub8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
return True;
}
/* fall through */
}
- /* ------------------ qadd16<c> <Rd>,<Rn>,<Rm> ------------------ */
+ /* ------------------ qadd8<c> <Rd>,<Rn>,<Rm> ------------------- */
{
UInt regD = 99, regN = 99, regM = 99;
Bool gate = False;
if (isT) {
- if (INSNT0(15,4) == 0xFA9 && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+ if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
regN = INSNT0(3,0);
regD = INSNT1(11,8);
regM = INSNT1(3,0);
@@ -9099,7 +9046,7 @@
} else {
if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
INSNA(11,8) == BITS4(1,1,1,1) &&
- INSNA(7,4) == BITS4(0,0,0,1)) {
+ INSNA(7,4) == BITS4(1,0,0,1)) {
regD = INSNA(15,12);
regN = INSNA(19,16);
regM = INSNA(3,0);
@@ -9109,54 +9056,77 @@
}
if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_sum_lo = newTemp(Ity_I32);
- IRTemp irt_sum_hi = newTemp(Ity_I32);
- IRTemp irt_res_lo = newTemp(Ity_I32);
- IRTemp irt_res_hi = newTemp(Ity_I32);
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
- assign( irt_sum_lo,
- binop(Iop_Add32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(16)),
- mkU8(16)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(16)),
- mkU8(16))) );
+ assign(res_q, binop(Iop_QAdd8Sx4, mkexpr(rNt), mkexpr(rMt)));
+ if (isT)
+ putIRegT( regD, mkexpr(res_q), condT );
+ else
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
- assign( irt_sum_hi, binop(Iop_Add32,
- binop(Iop_Sar32, mkexpr(irt_regN), mkU8(16)),
- binop(Iop_Sar32, mkexpr(irt_regM), mkU8(16))) );
+ DIP("qadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+ return True;
+ }
+ /* fall through */
+ }
- armSignedSatQ( irt_sum_lo, 0x10, &irt_res_lo, NULL );
- armSignedSatQ( irt_sum_hi, 0x10, &irt_res_hi, NULL );
+ /* ------------------ qsub8<c> <Rd>,<Rn>,<Rm> ------------------- */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
- IRExpr* ire_result
- = binop( Iop_Or32, binop(Iop_Shl32, mkexpr(irt_res_hi), mkU8(16)),
- binop(Iop_And32, mkexpr(irt_res_lo), mkU32(0xFFFF)) );
+ if (isT) {
+ if (INSNT0(15,4) == 0xFAC && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+ INSNA(11,8) == BITS4(1,1,1,1) &&
+ INSNA(7,4) == BITS4(1,1,1,1)) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
+
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ assign(res_q, binop(Iop_QSub8Sx4, mkexpr(rNt), mkexpr(rMt)));
if (isT)
- putIRegT( regD, ire_result, condT );
+ putIRegT( regD, mkexpr(res_q), condT );
else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
- DIP( "qadd16%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM );
+ DIP("qsub8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
return True;
}
/* fall through */
}
- /* ------------------ qsub16<c> <Rd>,<Rn>,<Rm> ------------------ */
+ /* ------------------ uqadd8<c> <Rd>,<Rn>,<Rm> ------------------ */
{
UInt regD = 99, regN = 99, regM = 99;
Bool gate = False;
if (isT) {
- if (INSNT0(15,4) == 0xFAD && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+ if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF050) {
regN = INSNT0(3,0);
regD = INSNT1(11,8);
regM = INSNT1(3,0);
@@ -9164,59 +9134,268 @@
gate = True;
}
} else {
- if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+ if (INSNA(27,20) == BITS8(0,1,1,0,0,1,1,0) &&
INSNA(11,8) == BITS4(1,1,1,1) &&
- INSNA(7,4) == BITS4(0,1,1,1)) {
+ (INSNA(7,4) == BITS4(1,0,0,1))) {
regD = INSNA(15,12);
regN = INSNA(19,16);
regM = INSNA(3,0);
if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
+
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
+
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ assign(res_q, binop(Iop_QAdd8Ux4, mkexpr(rNt), mkexpr(rMt)));
+ if (isT)
+ putIRegT( regD, mkexpr(res_q), condT );
+ else
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+ DIP("uqadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+ return True;
+ }
+ /* fall through */
+ }
+
+ /* ------------------ uqsub8<c> <Rd>,<Rn>,<Rm> ------------------ */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
+
+ if (isT) {
+ if (INSNT0(15,4) == 0xFAC && (INSNT1(15,0) & 0xF0F0) == 0xF050) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,1,1,0,0,1,1,0) &&
+ INSNA(11,8) == BITS4(1,1,1,1) &&
+ (INSNA(7,4) == BITS4(1,1,1,1))) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
gate = True;
}
}
if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_diff_lo = newTemp(Ity_I32);
- IRTemp irt_diff_hi = newTemp(Ity_I32);
- IRTemp irt_res_lo = newTemp(Ity_I32);
- IRTemp irt_res_hi = newTemp(Ity_I32);
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
- assign( irt_diff_lo,
- binop( Iop_Sub32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(16)),
- mkU8(16)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(16)),
- mkU8(16))) );
+ assign(res_q, binop(Iop_QSub8Ux4, mkexpr(rNt), mkexpr(rMt)));
+ if (isT)
+ putIRegT( regD, mkexpr(res_q), condT );
+ else
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
- assign( irt_diff_hi, binop( Iop_Sub32,
- binop(Iop_Sar32, mkexpr(irt_regN), mkU8(16)),
- binop(Iop_Sar32, mkexpr(irt_regM), mkU8(16))) );
+ DIP("uqsub8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+ return True;
+ }
+ /* fall through */
+ }
- armSignedSatQ( irt_diff_lo, 0x10, &irt_res_lo, NULL );
- armSignedSatQ( irt_diff_hi, 0x10, &irt_res_hi, NULL );
+ /* ----------------- uhadd8<c> <Rd>,<Rn>,<Rm> ------------------- */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
- IRExpr* ire_result
- = binop( Iop_Or32, binop(Iop_Shl32, mkexpr(irt_res_hi), mkU8(16)),
- binop(Iop_And32, mkexpr(irt_res_lo), mkU32(0xFFFF)) );
+ if (isT) {
+ if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF060) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,1,1,0,0,1,1,1) &&
+ INSNA(11,8) == BITS4(1,1,1,1) &&
+ INSNA(7,4) == BITS4(1,0,0,1)) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
+
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ assign(res_q, binop(Iop_HAdd8Ux4, mkexpr(rNt), mkexpr(rMt)));
if (isT)
- putIRegT( regD, ire_result, condT );
+ putIRegT( regD, mkexpr(res_q), condT );
else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
- DIP( "qsub16%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM );
+ DIP("uhadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
return True;
}
/* fall through */
}
+ /* ----------------- shadd8<c> <Rd>,<Rn>,<Rm> ------------------- */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
+
+ if (isT) {
+ if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF020) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,1) &&
+ INSNA(11,8) == BITS4(1,1,1,1) &&
+ INSNA(7,4) == BITS4(1,0,0,1)) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
+
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
+
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ assign(res_q, binop(Iop_HAdd8Sx4, mkexpr(rNt), mkexpr(rMt)));
+ if (isT)
+ putIRegT( regD, mkexpr(res_q), condT );
+ else
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+ DIP("shadd8%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+ return True;
+ }
+ /* fall through */
+ }
+
+ /* ------------------ qadd16<c> <Rd>,<Rn>,<Rm> ------------------ */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
+
+ if (isT) {
+ if (INSNT0(15,4) == 0xFA9 && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+ INSNA(11,8) == BITS4(1,1,1,1) &&
+ INSNA(7,4) == BITS4(0,0,0,1)) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
+
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
+
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ assign(res_q, binop(Iop_QAdd16Sx2, mkexpr(rNt), mkexpr(rMt)));
+ if (isT)
+ putIRegT( regD, mkexpr(res_q), condT );
+ else
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+ DIP("qadd16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+ return True;
+ }
+ /* fall through */
+ }
+
+ /* ------------------ qsub16<c> <Rd>,<Rn>,<Rm> ------------------ */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
+
+ if (isT) {
+ if (INSNT0(15,4) == 0xFAD && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
+ INSNA(11,8) == BITS4(1,1,1,1) &&
+ INSNA(7,4) == BITS4(0,1,1,1)) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
+
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
+
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ assign(res_q, binop(Iop_QSub16Sx2, mkexpr(rNt), mkexpr(rMt)));
+ if (isT)
+ putIRegT( regD, mkexpr(res_q), condT );
+ else
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+ DIP("qsub16%s r%u, r%u, r%u\n", nCC(conq),regD,regN,regM);
+ return True;
+ }
+ /* fall through */
+ }
+
+ /////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////
+
/* ------------------- qsax<c> <Rd>,<Rn>,<Rm> ------------------- */
/* note: the hardware seems to construct the result differently
from wot the manual says. */
@@ -9740,194 +9919,6 @@
/* fall through */
}
- /* ------------------ uqsub8<c> <Rd>,<Rn>,<Rm> ------------------ */
- {
- UInt regD = 99, regN = 99, regM = 99;
- Bool gate = False;
-
- if (isT) {
- if (INSNT0(15,4) == 0xFAC && (INSNT1(15,0) & 0xF0F0) == 0xF050) {
- regN = INSNT0(3,0);
- regD = INSNT1(11,8);
- regM = INSNT1(3,0);
- if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
- gate = True;
- }
- } else {
- if (INSNA(27,20) == BITS8(0,1,1,0,0,1,1,0) &&
- INSNA(11,8) == BITS4(1,1,1,1) &&
- (INSNA(7,4) == BITS4(1,1,1,1))) {
- regD = INSNA(15,12);
- regN = INSNA(19,16);
- regM = INSNA(3,0);
- if (regD != 15 && regN != 15 && regM != 15)
- gate = True;
- }
- }
-
- if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_diff_l0 = newTemp(Ity_I32);
- IRTemp irt_diff_l1 = newTemp(Ity_I32);
- IRTemp irt_diff_l2 = newTemp(Ity_I32);
- IRTemp irt_diff_l3 = newTemp(Ity_I32);
- IRTemp irt_sat_l0 = newTemp(Ity_I32);
- IRTemp irt_sat_l1 = newTemp(Ity_I32);
- IRTemp irt_sat_l2 = newTemp(Ity_I32);
- IRTemp irt_sat_l3 = newTemp(Ity_I32);
-
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
-
- assign( irt_diff_l0,
- binop(Iop_Sub32,
- binop(Iop_And32, mkexpr(irt_regN), mkU32(0xff)),
- binop(Iop_And32, mkexpr(irt_regM), mkU32(0xff))) );
- assign( irt_diff_l1,
- binop(Iop_Sub32,
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(8)),
- mkU32(0xff)),
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(8)),
- mkU32(0xff))) );
- assign( irt_diff_l2,
- binop(Iop_Sub32,
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(16)),
- mkU32(0xff)),
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(16)),
- mkU32(0xff))) );
- assign( irt_diff_l3,
- binop(Iop_Sub32,
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(24)),
- mkU32(0xff)),
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(24)),
- mkU32(0xff) )) );
-
- armUnsignedSatQ( &irt_sat_l0, NULL, irt_diff_l0, 0x8 );
- armUnsignedSatQ( &irt_sat_l1, NULL, irt_diff_l1, 0x8 );
- armUnsignedSatQ( &irt_sat_l2, NULL, irt_diff_l2, 0x8 );
- armUnsignedSatQ( &irt_sat_l3, NULL, irt_diff_l3, 0x8 );
-
- IRExpr* ire_res_a = binop(Iop_Or32, mkexpr(irt_sat_l0),
- binop(Iop_Shl32, mkexpr(irt_sat_l1), mkU8(8)));
- IRExpr* ire_res_b = binop(Iop_Or32,
- binop(Iop_Shl32, mkexpr(irt_sat_l2), mkU8(16)),
- ire_res_a);
- IRExpr* ire_result = binop(Iop_Or32,
- binop(Iop_Shl32, mkexpr(irt_sat_l3), mkU8(24)),
- ire_res_b);
-
- if (isT)
- putIRegT( regD, ire_result, condT );
- else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
-
- DIP("uqsub8%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM);
- return True;
- }
- /* fall through */
- }
-
- /* ------------------ uqadd8<c> <Rd>,<Rn>,<Rm> ------------------ */
- {
- UInt regD = 99, regN = 99, regM = 99;
- Bool gate = False;
-
- if (isT) {
- if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF050) {
- regN = INSNT0(3,0);
- regD = INSNT1(11,8);
- regM = INSNT1(3,0);
- if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
- gate = True;
- }
- } else {
- if (INSNA(27,20) == BITS8(0,1,1,0,0,1,1,0) &&
- INSNA(11,8) == BITS4(1,1,1,1) &&
- (INSNA(7,4) == BITS4(1,0,0,1))) {
- regD = INSNA(15,12);
- regN = INSNA(19,16);
- regM = INSNA(3,0);
- if (regD != 15 && regN != 15 && regM != 15)
- gate = True;
- }
- }
-
- if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_sum_l0 = newTemp(Ity_I32);
- IRTemp irt_sum_l1 = newTemp(Ity_I32);
- IRTemp irt_sum_l2 = newTemp(Ity_I32);
- IRTemp irt_sum_l3 = newTemp(Ity_I32);
- IRTemp irt_sat_l0 = newTemp(Ity_I32);
- IRTemp irt_sat_l1 = newTemp(Ity_I32);
- IRTemp irt_sat_l2 = newTemp(Ity_I32);
- IRTemp irt_sat_l3 = newTemp(Ity_I32);
-
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
-
- assign( irt_sum_l0,
- binop(Iop_Add32,
- binop(Iop_And32, mkexpr(irt_regN), mkU32(0xff)),
- binop(Iop_And32, mkexpr(irt_regM), mkU32(0xff))) );
- assign( irt_sum_l1,
- binop(Iop_Add32,
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(8)),
- mkU32(0xff)),
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(8)),
- mkU32(0xff))) );
- assign( irt_sum_l2,
- binop(Iop_Add32,
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(16)),
- mkU32(0xff)),
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(16)),
- mkU32(0xff))) );
- assign( irt_sum_l3,
- binop(Iop_Add32,
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regN), mkU8(24)),
- mkU32(0xff)),
- binop(Iop_And32,
- binop(Iop_Shr32, mkexpr(irt_regM), mkU8(24)),
- mkU32(0xff))) );
-
- armUnsignedSatQ( &irt_sat_l0, NULL, irt_sum_l0, 0x8 );
- armUnsignedSatQ( &irt_sat_l1, NULL, irt_sum_l1, 0x8 );
- armUnsignedSatQ( &irt_sat_l2, NULL, irt_sum_l2, 0x8 );
- armUnsignedSatQ( &irt_sat_l3, NULL, irt_sum_l3, 0x8 );
-
- IRExpr* ire_res_a = binop(Iop_Or32, mkexpr(irt_sat_l0),
- binop(Iop_Shl32, mkexpr(irt_sat_l1), mkU8(8)));
- IRExpr* ire_res_b = binop(Iop_Or32,
- binop(Iop_Shl32, mkexpr(irt_sat_l2), mkU8(16)),
- ire_res_a);
- IRExpr* ire_result = binop(Iop_Or32,
- binop(Iop_Shl32, mkexpr(irt_sat_l3), mkU8(24)),
- ire_res_b);
-
- if (isT)
- putIRegT( regD, ire_result, condT );
- else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
-
- DIP("uqadd8%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM);
- return True;
- }
- /* fall through */
- }
-
/* ------------------- sel<c> <Rd>,<Rn>,<Rm> -------------------- */
/* fixme: fix up the test in v6media.c so that we can pass the ge
flags as part of the test. */
@@ -10016,576 +10007,6 @@
/* fall through */
}
- /* ------------------ qsub8<c> <Rd>,<Rn>,<Rm> ------------------- */
- {
- UInt regD = 99, regN = 99, regM = 99;
- Bool gate = False;
-
- if (isT) {
- if (INSNT0(15,4) == 0xFAC && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
- regN = INSNT0(3,0);
- regD = INSNT1(11,8);
- regM = INSNT1(3,0);
- if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
- gate = True;
- }
- } else {
- if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
- INSNA(11,8) == BITS4(1,1,1,1) &&
- INSNA(7,4) == BITS4(1,1,1,1)) {
- regD = INSNA(15,12);
- regN = INSNA(19,16);
- regM = INSNA(3,0);
- if (regD != 15 && regN != 15 && regM != 15)
- gate = True;
- }
- }
-
- if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_diff1 = newTemp(Ity_I32);
- IRTemp irt_diff2 = newTemp(Ity_I32);
- IRTemp irt_diff3 = newTemp(Ity_I32);
- IRTemp irt_diff4 = newTemp(Ity_I32);
- IRTemp irt_diff1_sat = newTemp(Ity_I32);
- IRTemp irt_diff2_sat = newTemp(Ity_I32);
- IRTemp irt_diff3_sat = newTemp(Ity_I32);
- IRTemp irt_diff4_sat = newTemp(Ity_I32);
-
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
-
- assign( irt_diff1,
- binop(Iop_Sub32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(24)),
- mkU8(24)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(24)),
- mkU8(24))) );
- assign( irt_diff2,
- binop(Iop_Sub32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(16)),
- mkU8(24)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(16)),
- mkU8(24))) );
- assign( irt_diff3,
- binop(Iop_Sub32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(8)),
- mkU8(24)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(8)),
- mkU8(24))) );
- assign( irt_diff4, binop(Iop_Sub32,
- binop(Iop_Sar32, mkexpr(irt_regN), mkU8(24)),
- binop(Iop_Sar32, mkexpr(irt_regM), mkU8(24))) );
-
- armSignedSatQ( irt_diff1, 0x8, &irt_diff1_sat, NULL );
- armSignedSatQ( irt_diff2, 0x8, &irt_diff2_sat, NULL );
- armSignedSatQ( irt_diff3, 0x8, &irt_diff3_sat, NULL );
- armSignedSatQ( irt_diff4, 0x8, &irt_diff4_sat, NULL );
-
- IRExpr* ire_result
- = binop( Iop_Or32,
- binop(Iop_Or32,
- binop(Iop_And32, mkexpr(irt_diff1_sat), mkU32(0x000000ff)),
- binop(Iop_And32,
- binop(Iop_Shl32, mkexpr(irt_diff2_sat), mkU8(8)),
- mkU32(0x0000ff00))),
- binop(Iop_Or32,
- binop(Iop_And32,
- binop(Iop_Shl32, mkexpr(irt_diff3_sat), mkU8(16)),
- mkU32(0x00ff0000)),
- binop(Iop_Shl32, mkexpr(irt_diff4_sat), mkU8(24))) );
-
- if (isT)
- putIRegT( regD, ire_result, condT );
- else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
-
- DIP( "qsub8%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM );
- return True;
- }
- /* fall through */
- }
-
- /* ------------------ qadd8<c> <Rd>,<Rn>,<Rm> ------------------- */
- {
- UInt regD = 99, regN = 99, regM = 99;
- Bool gate = False;
-
- if (isT) {
- if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF010) {
- regN = INSNT0(3,0);
- regD = INSNT1(11,8);
- regM = INSNT1(3,0);
- if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
- gate = True;
- }
- } else {
- if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,0) &&
- INSNA(11,8) == BITS4(1,1,1,1) &&
- INSNA(7,4) == BITS4(1,0,0,1)) {
- regD = INSNA(15,12);
- regN = INSNA(19,16);
- regM = INSNA(3,0);
- if (regD != 15 && regN != 15 && regM != 15)
- gate = True;
- }
- }
-
- if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
- IRTemp irt_sum1 = newTemp(Ity_I32);
- IRTemp irt_sum2 = newTemp(Ity_I32);
- IRTemp irt_sum3 = newTemp(Ity_I32);
- IRTemp irt_sum4 = newTemp(Ity_I32);
- IRTemp irt_sum1_sat = newTemp(Ity_I32);
- IRTemp irt_sum2_sat = newTemp(Ity_I32);
- IRTemp irt_sum3_sat = newTemp(Ity_I32);
- IRTemp irt_sum4_sat = newTemp(Ity_I32);
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
-
- assign( irt_sum1,
- binop(Iop_Add32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(24)),
- mkU8(24)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(24)),
- mkU8(24))) );
- assign( irt_sum2,
- binop(Iop_Add32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(16)),
- mkU8(24)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(16)),
- mkU8(24))) );
- assign( irt_sum3,
- binop(Iop_Add32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(8)),
- mkU8(24)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(8)),
- mkU8(24))) );
- assign( irt_sum4,
- binop(Iop_Add32,
- binop(Iop_Sar32, mkexpr(irt_regN), mkU8(24)),
- binop(Iop_Sar32, mkexpr(irt_regM), mkU8(24))) );
-
- armSignedSatQ( irt_sum1, 0x8,&irt_sum1_sat, NULL );
- armSignedSatQ( irt_sum2, 0x8, &irt_sum2_sat, NULL );
- armSignedSatQ( irt_sum3, 0x8, &irt_sum3_sat, NULL );
- armSignedSatQ( irt_sum4, 0x8, &irt_sum4_sat, NULL );
-
- IRExpr* ire_result
- = binop( Iop_Or32,
- binop(Iop_Or32,
- binop(Iop_And32, mkexpr(irt_sum1_sat), mkU32(0x000000ff)),
- binop(Iop_And32,
- binop(Iop_Shl32, mkexpr(irt_sum2_sat), mkU8(8)),
- mkU32(0x0000ff00))),
- binop(Iop_Or32,
- binop(Iop_And32,
- binop(Iop_Shl32, mkexpr(irt_sum3_sat), mkU8(16)),
- mkU32(0x00ff0000)),
- binop(Iop_Shl32, mkexpr(irt_sum4_sat), mkU8(24))) );
-
- if (isT)
- putIRegT( regD, ire_result, condT );
- else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
-
- DIP( "qadd8%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM );
- return True;
- }
- /* fall through */
- }
-
- /* ----------------- shadd8<c> <Rd>,<Rn>,<Rm> ------------------- */
- {
- UInt regD = 99, regN = 99, regM = 99;
- Bool gate = False;
-
- if (isT) {
- if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF020) {
- regN = INSNT0(3,0);
- regD = INSNT1(11,8);
- regM = INSNT1(3,0);
- if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
- gate = True;
- }
- } else {
- if (INSNA(27,20) == BITS8(0,1,1,0,0,0,1,1) &&
- INSNA(11,8) == BITS4(1,1,1,1) &&
- INSNA(7,4) == BITS4(1,0,0,1)) {
- regD = INSNA(15,12);
- regN = INSNA(19,16);
- regM = INSNA(3,0);
- if (regD != 15 && regN != 15 && regM != 15)
- gate = True;
- }
- }
-
- if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
-
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
-
- IRExpr* ire_sum1
- = binop( Iop_Add32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(24)),
- mkU8(24)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(24)),
- mkU8(24)) );
- IRExpr* ire_sum2
- = binop(Iop_Add32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(16)),
- mkU8(24)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(16)),
- mkU8(24)));
- IRExpr* ire_sum3
- = binop(Iop_Add32,
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(8)),
- mkU8(24)),
- binop(Iop_Sar32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(8)),
- mkU8(24)));
- IRExpr* ire_sum4
- = binop( Iop_Add32,
- binop(Iop_Sar32, mkexpr(irt_regN), mkU8(24)),
- binop(Iop_Sar32, mkexpr(irt_regM), mkU8(24)) );
-
- IRExpr* ire_result
- = binop( Iop_Or32,
- binop(Iop_Or32,
- binop(Iop_And32,
- binop(Iop_Sar32, ire_sum1, mkU8(1)),
- mkU32(0x000000ff)),
- binop(Iop_And32,
- binop(Iop_Shl32, ire_sum2, mkU8(7)),
- mkU32(0x0000ff00))),
- binop(Iop_Or32,
- binop(Iop_And32,
- binop(Iop_Shl32, ire_sum3, mkU8(15)),
- mkU32(0x00ff0000)),
- binop(Iop_And32,
- binop(Iop_Shl32, ire_sum4, mkU8(23)),
- mkU32(0xff000000))) );
-
- if (isT)
- putIRegT( regD, ire_result, condT );
- else
- putIRegA( regD, ire_result, condT, Ijk_Boring );
-
- DIP( "shadd8%s r%u, r%u, r%u\n", nCC(conq), regD, regN, regM );
- return True;
- }
- /* fall through */
- }
-
- /* ----------------- uhadd8<c> <Rd>,<Rn>,<Rm> ------------------- */
- // merge with shadd8
- {
- UInt regD = 99, regN = 99, regM = 99;
- Bool gate = False;
-
- if (isT) {
- if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF060) {
- regN = INSNT0(3,0);
- regD = INSNT1(11,8);
- regM = INSNT1(3,0);
- if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
- gate = True;
- }
- } else {
- if (INSNA(27,20) == BITS8(0,1,1,0,0,1,1,1) &&
- INSNA(11,8) == BITS4(1,1,1,1) &&
- INSNA(7,4) == BITS4(1,0,0,1)) {
- regD = INSNA(15,12);
- regN = INSNA(19,16);
- regM = INSNA(3,0);
- if (regD != 15 && regN != 15 && regM != 15)
- gate = True;
- }
- }
-
- if (gate) {
- IRTemp irt_regN = newTemp(Ity_I32);
- IRTemp irt_regM = newTemp(Ity_I32);
-
- assign( irt_regN, isT ? getIRegT(regN) : getIRegA(regN) );
- assign( irt_regM, isT ? getIRegT(regM) : getIRegA(regM) );
-
- IRExpr* ire_sum1
- = binop( Iop_Add32,
- binop(Iop_Shr32,
- binop(Iop_Shl32, mkexpr(irt_regN), mkU8(24)),
- mkU8(24)),
- binop(Iop_Shr32,
- binop(Iop_Shl32, mkexpr(irt_regM), mkU8(24)),
- ...
[truncated message content] |