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
(10) |
2
(22) |
3
(15) |
4
(14) |
5
(8) |
6
(10) |
7
(14) |
|
8
(9) |
9
(10) |
10
(21) |
11
(16) |
12
(17) |
13
(15) |
14
(8) |
|
15
(12) |
16
(8) |
17
(44) |
18
(24) |
19
(29) |
20
(29) |
21
(17) |
|
22
(17) |
23
(16) |
24
(18) |
25
(16) |
26
(15) |
27
(16) |
28
(11) |
|
29
(11) |
30
(10) |
31
(12) |
|
|
|
|
|
From: <sv...@va...> - 2006-01-02 20:47:29
|
Author: dirk
Date: 2006-01-02 20:47:26 +0000 (Mon, 02 Jan 2006)
New Revision: 5482
Log:
update
Modified:
trunk/docs/internals/3_1_BUGSTATUS.txt
Modified: trunk/docs/internals/3_1_BUGSTATUS.txt
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/internals/3_1_BUGSTATUS.txt 2006-01-02 20:46:06 UTC (rev 5=
481)
+++ trunk/docs/internals/3_1_BUGSTATUS.txt 2006-01-02 20:47:26 UTC (rev 5=
482)
@@ -8,7 +8,7 @@
=20
v5262 v5446 n-i-bz fsub 3,3,3 in ppc32 dispatcher doesn't clea=
r NaNs
v5270 v5447 n-i-bz ppc32: __NR_{set,get}priority
-v5470 pending 117332 missing line info with icc 8.1 (x86)
+v5470 v5479 117332 missing line info with icc 8.1 (x86)
pending pending 117362 partially defined equality
pending pending 117366 amd64: 0xDD 0x7C fnstsw
pending pending 117367 amd64: 0xD9 0xF4 fxtract
@@ -24,11 +24,11 @@
pending pending 118466 add %r,%r mishandled by memcheck
pending pending n-i-bz VALGRIND_COUNT_LEAKS arg types (Olly Betts)
v5429 v5450 n-i-bz memcheck/tests/mempool reads freed memory
-v5366/67/70 pending n-i-bz AshleyP's custom-allocator assertion
+v5366/67/70 v5480 n-i-bz AshleyP's custom-allocator assertion
vx1501 vx1516 n-i-bz Dirk strict-aliasing stuff
v5368 v5448 n-i-bz More space for debugger cmd line (Dan Thale=
r)
v5378/80 v5379/81 n-i-bz Clarified leak checker output message
-v5382 pending n-i-bz AshleyP's --gen-suppressions output fix
+v5382 v5481 n-i-bz AshleyP's --gen-suppressions output fix
v5384 wontfix 117096 Weird errors when --log-fd=3D has invalid v=
alue
v5396 v5449 n-i-bz cg_annotate's --sort option broken=20
(TODO: VERIFY 31BRANCH)
|
|
From: <sv...@va...> - 2006-01-02 20:46:10
|
Author: dirk
Date: 2006-01-02 20:46:06 +0000 (Mon, 02 Jan 2006)
New Revision: 5481
Log:
backport r5382 from trunk:
r5382 | njn | 2005-12-19 20:40:12 +0100 (Mon, 19 Dec 2005) | 3 lines
Fix a minor --gen-suppressions output bug.
Modified:
branches/VALGRIND_3_1_BRANCH/coregrind/m_errormgr.c
Modified: branches/VALGRIND_3_1_BRANCH/coregrind/m_errormgr.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_1_BRANCH/coregrind/m_errormgr.c 2006-01-02 20:44:=
14 UTC (rev 5480)
+++ branches/VALGRIND_3_1_BRANCH/coregrind/m_errormgr.c 2006-01-02 20:46:=
06 UTC (rev 5481)
@@ -404,19 +404,21 @@
if (stop_at > VG_MAX_SUPP_CALLERS) stop_at =3D VG_MAX_SUPP_CALLERS;
vg_assert(stop_at > 0);
=20
- VG_(printf)("{\n");
- VG_(printf)(" <insert a suppression name here>\n");
-
if (ThreadErr =3D=3D err->ekind || MutexErr =3D=3D err->ekind) {
+ VG_(printf)("{\n");
+ VG_(printf)(" <insert a suppression name here>\n");
VG_(printf)(" core:PThread\n");
=20
} else {
Char* name =3D VG_TDICT_CALL(tool_get_error_name, err);
if (NULL =3D=3D name) {
VG_(message)(Vg_UserMsg,=20
- "(tool does not allow error to be suppressed)");
+ "(%s does not allow error to be suppressed)",
+ VG_(details).name);
return;
}
+ VG_(printf)("{\n");
+ VG_(printf)(" <insert a suppression name here>\n");
VG_(printf)(" %s:%s\n", VG_(details).name, name);
VG_TDICT_CALL(tool_print_extra_suppression_info, err);
}
|
|
From: <sv...@va...> - 2006-01-02 20:44:25
|
Author: dirk
Date: 2006-01-02 20:44:14 +0000 (Mon, 02 Jan 2006)
New Revision: 5480
Log:
merge 5366/67/70 from trunk to fix AshleyP's custom-allocator assertion
Modified:
branches/VALGRIND_3_1_BRANCH/memcheck/mac_leakcheck.c
Modified: branches/VALGRIND_3_1_BRANCH/memcheck/mac_leakcheck.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_1_BRANCH/memcheck/mac_leakcheck.c 2006-01-02 20:4=
1:28 UTC (rev 5479)
+++ branches/VALGRIND_3_1_BRANCH/memcheck/mac_leakcheck.c 2006-01-02 20:4=
4:14 UTC (rev 5480)
@@ -119,10 +119,10 @@
*/
typedef=20
enum {=20
- Unreached,=20
- IndirectLeak,
- Interior,=20
- Proper
+ Unreached =3D0,=20
+ IndirectLeak =3D1,
+ Interior =3D2,=20
+ Proper =3D3
}
Reachedness;
=20
@@ -536,7 +536,17 @@
lc_do_leakcheck(i);
=20
tl_assert(lc_markstack_top =3D=3D -1);
- tl_assert(lc_markstack[i].state =3D=3D IndirectLeak);
+ tl_assert(lc_markstack[i].state =3D=3D IndirectLeak
+ /* jrs 20051218: Ashley Pittman supplied a
+ custom-allocator test program which causes the =3D=3D
+ IndirectLeak condition to fail - it causes .state
+ to be Unreached. Since I have no idea how this
+ clique stuff works and no time to figure it out,
+ just allow that condition too. This could well be
+ a completely bogus fix. It doesn't seem unsafe
+ given that in any case the .state field is
+ immediately overwritten by the next statement. */
+ || lc_markstack[i].state =3D=3D Unreached);
=20
lc_markstack[i].state =3D Unreached; /* Return to unreached state,
to indicate its a clique
@@ -702,7 +712,7 @@
/* Sanity check -- make sure they don't overlap */
for (i =3D 0; i < lc_n_shadows-1; i++) {
tl_assert( lc_shadows[i]->data + lc_shadows[i]->size
- < lc_shadows[i+1]->data );
+ <=3D lc_shadows[i+1]->data );
}
=20
if (lc_n_shadows =3D=3D 0) {
|
|
From: <sv...@va...> - 2006-01-02 20:41:32
|
Author: dirk
Date: 2006-01-02 20:41:28 +0000 (Mon, 02 Jan 2006)
New Revision: 5479
Log:
backport r5470 from trunk:
r5470 | sewardj | 2006-01-02 00:00:49 +0100 (Mon, 02 Jan 2006) | 5 lines
Read dwarf2 line number information even if a .debug_str section was
not found. This is believed to fix the regression in 3.1.X wherein
debug info was sometimes not read from icc-8.1 generated executables.
Modified:
branches/VALGRIND_3_1_BRANCH/coregrind/m_debuginfo/dwarf.c
branches/VALGRIND_3_1_BRANCH/coregrind/m_debuginfo/symtab.c
Modified: branches/VALGRIND_3_1_BRANCH/coregrind/m_debuginfo/dwarf.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_1_BRANCH/coregrind/m_debuginfo/dwarf.c 2006-01-02=
19:34:53 UTC (rev 5478)
+++ branches/VALGRIND_3_1_BRANCH/coregrind/m_debuginfo/dwarf.c 2006-01-02=
20:41:28 UTC (rev 5479)
@@ -847,9 +847,14 @@
/* Those cases extract the data properly */
case 0x05: /* FORM_data2 */ cval =3D *((UShort*)p); p +=3D=
2; break;
case 0x06: /* FORM_data4 */ cval =3D *((UInt*)p);p +=3D4=
; break;
- case 0x0e: /* FORM_strp */ sval =3D debugstr + *((UInt*=
)p);=20
- p +=3D 4; break;
- /* pointer in .debug_str */
+ case 0x0e: /* FORM_strp */ /* pointer in .debug_str */
+ /* 2006-01-01: only generate a value if
+ debugstr is non-NULL (which means that a
+ debug_str section was found) */
+ if (debugstr)
+ sval =3D debugstr + *((UI=
nt*)p);=20
+ p +=3D 4;=20
+ break;
case 0x08: /* FORM_string */ sval =3D (Char*)p;=20
p +=3D VG_(strlen)((Char*)p)=
+ 1; break;
case 0x0b: /* FORM_data1 */ cval =3D *p; p++; break;
Modified: branches/VALGRIND_3_1_BRANCH/coregrind/m_debuginfo/symtab.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_1_BRANCH/coregrind/m_debuginfo/symtab.c 2006-01-0=
2 19:34:53 UTC (rev 5478)
+++ branches/VALGRIND_3_1_BRANCH/coregrind/m_debuginfo/symtab.c 2006-01-0=
2 20:41:28 UTC (rev 5479)
@@ -1727,7 +1727,12 @@
stabstr, stabstr_sz );
}
# endif
- if (debug_info && debug_abbv && debug_line && debug_str) {
+ /* jrs 2006-01-01: icc-8.1 has been observed to generate
+ binaries without debug_str sections. Don't preclude
+ debuginfo reading for that reason, but, in
+ read_unitinfo_dwarf2, do check that debugstr is non-NULL
+ before using it. */
+ if (debug_info && debug_abbv && debug_line /* && debug_str */) {
ML_(read_debuginfo_dwarf2) ( si,=20
debug_info, debug_info_sz,
debug_abbv,
|
|
From: <sv...@va...> - 2006-01-02 19:35:03
|
Author: dirk
Date: 2006-01-02 19:34:53 +0000 (Mon, 02 Jan 2006)
New Revision: 5478
Log:
backport from trunk:
r5325 | njn | 2005-12-12 16:54:50 +0100 (Mon, 12 Dec 2005) | 3 lines
Make it clearer that internal errors are Valgrind's fault.
Modified:
branches/VALGRIND_3_1_BRANCH/coregrind/m_signals.c
Modified: branches/VALGRIND_3_1_BRANCH/coregrind/m_signals.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_1_BRANCH/coregrind/m_signals.c 2006-01-02 19:06:3=
7 UTC (rev 5477)
+++ branches/VALGRIND_3_1_BRANCH/coregrind/m_signals.c 2006-01-02 19:34:5=
3 UTC (rev 5478)
@@ -1699,7 +1699,7 @@
Valgrind internally.
*/
VG_(message)(Vg_DebugMsg,=20
- "INTERNAL ERROR: Valgrind received a signal %d (%s) - exiting",
+ "VALGRIND INTERNAL ERROR: Valgrind received a signal %d (%s) - exit=
ing",
sigNo, signame(sigNo));
=20
VG_(message)(Vg_DebugMsg,=20
|
|
From: <sv...@va...> - 2006-01-02 19:06:42
|
Author: sewardj
Date: 2006-01-02 19:06:37 +0000 (Mon, 02 Jan 2006)
New Revision: 5477
Log:
Enable various syscalls.
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2006-01-02 19:06:08 U=
TC (rev 5476)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2006-01-02 19:06:37 U=
TC (rev 5477)
@@ -413,7 +413,7 @@
aren't visible outside this file, but that requires even more macro
magic. */
=20
-//zz DECL_TEMPLATE(ppc64_linux, sys_socketcall);
+DECL_TEMPLATE(ppc64_linux, sys_socketcall);
DECL_TEMPLATE(ppc64_linux, sys_mmap);
//zz DECL_TEMPLATE(ppc64_linux, sys_mmap2);
//zz DECL_TEMPLATE(ppc64_linux, sys_stat64);
@@ -424,264 +424,264 @@
//zz DECL_TEMPLATE(ppc64_linux, sys_sigreturn);
//zz DECL_TEMPLATE(ppc64_linux, sys_rt_sigreturn);
//zz DECL_TEMPLATE(ppc64_linux, sys_sigaction);
-//zz=20
-//zz PRE(sys_socketcall)
-//zz {
-//zz # define ARG2_0 (((UWord*)ARG2)[0])
-//zz # define ARG2_1 (((UWord*)ARG2)[1])
-//zz # define ARG2_2 (((UWord*)ARG2)[2])
-//zz # define ARG2_3 (((UWord*)ARG2)[3])
-//zz # define ARG2_4 (((UWord*)ARG2)[4])
-//zz # define ARG2_5 (((UWord*)ARG2)[5])
-//zz=20
-//zz *flags |=3D SfMayBlock;
-//zz PRINT("sys_socketcall ( %d, %p )",ARG1,ARG2);
-//zz PRE_REG_READ2(long, "socketcall", int, call, unsigned long *, ar=
gs);
-//zz=20
-//zz switch (ARG1 /* request */) {
-//zz=20
-//zz case VKI_SYS_SOCKETPAIR:
-//zz /* int socketpair(int d, int type, int protocol, int sv[2]); *=
/
-//zz PRE_MEM_READ( "socketcall.socketpair(args)", ARG2, 4*sizeof(A=
ddr) );
-//zz ML_(generic_PRE_sys_socketpair)( tid, ARG2_0, ARG2_1, ARG2_2,=
ARG2_3 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_SOCKET:
-//zz /* int socket(int domain, int type, int protocol); */
-//zz PRE_MEM_READ( "socketcall.socket(args)", ARG2, 3*sizeof(Addr)=
);
-//zz break;
-//zz=20
-//zz case VKI_SYS_BIND:
-//zz /* int bind(int sockfd, struct sockaddr *my_addr,
-//zz int addrlen); */
-//zz PRE_MEM_READ( "socketcall.bind(args)", ARG2, 3*sizeof(Addr) )=
;
-//zz ML_(generic_PRE_sys_bind)( tid, ARG2_0, ARG2_1, ARG2_2 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_LISTEN:
-//zz /* int listen(int s, int backlog); */
-//zz PRE_MEM_READ( "socketcall.listen(args)", ARG2, 2*sizeof(Addr)=
);
-//zz break;
-//zz=20
-//zz case VKI_SYS_ACCEPT: {
-//zz /* int accept(int s, struct sockaddr *addr, int *addrlen); */
-//zz PRE_MEM_READ( "socketcall.accept(args)", ARG2, 3*sizeof(Addr)=
);
-//zz ML_(generic_PRE_sys_accept)( tid, ARG2_0, ARG2_1, ARG2_2 );
-//zz break;
-//zz }
-//zz=20
-//zz case VKI_SYS_SENDTO:
-//zz /* int sendto(int s, const void *msg, int len,
-//zz unsigned int flags,
-//zz const struct sockaddr *to, int tolen); */
-//zz PRE_MEM_READ( "socketcall.sendto(args)", ARG2, 6*sizeof(Addr) =
);
-//zz ML_(generic_PRE_sys_sendto)( tid, ARG2_0, ARG2_1, ARG2_2,
-//zz ARG2_3, ARG2_4, ARG2_5 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_SEND:
-//zz /* int send(int s, const void *msg, size_t len, int flags); */
-//zz PRE_MEM_READ( "socketcall.send(args)", ARG2, 4*sizeof(Addr) );
-//zz ML_(generic_PRE_sys_send)( tid, ARG2_0, ARG2_1, ARG2_2 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_RECVFROM:
-//zz /* int recvfrom(int s, void *buf, int len, unsigned int flags,
-//zz struct sockaddr *from, int *fromlen); */
-//zz PRE_MEM_READ( "socketcall.recvfrom(args)", ARG2, 6*sizeof(Addr=
) );
-//zz ML_(generic_PRE_sys_recvfrom)( tid, ARG2_0, ARG2_1, ARG2_2,
-//zz ARG2_3, ARG2_4, ARG2_5 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_RECV:
-//zz /* int recv(int s, void *buf, int len, unsigned int flags); */
-//zz /* man 2 recv says:
-//zz The recv call is normally used only on a connected socket
-//zz (see connect(2)) and is identical to recvfrom with a NULL
-//zz from parameter.
-//zz */
-//zz PRE_MEM_READ( "socketcall.recv(args)", ARG2, 4*sizeof(Addr) );
-//zz ML_(generic_PRE_sys_recv)( tid, ARG2_0, ARG2_1, ARG2_2 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_CONNECT:
-//zz /* int connect(int sockfd,
-//zz struct sockaddr *serv_addr, int addrlen ); */
-//zz PRE_MEM_READ( "socketcall.connect(args)", ARG2, 3*sizeof(Addr)=
);
-//zz ML_(generic_PRE_sys_connect)( tid, ARG2_0, ARG2_1, ARG2_2 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_SETSOCKOPT:
-//zz /* int setsockopt(int s, int level, int optname,
-//zz const void *optval, int optlen); */
-//zz PRE_MEM_READ( "socketcall.setsockopt(args)", ARG2, 5*sizeof(Ad=
dr) );
-//zz ML_(generic_PRE_sys_setsockopt)( tid, ARG2_0, ARG2_1, ARG2_2,
-//zz ARG2_3, ARG2_4 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_GETSOCKOPT:
-//zz /* int getsockopt(int s, int level, int optname,
-//zz void *optval, socklen_t *optlen); */
-//zz PRE_MEM_READ( "socketcall.getsockopt(args)", ARG2, 5*sizeof(Ad=
dr) );
-//zz ML_(generic_PRE_sys_getsockopt)( tid, ARG2_0, ARG2_1, ARG2_2,
-//zz ARG2_3, ARG2_4 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_GETSOCKNAME:
-//zz /* int getsockname(int s, struct sockaddr* name, int* namelen)=
*/
-//zz PRE_MEM_READ( "socketcall.getsockname(args)", ARG2, 3*sizeof(A=
ddr) );
-//zz ML_(generic_PRE_sys_getsockname)( tid, ARG2_0, ARG2_1, ARG2_2 =
);
-//zz break;
-//zz=20
-//zz case VKI_SYS_GETPEERNAME:
-//zz /* int getpeername(int s, struct sockaddr* name, int* namelen)=
*/
-//zz PRE_MEM_READ( "socketcall.getpeername(args)", ARG2, 3*sizeof(A=
ddr) );
-//zz ML_(generic_PRE_sys_getpeername)( tid, ARG2_0, ARG2_1, ARG2_2 =
);
-//zz break;
-//zz=20
-//zz case VKI_SYS_SHUTDOWN:
-//zz /* int shutdown(int s, int how); */
-//zz PRE_MEM_READ( "socketcall.shutdown(args)", ARG2, 2*sizeof(Addr=
) );
-//zz break;
-//zz=20
-//zz case VKI_SYS_SENDMSG: {
-//zz /* int sendmsg(int s, const struct msghdr *msg, int flags); */
-//zz=20
-//zz /* this causes warnings, and I don't get why. glibc bug?
-//zz * (after all it's glibc providing the arguments array)
-//zz PRE_MEM_READ( "socketcall.sendmsg(args)", ARG2, 3*sizeof(Add=
r) );
-//zz */
-//zz ML_(generic_PRE_sys_sendmsg)( tid, ARG2_0, ARG2_1 );
-//zz break;
-//zz }
-//zz=20
-//zz case VKI_SYS_RECVMSG: {
-//zz /* int recvmsg(int s, struct msghdr *msg, int flags); */
-//zz=20
-//zz /* this causes warnings, and I don't get why. glibc bug?
-//zz * (after all it's glibc providing the arguments array)
-//zz PRE_MEM_READ("socketcall.recvmsg(args)", ARG2, 3*sizeof(Addr=
) );
-//zz */
-//zz ML_(generic_PRE_sys_recvmsg)( tid, ARG2_0, ARG2_1 );
-//zz break;
-//zz }
-//zz=20
-//zz default:
-//zz VG_(message)(Vg_DebugMsg,"Warning: unhandled socketcall 0x%x",=
ARG1);
-//zz SET_STATUS_Failure( VKI_EINVAL );
-//zz break;
-//zz }
-//zz # undef ARG2_0
-//zz # undef ARG2_1
-//zz # undef ARG2_2
-//zz # undef ARG2_3
-//zz # undef ARG2_4
-//zz # undef ARG2_5
-//zz }
-//zz=20
-//zz POST(sys_socketcall)
-//zz {
-//zz # define ARG2_0 (((UWord*)ARG2)[0])
-//zz # define ARG2_1 (((UWord*)ARG2)[1])
-//zz # define ARG2_2 (((UWord*)ARG2)[2])
-//zz # define ARG2_3 (((UWord*)ARG2)[3])
-//zz # define ARG2_4 (((UWord*)ARG2)[4])
-//zz # define ARG2_5 (((UWord*)ARG2)[5])
-//zz=20
-//zz SysRes r;
-//zz vg_assert(SUCCESS);
-//zz switch (ARG1 /* request */) {
-//zz=20
-//zz case VKI_SYS_SOCKETPAIR:
-//zz r =3D ML_(generic_POST_sys_socketpair)(
-//zz tid, VG_(mk_SysRes_Success)(RES),
-//zz ARG2_0, ARG2_1, ARG2_2, ARG2_3
-//zz );
-//zz SET_STATUS_from_SysRes(r);
-//zz break;
-//zz=20
-//zz case VKI_SYS_SOCKET:
-//zz r =3D ML_(generic_POST_sys_socket)( tid, VG_(mk_SysRes_Success)=
(RES) );
-//zz SET_STATUS_from_SysRes(r);
-//zz break;
-//zz=20
-//zz case VKI_SYS_BIND:
-//zz /* int bind(int sockfd, struct sockaddr *my_addr,
-//zz int addrlen); */
-//zz break;
-//zz=20
-//zz case VKI_SYS_LISTEN:
-//zz /* int listen(int s, int backlog); */
-//zz break;
-//zz=20
-//zz case VKI_SYS_ACCEPT:
-//zz /* int accept(int s, struct sockaddr *addr, int *addrlen); */
-//zz r =3D ML_(generic_POST_sys_accept)( tid, VG_(mk_SysRes_Success)=
(RES),
-//zz ARG2_0, ARG2_1, ARG2_2 );
-//zz SET_STATUS_from_SysRes(r);
-//zz break;
-//zz=20
-//zz case VKI_SYS_SENDTO:
-//zz break;
-//zz=20
-//zz case VKI_SYS_SEND:
-//zz break;
-//zz=20
-//zz case VKI_SYS_RECVFROM:
-//zz ML_(generic_POST_sys_recvfrom)( tid, VG_(mk_SysRes_Success)(RES=
),
-//zz ARG2_0, ARG2_1, ARG2_2,
-//zz ARG2_3, ARG2_4, ARG2_5 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_RECV:
-//zz ML_(generic_POST_sys_recv)( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_CONNECT:
-//zz break;
-//zz=20
-//zz case VKI_SYS_SETSOCKOPT:
-//zz break;
-//zz=20
-//zz case VKI_SYS_GETSOCKOPT:
-//zz ML_(generic_POST_sys_getsockopt)( tid, VG_(mk_SysRes_Success)(R=
ES),
-//zz ARG2_0, ARG2_1,
-//zz ARG2_2, ARG2_3, ARG2_4 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_GETSOCKNAME:
-//zz ML_(generic_POST_sys_getsockname)( tid, VG_(mk_SysRes_Success)(=
RES),
-//zz ARG2_0, ARG2_1, ARG2_2 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_GETPEERNAME:
-//zz ML_(generic_POST_sys_getpeername)( tid, VG_(mk_SysRes_Success)(=
RES),
-//zz ARG2_0, ARG2_1, ARG2_2 );
-//zz break;
-//zz=20
-//zz case VKI_SYS_SHUTDOWN:
-//zz break;
-//zz=20
-//zz case VKI_SYS_SENDMSG:
-//zz break;
-//zz=20
-//zz case VKI_SYS_RECVMSG:
-//zz ML_(generic_POST_sys_recvmsg)( tid, ARG2_0, ARG2_1 );
-//zz break;
-//zz=20
-//zz default:
-//zz VG_(message)(Vg_DebugMsg,"FATAL: unhandled socketcall 0x%x",ARG=
1);
-//zz VG_(core_panic)("... bye!\n");
-//zz break; /*NOTREACHED*/
-//zz }
-//zz # undef ARG2_0
-//zz # undef ARG2_1
-//zz # undef ARG2_2
-//zz # undef ARG2_3
-//zz # undef ARG2_4
-//zz # undef ARG2_5
-//zz }
=20
+PRE(sys_socketcall)
+{
+# define ARG2_0 (((UWord*)ARG2)[0])
+# define ARG2_1 (((UWord*)ARG2)[1])
+# define ARG2_2 (((UWord*)ARG2)[2])
+# define ARG2_3 (((UWord*)ARG2)[3])
+# define ARG2_4 (((UWord*)ARG2)[4])
+# define ARG2_5 (((UWord*)ARG2)[5])
+
+ *flags |=3D SfMayBlock;
+ PRINT("sys_socketcall ( %d, %p )",ARG1,ARG2);
+ PRE_REG_READ2(long, "socketcall", int, call, unsigned long *, args);
+
+ switch (ARG1 /* request */) {
+
+ case VKI_SYS_SOCKETPAIR:
+ /* int socketpair(int d, int type, int protocol, int sv[2]); */
+ PRE_MEM_READ( "socketcall.socketpair(args)", ARG2, 4*sizeof(Addr) =
);
+ ML_(generic_PRE_sys_socketpair)( tid, ARG2_0, ARG2_1, ARG2_2, ARG2=
_3 );
+ break;
+
+ case VKI_SYS_SOCKET:
+ /* int socket(int domain, int type, int protocol); */
+ PRE_MEM_READ( "socketcall.socket(args)", ARG2, 3*sizeof(Addr) );
+ break;
+
+ case VKI_SYS_BIND:
+ /* int bind(int sockfd, struct sockaddr *my_addr,
+ int addrlen); */
+ PRE_MEM_READ( "socketcall.bind(args)", ARG2, 3*sizeof(Addr) );
+ ML_(generic_PRE_sys_bind)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_LISTEN:
+ /* int listen(int s, int backlog); */
+ PRE_MEM_READ( "socketcall.listen(args)", ARG2, 2*sizeof(Addr) );
+ break;
+
+ case VKI_SYS_ACCEPT: {
+ /* int accept(int s, struct sockaddr *addr, int *addrlen); */
+ PRE_MEM_READ( "socketcall.accept(args)", ARG2, 3*sizeof(Addr) );
+ ML_(generic_PRE_sys_accept)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+ }
+
+ case VKI_SYS_SENDTO:
+ /* int sendto(int s, const void *msg, int len,
+ unsigned int flags,
+ const struct sockaddr *to, int tolen); */
+ PRE_MEM_READ( "socketcall.sendto(args)", ARG2, 6*sizeof(Addr) );
+ ML_(generic_PRE_sys_sendto)( tid, ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4, ARG2_5 );
+ break;
+
+ case VKI_SYS_SEND:
+ /* int send(int s, const void *msg, size_t len, int flags); */
+ PRE_MEM_READ( "socketcall.send(args)", ARG2, 4*sizeof(Addr) );
+ ML_(generic_PRE_sys_send)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_RECVFROM:
+ /* int recvfrom(int s, void *buf, int len, unsigned int flags,
+ struct sockaddr *from, int *fromlen); */
+ PRE_MEM_READ( "socketcall.recvfrom(args)", ARG2, 6*sizeof(Addr) );
+ ML_(generic_PRE_sys_recvfrom)( tid, ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4, ARG2_5 );
+ break;
+
+ case VKI_SYS_RECV:
+ /* int recv(int s, void *buf, int len, unsigned int flags); */
+ /* man 2 recv says:
+ The recv call is normally used only on a connected socket
+ (see connect(2)) and is identical to recvfrom with a NULL
+ from parameter.
+ */
+ PRE_MEM_READ( "socketcall.recv(args)", ARG2, 4*sizeof(Addr) );
+ ML_(generic_PRE_sys_recv)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_CONNECT:
+ /* int connect(int sockfd,
+ struct sockaddr *serv_addr, int addrlen ); */
+ PRE_MEM_READ( "socketcall.connect(args)", ARG2, 3*sizeof(Addr) );
+ ML_(generic_PRE_sys_connect)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_SETSOCKOPT:
+ /* int setsockopt(int s, int level, int optname,
+ const void *optval, int optlen); */
+ PRE_MEM_READ( "socketcall.setsockopt(args)", ARG2, 5*sizeof(Addr) )=
;
+ ML_(generic_PRE_sys_setsockopt)( tid, ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4 );
+ break;
+
+ case VKI_SYS_GETSOCKOPT:
+ /* int getsockopt(int s, int level, int optname,
+ void *optval, socklen_t *optlen); */
+ PRE_MEM_READ( "socketcall.getsockopt(args)", ARG2, 5*sizeof(Addr) )=
;
+ ML_(generic_PRE_sys_getsockopt)( tid, ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4 );
+ break;
+
+ case VKI_SYS_GETSOCKNAME:
+ /* int getsockname(int s, struct sockaddr* name, int* namelen) */
+ PRE_MEM_READ( "socketcall.getsockname(args)", ARG2, 3*sizeof(Addr) =
);
+ ML_(generic_PRE_sys_getsockname)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_GETPEERNAME:
+ /* int getpeername(int s, struct sockaddr* name, int* namelen) */
+ PRE_MEM_READ( "socketcall.getpeername(args)", ARG2, 3*sizeof(Addr) =
);
+ ML_(generic_PRE_sys_getpeername)( tid, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_SHUTDOWN:
+ /* int shutdown(int s, int how); */
+ PRE_MEM_READ( "socketcall.shutdown(args)", ARG2, 2*sizeof(Addr) );
+ break;
+
+ case VKI_SYS_SENDMSG: {
+ /* int sendmsg(int s, const struct msghdr *msg, int flags); */
+
+ /* this causes warnings, and I don't get why. glibc bug?
+ * (after all it's glibc providing the arguments array)
+ PRE_MEM_READ( "socketcall.sendmsg(args)", ARG2, 3*sizeof(Addr) );
+ */
+ ML_(generic_PRE_sys_sendmsg)( tid, ARG2_0, ARG2_1 );
+ break;
+ }
+
+ case VKI_SYS_RECVMSG: {
+ /* int recvmsg(int s, struct msghdr *msg, int flags); */
+
+ /* this causes warnings, and I don't get why. glibc bug?
+ * (after all it's glibc providing the arguments array)
+ PRE_MEM_READ("socketcall.recvmsg(args)", ARG2, 3*sizeof(Addr) );
+ */
+ ML_(generic_PRE_sys_recvmsg)( tid, ARG2_0, ARG2_1 );
+ break;
+ }
+
+ default:
+ VG_(message)(Vg_DebugMsg,"Warning: unhandled socketcall 0x%x",ARG1)=
;
+ SET_STATUS_Failure( VKI_EINVAL );
+ break;
+ }
+# undef ARG2_0
+# undef ARG2_1
+# undef ARG2_2
+# undef ARG2_3
+# undef ARG2_4
+# undef ARG2_5
+}
+
+POST(sys_socketcall)
+{
+# define ARG2_0 (((UWord*)ARG2)[0])
+# define ARG2_1 (((UWord*)ARG2)[1])
+# define ARG2_2 (((UWord*)ARG2)[2])
+# define ARG2_3 (((UWord*)ARG2)[3])
+# define ARG2_4 (((UWord*)ARG2)[4])
+# define ARG2_5 (((UWord*)ARG2)[5])
+
+ SysRes r;
+ vg_assert(SUCCESS);
+ switch (ARG1 /* request */) {
+
+ case VKI_SYS_SOCKETPAIR:
+ r =3D ML_(generic_POST_sys_socketpair)(
+ tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1, ARG2_2, ARG2_3
+ );
+ SET_STATUS_from_SysRes(r);
+ break;
+
+ case VKI_SYS_SOCKET:
+ r =3D ML_(generic_POST_sys_socket)( tid, VG_(mk_SysRes_Success)(RES)=
);
+ SET_STATUS_from_SysRes(r);
+ break;
+
+ case VKI_SYS_BIND:
+ /* int bind(int sockfd, struct sockaddr *my_addr,
+ int addrlen); */
+ break;
+
+ case VKI_SYS_LISTEN:
+ /* int listen(int s, int backlog); */
+ break;
+
+ case VKI_SYS_ACCEPT:
+ /* int accept(int s, struct sockaddr *addr, int *addrlen); */
+ r =3D ML_(generic_POST_sys_accept)( tid, VG_(mk_SysRes_Success)(RES)=
,
+ ARG2_0, ARG2_1, ARG2_2 );
+ SET_STATUS_from_SysRes(r);
+ break;
+
+ case VKI_SYS_SENDTO:
+ break;
+
+ case VKI_SYS_SEND:
+ break;
+
+ case VKI_SYS_RECVFROM:
+ ML_(generic_POST_sys_recvfrom)( tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1, ARG2_2,
+ ARG2_3, ARG2_4, ARG2_5 );
+ break;
+
+ case VKI_SYS_RECV:
+ ML_(generic_POST_sys_recv)( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_CONNECT:
+ break;
+
+ case VKI_SYS_SETSOCKOPT:
+ break;
+
+ case VKI_SYS_GETSOCKOPT:
+ ML_(generic_POST_sys_getsockopt)( tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1,
+ ARG2_2, ARG2_3, ARG2_4 );
+ break;
+
+ case VKI_SYS_GETSOCKNAME:
+ ML_(generic_POST_sys_getsockname)( tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_GETPEERNAME:
+ ML_(generic_POST_sys_getpeername)( tid, VG_(mk_SysRes_Success)(RES),
+ ARG2_0, ARG2_1, ARG2_2 );
+ break;
+
+ case VKI_SYS_SHUTDOWN:
+ break;
+
+ case VKI_SYS_SENDMSG:
+ break;
+
+ case VKI_SYS_RECVMSG:
+ ML_(generic_POST_sys_recvmsg)( tid, ARG2_0, ARG2_1 );
+ break;
+
+ default:
+ VG_(message)(Vg_DebugMsg,"FATAL: unhandled socketcall 0x%x",ARG1);
+ VG_(core_panic)("... bye!\n");
+ break; /*NOTREACHED*/
+ }
+# undef ARG2_0
+# undef ARG2_1
+# undef ARG2_2
+# undef ARG2_3
+# undef ARG2_4
+# undef ARG2_5
+}
+
PRE(sys_mmap)
{
SysRes r;
@@ -1182,12 +1182,12 @@
=20
GENXY(__NR_open, sys_open), // 5
GENXY(__NR_close, sys_close), // 6
-// _____(__NR_waitpid, sys_waitpid), // 7
-// _____(__NR_creat, sys_creat), // 8
+ GENXY(__NR_waitpid, sys_waitpid), // 7
+ GENXY(__NR_creat, sys_creat), // 8
// _____(__NR_link, sys_link), // 9
=20
GENX_(__NR_unlink, sys_unlink), // 10
-// _____(__NR_execve, sys_execve), // 11
+ GENX_(__NR_execve, sys_execve), // 11
// _____(__NR_chdir, sys_chdir), // 12
// _____(__NR_time, sys_time), // 13
// _____(__NR_mknod, sys_mknod), // 14
@@ -1198,7 +1198,7 @@
// _____(__NR_oldstat, sys_oldstat), // 18
// _____(__NR_lseek, sys_lseek), // 19
=20
-// _____(__NR_getpid, sys_getpid), // 20
+ GENX_(__NR_getpid, sys_getpid), // 20
// _____(__NR_mount, sys_mount), // 21
// _____(__NR_umount, sys_umount), // 22
// _____(__NR_setuid, sys_setuid), // 23
@@ -1208,7 +1208,7 @@
// _____(__NR_ptrace, sys_ptrace), // 26
// _____(__NR_alarm, sys_alarm), // 27
// _____(__NR_oldfstat, sys_oldfstat), // 28
-// _____(__NR_pause, sys_pause), // 29
+ GENX_(__NR_pause, sys_pause), // 29
=20
LINX_(__NR_utime, sys_utime), // 30
// _____(__NR_stty, sys_stty), // 31
@@ -1218,12 +1218,12 @@
=20
// _____(__NR_ftime, sys_ftime), // 35
// _____(__NR_sync, sys_sync), // 36
-// _____(__NR_kill, sys_kill), // 37
+ GENX_(__NR_kill, sys_kill), // 37
// _____(__NR_rename, sys_rename), // 38
// _____(__NR_mkdir, sys_mkdir), // 39
=20
// _____(__NR_rmdir, sys_rmdir), // 40
-// _____(__NR_dup, sys_dup), // 41
+ GENXY(__NR_dup, sys_dup), // 41
// _____(__NR_pipe, sys_pipe), // 42
// _____(__NR_times, sys_times), // 43
// _____(__NR_prof, sys_prof), // 44
@@ -1264,10 +1264,10 @@
// _____(__NR_sigpending, sys_sigpending), // 73
// _____(__NR_sethostname, sys_sethostname), // 74
=20
-// _____(__NR_setrlimit, sys_setrlimit), // 75
+ GENX_(__NR_setrlimit, sys_setrlimit), // 75
// _____(__NR_getrlimit, sys_getrlimit), // 76
// _____(__NR_getrusage, sys_getrusage), // 77
-// _____(__NR_gettimeofday, sys_gettimeofday), // 78
+ GENXY(__NR_gettimeofday, sys_gettimeofday), // 78
// _____(__NR_settimeofday, sys_settimeofday), // 79
=20
// _____(__NR_getgroups, sys_getgroups), // 80
@@ -1296,7 +1296,7 @@
=20
// _____(__NR_fstatfs, sys_fstatfs), // 100
// _____(__NR_ioperm, sys_ioperm), // 101
-// _____(__NR_socketcall, sys_socketcall), // 102
+ PLAXY(__NR_socketcall, sys_socketcall), // 102
// _____(__NR_syslog, sys_syslog), // 103
// _____(__NR_setitimer, sys_setitimer), // 104
=20
@@ -1310,7 +1310,7 @@
// _____(__NR_vhangup, sys_vhangup), // 111
// _____(__NR_idle, sys_idle), // 112
// _____(__NR_vm86, sys_vm86), // 113
-// _____(__NR_wait4, sys_wait4), // 114
+ GENXY(__NR_wait4, sys_wait4), // 114
=20
// _____(__NR_swapoff, sys_swapoff), // 115
// _____(__NR_sysinfo, sys_sysinfo), // 116
@@ -1369,12 +1369,12 @@
// _____(__NR_sched_get_priority_min, sys_sched_get_priority_min), // 1=
60
// _____(__NR_sched_rr_get_interval, sys_sched_rr_get_interval), // 1=
61
GENXY(__NR_nanosleep, sys_nanosleep), // 162
-// _____(__NR_mremap, sys_mremap), // 163
+ GENX_(__NR_mremap, sys_mremap), // 163
// _____(__NR_setresuid, sys_setresuid), // 164
=20
// _____(__NR_getresuid, sys_getresuid), // 165
// _____(__NR_query_module, sys_query_module), // 166
-// _____(__NR_poll, sys_poll), // 167
+ GENXY(__NR_poll, sys_poll), // 167
// _____(__NR_nfsservctl, sys_nfsservctl), // 168
// _____(__NR_setresgid, sys_setresgid), // 169
=20
@@ -1474,7 +1474,7 @@
// _____(__NR_clock_nanosleep, sys_clock_nanosleep), // 248
// _____(__NR_swapcontext, sys_swapcontext), // 249
=20
-// _____(__NR_tgkill, sys_tgkill), // 250
+ LINXY(__NR_tgkill, sys_tgkill), // 250
// _____(__NR_utimes, sys_utimes), // 251
// _____(__NR_statfs64, sys_statfs64), // 252
// _____(__NR_fstatfs64, sys_fstatfs64), // 253
|
|
From: <sv...@va...> - 2006-01-02 19:06:17
|
Author: sewardj Date: 2006-01-02 19:06:08 +0000 (Mon, 02 Jan 2006) New Revision: 5476 Log: Oops, fix interrupted-syscall snafu. Modified: trunk/coregrind/m_syswrap/syscall-ppc64-linux.S Modified: trunk/coregrind/m_syswrap/syscall-ppc64-linux.S =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/m_syswrap/syscall-ppc64-linux.S 2006-01-02 16:32:10 U= TC (rev 5475) +++ trunk/coregrind/m_syswrap/syscall-ppc64-linux.S 2006-01-02 19:06:08 U= TC (rev 5476) @@ -153,11 +153,11 @@ .globl ML_(blksys_complete) .globl ML_(blksys_committed) .globl ML_(blksys_finished) -ML_(blksys_setup): .long 1b -ML_(blksys_restart): .long 2b -ML_(blksys_complete): .long 3b -ML_(blksys_committed): .long 4b -ML_(blksys_finished): .long 5b +ML_(blksys_setup): .quad 1b +ML_(blksys_restart): .quad 2b +ML_(blksys_complete): .quad 3b +ML_(blksys_committed): .quad 4b +ML_(blksys_finished): .quad 5b =20 =20 /* Let the linker know we don't need an executable stack */ |
|
From: <sv...@va...> - 2006-01-02 16:32:17
|
Author: sewardj
Date: 2006-01-02 16:32:10 +0000 (Mon, 02 Jan 2006)
New Revision: 5475
Log:
Recrystallise the warp core on ppc64-linux.
Modified:
trunk/coregrind/m_syscall.c
Modified: trunk/coregrind/m_syscall.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syscall.c 2006-01-02 16:25:31 UTC (rev 5474)
+++ trunk/coregrind/m_syscall.c 2006-01-02 16:32:10 UTC (rev 5475)
@@ -78,9 +78,10 @@
return res;
}
=20
-SysRes VG_(mk_SysRes_ppc64_linux) ( ULong val, ULong errflag ) {
+/* As per ppc32 version, cr0.so must be in l.s.b. of 2nd arg */
+SysRes VG_(mk_SysRes_ppc64_linux) ( ULong val, ULong cr0so ) {
SysRes res;
- res.isError =3D errflag !=3D 0;
+ res.isError =3D (cr0so & 1) !=3D 0;
res.val =3D val;
return res;
}
|
|
From: <sv...@va...> - 2006-01-02 16:25:35
|
Author: sewardj
Date: 2006-01-02 16:25:31 +0000 (Mon, 02 Jan 2006)
New Revision: 5474
Log:
Fun n games making sys_clone() work.
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2006-01-02 16:24:51 U=
TC (rev 5473)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2006-01-02 16:25:31 U=
TC (rev 5474)
@@ -140,6 +140,7 @@
pid_t* parent_tid in r8
void* ??? in r9
=20
+ Note: r3 contains fn ptr, not fn entry ptr -- needs toc deref
System call requires:
=20
int $__NR_clone in r0 (sc number)
@@ -183,8 +184,8 @@
" mr 31,6\n" // preserve arg
=20
// setup child stack
-" rlwinm 4,4,0,~0xf\n" // trim sp to multiple of 16 bytes
-" li 0,0\n"
+" rldicr 4,4, 0,59\n" // trim sp to multiple of 16 bytes
+" li 0,0\n" // (r4 &=3D ~0xF)
" stdu 0,-32(4)\n" // make initial stack frame
" mr 29,4\n" // preserve sp
=20
@@ -193,7 +194,7 @@
" mr 3,5\n" // syscall arg1: flags
// r4 already setup // syscall arg2: child_stack
" mr 5,8\n" // syscall arg3: parent_tid
-" mr 6,2\n" // syscall arg4: REAL THREAD tls
+" mr 6,13\n" // syscall arg4: REAL THREAD tls
" mr 7,7\n" // syscall arg5: child_tid
" mr 8,8\n" // syscall arg6: ????
" mr 9,9\n" // syscall arg7: ????
@@ -201,15 +202,15 @@
" sc\n" // clone()
=20
" mfcr 4\n" // CR now in low half r4
-" slwi 4,4,16\n"
-" slwi 4,4,16\n" // CR now in hi half r4
+" sldi 4,4,16\n"
+" sldi 4,4,16\n" // CR now in hi half r4
=20
-" slwi 3,3,16\n"
-" slwi 3,3,16\n"
-" srwi 3,3,16\n"
-" srwi 3,3,16\n" // zero out hi half r3
+" sldi 3,3,16\n"
+" sldi 3,3,16\n"
+" srdi 3,3,16\n"
+" srdi 3,3,16\n" // zero out hi half r3
=20
-" and 3,3,4\n" // r3 =3D CR : syscall-retval
+" or 3,3,4\n" // r3 =3D CR : syscall-retval
" cmpwi 3,0\n" // child if retval =3D=3D 0 (note, =
cmpw)
" bne 1f\n" // jump if !child
=20
@@ -219,6 +220,7 @@
That does leave a small window for a signal to be delivered
on the wrong stack, unfortunately. */
" mr 1,29\n"
+" ld 30, 0(30)\n" // convert fn ptr to fn entry
" mtctr 30\n" // ctr reg =3D fn
" mr 3,31\n" // r3 =3D arg
" bctrl\n" // call fn()
@@ -354,13 +356,15 @@
=20
/* Create the new thread */
word64 =3D do_syscall_clone_ppc64_linux(
- ML_(start_thread_NORETURN), stack, flags, &VG_(threads)[c=
tid],
+ ML_(start_thread_NORETURN),
+ stack, flags, &VG_(threads)[ctid],
child_tidptr, parent_tidptr, NULL
);
+
/* Low half word64 is syscall return value. Hi half is
the entire CR, from which we need to extract CR0.SO. */
/* VG_(printf)("word64 =3D 0x%llx\n", word64); */
- res =3D VG_(mk_SysRes_ppc32_linux)(=20
+ res =3D VG_(mk_SysRes_ppc64_linux)(=20
/*val*/(UInt)(word64 & 0xFFFFFFFFULL),=20
/*errflag*/ (UInt)((word64 >> (32+28)) & 1)
);
@@ -416,7 +420,7 @@
//zz DECL_TEMPLATE(ppc64_linux, sys_lstat64);
//zz DECL_TEMPLATE(ppc64_linux, sys_fstat64);
//zz DECL_TEMPLATE(ppc64_linux, sys_ipc);
-//zz DECL_TEMPLATE(ppc64_linux, sys_clone);
+DECL_TEMPLATE(ppc64_linux, sys_clone);
//zz DECL_TEMPLATE(ppc64_linux, sys_sigreturn);
//zz DECL_TEMPLATE(ppc64_linux, sys_rt_sigreturn);
//zz DECL_TEMPLATE(ppc64_linux, sys_sigaction);
@@ -912,92 +916,92 @@
//zz break; /*NOTREACHED*/
//zz }
//zz }
-//zz=20
-//zz PRE(sys_clone)
-//zz {
-//zz UInt cloneflags;
-//zz=20
-//zz PRINT("sys_clone ( %x, %p, %p, %p, %p )",ARG1,ARG2,ARG3,ARG4,ARG=
5);
-//zz PRE_REG_READ5(int, "clone",
-//zz unsigned long, flags,
-//zz void *, child_stack,
-//zz int *, parent_tidptr,
-//zz void *, child_tls,
-//zz int *, child_tidptr);
-//zz=20
-//zz if (ARG1 & VKI_CLONE_PARENT_SETTID) {
-//zz PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int));
-//zz if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int),=20
-//zz VKI_PROT_WRITE)) {
-//zz SET_STATUS_Failure( VKI_EFAULT );
-//zz return;
-//zz }
-//zz }
-//zz if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) =
{
-//zz PRE_MEM_WRITE("clone(child_tidptr)", ARG5, sizeof(Int));
-//zz if (!VG_(am_is_valid_for_client)(ARG5, sizeof(Int),=20
-//zz VKI_PROT_WRITE)) {
-//zz SET_STATUS_Failure( VKI_EFAULT );
-//zz return;
-//zz }
-//zz }
-//zz=20
-//zz cloneflags =3D ARG1;
-//zz=20
-//zz if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) {
-//zz SET_STATUS_Failure( VKI_EINVAL );
-//zz return;
-//zz }
-//zz=20
-//zz /* Only look at the flags we really care about */
-//zz switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS=20
-//zz | VKI_CLONE_FILES | VKI_CLONE_VFORK)) {
-//zz case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES:
-//zz /* thread creation */
-//zz SET_STATUS_from_SysRes(
-//zz do_clone(tid,
-//zz ARG1, /* flags */
-//zz (Addr)ARG2, /* child SP */
-//zz (Int *)ARG3, /* parent_tidptr */
-//zz (Int *)ARG5, /* child_tidptr */
-//zz (Addr)ARG4)); /* child_tls */
-//zz break;
-//zz=20
-//zz case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */
-//zz /* FALLTHROUGH - assume vfork =3D=3D fork */
-//zz cloneflags &=3D ~(VKI_CLONE_VFORK | VKI_CLONE_VM);
-//zz=20
-//zz case 0: /* plain fork */
-//zz SET_STATUS_from_SysRes(
-//zz ML_(do_fork_clone)(tid,
-//zz cloneflags, /* flags */
-//zz (Int *)ARG3, /* parent_tidptr */
-//zz (Int *)ARG5)); /* child_tidptr */
-//zz break;
-//zz=20
-//zz default:
-//zz /* should we just ENOSYS? */
-//zz VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%x", A=
RG1);
-//zz VG_(message)(Vg_UserMsg, "");
-//zz VG_(message)(Vg_UserMsg, "The only supported clone() uses are=
:");
-//zz VG_(message)(Vg_UserMsg, " - via a threads library (LinuxThre=
ads or NPTL)");
-//zz VG_(message)(Vg_UserMsg, " - via the implementation of fork o=
r vfork");
-//zz VG_(unimplemented)
-//zz ("Valgrind does not support general clone().");
-//zz }
-//zz=20
-//zz if (SUCCESS) {
-//zz if (ARG1 & VKI_CLONE_PARENT_SETTID)
-//zz POST_MEM_WRITE(ARG3, sizeof(Int));
-//zz if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID=
))
-//zz POST_MEM_WRITE(ARG5, sizeof(Int));
-//zz=20
-//zz /* Thread creation was successful; let the child have the cha=
nce
-//zz to run */
-//zz *flags |=3D SfYieldAfter;
-//zz }
-//zz }
-//zz=20
+
+PRE(sys_clone)
+{
+ UInt cloneflags;
+
+ PRINT("sys_clone ( %x, %p, %p, %p, %p )",ARG1,ARG2,ARG3,ARG4,ARG5);
+ PRE_REG_READ5(int, "clone",
+ unsigned long, flags,
+ void *, child_stack,
+ int *, parent_tidptr,
+ void *, child_tls,
+ int *, child_tidptr);
+
+ if (ARG1 & VKI_CLONE_PARENT_SETTID) {
+ PRE_MEM_WRITE("clone(parent_tidptr)", ARG3, sizeof(Int));
+ if (!VG_(am_is_valid_for_client)(ARG3, sizeof(Int),=20
+ VKI_PROT_WRITE)) {
+ SET_STATUS_Failure( VKI_EFAULT );
+ return;
+ }
+ }
+ if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID)) {
+ PRE_MEM_WRITE("clone(child_tidptr)", ARG5, sizeof(Int));
+ if (!VG_(am_is_valid_for_client)(ARG5, sizeof(Int),=20
+ VKI_PROT_WRITE)) {
+ SET_STATUS_Failure( VKI_EFAULT );
+ return;
+ }
+ }
+
+ cloneflags =3D ARG1;
+
+ if (!ML_(client_signal_OK)(ARG1 & VKI_CSIGNAL)) {
+ SET_STATUS_Failure( VKI_EINVAL );
+ return;
+ }
+
+ /* Only look at the flags we really care about */
+ switch (cloneflags & (VKI_CLONE_VM | VKI_CLONE_FS=20
+ | VKI_CLONE_FILES | VKI_CLONE_VFORK)) {
+ case VKI_CLONE_VM | VKI_CLONE_FS | VKI_CLONE_FILES:
+ /* thread creation */
+ SET_STATUS_from_SysRes(
+ do_clone(tid,
+ ARG1, /* flags */
+ (Addr)ARG2, /* child SP */
+ (Int *)ARG3, /* parent_tidptr */
+ (Int *)ARG5, /* child_tidptr */
+ (Addr)ARG4)); /* child_tls */
+ break;
+
+ case VKI_CLONE_VFORK | VKI_CLONE_VM: /* vfork */
+ /* FALLTHROUGH - assume vfork =3D=3D fork */
+ cloneflags &=3D ~(VKI_CLONE_VFORK | VKI_CLONE_VM);
+
+ case 0: /* plain fork */
+ SET_STATUS_from_SysRes(
+ ML_(do_fork_clone)(tid,
+ cloneflags, /* flags */
+ (Int *)ARG3, /* parent_tidptr */
+ (Int *)ARG5)); /* child_tidptr */
+ break;
+
+ default:
+ /* should we just ENOSYS? */
+ VG_(message)(Vg_UserMsg, "Unsupported clone() flags: 0x%x", ARG1);
+ VG_(message)(Vg_UserMsg, "");
+ VG_(message)(Vg_UserMsg, "The only supported clone() uses are:");
+ VG_(message)(Vg_UserMsg, " - via a threads library (LinuxThreads o=
r NPTL)");
+ VG_(message)(Vg_UserMsg, " - via the implementation of fork or vfo=
rk");
+ VG_(unimplemented)
+ ("Valgrind does not support general clone().");
+ }
+
+ if (SUCCESS) {
+ if (ARG1 & VKI_CLONE_PARENT_SETTID)
+ POST_MEM_WRITE(ARG3, sizeof(Int));
+ if (ARG1 & (VKI_CLONE_CHILD_SETTID | VKI_CLONE_CHILD_CLEARTID))
+ POST_MEM_WRITE(ARG5, sizeof(Int));
+
+ /* Thread creation was successful; let the child have the chance
+ to run */
+ *flags |=3D SfYieldAfter;
+ }
+}
+
//zz PRE(sys_sigreturn)
//zz {
//zz ThreadState* tst;
@@ -1314,7 +1318,7 @@
// _____(__NR_fsync, sys_fsync), // 118
// _____(__NR_sigreturn, sys_sigreturn), // 119
=20
-// _____(__NR_clone, sys_clone), // 120
+ PLAX_(__NR_clone, sys_clone), // 120
// _____(__NR_setdomainname, sys_setdomainname), // 121
GENXY(__NR_uname, sys_newuname), // 122
// _____(__NR_modify_ldt, sys_modify_ldt), // 123
@@ -1398,7 +1402,7 @@
// _____(__NR_putpmsg, sys_putpmsg), // 188
// _____(__NR_vfork, sys_vfork), // 189
=20
-// _____(__NR_ugetrlimit, sys_ugetrlimit), // 190
+ GENXY(__NR_ugetrlimit, sys_getrlimit), // 190
// _____(__NR_readahead, sys_readahead), // 191
// /* #define __NR_mmap2 192 32bit only */
// /* #define __NR_truncate64 193 32bit only */
@@ -1435,7 +1439,7 @@
// _____(__NR_lremovexattr, sys_lremovexattr), // 219
=20
// _____(__NR_fremovexattr, sys_fremovexattr), // 220
-// _____(__NR_futex, sys_futex), // 221
+ LINXY(__NR_futex, sys_futex), // 221
// _____(__NR_sched_setaffinity, sys_sched_setaffinity), // 222
// _____(__NR_sched_getaffinity, sys_sched_getaffinity), // 223
// /* 224 currently unused */
@@ -1448,7 +1452,7 @@
=20
// _____(__NR_io_submit, sys_io_submit), // 230
// _____(__NR_io_cancel, sys_io_cancel), // 231
-// _____(__NR_set_tid_address, sys_set_tid_address), // 232
+ LINX_(__NR_set_tid_address, sys_set_tid_address), // 232
// _____(__NR_fadvise64, sys_fadvise64), // 233
LINX_(__NR_exit_group, sys_exit_group), // 234
=20
|
|
From: <sv...@va...> - 2006-01-02 16:24:56
|
Author: sewardj
Date: 2006-01-02 16:24:51 +0000 (Mon, 02 Jan 2006)
New Revision: 5473
Log:
Update.
Modified:
trunk/docs/internals/3_1_BUGSTATUS.txt
Modified: trunk/docs/internals/3_1_BUGSTATUS.txt
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/internals/3_1_BUGSTATUS.txt 2006-01-02 16:24:03 UTC (rev 5=
472)
+++ trunk/docs/internals/3_1_BUGSTATUS.txt 2006-01-02 16:24:51 UTC (rev 5=
473)
@@ -8,7 +8,7 @@
=20
v5262 v5446 n-i-bz fsub 3,3,3 in ppc32 dispatcher doesn't clea=
r NaNs
v5270 v5447 n-i-bz ppc32: __NR_{set,get}priority
-pending pending 117332 missing line info with icc 8.1 (x86)
+v5470 pending 117332 missing line info with icc 8.1 (x86)
pending pending 117362 partially defined equality
pending pending 117366 amd64: 0xDD 0x7C fnstsw
pending pending 117367 amd64: 0xD9 0xF4 fxtract
@@ -34,4 +34,5 @@
(TODO: VERIFY 31BRANCH)
v5427 v5451 n-i-bz OSet 64-bit fastcmp bug
v5445 pending n-i-bz VG_(getgroups) fix (Shinichi Noda)
+vx1519 pending n-i-bz ppc32/64: allocate from callee-saved FP/VMX=
regs
vx1521/2 pending 119297 Incorrect error message for sse code
|
|
From: <sv...@va...> - 2006-01-02 16:24:07
|
Author: sewardj
Date: 2006-01-02 16:24:03 +0000 (Mon, 02 Jan 2006)
New Revision: 5472
Log:
Don't confuse ppc32 and ppc64.
Modified:
trunk/tests/cputest.c
Modified: trunk/tests/cputest.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/tests/cputest.c 2006-01-02 16:23:29 UTC (rev 5471)
+++ trunk/tests/cputest.c 2006-01-02 16:24:03 UTC (rev 5472)
@@ -17,11 +17,12 @@
char* all_archs[] =3D {
"amd64",
"ppc32",
+ "ppc64",
"x86",
NULL
};
=20
-#ifdef __powerpc__
+#if defined(__powerpc__) && !defined(__powerpc64__)
static Bool go(char* cpu)
{
if ( strcmp( cpu, "ppc32" ) =3D=3D 0 )
@@ -29,8 +30,18 @@
else=20
return False;
}
-#endif // __powerpc__
+#endif // __powerpc__ (32)
=20
+#if defined(__powerpc__) && defined(__powerpc64__)
+static Bool go(char* cpu)
+{
+ if ( strcmp( cpu, "ppc64" ) =3D=3D 0 )
+ return True;
+ else=20
+ return False;
+}
+#endif // __powerpc__ (64)
+
#if defined(__i386__) || defined(__x86_64__)
static void cpuid ( unsigned int n,
unsigned int* a, unsigned int* b,
|
|
From: <sv...@va...> - 2006-01-02 16:23:36
|
Author: sewardj
Date: 2006-01-02 16:23:29 +0000 (Mon, 02 Jan 2006)
New Revision: 5471
Log:
More paranoia please.
Modified:
trunk/coregrind/m_scheduler/sema.c
Modified: trunk/coregrind/m_scheduler/sema.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_scheduler/sema.c 2006-01-01 23:00:49 UTC (rev 5470)
+++ trunk/coregrind/m_scheduler/sema.c 2006-01-02 16:23:29 UTC (rev 5471)
@@ -41,6 +41,7 @@
=20
void ML_(sema_init)(vg_sema_t *sema)
{
+ Int res;
VG_(pipe)(sema->pipe);
sema->pipe[0] =3D VG_(safe_fd)(sema->pipe[0]);
sema->pipe[1] =3D VG_(safe_fd)(sema->pipe[1]);
@@ -48,7 +49,8 @@
sema->owner_thread =3D -1;
=20
/* create initial token */
- VG_(write)(sema->pipe[1], "T", 1);
+ res =3D VG_(write)(sema->pipe[1], "T", 1);
+ vg_assert(res =3D=3D 1);
}
=20
void ML_(sema_deinit)(vg_sema_t *sema)
@@ -89,7 +91,6 @@
sema->owner_thread =3D 0;
=20
ret =3D VG_(write)(sema->pipe[1], "T", 1);
-
vg_assert(ret =3D=3D 1);
}
=20
|
|
From: <sv...@va...> - 2006-01-02 15:15:48
|
Author: cerion
Date: 2006-01-02 15:15:45 +0000 (Mon, 02 Jan 2006)
New Revision: 1528
Log:
ppc64 altivec:
- frontend: fix stvehx, stvewx
- backend: fix Iop_32HLto64 (mask off hi32 bits of src regs)
Modified:
trunk/priv/guest-ppc/toIR.c
trunk/priv/host-ppc/isel.c
Modified: trunk/priv/guest-ppc/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-ppc/toIR.c 2006-01-02 14:41:50 UTC (rev 1527)
+++ trunk/priv/guest-ppc/toIR.c 2006-01-02 15:15:45 UTC (rev 1528)
@@ -6475,7 +6475,7 @@
=20
IRType ty =3D mode64 ? Ity_I64 : Ity_I32;
IRTemp EA =3D newTemp(ty);
- IRTemp addr_aligned =3D newTemp(Ity_I32);
+ IRTemp addr_aligned =3D newTemp(ty);
IRTemp vS =3D newTemp(Ity_V128);
IRTemp eb =3D newTemp(Ity_I8);
IRTemp idx =3D newTemp(Ity_I8);
@@ -6504,10 +6504,9 @@
}
case 0x0A7: { // stvehx (Store Vector Half Word Indexed, AV p132)
DIP("stvehx v%d,r%u,r%u\n", vS_addr, rA_addr, rB_addr);
- assign( addr_aligned,
- mkSzNarrow32(ty, addr_align(mkexpr(EA), 2)) );
+ assign( addr_aligned, addr_align(mkexpr(EA), 2) );
assign( eb, binop(Iop_And8, mkU8(0xF),
- unop(Iop_32to8, mkexpr(addr_aligned) )) );
+ mkSzNarrow8(ty, mkexpr(addr_aligned) )) );
assign( idx, binop(Iop_Shl8,
binop(Iop_Sub8, mkU8(14), mkexpr(eb)),
mkU8(3)) );
@@ -6518,10 +6517,9 @@
}
case 0x0C7: { // stvewx (Store Vector Word Indexed, AV p133)
DIP("stvewx v%d,r%u,r%u\n", vS_addr, rA_addr, rB_addr);
- assign( addr_aligned,
- mkSzNarrow32(ty, addr_align(mkexpr(EA), 4)) );
+ assign( addr_aligned, addr_align(mkexpr(EA), 4) );
assign( eb, binop(Iop_And8, mkU8(0xF),
- unop(Iop_32to8, mkexpr(addr_aligned) )) );
+ mkSzNarrow8(ty, mkexpr(addr_aligned) )) );
assign( idx, binop(Iop_Shl8,
binop(Iop_Sub8, mkU8(12), mkexpr(eb)),
mkU8(3)) );
Modified: trunk/priv/host-ppc/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/isel.c 2006-01-02 14:41:50 UTC (rev 1527)
+++ trunk/priv/host-ppc/isel.c 2006-01-02 15:15:45 UTC (rev 1528)
@@ -1252,13 +1252,17 @@
//zz }
=20
if (e->Iex.Binop.op =3D=3D Iop_32HLto64) {
- HReg r_dst =3D newVRegI(env);
HReg r_Hi =3D iselIntExpr_R(env, e->Iex.Binop.arg1);
HReg r_Lo =3D iselIntExpr_R(env, e->Iex.Binop.arg2);
+ HReg r_dst =3D newVRegI(env);
+ HReg msk =3D newVRegI(env);
vassert(mode64);
/* r_dst =3D OR( r_Hi<<32, r_Lo ) */
addInstr(env, PPCInstr_Shft(Pshft_SHL, False/*64bit shift*/,
r_dst, r_Hi, PPCRH_Imm(False,32)));
+ addInstr(env, PPCInstr_LI(msk, 0xFFFFFFFF, mode64));
+ addInstr(env, PPCInstr_Alu( Palu_AND, r_Lo, r_Lo,
+ PPCRH_Reg(msk) ));
addInstr(env, PPCInstr_Alu( Palu_OR, r_dst, r_dst,
PPCRH_Reg(r_Lo) ));
return r_dst;
|
|
From: <sv...@va...> - 2006-01-02 14:41:55
|
Author: cerion
Date: 2006-01-02 14:41:50 +0000 (Mon, 02 Jan 2006)
New Revision: 1527
Log:
Handle ppc64's function ptr's for toIR.c's dirtyhelper calls.
Modified:
trunk/priv/guest-ppc/toIR.c
Modified: trunk/priv/guest-ppc/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-ppc/toIR.c 2006-01-02 14:09:16 UTC (rev 1526)
+++ trunk/priv/guest-ppc/toIR.c 2006-01-02 14:41:50 UTC (rev 1527)
@@ -148,7 +148,23 @@
disInstr_PPC below. */
static Bool mode64 =3D False;
=20
+// Given a pointer to a function as obtained by "& functionname" in C,
+// produce a pointer to the actual entry point for the function. For
+// most platforms it's the identity function. Unfortunately, on
+// ppc64-linux it isn't (sigh).
+static void* fnptr_to_fnentry( void* f )
+{
+#if defined(__powerpc64__)
+ /* f is a pointer to a 3-word function descriptor, of which
+ the first word is the entry address. */
+ ULong* fdescr =3D (ULong*)f;
+ return (void*)(fdescr[0]);
+#else
+ return f;
+#endif
+}
=20
+
/*------------------------------------------------------------*/
/*--- Debugging output ---*/
/*------------------------------------------------------------*/
@@ -5037,11 +5053,12 @@
case 0x173: { // mftb (Move from Time Base, PPC32 p475)
IRTemp val =3D newTemp(Ity_I64);
IRExpr** args =3D mkIRExprVec_0();
- IRDirty* d =3D unsafeIRDirty_1_N( val,=20
- 0/*regparms*/,=20
- "ppcg_dirtyhelper_MFTB",=20
- &ppcg_dirtyhelper_MFTB,=20
- args );
+ IRDirty* d =3D unsafeIRDirty_1_N(
+ val,=20
+ 0/*regparms*/,=20
+ "ppcg_dirtyhelper_MFTB",=20
+ fnptr_to_fnentry(&ppcg_dirtyhelper_MFTB),=20
+ args );
/* execute the dirty call, dumping the result in val. */
stmt( IRStmt_Dirty(d) );
=20
@@ -6347,15 +6364,17 @@
mkU32(0xF)),
mkU32(0)/*left*/ );
if (!mode64) {
- d =3D unsafeIRDirty_0_N ( 0/*regparms*/,=20
- "ppc32g_dirtyhelper_LVS",
- &ppc32g_dirtyhelper_LVS,
- args );
+ d =3D unsafeIRDirty_0_N (
+ 0/*regparms*/,=20
+ "ppc32g_dirtyhelper_LVS",
+ fnptr_to_fnentry(&ppc32g_dirtyhelper_LVS),
+ args );
} else {
- d =3D unsafeIRDirty_0_N ( 0/*regparms*/,=20
- "ppc64g_dirtyhelper_LVS",
- &ppc64g_dirtyhelper_LVS,
- args );
+ d =3D unsafeIRDirty_0_N (
+ 0/*regparms*/,=20
+ "ppc64g_dirtyhelper_LVS",
+ fnptr_to_fnentry(&ppc64g_dirtyhelper_LVS),
+ args );
}
DIP("lvsl v%d,r%u,r%u\n", vD_addr, rA_addr, rB_addr);
/* declare guest state effects */
@@ -6378,15 +6397,17 @@
mkU32(0xF)),
mkU32(1)/*right*/ );
if (!mode64) {
- d =3D unsafeIRDirty_0_N ( 0/*regparms*/,=20
- "ppc32g_dirtyhelper_LVS",
- &ppc32g_dirtyhelper_LVS,
- args );
+ d =3D unsafeIRDirty_0_N (
+ 0/*regparms*/,=20
+ "ppc32g_dirtyhelper_LVS",
+ fnptr_to_fnentry(&ppc32g_dirtyhelper_LVS),
+ args );
} else {
- d =3D unsafeIRDirty_0_N ( 0/*regparms*/,=20
- "ppc64g_dirtyhelper_LVS",
- &ppc64g_dirtyhelper_LVS,
- args );
+ d =3D unsafeIRDirty_0_N (
+ 0/*regparms*/,=20
+ "ppc64g_dirtyhelper_LVS",
+ fnptr_to_fnentry(&ppc64g_dirtyhelper_LVS),
+ args );
}
DIP("lvsr v%d,r%u,r%u\n", vD_addr, rA_addr, rB_addr);
/* declare guest state effects */
|
|
From: <sv...@va...> - 2006-01-02 14:09:24
|
Author: cerion
Date: 2006-01-02 14:09:16 +0000 (Mon, 02 Jan 2006)
New Revision: 1526
Log:
Handle ppc64's function ptr's in bb_to_IR::do_self_check.
Modified:
trunk/priv/guest-generic/bb_to_IR.c
Modified: trunk/priv/guest-generic/bb_to_IR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-generic/bb_to_IR.c 2006-01-02 13:35:51 UTC (rev 1525=
)
+++ trunk/priv/guest-generic/bb_to_IR.c 2006-01-02 14:09:16 UTC (rev 1526=
)
@@ -57,11 +57,11 @@
static UInt genericg_compute_adler32 ( HWord addr, HWord len );
=20
=20
-/* Disassemble a complete basic block, starting at guest_IP_start,=20
+/* Disassemble a complete basic block, starting at guest_IP_bbstart,=20
returning a new IRBB. The disassembler may chase across basic
block boundaries if it wishes and if chase_into_ok allows it.
The precise guest address ranges from which code has been taken
- are written into vge. guest_IP_start is taken to be the IP in
+ are written into vge. guest_IP_bbstart is taken to be the IP in
the guest's address space corresponding to the instruction at
&guest_code[0]. =20
=20
@@ -344,7 +344,11 @@
Ity_I32,=20
2/*regparms*/,=20
"genericg_compute_adler32",
+#if defined(__powerpc__) && defined(__powerpc64__)
+ (void*)((ULong*)(&genericg_compute_adler32))[0],
+#else
&genericg_compute_adler32,
+#endif
mkIRExprVec_2(=20
mkIRExpr_HWord( (HWord)guest_code ),=20
mkIRExpr_HWord( (HWord)len2check )
|
|
From: Cerion Armour-B. <ce...@op...> - 2006-01-02 13:50:36
|
On Monday 02 January 2006 14:18, Julian Seward wrote: > > I don't see why this fix works... i followed it through, and it looks > > like the only relevant change is to picking up "((ULong*)entry)[1]" in > > load_ELF() instead of later in init_thread1state()... ? > > Because there are two different variables called "entry" which are > unrelated :-). ugh! |
|
From: <sv...@va...> - 2006-01-02 13:36:16
|
Author: cerion
Date: 2006-01-02 13:35:51 +0000 (Mon, 02 Jan 2006)
New Revision: 1525
Log:
ppc64 fixes:
- branch: compare full 64bits of CTR reg to zero.
- stwcx.: store only lo32 bits of r_src to EA in 64bit mode.
Modified:
trunk/priv/guest-ppc/toIR.c
Modified: trunk/priv/guest-ppc/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-ppc/toIR.c 2006-01-02 12:28:17 UTC (rev 1524)
+++ trunk/priv/guest-ppc/toIR.c 2006-01-02 13:35:51 UTC (rev 1525)
@@ -4049,18 +4049,20 @@
{
IRType ty =3D mode64 ? Ity_I64 : Ity_I32;
IRTemp ok =3D newTemp(Ity_I32);
- IRExpr* ctr_lo32;
=20
if ((BO >> 2) & 1) { // independent of ctr
assign( ok, mkU32(0xFFFFFFFF) );
} else {
- ctr_lo32 =3D mkSzNarrow32(ty, getGST( PPC_GST_CTR ));
if ((BO >> 1) & 1) { // ctr =3D=3D 0 ?
assign( ok, unop( Iop_1Sto32,
- binop( Iop_CmpEQ32, ctr_lo32, mkU32(0))) );
+ binop( mkSzOp(ty, Iop_CmpEQ8),
+ getGST( PPC_GST_CTR ),
+ mkSzImm(ty,0))) );
} else { // ctr !=3D 0 ?
assign( ok, unop( Iop_1Sto32,
- binop( Iop_CmpNE32, ctr_lo32, mkU32(0))) );
+ binop( mkSzOp(ty, Iop_CmpNE8),
+ getGST( PPC_GST_CTR ),
+ mkSzImm(ty,0))) );
}
}
return mkexpr(ok);
@@ -4503,8 +4505,8 @@
If resaddr !=3D lwarx_resaddr, CR0[EQ] is undefined, and
whether rS is stored is dependent on that value. */
=20
- /* Success? Do the store */
- storeBE( mkexpr(EA), mkexpr(rS) );
+ /* Success? Do the (32bit) store */
+ storeBE( mkexpr(EA), mkSzNarrow32(ty, mkexpr(rS)) );
=20
// Set CR0[LT GT EQ S0] =3D 0b001 || XER[SO]
putCR321(0, mkU8(1<<1));
@@ -4532,7 +4534,7 @@
=20
sync =3D sync 0
lwsync =3D sync 1
- */
+ */
if ((b11to25 !=3D 0/*sync*/ && b11to25 !=3D 1024/*lwsync*/) || =
b0 !=3D 0) {
vex_printf("dis_memsync(ppc)(sync/lwsync,b11to25|b0)\n");
return False;
|
|
From: <sv...@va...> - 2006-01-02 12:28:24
|
Author: cerion
Date: 2006-01-02 12:28:17 +0000 (Mon, 02 Jan 2006)
New Revision: 1524
Log:
ppc64: handle 32HLto64, 64HLtoV128
Modified:
trunk/priv/host-ppc/isel.c
Modified: trunk/priv/host-ppc/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/isel.c 2006-01-02 00:35:24 UTC (rev 1523)
+++ trunk/priv/host-ppc/isel.c 2006-01-02 12:28:17 UTC (rev 1524)
@@ -1251,6 +1251,19 @@
//zz return hi16;
//zz }
=20
+ if (e->Iex.Binop.op =3D=3D Iop_32HLto64) {
+ HReg r_dst =3D newVRegI(env);
+ HReg r_Hi =3D iselIntExpr_R(env, e->Iex.Binop.arg1);
+ HReg r_Lo =3D iselIntExpr_R(env, e->Iex.Binop.arg2);
+ vassert(mode64);
+ /* r_dst =3D OR( r_Hi<<32, r_Lo ) */
+ addInstr(env, PPCInstr_Shft(Pshft_SHL, False/*64bit shift*/,
+ r_dst, r_Hi, PPCRH_Imm(False,32)));
+ addInstr(env, PPCInstr_Alu( Palu_OR, r_dst, r_dst,
+ PPCRH_Reg(r_Lo) ));
+ return r_dst;
+ }
+
//.. if (e->Iex.Binop.op =3D=3D Iop_MullS16 || e->Iex.Binop.op =3D=
=3D Iop_MullS8
//.. || e->Iex.Binop.op =3D=3D Iop_MullU16 || e->Iex.Binop.op =
=3D=3D Iop_MullU8) {
//.. HReg a16 =3D newVRegI32(env);
@@ -1645,9 +1658,9 @@
=20
case Iop_V128to64:
case Iop_V128HIto64: {
- HReg r_aligned16;
- HReg dst =3D newVRegI(env);
- HReg vec =3D iselVecExpr(env, e->Iex.Unop.arg);
+ HReg r_aligned16;
+ HReg dst =3D newVRegI(env);
+ HReg vec =3D iselVecExpr(env, e->Iex.Unop.arg);
PPCAMode *am_off0, *am_off8;
vassert(mode64);
sub_from_sp( env, 32 ); // Move SP down 32 bytes
@@ -3804,9 +3817,9 @@
//..=20
case Iop_64HLtoV128: {
if (!mode64) {
- HReg r3, r2, r1, r0, r_aligned16;
+ HReg r3, r2, r1, r0, r_aligned16;
PPCAMode *am_off0, *am_off4, *am_off8, *am_off12;
- HReg dst =3D newVRegV(env);
+ HReg dst =3D newVRegV(env);
/* do this via the stack (easy, convenient, etc) */
sub_from_sp( env, 32 ); // Move SP down
=20
@@ -3832,8 +3845,28 @@
add_to_sp( env, 32 ); // Reset SP
return dst;
} else {
- // TODO
- vassert(0);
+ HReg rHi =3D iselIntExpr_R(env, e->Iex.Binop.arg1);
+ HReg rLo =3D iselIntExpr_R(env, e->Iex.Binop.arg2);
+ HReg dst =3D newVRegV(env);
+ HReg r_aligned16;
+ PPCAMode *am_off0, *am_off8;
+ /* do this via the stack (easy, convenient, etc) */
+ sub_from_sp( env, 32 ); // Move SP down
+ =20
+ // get a quadword aligned address within our stack space
+ r_aligned16 =3D get_sp_aligned16( env );
+ am_off0 =3D PPCAMode_IR( 0, r_aligned16 );
+ am_off8 =3D PPCAMode_IR( 8, r_aligned16 );
+ =20
+ /* Store 2*I64 to stack */
+ addInstr(env, PPCInstr_Store( 8, am_off0, rHi, mode64 ));
+ addInstr(env, PPCInstr_Store( 8, am_off8, rLo, mode64 ));
+
+ /* Fetch result back from stack. */
+ addInstr(env, PPCInstr_AvLdSt(True/*ld*/, 16, dst, am_off0))=
;
+ =20
+ add_to_sp( env, 32 ); // Reset SP
+ return dst;
}
}
=20
|
|
From: <js...@ac...> - 2006-01-02 04:00:05
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-01-02 03:30:01 GMT Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 209 tests, 5 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 208 tests, 5 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Jan 2 03:43:45 2006 --- new.short Mon Jan 2 04:00:27 2006 *************** *** 10,12 **** ! == 208 tests, 5 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) --- 10,12 ---- ! == 209 tests, 5 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) |
|
From: <js...@ac...> - 2006-01-02 03:54:44
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2006-01-02 04:40:00 CET 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 == 176 tests, 15 stderr failures, 1 stdout failure ================= memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/xml1 (stderr) massif/tests/toobig-allocs (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) |
|
From: Tom H. <to...@co...> - 2006-01-02 03:42:51
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2006-01-02 03:30:05 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 211 tests, 6 stderr failures, 2 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/mempool (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/sse1_memory (stdout) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 210 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) none/tests/x86/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Jan 2 03:36:27 2006 --- new.short Mon Jan 2 03:42:46 2006 *************** *** 8,14 **** ! == 210 tests, 6 stderr failures, 1 stdout failure ================= memcheck/tests/leak-tree (stderr) ! memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) --- 8,15 ---- ! == 211 tests, 6 stderr failures, 2 stdout failures ================= memcheck/tests/leak-tree (stderr) ! memcheck/tests/mempool (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) + memcheck/tests/x86/sse1_memory (stdout) none/tests/mremap2 (stdout) |
|
From: <sv...@va...> - 2006-01-02 00:35:29
|
Author: sewardj
Date: 2006-01-02 00:35:24 +0000 (Mon, 02 Jan 2006)
New Revision: 1523
Log:
ppc64: handle V128to64, V128HIto64.
Modified:
trunk/priv/host-ppc/isel.c
Modified: trunk/priv/host-ppc/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-ppc/isel.c 2006-01-01 17:15:19 UTC (rev 1522)
+++ trunk/priv/host-ppc/isel.c 2006-01-02 00:35:24 UTC (rev 1523)
@@ -1643,6 +1643,32 @@
return dst;
}
=20
+ case Iop_V128to64:
+ case Iop_V128HIto64: {
+ HReg r_aligned16;
+ HReg dst =3D newVRegI(env);
+ HReg vec =3D iselVecExpr(env, e->Iex.Unop.arg);
+ PPCAMode *am_off0, *am_off8;
+ vassert(mode64);
+ sub_from_sp( env, 32 ); // Move SP down 32 bytes
+
+ // get a quadword aligned address within our stack space
+ r_aligned16 =3D get_sp_aligned16( env );
+ am_off0 =3D PPCAMode_IR( 0, r_aligned16 );
+ am_off8 =3D PPCAMode_IR( 8 ,r_aligned16 );
+
+ // store vec, load low word (+8) or high (+0) to dst
+ addInstr(env,
+ PPCInstr_AvLdSt( False/*store*/, 16, vec, am_off0 ));
+ addInstr(env,
+ PPCInstr_Load( 8, False, dst,=20
+ op_unop =3D=3D Iop_V128HIto64 ? am_o=
ff0 : am_off8,=20
+ mode64 ));
+
+ add_to_sp( env, 32 ); // Reset SP
+ return dst;
+ }
+
case Iop_16to8:
case Iop_32to8:
case Iop_32to16:
|