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
(3) |
2
(26) |
3
(15) |
4
(19) |
5
(16) |
6
(16) |
7
(13) |
|
8
(1) |
9
(12) |
10
|
11
(4) |
12
(17) |
13
(21) |
14
(15) |
|
15
(12) |
16
(14) |
17
(14) |
18
(12) |
19
(16) |
20
(27) |
21
(37) |
|
22
(25) |
23
(23) |
24
(14) |
25
(14) |
26
(14) |
27
(14) |
28
(11) |
|
29
(3) |
30
(13) |
|
|
|
|
|
|
From: <sv...@va...> - 2012-04-21 23:53:13
|
sewardj 2012-04-22 00:53:07 +0100 (Sun, 22 Apr 2012)
New Revision: 12531
Log:
Update.
Modified files:
trunk/docs/internals/t-chaining-notes.txt
Modified: trunk/docs/internals/t-chaining-notes.txt (+0 -9)
===================================================================
--- trunk/docs/internals/t-chaining-notes.txt 2012-04-22 00:37:16 -23:00 (rev 12530)
+++ trunk/docs/internals/t-chaining-notes.txt 2012-04-22 00:53:07 -23:00 (rev 12531)
@@ -1,9 +1,4 @@
-Finishing up
-~~~~~~~~~~~~
-redo dispatch-x86-darwin.S and dispatch-amd64-darwin.S
-
-
Verification todo
~~~~~~~~~~~~~~~~~
check that illegal insns on all targets don't cause the _toIR.c's to
@@ -54,10 +49,6 @@
Optimisations
~~~~~~~~~~~~~
-all targets: change VG_(stats__n_xindirs) to a 32 bit counter, and
-empty out every now and again. Ditto VG_(stats__n_xindir_misses).
-
-arm: chain_XDirect: generate short form jumps when possible
ppc: chain_XDirect: generate short form jumps when possible
ppc64: immediate generation is terrible .. should be able
|
|
From: <sv...@va...> - 2012-04-21 23:37:24
|
sewardj 2012-04-22 00:37:16 +0100 (Sun, 22 Apr 2012)
New Revision: 12530
Log:
Use 32-bit XIndir counter incs, instead of 64-bit, as per r12527.
Modified files:
trunk/coregrind/m_dispatch/dispatch-amd64-darwin.S
trunk/coregrind/m_dispatch/dispatch-x86-darwin.S
Modified: trunk/coregrind/m_dispatch/dispatch-x86-darwin.S (+4 -6)
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-x86-darwin.S 2012-04-22 00:28:34 -23:00 (rev 12529)
+++ trunk/coregrind/m_dispatch/dispatch-x86-darwin.S 2012-04-22 00:37:16 -23:00 (rev 12530)
@@ -198,9 +198,8 @@
/* Where are we going? */
movl OFFSET_x86_EIP(%ebp), %eax
- /* RM ME -- stats only */
- addl $1, _vgPlain_stats__n_xindirs
- adcl $0, _vgPlain_stats__n_xindirs+4
+ /* stats only */
+ addl $1, VG_(stats__n_xindirs_32)
/* try a fast lookup in the translation cache */
movl %eax, %ebx /* next guest addr */
@@ -215,9 +214,8 @@
ud2 /* persuade insn decoders not to speculate past here */
fast_lookup_failed:
- /* RM ME -- stats only */
- addl $1, _vgPlain_stats__n_xindir_misses
- adcl $0, _vgPlain_stats__n_xindir_misses+4
+ /* stats only */
+ addl $1, VG_(stats__n_xindir_misses_32)
movl $VG_TRC_INNER_FASTMISS, %eax
movl $0, %edx
Modified: trunk/coregrind/m_dispatch/dispatch-amd64-darwin.S (+6 -6)
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-amd64-darwin.S 2012-04-22 00:28:34 -23:00 (rev 12529)
+++ trunk/coregrind/m_dispatch/dispatch-amd64-darwin.S 2012-04-22 00:37:16 -23:00 (rev 12530)
@@ -205,9 +205,9 @@
/* Where are we going? */
movq OFFSET_amd64_RIP(%rbp), %rax
- /* RM ME -- stats only */
- movabsq $_vgPlain_stats__n_xindirs, %r10
- addq $1, (%r10)
+ /* stats only */
+ movabsq $VG_(stats__n_xindirs_32), %r10
+ addl $1, (%r10)
/* try a fast lookup in the translation cache */
movabsq $VG_(tt_fast), %rcx
@@ -224,9 +224,9 @@
ud2 /* persuade insn decoders not to speculate past here */
fast_lookup_failed:
- /* RM ME -- stats only */
- movabsq $_vgPlain_stats__n_xindir_misses, %r10
- addq $1, %r10
+ /* stats only */
+ movabsq $VG_(stats__n_xindir_misses_32), %r10
+ addl $1, (%r10)
movq $VG_TRC_INNER_FASTMISS, %rax
movq $0, %rdx
|
|
From: <sv...@va...> - 2012-04-21 23:28:40
|
sewardj 2012-04-22 00:28:34 +0100 (Sun, 22 Apr 2012)
New Revision: 12529
Log:
Use 32-bit XIndir counter incs, instead of 64-bit, as per r12527.
Modified files:
trunk/coregrind/m_dispatch/dispatch-ppc32-linux.S
trunk/coregrind/m_dispatch/dispatch-ppc64-linux.S
Modified: trunk/coregrind/m_dispatch/dispatch-ppc32-linux.S (+6 -12)
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-ppc32-linux.S 2012-04-22 00:12:07 -23:00 (rev 12528)
+++ trunk/coregrind/m_dispatch/dispatch-ppc32-linux.S 2012-04-22 00:28:34 -23:00 (rev 12529)
@@ -440,13 +440,10 @@
lwz 3,OFFSET_ppc32_CIA(31)
/* stats only */
- lis 5,VG_(stats__n_xindirs)@ha
- addi 5,5,VG_(stats__n_xindirs)@l
- lwz 6,4(5)
- addic. 6,6,1
- stw 6,4(5)
+ lis 5,VG_(stats__n_xindirs_32)@ha
+ addi 5,5,VG_(stats__n_xindirs_32)@l
lwz 6,0(5)
- addze 6,6
+ addi 6,6,1
stw 6,0(5)
/* r5 = &VG_(tt_fast) */
@@ -469,13 +466,10 @@
fast_lookup_failed:
/* stats only */
- lis 5,VG_(stats__n_xindir_misses)@ha
- addi 5,5,VG_(stats__n_xindir_misses)@l
- lwz 6,4(5)
- addic. 6,6,1
- stw 6,4(5)
+ lis 5,VG_(stats__n_xindir_misses_32)@ha
+ addi 5,5,VG_(stats__n_xindir_misses_32)@l
lwz 6,0(5)
- addze 6,6
+ addi 6,6,1
stw 6,0(5)
li 6,VG_TRC_INNER_FASTMISS
Modified: trunk/coregrind/m_dispatch/dispatch-ppc64-linux.S (+10 -10)
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-ppc64-linux.S 2012-04-22 00:12:07 -23:00 (rev 12528)
+++ trunk/coregrind/m_dispatch/dispatch-ppc64-linux.S 2012-04-22 00:28:34 -23:00 (rev 12529)
@@ -46,10 +46,10 @@
.section ".toc","aw"
.tocent__vgPlain_tt_fast:
.tc vgPlain_tt_fast[TC],vgPlain_tt_fast
-.tocent__vgPlain_stats__n_xindirs:
- .tc vgPlain_stats__n_xindirs[TC],vgPlain_stats__n_xindirs
-.tocent__vgPlain_stats__n_xindir_misses:
- .tc vgPlain_stats__n_xindir_misses[TC],vgPlain_stats__n_xindir_misses
+.tocent__vgPlain_stats__n_xindirs_32:
+ .tc vgPlain_stats__n_xindirs_32[TC],vgPlain_stats__n_xindirs_32
+.tocent__vgPlain_stats__n_xindir_misses_32:
+ .tc vgPlain_stats__n_xindir_misses_32[TC],vgPlain_stats__n_xindir_misses_32
.tocent__vgPlain_machine_ppc64_has_VMX:
.tc vgPlain_machine_ppc64_has_VMX[TC],vgPlain_machine_ppc64_has_VMX
@@ -456,10 +456,10 @@
ld 3,OFFSET_ppc64_CIA(31)
/* stats only */
- ld 5, .tocent__vgPlain_stats__n_xindirs@toc(2)
- ld 6,0(5)
+ ld 5, .tocent__vgPlain_stats__n_xindirs_32@toc(2)
+ lwz 6,0(5)
addi 6,6,1
- std 6,0(5)
+ stw 6,0(5)
/* r5 = &VG_(tt_fast) */
ld 5, .tocent__vgPlain_tt_fast@toc(2) /* &VG_(tt_fast) */
@@ -481,10 +481,10 @@
.fast_lookup_failed:
/* stats only */
- ld 5, .tocent__vgPlain_stats__n_xindir_misses@toc(2)
- ld 6,0(5)
+ ld 5, .tocent__vgPlain_stats__n_xindir_misses_32@toc(2)
+ lwz 6,0(5)
addi 6,6,1
- std 6,0(5)
+ stw 6,0(5)
li 6,VG_TRC_INNER_FASTMISS
li 7,0
|
|
From: <sv...@va...> - 2012-04-21 23:12:15
|
sewardj 2012-04-22 00:12:07 +0100 (Sun, 22 Apr 2012)
New Revision: 12528
Log:
Use 32-bit XIndir counter incs, instead of 64-bit, as per r12527.
Modified files:
trunk/coregrind/m_dispatch/dispatch-arm-linux.S
Modified: trunk/coregrind/m_dispatch/dispatch-arm-linux.S (+7 -13)
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-arm-linux.S 2012-04-22 00:05:57 -23:00 (rev 12527)
+++ trunk/coregrind/m_dispatch/dispatch-arm-linux.S 2012-04-22 00:12:07 -23:00 (rev 12528)
@@ -152,15 +152,12 @@
/* Where are we going? */
ldr r0, [r8, #OFFSET_arm_R15T]
- /* RM ME -- stats only */
- movw r1, #:lower16:vgPlain_stats__n_xindirs
- movt r1, #:upper16:vgPlain_stats__n_xindirs
+ /* stats only */
+ movw r1, #:lower16:vgPlain_stats__n_xindirs_32
+ movt r1, #:upper16:vgPlain_stats__n_xindirs_32
ldr r2, [r1, #0]
- adds r2, r2, #1
+ add r2, r2, #1
str r2, [r1, #0]
- ldr r2, [r1, #4]
- adc r2, r2, #0
- str r2, [r1, #4]
/* try a fast lookup in the translation cache */
// r0 = next guest, r1,r2,r3,r4 scratch
@@ -181,14 +178,11 @@
/* otherwise the fast lookup failed */
/* RM ME -- stats only */
- movw r1, #:lower16:vgPlain_stats__n_xindir_misses
- movt r1, #:upper16:vgPlain_stats__n_xindir_misses
+ movw r1, #:lower16:vgPlain_stats__n_xindir_misses_32
+ movt r1, #:upper16:vgPlain_stats__n_xindir_misses_32
ldr r2, [r1, #0]
- adds r2, r2, #1
+ add r2, r2, #1
str r2, [r1, #0]
- ldr r2, [r1, #4]
- adc r2, r2, #0
- str r2, [r1, #4]
mov r1, #VG_TRC_INNER_FASTMISS
mov r2, #0
|
|
From: <sv...@va...> - 2012-04-21 23:06:05
|
sewardj 2012-04-22 00:05:57 +0100 (Sun, 22 Apr 2012)
New Revision: 12527
Log:
Last optimisation for the day: change VG_(stats__n_xindirs) in such a
way that the fast-path through VG_(disp_cp_xindir) only has to
increment a 32 bit counter, saving memory bandwidth on 32 bit
platforms compared to a 64-bit inc. The overall numbers of XIndirs
can still be 64 bit though.
Modified files:
trunk/coregrind/m_dispatch/dispatch-amd64-linux.S
trunk/coregrind/m_dispatch/dispatch-x86-linux.S
trunk/coregrind/m_scheduler/scheduler.c
Modified: trunk/coregrind/m_dispatch/dispatch-x86-linux.S (+4 -6)
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-x86-linux.S 2012-04-21 23:33:44 +01:00 (rev 12526)
+++ trunk/coregrind/m_dispatch/dispatch-x86-linux.S 2012-04-22 00:05:57 -23:00 (rev 12527)
@@ -199,9 +199,8 @@
/* Where are we going? */
movl OFFSET_x86_EIP(%ebp), %eax
- /* RM ME -- stats only */
- addl $1, vgPlain_stats__n_xindirs
- adcl $0, vgPlain_stats__n_xindirs+4
+ /* stats only */
+ addl $1, VG_(stats__n_xindirs_32)
/* try a fast lookup in the translation cache */
movl %eax, %ebx /* next guest addr */
@@ -216,9 +215,8 @@
ud2 /* persuade insn decoders not to speculate past here */
fast_lookup_failed:
- /* RM ME -- stats only */
- addl $1, vgPlain_stats__n_xindir_misses
- adcl $0, vgPlain_stats__n_xindir_misses+4
+ /* stats only */
+ addl $1, VG_(stats__n_xindir_misses_32)
movl $VG_TRC_INNER_FASTMISS, %eax
movl $0, %edx
Modified: trunk/coregrind/m_dispatch/dispatch-amd64-linux.S (+4 -4)
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-amd64-linux.S 2012-04-21 23:33:44 +01:00 (rev 12526)
+++ trunk/coregrind/m_dispatch/dispatch-amd64-linux.S 2012-04-22 00:05:57 -23:00 (rev 12527)
@@ -206,8 +206,8 @@
/* Where are we going? */
movq OFFSET_amd64_RIP(%rbp), %rax
- /* RM ME -- stats only */
- addq $1, vgPlain_stats__n_xindirs
+ /* stats only */
+ addl $1, VG_(stats__n_xindirs_32)
/* try a fast lookup in the translation cache */
movabsq $VG_(tt_fast), %rcx
@@ -224,8 +224,8 @@
ud2 /* persuade insn decoders not to speculate past here */
fast_lookup_failed:
- /* RM ME -- stats only */
- addq $1, vgPlain_stats__n_xindir_misses
+ /* stats only */
+ addl $1, VG_(stats__n_xindir_misses_32)
movq $VG_TRC_INNER_FASTMISS, %rax
movq $0, %rdx
Modified: trunk/coregrind/m_scheduler/scheduler.c (+26 -6)
===================================================================
--- trunk/coregrind/m_scheduler/scheduler.c 2012-04-21 23:33:44 +01:00 (rev 12526)
+++ trunk/coregrind/m_scheduler/scheduler.c 2012-04-22 00:05:57 -23:00 (rev 12527)
@@ -128,9 +128,17 @@
static ULong n_scheduling_events_MINOR = 0;
static ULong n_scheduling_events_MAJOR = 0;
-ULong VG_(stats__n_xindirs) = 0;
-ULong VG_(stats__n_xindir_misses) = 0;
+/* Stats: number of XIndirs, and number that missed in the fast
+ cache. */
+static ULong stats__n_xindirs = 0;
+static ULong stats__n_xindir_misses = 0;
+/* And 32-bit temp bins for the above, so that 32-bit platforms don't
+ have to do 64 bit incs on the hot path through
+ VG_(cp_disp_xindir). */
+/*global*/ UInt VG_(stats__n_xindirs_32) = 0;
+/*global*/ UInt VG_(stats__n_xindir_misses_32) = 0;
+
/* Sanity checking counts. */
static UInt sanity_fast_count = 0;
static UInt sanity_slow_count = 0;
@@ -141,9 +149,9 @@
"scheduler: %'llu event checks.\n", bbs_done );
VG_(message)(Vg_DebugMsg,
"scheduler: %'llu indir transfers, %'llu misses (1 in %llu)\n",
- VG_(stats__n_xindirs), VG_(stats__n_xindir_misses),
- VG_(stats__n_xindirs) / (VG_(stats__n_xindir_misses)
- ? VG_(stats__n_xindir_misses) : 1));
+ stats__n_xindirs, stats__n_xindir_misses,
+ stats__n_xindirs / (stats__n_xindir_misses
+ ? stats__n_xindir_misses : 1));
VG_(message)(Vg_DebugMsg,
"scheduler: %'llu/%'llu major/minor sched events.\n",
n_scheduling_events_MAJOR, n_scheduling_events_MINOR);
@@ -816,6 +824,10 @@
do_pre_run_checks( (ThreadState*)tst );
/* end Paranoia */
+ /* Futz with the XIndir stats counters. */
+ vg_assert(VG_(stats__n_xindirs_32) == 0);
+ vg_assert(VG_(stats__n_xindir_misses_32) == 0);
+
/* Clear return area. */
two_words[0] = two_words[1] = 0;
@@ -852,7 +864,6 @@
/* We have either a no-redir or a redir translation. */
vg_assert(host_code_addr != 0); /* implausible */
-
/* there should be no undealt-with signals */
//vg_assert(VG_(threads)[tid].siginfo.si_signo == 0);
@@ -902,6 +913,15 @@
block_signals();
}
+ /* Merge the 32-bit XIndir/miss counters into the 64 bit versions,
+ and zero out the 32-bit ones in preparation for the next run of
+ generated code. */
+ stats__n_xindirs += (ULong)VG_(stats__n_xindirs_32);
+ VG_(stats__n_xindirs_32) = 0;
+ stats__n_xindir_misses += (ULong)VG_(stats__n_xindir_misses_32);
+ VG_(stats__n_xindir_misses_32) = 0;
+
+ /* Inspect the event counter. */
vg_assert((Int)tst->arch.vex.host_EvC_COUNTER >= -1);
vg_assert(tst->arch.vex.host_EvC_FAILADDR
== (HWord)VG_(fnptr_to_fnentry)( &VG_(disp_cp_evcheck_fail)) );
|
|
From: <sv...@va...> - 2012-04-21 22:33:51
|
sewardj 2012-04-21 23:33:44 +0100 (Sat, 21 Apr 2012)
New Revision: 12526
Log:
Kludge around a compiler warning, and add explanatory comment.
Modified files:
trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c (+4 -1)
===================================================================
--- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2012-04-21 16:43:25 +01:00 (rev 12525)
+++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2012-04-21 23:33:44 +01:00 (rev 12526)
@@ -963,10 +963,13 @@
return res;
}
+/* Note that the (void*) casts below are a kludge which stops
+ compilers complaining about the fact that the the replacement
+ functions aren't really of the right type. */
static vki_malloc_zone_t vg_default_zone = {
NULL, // reserved1
NULL, // reserved2
- my_malloc_size, // JRS fixme: is this right?
+ (void*)my_malloc_size, // JRS fixme: is this right?
(void*)VG_REPLACE_FUNCTION_EZU(10020,VG_Z_LIBC_SONAME,malloc_zone_malloc),
(void*)VG_REPLACE_FUNCTION_EZU(10060,VG_Z_LIBC_SONAME,malloc_zone_calloc),
(void*)VG_REPLACE_FUNCTION_EZU(10130,VG_Z_LIBC_SONAME,malloc_zone_valloc),
|
|
From: <sv...@va...> - 2012-04-21 16:06:12
|
florian 2012-04-21 17:06:04 +0100 (Sat, 21 Apr 2012)
New Revision: 2305
Log:
(post-tchain-merge cleanup): Use ASI and AGSI for increment / decrement if
available.
Modified files:
trunk/priv/host_s390_defs.c
Modified: trunk/priv/host_s390_defs.c (+27 -8)
===================================================================
--- trunk/priv/host_s390_defs.c 2012-04-21 16:53:13 +01:00 (rev 2304)
+++ trunk/priv/host_s390_defs.c 2012-04-21 17:06:04 +01:00 (rev 2305)
@@ -1318,6 +1318,18 @@
static UChar *
+s390_emit_ASI(UChar *p, UChar i2, UChar b1, UShort dl1, UChar dh1)
+{
+ vassert(s390_host_has_gie);
+
+ if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
+ s390_disasm(ENC3(MNM, INT, SDXB), "asi", (Int)(Char)i2, dh1, dl1, 0, b1);
+
+ return emit_SIY(p, 0xeb000000006aULL, i2, b1, dl1, dh1);
+}
+
+
+static UChar *
s390_emit_NR(UChar *p, UChar r1, UChar r2)
{
if (UNLIKELY(vex_traceflags & VEX_TRACE_ASM))
@@ -7560,10 +7572,13 @@
d = amode->d;
/* Decrement the dispatch counter in the guest state */
- /* fixs390: ASI if available */
- buf = s390_emit_LHI(buf, R0, -1); /* 4 bytes */
- buf = s390_emit_A(buf, R0, 0, b, d); /* 4 bytes */
- buf = s390_emit_ST(buf, R0, 0, b, d); /* 4 bytes */
+ if (s390_host_has_gie) {
+ buf = s390_emit_ASI(buf, -1, b, DISP20(d)); /* 6 bytes */
+ } else {
+ buf = s390_emit_LHI(buf, R0, -1); /* 4 bytes */
+ buf = s390_emit_A(buf, R0, 0, b, d); /* 4 bytes */
+ buf = s390_emit_ST(buf, R0, 0, b, d); /* 4 bytes */
+ }
/* Jump over the next insn if >= 0 */
buf = s390_emit_BRC(buf, S390_CC_HE, (4 + 6 + 2) / 2); /* 4 bytes */
@@ -7594,9 +7609,13 @@
template will be patched once the memory location is known.
For now we do this with address == 0. */
buf = s390_tchain_load64(buf, S390_REGNO_TCHAIN_SCRATCH, 0);
- buf = s390_emit_LGHI(buf, R0, 1);
- buf = s390_emit_AG( buf, R0, 0, S390_REGNO_TCHAIN_SCRATCH, DISP20(0));
- buf = s390_emit_STG(buf, R0, 0, S390_REGNO_TCHAIN_SCRATCH, DISP20(0));
+ if (s390_host_has_gie) {
+ buf = s390_emit_AGSI(buf, 1, S390_REGNO_TCHAIN_SCRATCH, DISP20(0));
+ } else {
+ buf = s390_emit_LGHI(buf, R0, 1);
+ buf = s390_emit_AG( buf, R0, 0, S390_REGNO_TCHAIN_SCRATCH, DISP20(0));
+ buf = s390_emit_STG(buf, R0, 0, S390_REGNO_TCHAIN_SCRATCH, DISP20(0));
+ }
return buf;
}
@@ -7762,7 +7781,7 @@
Int
evCheckSzB_S390(void)
{
- return 24;
+ return s390_host_has_gie ? 18 : 24;
}
|
|
From: <sv...@va...> - 2012-04-21 15:53:20
|
florian 2012-04-21 16:53:13 +0100 (Sat, 21 Apr 2012)
New Revision: 2304
Log:
(post-tchain-merge cleanup): Tighten up some asserts.
Modified files:
trunk/priv/host_s390_defs.c
Modified: trunk/priv/host_s390_defs.c (+13 -19)
===================================================================
--- trunk/priv/host_s390_defs.c 2012-04-21 16:41:51 +01:00 (rev 2303)
+++ trunk/priv/host_s390_defs.c 2012-04-21 16:53:13 +01:00 (rev 2304)
@@ -4574,9 +4574,8 @@
{
s390_insn *insn = LibVEX_Alloc(sizeof(s390_insn));
- vassert(counter->tag == S390_AMODE_B12 || counter->tag == S390_AMODE_BX12);
- vassert(fail_addr->tag == S390_AMODE_B12 ||
- fail_addr->tag == S390_AMODE_BX12);
+ vassert(counter->tag == S390_AMODE_B12);
+ vassert(fail_addr->tag == S390_AMODE_B12);
insn->tag = S390_INSN_EVCHECK;
insn->size = 0; /* does not matter */
@@ -7350,12 +7349,11 @@
buf = s390_emit_load_64imm(buf, R0, insn->variant.xdirect.dst);
const s390_amode *amode = insn->variant.xdirect.guest_IA;
- vassert(amode->tag == S390_AMODE_B12 || amode->tag == S390_AMODE_BX12);
+ vassert(amode->tag == S390_AMODE_B12);
UInt b = hregNumber(amode->b);
- UInt x = hregNumber(amode->x); /* 0 for B12 and B20 */
UInt d = amode->d;
- buf = s390_emit_STG(buf, R0, x, b, DISP20(d));
+ buf = s390_emit_STG(buf, R0, 0, b, DISP20(d));
/* --- FIRST PATCHABLE BYTE follows --- */
/* VG_(disp_cp_chain_me_to_{slowEP,fastEP}) (where we're calling
@@ -7432,13 +7430,12 @@
/* Update the guest IA with the address in xdirect.dst. */
const s390_amode *amode = insn->variant.xindir.guest_IA;
- vassert(amode->tag == S390_AMODE_B12 || amode->tag == S390_AMODE_BX12);
+ vassert(amode->tag == S390_AMODE_B12);
UInt b = hregNumber(amode->b);
- UInt x = hregNumber(amode->x); /* 0 for B12 and B20 */
UInt d = amode->d;
UInt regno = hregNumber(insn->variant.xindir.dst);
- buf = s390_emit_STG(buf, regno, x, b, DISP20(d));
+ buf = s390_emit_STG(buf, regno, 0, b, DISP20(d));
/* load tchain_scratch, #disp_indir */
buf = s390_tchain_load64(buf, S390_REGNO_TCHAIN_SCRATCH,
@@ -7485,13 +7482,12 @@
/* Update the guest IA with the address in xassisted.dst. */
const s390_amode *amode = insn->variant.xassisted.guest_IA;
- vassert(amode->tag == S390_AMODE_B12 || amode->tag == S390_AMODE_BX12);
+ vassert(amode->tag == S390_AMODE_B12);
UInt b = hregNumber(amode->b);
- UInt x = hregNumber(amode->x); /* 0 for B12 and B20 */
UInt d = amode->d;
UInt regno = hregNumber(insn->variant.xassisted.dst);
- buf = s390_emit_STG(buf, regno, x, b, DISP20(d));
+ buf = s390_emit_STG(buf, regno, 0, b, DISP20(d));
UInt trcval = 0;
@@ -7553,22 +7549,21 @@
s390_insn_evcheck_emit(UChar *buf, const s390_insn *insn)
{
s390_amode *amode;
- UInt b, x, d;
+ UInt b, d;
UChar *code_begin, *code_end;
code_begin = buf;
amode = insn->variant.evcheck.counter;
- vassert(amode->tag == S390_AMODE_B12 || amode->tag == S390_AMODE_BX12);
+ vassert(amode->tag == S390_AMODE_B12);
b = hregNumber(amode->b);
- x = hregNumber(amode->x); /* 0 for B12 and B20 */
d = amode->d;
/* Decrement the dispatch counter in the guest state */
/* fixs390: ASI if available */
buf = s390_emit_LHI(buf, R0, -1); /* 4 bytes */
- buf = s390_emit_A(buf, R0, x, b, d); /* 4 bytes */
- buf = s390_emit_ST(buf, R0, x, b, d); /* 4 bytes */
+ buf = s390_emit_A(buf, R0, 0, b, d); /* 4 bytes */
+ buf = s390_emit_ST(buf, R0, 0, b, d); /* 4 bytes */
/* Jump over the next insn if >= 0 */
buf = s390_emit_BRC(buf, S390_CC_HE, (4 + 6 + 2) / 2); /* 4 bytes */
@@ -7576,9 +7571,8 @@
/* Computed goto to fail_address */
amode = insn->variant.evcheck.fail_addr;
b = hregNumber(amode->b);
- x = hregNumber(amode->x); /* 0 for B12 and B20 */
d = amode->d;
- buf = s390_emit_LG(buf, S390_REGNO_TCHAIN_SCRATCH, x, b, DISP20(d)); /* 6 bytes */
+ buf = s390_emit_LG(buf, S390_REGNO_TCHAIN_SCRATCH, 0, b, DISP20(d)); /* 6 bytes */
buf = s390_emit_BCR(buf, S390_CC_ALWAYS, S390_REGNO_TCHAIN_SCRATCH); /* 2 bytes */
code_end = buf;
|
|
From: <sv...@va...> - 2012-04-21 15:43:31
|
florian 2012-04-21 16:43:25 +0100 (Sat, 21 Apr 2012)
New Revision: 12525
Log:
Set VEX_HWCAPS_S390X_STFLE if available.
This should have been part of r12335.
Modified files:
trunk/coregrind/m_machine.c
Modified: trunk/coregrind/m_machine.c (+1 -0)
===================================================================
--- trunk/coregrind/m_machine.c 2012-04-21 16:35:12 +01:00 (rev 12524)
+++ trunk/coregrind/m_machine.c 2012-04-21 16:43:25 +01:00 (rev 12525)
@@ -1130,6 +1130,7 @@
if (have_DFP) vai.hwcaps |= VEX_HWCAPS_S390X_DFP;
if (have_FGX) vai.hwcaps |= VEX_HWCAPS_S390X_FGX;
if (have_ETF2) vai.hwcaps |= VEX_HWCAPS_S390X_ETF2;
+ if (have_STFLE) vai.hwcaps |= VEX_HWCAPS_S390X_STFLE;
VG_(debugLog)(1, "machine", "hwcaps = 0x%x\n", vai.hwcaps);
|
|
From: <sv...@va...> - 2012-04-21 15:41:57
|
florian 2012-04-21 16:41:51 +0100 (Sat, 21 Apr 2012)
New Revision: 2303
Log:
Fix debug print for hwcaps adding stfle ad etf2.
Add VEX_HWCAPS_S390X_STFLE. This should have been part of r2237.
Modified files:
trunk/priv/host_s390_defs.h
trunk/priv/main_main.c
trunk/pub/libvex.h
Modified: trunk/pub/libvex.h (+2 -0)
===================================================================
--- trunk/pub/libvex.h 2012-04-21 16:34:25 +01:00 (rev 2302)
+++ trunk/pub/libvex.h 2012-04-21 16:41:51 +01:00 (rev 2303)
@@ -132,6 +132,7 @@
#define VEX_HWCAPS_S390X_DFP (1<<9) /* Decimal floating point facility */
#define VEX_HWCAPS_S390X_FGX (1<<10) /* FPR-GR transfer facility */
#define VEX_HWCAPS_S390X_ETF2 (1<<11) /* ETF2-enhancement facility */
+#define VEX_HWCAPS_S390X_STFLE (1<<12) /* STFLE facility */
/* Special value representing all available s390x hwcaps */
#define VEX_HWCAPS_S390X_ALL (VEX_HWCAPS_S390X_LDISP | \
@@ -139,6 +140,7 @@
VEX_HWCAPS_S390X_GIE | \
VEX_HWCAPS_S390X_DFP | \
VEX_HWCAPS_S390X_FGX | \
+ VEX_HWCAPS_S390X_STFLE | \
VEX_HWCAPS_S390X_ETF2)
#define VEX_HWCAPS_S390X(x) ((x) & ~VEX_S390X_MODEL_MASK)
Modified: trunk/priv/main_main.c (+6 -0)
===================================================================
--- trunk/priv/main_main.c 2012-04-21 16:34:25 +01:00 (rev 2302)
+++ trunk/priv/main_main.c 2012-04-21 16:41:51 +01:00 (rev 2303)
@@ -1168,6 +1168,8 @@
{ "gie" },
{ "dfp" },
{ "fgx" },
+ { "stfle" },
+ { "etf2" },
};
static HChar buf[sizeof facilities + sizeof prefix + 1];
static HChar *p;
@@ -1187,6 +1189,10 @@
p = p + vex_sprintf(p, "-%s", facilities[3]);
if (hwcaps & VEX_HWCAPS_S390X_FGX)
p = p + vex_sprintf(p, "-%s", facilities[4]);
+ if (hwcaps & VEX_HWCAPS_S390X_STFLE)
+ p = p + vex_sprintf(p, "-%s", facilities[5]);
+ if (hwcaps & VEX_HWCAPS_S390X_ETF2)
+ p = p + vex_sprintf(p, "-%s", facilities[6]);
/* If there are no facilities, add "zarch" */
if (hwcaps == 0)
Modified: trunk/priv/host_s390_defs.h (+2 -0)
===================================================================
--- trunk/priv/host_s390_defs.h 2012-04-21 16:34:25 +01:00 (rev 2302)
+++ trunk/priv/host_s390_defs.h 2012-04-21 16:41:51 +01:00 (rev 2303)
@@ -562,6 +562,8 @@
(s390_host_hwcaps & (VEX_HWCAPS_S390X_FGX))
#define s390_host_has_etf2 \
(s390_host_hwcaps & (VEX_HWCAPS_S390X_ETF2))
+#define s390_host_has_stfle \
+ (s390_host_hwcaps & (VEX_HWCAPS_S390X_STFLE))
#endif /* ndef __VEX_HOST_S390_DEFS_H */
|
|
From: <sv...@va...> - 2012-04-21 15:35:18
|
sewardj 2012-04-21 16:35:12 +0100 (Sat, 21 Apr 2012)
New Revision: 12524
Log:
(post-tchain-merge cleanup): fix call to handle_syscall on x86-darwin.
Modified files:
trunk/coregrind/m_scheduler/scheduler.c
Modified: trunk/coregrind/m_scheduler/scheduler.c (+1 -1)
===================================================================
--- trunk/coregrind/m_scheduler/scheduler.c 2012-04-21 16:33:26 +01:00 (rev 12523)
+++ trunk/coregrind/m_scheduler/scheduler.c 2012-04-21 16:35:12 +01:00 (rev 12524)
@@ -1454,7 +1454,7 @@
/* return address in client edx */
VG_(threads)[tid].arch.vex.guest_EIP
= VG_(threads)[tid].arch.vex.guest_EDX;
- handle_syscall(tid, trc);
+ handle_syscall(tid, trc[0]);
# else
vg_assert2(0, "VG_(scheduler), phase 3: "
"sysenter_x86 on non-x86 platform?!?!");
|
|
From: <sv...@va...> - 2012-04-21 15:34:32
|
sewardj 2012-04-21 16:34:25 +0100 (Sat, 21 Apr 2012)
New Revision: 2302
Log:
(post-tchain-merge cleanup): x86: handle a couple more syscall kinds
needed on x86-darwin.
Modified files:
trunk/priv/host_x86_defs.c
trunk/priv/host_x86_isel.c
Modified: trunk/priv/host_x86_defs.c (+15 -12)
===================================================================
--- trunk/priv/host_x86_defs.c 2012-04-21 11:47:41 +01:00 (rev 2301)
+++ trunk/priv/host_x86_defs.c 2012-04-21 16:34:25 +01:00 (rev 2302)
@@ -2510,18 +2510,21 @@
/* movl $magic_number, %ebp. */
UInt trcval = 0;
switch (i->Xin.XAssisted.jk) {
- case Ijk_ClientReq: trcval = VEX_TRC_JMP_CLIENTREQ; break;
- case Ijk_Sys_syscall: trcval = VEX_TRC_JMP_SYS_SYSCALL; break;
- case Ijk_Sys_int128: trcval = VEX_TRC_JMP_SYS_INT128; break;
- case Ijk_Yield: trcval = VEX_TRC_JMP_YIELD; break;
- case Ijk_EmWarn: trcval = VEX_TRC_JMP_EMWARN; break;
- case Ijk_MapFail: trcval = VEX_TRC_JMP_MAPFAIL; break;
- case Ijk_NoDecode: trcval = VEX_TRC_JMP_NODECODE; break;
- case Ijk_TInval: trcval = VEX_TRC_JMP_TINVAL; break;
- case Ijk_NoRedir: trcval = VEX_TRC_JMP_NOREDIR; break;
- case Ijk_SigTRAP: trcval = VEX_TRC_JMP_SIGTRAP; break;
- case Ijk_SigSEGV: trcval = VEX_TRC_JMP_SIGSEGV; break;
- case Ijk_Boring: trcval = VEX_TRC_JMP_BORING; break;
+ case Ijk_ClientReq: trcval = VEX_TRC_JMP_CLIENTREQ; break;
+ case Ijk_Sys_syscall: trcval = VEX_TRC_JMP_SYS_SYSCALL; break;
+ case Ijk_Sys_int128: trcval = VEX_TRC_JMP_SYS_INT128; break;
+ case Ijk_Sys_int129: trcval = VEX_TRC_JMP_SYS_INT129; break;
+ case Ijk_Sys_int130: trcval = VEX_TRC_JMP_SYS_INT130; break;
+ case Ijk_Sys_sysenter: trcval = VEX_TRC_JMP_SYS_SYSENTER; break;
+ case Ijk_Yield: trcval = VEX_TRC_JMP_YIELD; break;
+ case Ijk_EmWarn: trcval = VEX_TRC_JMP_EMWARN; break;
+ case Ijk_MapFail: trcval = VEX_TRC_JMP_MAPFAIL; break;
+ case Ijk_NoDecode: trcval = VEX_TRC_JMP_NODECODE; break;
+ case Ijk_TInval: trcval = VEX_TRC_JMP_TINVAL; break;
+ case Ijk_NoRedir: trcval = VEX_TRC_JMP_NOREDIR; break;
+ case Ijk_SigTRAP: trcval = VEX_TRC_JMP_SIGTRAP; break;
+ case Ijk_SigSEGV: trcval = VEX_TRC_JMP_SIGSEGV; break;
+ case Ijk_Boring: trcval = VEX_TRC_JMP_BORING; break;
/* We don't expect to see the following being assisted. */
case Ijk_Ret:
case Ijk_Call:
Modified: trunk/priv/host_x86_isel.c (+4 -2)
===================================================================
--- trunk/priv/host_x86_isel.c 2012-04-21 11:47:41 +01:00 (rev 2301)
+++ trunk/priv/host_x86_isel.c 2012-04-21 16:34:25 +01:00 (rev 2302)
@@ -4171,8 +4171,10 @@
/* Case: some other kind of transfer to any address */
switch (jk) {
case Ijk_NoDecode:
- case Ijk_Sys_int128: case Ijk_ClientReq: case Ijk_NoRedir:
- case Ijk_Yield: case Ijk_SigTRAP: case Ijk_TInval: {
+ case Ijk_Sys_int128: case Ijk_Sys_int129: case Ijk_Sys_int130:
+ case Ijk_ClientReq: case Ijk_NoRedir:
+ case Ijk_Yield: case Ijk_SigTRAP: case Ijk_TInval:
+ case Ijk_Sys_sysenter: {
HReg r = iselIntExpr_R(env, next);
X86AMode* amEIP = X86AMode_IR(offsIP, hregX86_EBP());
addInstr(env, X86Instr_XAssisted(r, amEIP, Xcc_ALWAYS, jk));
|
|
From: <sv...@va...> - 2012-04-21 15:33:34
|
sewardj 2012-04-21 16:33:26 +0100 (Sat, 21 Apr 2012)
New Revision: 12523
Log:
Fix assertion failure on x86-darwin following r12504 (pread fix)
Modified files:
trunk/coregrind/m_libcfile.c
Modified: trunk/coregrind/m_libcfile.c (+3 -2)
===================================================================
--- trunk/coregrind/m_libcfile.c 2012-04-21 14:55:28 +01:00 (rev 12522)
+++ trunk/coregrind/m_libcfile.c 2012-04-21 16:33:26 +01:00 (rev 12523)
@@ -601,12 +601,13 @@
res = VG_(do_syscall4)(__NR_pread64, fd, (UWord)buf, count, offset);
return res;
# elif defined(VGP_amd64_darwin)
+ vg_assert(sizeof(OffT) == 8);
res = VG_(do_syscall4)(__NR_pread_nocancel, fd, (UWord)buf, count, offset);
return res;
# elif defined(VGP_x86_darwin)
- vg_assert(sizeof(OffT) == 4);
+ vg_assert(sizeof(OffT) == 8);
res = VG_(do_syscall5)(__NR_pread_nocancel, fd, (UWord)buf, count,
- offset, 0);
+ offset & 0xffffffff, offset >> 32);
return res;
# else
# error "Unknown platform"
|
|
From: <sv...@va...> - 2012-04-21 13:55:36
|
sewardj 2012-04-21 14:55:28 +0100 (Sat, 21 Apr 2012)
New Revision: 12522
Log:
(post-tchain-merge cleanup): un-break the build on OSX by fixing up
the dispatcher code accordingly.
Modified files:
trunk/coregrind/m_dispatch/dispatch-amd64-darwin.S
trunk/coregrind/m_dispatch/dispatch-x86-darwin.S
Modified: trunk/coregrind/m_dispatch/dispatch-x86-darwin.S (+124 -207)
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-x86-darwin.S 2012-04-21 09:18:33 +01:00 (rev 12521)
+++ trunk/coregrind/m_dispatch/dispatch-x86-darwin.S 2012-04-21 14:55:28 +01:00 (rev 12522)
@@ -37,45 +37,35 @@
#include "libvex_guest_offsets.h" /* for OFFSET_x86_EIP */
-/* Global variables */
-/* These are defined here instead of in their respective C files to
- avoid extra PIC branch code here. */
-.data
-.align 2
-
-/* m_transtab.c */
-.globl VG_(tt_fast)
-.align 4
-VG_(tt_fast): .space VG_TT_FAST_SIZE*8, 0 /* (2*Addr) [VG_TT_FAST_SIZE] */
-.globl VG_(tt_fastN)
-VG_(tt_fastN): .space VG_TT_FAST_SIZE*4, 0 /* (UInt *) [VG_TT_FAST_SIZE] */
-
-/* scheduler.c */
-.globl VG_(dispatch_ctr)
-VG_(dispatch_ctr): .long 0
-
-
/*------------------------------------------------------------*/
/*--- ---*/
-/*--- The dispatch loop. VG_(run_innerloop) is used to ---*/
-/*--- run all translations except no-redir ones. ---*/
+/*--- The dispatch loop. VG_(disp_run_translations) is ---*/
+/*--- used to run all translations, ---*/
+/*--- including no-redir ones. ---*/
/*--- ---*/
/*------------------------------------------------------------*/
/*----------------------------------------------------*/
-/*--- Preamble (set everything up) ---*/
+/*--- Entry and preamble (set everything up) ---*/
/*----------------------------------------------------*/
/* signature:
-UWord VG_(run_innerloop) ( void* guest_state, UWord do_profiling );
+void VG_(disp_run_translations)( UWord* two_words,
+ void* guest_state,
+ Addr host_addr );
*/
.text
-.globl VG_(run_innerloop)
-VG_(run_innerloop):
- /* 4(%esp) holds guest_state */
- /* 8(%esp) holds do_profiling */
-
- /* ----- entry point to VG_(run_innerloop) ----- */
+.globl VG_(disp_run_translations)
+VG_(disp_run_translations):
+ /* 0(%esp) holds our return address. */
+ /* 4(%esp) holds two_words */
+ /* 8(%esp) holds guest_state */
+ /* 12(%esp) holds host_addr */
+
+ /* The preamble */
+
+ /* Save integer registers, since this is a pseudo-function. */
+ pushl %eax
pushl %ebx
pushl %ecx
pushl %edx
@@ -83,14 +73,11 @@
pushl %edi
pushl %ebp
- /* 28(%esp) holds guest_state */
- /* 32(%esp) holds do_profiling */
+ /* 28+4(%esp) holds two_words */
+ /* 28+8(%esp) holds guest_state */
+ /* 28+12(%esp) holds host_addr */
- /* Set up the guest state pointer */
- movl 28(%esp), %ebp
-
- /* fetch %EIP into %eax */
- movl OFFSET_x86_EIP(%ebp), %eax
+ /* Get the host CPU in the state expected by generated code. */
/* set host FPU control word to the default mode expected
by VEX-generated code. See comments in libvex.h for
@@ -110,140 +97,32 @@
L1:
/* set dir flag to known value */
cld
-
- /* fall into main loop (the right one) */
- cmpl $0, 32(%esp) /* do_profiling */
- je VG_(run_innerloop__dispatch_unassisted_unprofiled)
- jmp VG_(run_innerloop__dispatch_unassisted_profiled)
- /*NOTREACHED*/
-/*----------------------------------------------------*/
-/*--- NO-PROFILING (standard) dispatcher ---*/
-/*----------------------------------------------------*/
+ /* Set up the guest state pointer */
+ movl 28+8(%esp), %ebp
-.globl VG_(run_innerloop__dispatch_unassisted_unprofiled)
-VG_(run_innerloop__dispatch_unassisted_unprofiled):
- /* AT ENTRY: %eax is next guest addr, %ebp is the
- unmodified guest state ptr */
-
- /* save the jump address in the guest state */
- movl %eax, OFFSET_x86_EIP(%ebp)
-
- /* Are we out of timeslice? If yes, defer to scheduler. */
- subl $1, VG_(dispatch_ctr)
- jz counter_is_zero
-
- /* try a fast lookup in the translation cache */
- movl %eax, %ebx
- andl $VG_TT_FAST_MASK, %ebx
- movl 0+VG_(tt_fast)(,%ebx,8), %esi /* .guest */
- movl 4+VG_(tt_fast)(,%ebx,8), %edi /* .host */
- cmpl %eax, %esi
- jnz fast_lookup_failed
-
- /* Found a match. Jump to .host. */
- jmp *%edi
- ud2 /* persuade insn decoders not to speculate past here */
- /* generated code should run, then jump back to
- VG_(run_innerloop__dispatch_{un,}assisted_unprofiled). */
+ /* and jump into the code cache. Chained translations in
+ the code cache run, until for whatever reason, they can't
+ continue. When that happens, the translation in question
+ will jump (or call) to one of the continuation points
+ VG_(cp_...) below. */
+ jmpl *28+12(%esp)
/*NOTREACHED*/
-.globl VG_(run_innerloop__dispatch_assisted_unprofiled)
-VG_(run_innerloop__dispatch_assisted_unprofiled):
- /* AT ENTRY: %eax is next guest addr, %ebp is the
- modified guest state ptr */
- jmp gsp_changed
- ud2
- /*NOTREACHED*/
-
/*----------------------------------------------------*/
-/*--- PROFILING dispatcher (can be much slower) ---*/
+/*--- Postamble and exit. ---*/
/*----------------------------------------------------*/
-.globl VG_(run_innerloop__dispatch_unassisted_profiled)
-VG_(run_innerloop__dispatch_unassisted_profiled):
- /* AT ENTRY: %eax is next guest addr, %ebp is the
- unmodified guest state ptr */
+postamble:
+ /* At this point, %eax and %edx contain two
+ words to be returned to the caller. %eax
+ holds a TRC value, and %edx optionally may
+ hold another word (for CHAIN_ME exits, the
+ address of the place to patch.) */
- /* save the jump address in the guest state */
- movl %eax, OFFSET_x86_EIP(%ebp)
-
- /* Are we out of timeslice? If yes, defer to scheduler. */
- subl $1, VG_(dispatch_ctr)
- jz counter_is_zero
-
- /* try a fast lookup in the translation cache */
- movl %eax, %ebx
- andl $VG_TT_FAST_MASK, %ebx
- movl 0+VG_(tt_fast)(,%ebx,8), %esi /* .guest */
- movl 4+VG_(tt_fast)(,%ebx,8), %edi /* .host */
- cmpl %eax, %esi
- jnz fast_lookup_failed
- /* increment bb profile counter */
- /* note: innocuous as this sounds, it causes a huge amount more
- stress on D1 and significantly slows everything down. */
- movl VG_(tt_fastN)(,%ebx,4), %edx
- /* Use "addl $1", not "incl", to avoid partial-flags stall on P4 */
- addl $1, (%edx)
-
- /* Found a match. Jump to .host. */
- jmp *%edi
- ud2 /* persuade insn decoders not to speculate past here */
- /* generated code should run, then jump back to
- VG_(run_innerloop__dispatch_{un,}assisted_profiled). */
- /*NOTREACHED*/
-
-.globl VG_(run_innerloop__dispatch_assisted_profiled)
-VG_(run_innerloop__dispatch_assisted_profiled):
- /* AT ENTRY: %eax is next guest addr, %ebp is the
- modified guest state ptr */
- jmp gsp_changed
- ud2
- /*NOTREACHED*/
-
-/*----------------------------------------------------*/
-/*--- exit points ---*/
-/*----------------------------------------------------*/
-
-gsp_changed:
- /* Someone messed with the gsp. Have to
- defer to scheduler to resolve this. dispatch ctr
- is not yet decremented, so no need to increment. */
- /* %EIP is NOT up to date here. First, need to write
- %eax back to %EIP, but without trashing %ebp since
- that holds the value we want to return to the scheduler.
- Hence use %esi transiently for the guest state pointer. */
- movl 28(%esp), %esi
- movl %eax, OFFSET_x86_EIP(%esi)
- movl %ebp, %eax
- jmp run_innerloop_exit
- /*NOTREACHED*/
-
-counter_is_zero:
- /* %EIP is up to date here */
- /* back out decrement of the dispatch counter */
- addl $1, VG_(dispatch_ctr)
- movl $VG_TRC_INNER_COUNTERZERO, %eax
- jmp run_innerloop_exit
- /*NOTREACHED*/
-
-fast_lookup_failed:
- /* %EIP is up to date here */
- /* back out decrement of the dispatch counter */
- addl $1, VG_(dispatch_ctr)
- movl $VG_TRC_INNER_FASTMISS, %eax
- jmp run_innerloop_exit
- /*NOTREACHED*/
-
-
-
-/* All exits from the dispatcher go through here. %eax holds
- the return value.
-*/
-run_innerloop_exit:
- /* We're leaving. Check that nobody messed with
- %mxcsr or %fpucw. We can't mess with %eax here as it
- holds the tentative return value, but any other is OK. */
+ /* We're leaving. Check that nobody messed with %mxcsr
+ or %fpucw. We can't mess with %eax or %edx here as they
+ holds the tentative return value, but any others are OK. */
#if !defined(ENABLE_INNER)
/* This check fails for self-hosting, so skip in that case */
pushl $0
@@ -252,7 +131,7 @@
popl %esi /* get rid of the word without trashing %eflags */
jnz invariant_violation
#endif
- cmpl $0, VG_(machine_x86_have_mxcsr)
+# cmpl $0, VG_(machine_x86_have_mxcsr)
jz L2
pushl $0
stmxcsr (%esp)
@@ -261,69 +140,107 @@
popl %esi
jnz invariant_violation
L2: /* otherwise we're OK */
- jmp run_innerloop_exit_REALLY
-
+ jmp remove_frame
invariant_violation:
movl $VG_TRC_INVARIANT_FAILED, %eax
- jmp run_innerloop_exit_REALLY
+ movl $0, %edx
-run_innerloop_exit_REALLY:
+remove_frame:
+ /* Stash return values */
+ movl 28+4(%esp), %edi /* two_words */
+ movl %eax, 0(%edi)
+ movl %edx, 4(%edi)
+ /* Restore int regs and return. */
popl %ebp
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
+ popl %eax
ret
+
+/*----------------------------------------------------*/
+/*--- Continuation points ---*/
+/*----------------------------------------------------*/
+/* ------ Chain me to slow entry point ------ */
+.globl VG_(disp_cp_chain_me_to_slowEP)
+VG_(disp_cp_chain_me_to_slowEP):
+ /* We got called. The return address indicates
+ where the patching needs to happen. Collect
+ the return address and, exit back to C land,
+ handing the caller the pair (Chain_me_S, RA) */
+ movl $VG_TRC_CHAIN_ME_TO_SLOW_EP, %eax
+ popl %edx
+ /* 5 = movl $VG_(disp_chain_me_to_slowEP), %edx;
+ 2 = call *%edx */
+ subl $5+2, %edx
+ jmp postamble
-/*------------------------------------------------------------*/
-/*--- ---*/
-/*--- A special dispatcher, for running no-redir ---*/
-/*--- translations. Just runs the given translation once. ---*/
-/*--- ---*/
-/*------------------------------------------------------------*/
+/* ------ Chain me to fast entry point ------ */
+.globl VG_(disp_cp_chain_me_to_fastEP)
+VG_(disp_cp_chain_me_to_fastEP):
+ /* We got called. The return address indicates
+ where the patching needs to happen. Collect
+ the return address and, exit back to C land,
+ handing the caller the pair (Chain_me_F, RA) */
+ movl $VG_TRC_CHAIN_ME_TO_FAST_EP, %eax
+ popl %edx
+ /* 5 = movl $VG_(disp_chain_me_to_fastEP), %edx;
+ 2 = call *%edx */
+ subl $5+2, %edx
+ jmp postamble
-/* signature:
-void VG_(run_a_noredir_translation) ( UWord* argblock );
-*/
+/* ------ Indirect but boring jump ------ */
+.globl VG_(disp_cp_xindir)
+VG_(disp_cp_xindir):
+ /* Where are we going? */
+ movl OFFSET_x86_EIP(%ebp), %eax
-/* Run a no-redir translation. argblock points to 4 UWords, 2 to carry args
- and 2 to carry results:
- 0: input: ptr to translation
- 1: input: ptr to guest state
- 2: output: next guest PC
- 3: output: guest state pointer afterwards (== thread return code)
-*/
-.globl VG_(run_a_noredir_translation)
-VG_(run_a_noredir_translation):
- /* Save callee-saves regs */
- pushl %esi
- pushl %edi
- pushl %ebp
- pushl %ebx
+ /* RM ME -- stats only */
+ addl $1, _vgPlain_stats__n_xindirs
+ adcl $0, _vgPlain_stats__n_xindirs+4
+
+ /* try a fast lookup in the translation cache */
+ movl %eax, %ebx /* next guest addr */
+ andl $VG_TT_FAST_MASK, %ebx /* entry# */
+ movl 0+VG_(tt_fast)(,%ebx,8), %esi /* .guest */
+ movl 4+VG_(tt_fast)(,%ebx,8), %edi /* .host */
+ cmpl %eax, %esi
+ jnz fast_lookup_failed
- movl 20(%esp), %edi /* %edi = argblock */
- movl 4(%edi), %ebp /* argblock[1] */
- jmp *0(%edi) /* argblock[0] */
- /*NOTREACHED*/
- ud2
- /* If the translation has been correctly constructed, we
- should resume at the the following label. */
-.globl VG_(run_a_noredir_translation__return_point)
-VG_(run_a_noredir_translation__return_point):
- movl 20(%esp), %edi
- movl %eax, 8(%edi) /* argblock[2] */
- movl %ebp, 12(%edi) /* argblock[3] */
+ /* Found a match. Jump to .host. */
+ jmp *%edi
+ ud2 /* persuade insn decoders not to speculate past here */
- popl %ebx
- popl %ebp
- popl %edi
- popl %esi
- ret
+fast_lookup_failed:
+ /* RM ME -- stats only */
+ addl $1, _vgPlain_stats__n_xindir_misses
+ adcl $0, _vgPlain_stats__n_xindir_misses+4
+ movl $VG_TRC_INNER_FASTMISS, %eax
+ movl $0, %edx
+ jmp postamble
+
+/* ------ Assisted jump ------ */
+.globl VG_(disp_cp_xassisted)
+VG_(disp_cp_xassisted):
+ /* %ebp contains the TRC */
+ movl %ebp, %eax
+ movl $0, %edx
+ jmp postamble
+
+/* ------ Event check failed ------ */
+.globl VG_(disp_cp_evcheck_fail)
+VG_(disp_cp_evcheck_fail):
+ movl $VG_TRC_INNER_COUNTERZERO, %eax
+ movl $0, %edx
+ jmp postamble
+
+
#endif // defined(VGP_x86_darwin)
-
+
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/m_dispatch/dispatch-amd64-darwin.S (+126 -218)
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-amd64-darwin.S 2012-04-21 09:18:33 +01:00 (rev 12521)
+++ trunk/coregrind/m_dispatch/dispatch-amd64-darwin.S 2012-04-21 14:55:28 +01:00 (rev 12522)
@@ -39,29 +39,35 @@
/*------------------------------------------------------------*/
/*--- ---*/
-/*--- The dispatch loop. VG_(run_innerloop) is used to ---*/
-/*--- run all translations except no-redir ones. ---*/
+/*--- The dispatch loop. VG_(disp_run_translations) is ---*/
+/*--- used to run all translations, ---*/
+/*--- including no-redir ones. ---*/
/*--- ---*/
/*------------------------------------------------------------*/
/*----------------------------------------------------*/
-/*--- Preamble (set everything up) ---*/
+/*--- Entry and preamble (set everything up) ---*/
/*----------------------------------------------------*/
/* signature:
-UWord VG_(run_innerloop) ( void* guest_state, UWord do_profiling );
+void VG_(disp_run_translations)( UWord* two_words,
+ void* guest_state,
+ Addr host_addr );
*/
+.text
+.globl VG_(disp_run_translations)
+VG_(disp_run_translations):
+ /* %rdi holds two_words */
+ /* %rsi holds guest_state */
+ /* %rdx holds host_addr */
-.text
-.globl VG_(run_innerloop)
-VG_(run_innerloop):
- /* %rdi holds guest_state */
- /* %rsi holds do_profiling */
-
- /* ----- entry point to VG_(run_innerloop) ----- */
+ /* The preamble */
+
+ /* Save integer registers, since this is a pseudo-function. */
+ pushq %rax
pushq %rbx
pushq %rcx
- pushq %rdx
+ pushq %rdx
pushq %rsi
pushq %rbp
pushq %r8
@@ -72,21 +78,11 @@
pushq %r13
pushq %r14
pushq %r15
- pushq %rdi /* guest_state */
+ /* %rdi must be saved last */
+ pushq %rdi
- movq VG_(dispatch_ctr)@GOTPCREL(%rip), %r15
- movl (%r15), %r15d
- pushq %r15
+ /* Get the host CPU in the state expected by generated code. */
- /* 8(%rsp) holds cached copy of guest_state ptr */
- /* 0(%rsp) holds cached copy of VG_(dispatch_ctr) */
-
- /* Set up the guest state pointer */
- movq %rdi, %rbp
-
- /* fetch %RIP into %rax */
- movq OFFSET_amd64_RIP(%rbp), %rax
-
/* set host FPU control word to the default mode expected
by VEX-generated code. See comments in libvex.h for
more info. */
@@ -104,153 +100,37 @@
/* set dir flag to known value */
cld
- /* fall into main loop (the right one) */
- cmpq $0, %rsi
- je VG_(run_innerloop__dispatch_unassisted_unprofiled)
- jmp VG_(run_innerloop__dispatch_unassisted_profiled)
- /*NOTREACHED*/
+ /* Set up the guest state pointer */
+ movq %rsi, %rbp
-/*----------------------------------------------------*/
-/*--- NO-PROFILING (standard) dispatcher ---*/
-/*----------------------------------------------------*/
+ /* and jump into the code cache. Chained translations in
+ the code cache run, until for whatever reason, they can't
+ continue. When that happens, the translation in question
+ will jump (or call) to one of the continuation points
+ VG_(cp_...) below. */
+ jmpq *%rdx
+ /*NOTREACHED*/
-.align 4
-.globl VG_(run_innerloop__dispatch_unassisted_unprofiled)
-VG_(run_innerloop__dispatch_unassisted_unprofiled):
- /* AT ENTRY: %rax is next guest addr, %rbp is the
- unmodified guest state ptr */
-
- /* save the jump address in the guest state */
- movq %rax, OFFSET_amd64_RIP(%rbp)
-
- /* Are we out of timeslice? If yes, defer to scheduler. */
- subl $1, 0(%rsp)
- jz counter_is_zero
-
- /* try a fast lookup in the translation cache */
- movabsq $VG_(tt_fast), %rcx
- movq %rax, %rbx
- andq $VG_TT_FAST_MASK, %rbx /* entry# */
- shlq $4, %rbx /* entry# * sizeof(FastCacheEntry) */
- movq 0(%rcx,%rbx,1), %r10 /* .guest */
- movq 8(%rcx,%rbx,1), %r11 /* .host */
- cmpq %rax, %r10
- jnz fast_lookup_failed
-
- /* Found a match. Jump to .host. */
- jmp *%r11
- ud2 /* persuade insn decoders not to speculate past here */
- /* generated code should run, then jump back to
- VG_(run_innerloop__dispatch_{un,}assisted_unprofiled). */
- /*NOTREACHED*/
-
-.align 4
-.globl VG_(run_innerloop__dispatch_assisted_unprofiled)
-VG_(run_innerloop__dispatch_assisted_unprofiled):
- /* AT ENTRY: %rax is next guest addr, %rbp is the
- modified guest state ptr. Since the GSP has changed,
- jump directly to gsp_changed. */
- jmp gsp_changed
- ud2
- /*NOTREACHED*/
-
/*----------------------------------------------------*/
-/*--- PROFILING dispatcher (can be much slower) ---*/
+/*--- Postamble and exit. ---*/
/*----------------------------------------------------*/
-.align 4
-.globl VG_(run_innerloop__dispatch_unassisted_profiled)
-VG_(run_innerloop__dispatch_unassisted_profiled):
- /* AT ENTRY: %rax is next guest addr, %rbp is the
- unmodified guest state ptr */
-
- /* save the jump address in the guest state */
- movq %rax, OFFSET_amd64_RIP(%rbp)
-
- /* Are we out of timeslice? If yes, defer to scheduler. */
- subl $1, 0(%rsp)
- jz counter_is_zero
-
- /* try a fast lookup in the translation cache */
- movabsq $VG_(tt_fast), %rcx
- movq %rax, %rbx
- andq $VG_TT_FAST_MASK, %rbx /* entry# */
- shlq $4, %rbx /* entry# * sizeof(FastCacheEntry) */
- movq 0(%rcx,%rbx,1), %r10 /* .guest */
- movq 8(%rcx,%rbx,1), %r11 /* .host */
- cmpq %rax, %r10
- jnz fast_lookup_failed
-
- /* increment bb profile counter */
- movabsq $VG_(tt_fastN), %rdx
- shrq $1, %rbx /* entry# * sizeof(UInt*) */
- movq (%rdx,%rbx,1), %rdx
- addl $1, (%rdx)
-
- /* Found a match. Jump to .host. */
- jmp *%r11
- ud2 /* persuade insn decoders not to speculate past here */
- /* generated code should run, then jump back to
- VG_(run_innerloop__dispatch_{un,}assisted_profiled). */
- /*NOTREACHED*/
-
-.align 4
-.globl VG_(run_innerloop__dispatch_assisted_profiled)
-VG_(run_innerloop__dispatch_assisted_profiled):
- /* AT ENTRY: %rax is next guest addr, %rbp is the
- modified guest state ptr. Since the GSP has changed,
- jump directly to gsp_changed. */
- jmp gsp_changed
- ud2
- /*NOTREACHED*/
-
-/*----------------------------------------------------*/
-/*--- exit points ---*/
-/*----------------------------------------------------*/
-
-gsp_changed:
- /* Someone messed with the gsp. Have to
- defer to scheduler to resolve this. dispatch ctr
- is not yet decremented, so no need to increment. */
- /* %RIP is NOT up to date here. First, need to write
- %rax back to %RIP, but without trashing %rbp since
- that holds the value we want to return to the scheduler.
- Hence use %r15 transiently for the guest state pointer. */
- movq 8(%rsp), %r15
- movq %rax, OFFSET_amd64_RIP(%r15)
- movq %rbp, %rax
- jmp run_innerloop_exit
- /*NOTREACHED*/
-
-counter_is_zero:
- /* %RIP is up to date here */
- /* back out decrement of the dispatch counter */
- addl $1, 0(%rsp)
- movq $VG_TRC_INNER_COUNTERZERO, %rax
- jmp run_innerloop_exit
-
-fast_lookup_failed:
- /* %RIP is up to date here */
- /* back out decrement of the dispatch counter */
- addl $1, 0(%rsp)
- movq $VG_TRC_INNER_FASTMISS, %rax
- jmp run_innerloop_exit
-
-
-
-/* All exits from the dispatcher go through here. %rax holds
- the return value.
-*/
-run_innerloop_exit:
- /* We're leaving. Check that nobody messed with
- %mxcsr or %fpucw. We can't mess with %rax here as it
- holds the tentative return value, but any other is OK. */
+postamble:
+ /* At this point, %rax and %rdx contain two
+ words to be returned to the caller. %rax
+ holds a TRC value, and %rdx optionally may
+ hold another word (for CHAIN_ME exits, the
+ address of the place to patch.) */
+
+ /* We're leaving. Check that nobody messed with %mxcsr
+ or %fpucw. We can't mess with %rax or %rdx here as they
+ hold the tentative return values, but any others are OK. */
#if !defined(ENABLE_INNER)
/* This check fails for self-hosting, so skip in that case */
pushq $0
fstcw (%rsp)
cmpl $0x027F, (%rsp)
- popq %r15 /* get rid of the word without trashing %eflags */
+ popq %r15 /* get rid of the word without trashing %rflags */
jnz invariant_violation
#endif
pushq $0
@@ -260,20 +140,17 @@
popq %r15
jnz invariant_violation
/* otherwise we're OK */
- jmp run_innerloop_exit_REALLY
-
+ jmp remove_frame
invariant_violation:
movq $VG_TRC_INVARIANT_FAILED, %rax
- jmp run_innerloop_exit_REALLY
+ movq $0, %rdx
-run_innerloop_exit_REALLY:
-
- /* restore VG_(dispatch_ctr) */
- popq %r14
- movq VG_(dispatch_ctr)@GOTPCREL(%rip), %r15
- movl %r14d, (%r15)
-
+remove_frame:
+ /* Pop %rdi, stash return values */
popq %rdi
+ movq %rax, 0(%rdi)
+ movq %rdx, 8(%rdi)
+ /* Now pop everything else */
popq %r15
popq %r14
popq %r13
@@ -287,59 +164,90 @@
popq %rdx
popq %rcx
popq %rbx
+ popq %rax
ret
+
+/*----------------------------------------------------*/
+/*--- Continuation points ---*/
+/*----------------------------------------------------*/
-
-/*------------------------------------------------------------*/
-/*--- ---*/
-/*--- A special dispatcher, for running no-redir ---*/
-/*--- translations. Just runs the given translation once. ---*/
-/*--- ---*/
-/*------------------------------------------------------------*/
+/* ------ Chain me to slow entry point ------ */
+.globl VG_(disp_cp_chain_me_to_slowEP)
+VG_(disp_cp_chain_me_to_slowEP):
+ /* We got called. The return address indicates
+ where the patching needs to happen. Collect
+ the return address and, exit back to C land,
+ handing the caller the pair (Chain_me_S, RA) */
+ movq $VG_TRC_CHAIN_ME_TO_SLOW_EP, %rax
+ popq %rdx
+ /* 10 = movabsq $VG_(disp_chain_me_to_slowEP), %r11;
+ 3 = call *%r11 */
+ subq $10+3, %rdx
+ jmp postamble
-/* signature:
-void VG_(run_a_noredir_translation) ( UWord* argblock );
-*/
+/* ------ Chain me to fast entry point ------ */
+.globl VG_(disp_cp_chain_me_to_fastEP)
+VG_(disp_cp_chain_me_to_fastEP):
+ /* We got called. The return address indicates
+ where the patching needs to happen. Collect
+ the return address and, exit back to C land,
+ handing the caller the pair (Chain_me_F, RA) */
+ movq $VG_TRC_CHAIN_ME_TO_FAST_EP, %rax
+ popq %rdx
+ /* 10 = movabsq $VG_(disp_chain_me_to_fastEP), %r11;
+ 3 = call *%r11 */
+ subq $10+3, %rdx
+ jmp postamble
-/* Run a no-redir translation. argblock points to 4 UWords, 2 to carry args
- and 2 to carry results:
- 0: input: ptr to translation
- 1: input: ptr to guest state
- 2: output: next guest PC
- 3: output: guest state pointer afterwards (== thread return code)
-*/
-.align 4
-.globl VG_(run_a_noredir_translation)
-VG_(run_a_noredir_translation):
- /* Save callee-saves regs */
- pushq %rbx
- pushq %rbp
- pushq %r12
- pushq %r13
- pushq %r14
- pushq %r15
+/* ------ Indirect but boring jump ------ */
+.globl VG_(disp_cp_xindir)
+VG_(disp_cp_xindir):
+ /* Where are we going? */
+ movq OFFSET_amd64_RIP(%rbp), %rax
- pushq %rdi /* we will need it after running the translation */
- movq 8(%rdi), %rbp
- jmp *0(%rdi)
- /*NOTREACHED*/
- ud2
- /* If the translation has been correctly constructed, we
- should resume at the the following label. */
-.globl VG_(run_a_noredir_translation__return_point)
-VG_(run_a_noredir_translation__return_point):
- popq %rdi
- movq %rax, 16(%rdi)
- movq %rbp, 24(%rdi)
+ /* RM ME -- stats only */
+ movabsq $_vgPlain_stats__n_xindirs, %r10
+ addq $1, (%r10)
+
+ /* try a fast lookup in the translation cache */
+ movabsq $VG_(tt_fast), %rcx
+ movq %rax, %rbx /* next guest addr */
+ andq $VG_TT_FAST_MASK, %rbx /* entry# */
+ shlq $4, %rbx /* entry# * sizeof(FastCacheEntry) */
+ movq 0(%rcx,%rbx,1), %r10 /* .guest */
+ movq 8(%rcx,%rbx,1), %r11 /* .host */
+ cmpq %rax, %r10
+ jnz fast_lookup_failed
- popq %r15
- popq %r14
- popq %r13
- popq %r12
- popq %rbp
- popq %rbx
- ret
+ /* Found a match. Jump to .host. */
+ jmp *%r11
+ ud2 /* persuade insn decoders not to speculate past here */
+fast_lookup_failed:
+ /* RM ME -- stats only */
+ movabsq $_vgPlain_stats__n_xindir_misses, %r10
+ addq $1, %r10
+
+ movq $VG_TRC_INNER_FASTMISS, %rax
+ movq $0, %rdx
+ jmp postamble
+
+/* ------ Assisted jump ------ */
+.globl VG_(disp_cp_xassisted)
+VG_(disp_cp_xassisted):
+ /* %rbp contains the TRC */
+ movq %rbp, %rax
+ movq $0, %rdx
+ jmp postamble
+
+/* ------ Event check failed ------ */
+.globl VG_(disp_cp_evcheck_fail)
+VG_(disp_cp_evcheck_fail):
+ movq $VG_TRC_INNER_COUNTERZERO, %rax
+ movq $0, %rdx
+ jmp postamble
+
+
#endif // defined(VGP_amd64_darwin)
/*--------------------------------------------------------------------*/
|
|
From: <sv...@va...> - 2012-04-21 10:47:48
|
sewardj 2012-04-21 11:47:41 +0100 (Sat, 21 Apr 2012)
New Revision: 2301
Log:
chainXDirect_ARM: generate direct jumps when possible.
Modified files:
trunk/priv/host_arm_defs.c
Modified: trunk/priv/host_arm_defs.c (+90 -20)
===================================================================
--- trunk/priv/host_arm_defs.c 2012-04-21 09:18:02 +01:00 (rev 2300)
+++ trunk/priv/host_arm_defs.c 2012-04-21 11:47:41 +01:00 (rev 2301)
@@ -4516,18 +4516,62 @@
vassert(is_imm32_to_iregNo_EXACTLY2(
p, /*r*/12, (UInt)Ptr_to_ULong(disp_cp_chain_me_EXPECTED)));
vassert(p[2] == 0xE12FFF3C);
- /* And what we want to change it to is:
- movw r12, lo16(place_to_jump_to)
- movt r12, hi16(place_to_jump_to)
- bx r12
- viz
- <8 bytes generated by imm32_to_iregNo_EXACTLY2>
- E1 2F FF 1C
- The replacement has the same length as the original.
+ /* And what we want to change it to is either:
+ (general case)
+ movw r12, lo16(place_to_jump_to)
+ movt r12, hi16(place_to_jump_to)
+ bx r12
+ viz
+ <8 bytes generated by imm32_to_iregNo_EXACTLY2>
+ E1 2F FF 1C
+ ---OR---
+ in the case where the displacement falls within 26 bits
+ b disp24; undef; undef
+ viz
+ EA <3 bytes == disp24>
+ FF 00 00 00
+ FF 00 00 00
+
+ In both cases the replacement has the same length as the original.
+ To remain sane & verifiable,
+ (1) limit the displacement for the short form to
+ (say) +/- 30 million, so as to avoid wraparound
+ off-by-ones
+ (2) even if the short form is applicable, once every (say)
+ 1024 times use the long form anyway, so as to maintain
+ verifiability
*/
- (void)imm32_to_iregNo_EXACTLY2(
- p, /*r*/12, (UInt)Ptr_to_ULong(place_to_jump_to));
- p[2] = 0xE12FFF1C;
+
+ /* This is the delta we need to put into a B insn. It's relative
+ to the start of the next-but-one insn, hence the -8. */
+ Long delta = (Long)((UChar*)place_to_jump_to - (UChar*)p) - (Long)8;
+ Bool shortOK = delta >= -30*1000*1000 && delta < 30*1000*1000;
+ vassert(0 == (delta & (Long)3));
+
+ static UInt shortCTR = 0; /* DO NOT MAKE NON-STATIC */
+ if (shortOK) {
+ shortCTR++; // thread safety bleh
+ if (0 == (shortCTR & 0x3FF)) {
+ shortOK = False;
+ if (0)
+ vex_printf("QQQ chainXDirect_ARM: shortCTR = %u, "
+ "using long form\n", shortCTR);
+ }
+ }
+
+ /* And make the modifications. */
+ if (shortOK) {
+ Int simm24 = (Int)(delta >> 2);
+ vassert(simm24 == ((simm24 << 8) >> 8));
+ p[0] = 0xEA000000 | (simm24 & 0x00FFFFFF);
+ p[1] = 0xFF000000;
+ p[2] = 0xFF000000;
+ } else {
+ (void)imm32_to_iregNo_EXACTLY2(
+ p, /*r*/12, (UInt)Ptr_to_ULong(place_to_jump_to));
+ p[2] = 0xE12FFF1C;
+ }
+
VexInvalRange vir = {(HWord)p, 12};
return vir;
}
@@ -4540,18 +4584,44 @@
void* disp_cp_chain_me )
{
/* What we're expecting to see is:
- movw r12, lo16(place_to_jump_to_EXPECTED)
- movt r12, lo16(place_to_jump_to_EXPECTED)
- bx r12
- viz
- <8 bytes generated by imm32_to_iregNo_EXACTLY2>
- E1 2F FF 1C
+ (general case)
+ movw r12, lo16(place_to_jump_to_EXPECTED)
+ movt r12, lo16(place_to_jump_to_EXPECTED)
+ bx r12
+ viz
+ <8 bytes generated by imm32_to_iregNo_EXACTLY2>
+ E1 2F FF 1C
+ ---OR---
+ in the case where the displacement falls within 26 bits
+ b disp24; undef; undef
+ viz
+ EA <3 bytes == disp24>
+ FF 00 00 00
+ FF 00 00 00
*/
UInt* p = (UInt*)place_to_unchain;
vassert(0 == (3 & (HWord)p));
- vassert(is_imm32_to_iregNo_EXACTLY2(
- p, /*r*/12, (UInt)Ptr_to_ULong(place_to_jump_to_EXPECTED)));
- vassert(p[2] == 0xE12FFF1C);
+
+ Bool valid = False;
+ if (is_imm32_to_iregNo_EXACTLY2(
+ p, /*r*/12, (UInt)Ptr_to_ULong(place_to_jump_to_EXPECTED))
+ && p[2] == 0xE12FFF1C) {
+ valid = True; /* it's the long form */
+ if (0)
+ vex_printf("QQQ unchainXDirect_ARM: found long form\n");
+ } else
+ if ((p[0] >> 24) == 0xEA && p[1] == 0xFF000000 && p[2] == 0xFF000000) {
+ /* It's the short form. Check the displacement is right. */
+ Int simm24 = p[0] & 0x00FFFFFF;
+ simm24 <<= 8; simm24 >>= 8;
+ if ((UChar*)p + (simm24 << 2) + 8 == (UChar*)place_to_jump_to_EXPECTED) {
+ valid = True;
+ if (0)
+ vex_printf("QQQ unchainXDirect_ARM: found short form\n");
+ }
+ }
+ vassert(valid);
+
/* And what we want to change it to is:
movw r12, lo16(disp_cp_chain_me)
movt r12, hi16(disp_cp_chain_me)
|
|
From: <sv...@va...> - 2012-04-21 08:18:39
|
sewardj 2012-04-21 09:18:33 +0100 (Sat, 21 Apr 2012)
New Revision: 12521
Log:
Update.
Modified files:
trunk/docs/internals/t-chaining-notes.txt
Modified: trunk/docs/internals/t-chaining-notes.txt (+1 -6)
===================================================================
--- trunk/docs/internals/t-chaining-notes.txt 2012-04-21 08:37:21 +01:00 (rev 12520)
+++ trunk/docs/internals/t-chaining-notes.txt 2012-04-21 09:18:33 +01:00 (rev 12521)
@@ -7,7 +7,7 @@
Verification todo
~~~~~~~~~~~~~~~~~
check that illegal insns on all targets don't cause the _toIR.c's to
-assert.
+assert. [DONE: amd64 x86 ppc32 ppc64 arm s390??]
check also with --vex-guest-chase-cond=yes
@@ -33,8 +33,6 @@
ditto ARM, Ld8S
-make sure IRStmt_Exit3 is completely gone.
-
all backends: iselStmt(Ist_Exit) vs iselNext: make sure that the same
JKs are handled, else it's not safe against branch sense switching
@@ -59,9 +57,6 @@
all targets: change VG_(stats__n_xindirs) to a 32 bit counter, and
empty out every now and again. Ditto VG_(stats__n_xindir_misses).
-amd64: XDirect: write const value to guest_RIP using single
-insn when the value is < 0x8000'0000
-
arm: chain_XDirect: generate short form jumps when possible
ppc: chain_XDirect: generate short form jumps when possible
|
|
From: <sv...@va...> - 2012-04-21 08:18:09
|
sewardj 2012-04-21 09:18:02 +0100 (Sat, 21 Apr 2012)
New Revision: 2300
Log:
Ain_XDirect, Ain_XIndir: use short form encodings where possible.
Modified files:
trunk/priv/host_amd64_defs.c
Modified: trunk/priv/host_amd64_defs.c (+30 -8)
===================================================================
--- trunk/priv/host_amd64_defs.c 2012-04-21 08:39:02 +01:00 (rev 2299)
+++ trunk/priv/host_amd64_defs.c 2012-04-21 09:18:02 +01:00 (rev 2300)
@@ -2563,10 +2563,20 @@
}
/* Update the guest RIP. */
- /* movabsq $dstGA, %r11 */
- *p++ = 0x49;
- *p++ = 0xBB;
- p = emit64(p, i->Ain.XDirect.dstGA);
+ if (fitsIn32Bits(i->Ain.XDirect.dstGA)) {
+ /* use a shorter encoding */
+ /* movl sign-extend(dstGA), %r11 */
+ *p++ = 0x49;
+ *p++ = 0xC7;
+ *p++ = 0xC3;
+ p = emit32(p, (UInt)i->Ain.XDirect.dstGA);
+ } else {
+ /* movabsq $dstGA, %r11 */
+ *p++ = 0x49;
+ *p++ = 0xBB;
+ p = emit64(p, i->Ain.XDirect.dstGA);
+ }
+
/* movq %r11, amRIP */
*p++ = rexAMode_M(r11, i->Ain.XDirect.amRIP);
*p++ = 0x89;
@@ -2624,10 +2634,22 @@
*p++ = rexAMode_M(i->Ain.XIndir.dstGA, i->Ain.XIndir.amRIP);
*p++ = 0x89;
p = doAMode_M(p, i->Ain.XIndir.dstGA, i->Ain.XIndir.amRIP);
- /* movabsq $disp_indir, %r11 */
- *p++ = 0x49;
- *p++ = 0xBB;
- p = emit64(p, Ptr_to_ULong(disp_cp_xindir));
+
+ /* get $disp_cp_xindir into %r11 */
+ if (fitsIn32Bits(Ptr_to_ULong(disp_cp_xindir))) {
+ /* use a shorter encoding */
+ /* movl sign-extend(disp_cp_xindir), %r11 */
+ *p++ = 0x49;
+ *p++ = 0xC7;
+ *p++ = 0xC3;
+ p = emit32(p, (UInt)Ptr_to_ULong(disp_cp_xindir));
+ } else {
+ /* movabsq $disp_cp_xindir, %r11 */
+ *p++ = 0x49;
+ *p++ = 0xBB;
+ p = emit64(p, Ptr_to_ULong(disp_cp_xindir));
+ }
+
/* jmp *%r11 */
*p++ = 0x41;
*p++ = 0xFF;
|
|
From: <sv...@va...> - 2012-04-21 07:39:10
|
sewardj 2012-04-21 08:39:02 +0100 (Sat, 21 Apr 2012)
New Revision: 2299
Log:
(post-tchain-merge cleanup) remove temp supporting hack "IRStmt_Exit3"
Modified files:
trunk/pub/libvex_ir.h
Modified: trunk/pub/libvex_ir.h (+0 -3)
===================================================================
--- trunk/pub/libvex_ir.h 2012-04-21 08:38:29 +01:00 (rev 2298)
+++ trunk/pub/libvex_ir.h 2012-04-21 08:39:02 +01:00 (rev 2299)
@@ -2225,10 +2225,7 @@
extern IRStmt* IRStmt_MBE ( IRMBusEvent event );
extern IRStmt* IRStmt_Exit ( IRExpr* guard, IRJumpKind jk, IRConst* dst,
Int offsIP );
-// TEMP HACK
-#define IRStmt_Exit3(__guard,__jk,__dst) IRStmt_Exit(__guard,__jk,__dst,0)
-
/* Deep-copy an IRStmt. */
extern IRStmt* deepCopyIRStmt ( IRStmt* );
|
|
From: <sv...@va...> - 2012-04-21 07:38:35
|
sewardj 2012-04-21 08:38:29 +0100 (Sat, 21 Apr 2012)
New Revision: 2298
Log:
(post-tchain-merge cleanup) Stop x86/amd64 asserting on illegal insns.
Modified files:
trunk/priv/host_amd64_isel.c
trunk/priv/host_x86_isel.c
Modified: trunk/priv/host_amd64_isel.c (+1 -0)
===================================================================
--- trunk/priv/host_amd64_isel.c 2012-04-21 04:34:54 +01:00 (rev 2297)
+++ trunk/priv/host_amd64_isel.c 2012-04-21 08:38:29 +01:00 (rev 2298)
@@ -4262,6 +4262,7 @@
/* Case: some other kind of transfer to any address */
switch (jk) {
+ case Ijk_NoDecode:
case Ijk_Sys_syscall: case Ijk_ClientReq: case Ijk_NoRedir:
case Ijk_Yield: case Ijk_SigTRAP: case Ijk_TInval: {
HReg r = iselIntExpr_R(env, next);
Modified: trunk/priv/host_x86_isel.c (+1 -0)
===================================================================
--- trunk/priv/host_x86_isel.c 2012-04-21 04:34:54 +01:00 (rev 2297)
+++ trunk/priv/host_x86_isel.c 2012-04-21 08:38:29 +01:00 (rev 2298)
@@ -4170,6 +4170,7 @@
/* Case: some other kind of transfer to any address */
switch (jk) {
+ case Ijk_NoDecode:
case Ijk_Sys_int128: case Ijk_ClientReq: case Ijk_NoRedir:
case Ijk_Yield: case Ijk_SigTRAP: case Ijk_TInval: {
HReg r = iselIntExpr_R(env, next);
|
|
From: <sv...@va...> - 2012-04-21 07:37:29
|
sewardj 2012-04-21 08:37:21 +0100 (Sat, 21 Apr 2012)
New Revision: 12520
Log:
Comment update (was moved to t-chaining-notes.txt)
Modified files:
trunk/coregrind/m_scheduler/scheduler.c
Modified: trunk/coregrind/m_scheduler/scheduler.c (+0 -14)
===================================================================
--- trunk/coregrind/m_scheduler/scheduler.c 2012-04-21 01:27:56 +01:00 (rev 12519)
+++ trunk/coregrind/m_scheduler/scheduler.c 2012-04-21 08:37:21 +01:00 (rev 12520)
@@ -57,20 +57,6 @@
way back for the moment, until we do an OS port in earnest...]
*/
-/* FIXME tchaining tests:
- - extensive spinrounds
- - with sched quantum = 1 -- check that handle_noredir_jump
- doesn't return with INNER_COUNTERZERO
- other:
- - out of date comment w.r.t. bit 0 set in libvex_trc_values.h
- - can VG_TRC_BORING still happen? if not, rm
- - memory leaks in m_transtab (InEdgeArr/OutEdgeArr leaking?)
- - move do_cacheflush out of m_transtab
- - more economical unchaining when nuking an entire sector
- - ditto w.r.t. cache flushes
- - verify case of 2 paths from A to B
- - check -- is IP_AT_SYSCALL still right?
-*/
#include "pub_core_basics.h"
#include "pub_core_debuglog.h"
|
|
From: Philippe W. <phi...@sk...> - 2012-04-21 03:43:22
|
valgrind revision: 12519 VEX revision: 2296 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.3.1-3.fc16.ppc64 ppc64 Vendor version: Fedora release 16 (Verne) Nightly build on gcc110 ( Fedora release 16 (Verne), ppc64 ) Started at 2012-04-20 20:00:07 PDT Ended at 2012-04-20 20:42:24 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 == 517 tests, 8 stderr failures, 8 stdout failures, 1 stderrB failure, 1 stdoutB failure, 2 post failures == gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/ppc32/power_ISA2_05 (stdout) memcheck/tests/ppc32/power_ISA2_05 (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/ppc64/power_ISA2_05 (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: <sv...@va...> - 2012-04-21 03:35:13
|
florian 2012-04-21 04:34:54 +0100 (Sat, 21 Apr 2012)
New Revision: 2297
Log:
We incorrectly stored the archinfo_host argument of iselSB_S390 into
a global variable not realising it points to a stack-allocated variable.
This caused s390_archinfo_host->hwcaps member to change its value
randomly over time. It could have caused invalid code to be generated.
Curious that it did not surface.
Modified files:
trunk/priv/host_s390_defs.c
trunk/priv/host_s390_defs.h
trunk/priv/host_s390_isel.c
Modified: trunk/priv/host_s390_defs.h (+7 -7)
===================================================================
--- trunk/priv/host_s390_defs.h 2012-04-21 00:58:17 -23:00 (rev 2296)
+++ trunk/priv/host_s390_defs.h 2012-04-21 04:34:54 +01:00 (rev 2297)
@@ -547,21 +547,21 @@
ULong *location_of_counter);
/* KLUDGE: See detailled comment in host_s390_defs.c. */
-extern const VexArchInfo *s390_archinfo_host;
+extern UInt s390_host_hwcaps;
/* Convenience macros to test installed facilities */
#define s390_host_has_ldisp \
- (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_LDISP))
+ (s390_host_hwcaps & (VEX_HWCAPS_S390X_LDISP))
#define s390_host_has_eimm \
- (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_EIMM))
+ (s390_host_hwcaps & (VEX_HWCAPS_S390X_EIMM))
#define s390_host_has_gie \
- (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_GIE))
+ (s390_host_hwcaps & (VEX_HWCAPS_S390X_GIE))
#define s390_host_has_dfp \
- (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_DFP))
+ (s390_host_hwcaps & (VEX_HWCAPS_S390X_DFP))
#define s390_host_has_fgx \
- (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_FGX))
+ (s390_host_hwcaps & (VEX_HWCAPS_S390X_FGX))
#define s390_host_has_etf2 \
- (s390_archinfo_host->hwcaps & (VEX_HWCAPS_S390X_ETF2))
+ (s390_host_hwcaps & (VEX_HWCAPS_S390X_ETF2))
#endif /* ndef __VEX_HOST_S390_DEFS_H */
Modified: trunk/priv/host_s390_defs.c (+1 -1)
===================================================================
--- trunk/priv/host_s390_defs.c 2012-04-21 00:58:17 -23:00 (rev 2296)
+++ trunk/priv/host_s390_defs.c 2012-04-21 04:34:54 +01:00 (rev 2297)
@@ -49,7 +49,7 @@
Until then, we use a global variable. This variable is set as a side
effect of iselSB_S390. This is safe because instructions are selected
before they are emitted. */
-const VexArchInfo *s390_archinfo_host;
+UInt s390_host_hwcaps;
/*------------------------------------------------------------*/
Modified: trunk/priv/host_s390_isel.c (+5 -3)
===================================================================
--- trunk/priv/host_s390_isel.c 2012-04-21 00:58:17 -23:00 (rev 2296)
+++ trunk/priv/host_s390_isel.c 2012-04-21 04:34:54 +01:00 (rev 2297)
@@ -2619,7 +2619,9 @@
/*--- Insn selector top-level ---*/
/*---------------------------------------------------------*/
-/* Translate an entire SB to s390 code. */
+/* Translate an entire SB to s390 code.
+ Note: archinfo_host is a pointer to a stack-allocated variable.
+ Do not assign it to a global variable! */
HInstrArray *
iselSB_S390(IRSB *bb, VexArch arch_host, VexArchInfo *archinfo_host,
@@ -2632,8 +2634,8 @@
ISelEnv *env;
UInt hwcaps_host = archinfo_host->hwcaps;
- /* KLUDGE: export archinfo_host. */
- s390_archinfo_host = archinfo_host;
+ /* KLUDGE: export hwcaps. */
+ s390_host_hwcaps = hwcaps_host;
/* Do some sanity checks */
vassert((VEX_HWCAPS_S390X(hwcaps_host) & ~(VEX_HWCAPS_S390X_ALL)) == 0);
|
|
From: Florian K. <br...@ac...> - 2012-04-21 03:15:44
|
Here are the performance numbers for s390 (z10-EC). Measured with --perf=5 Before: without tchaining -- Running tests in perf ---------------------------------------------- bigcode1 trunk :0.50s no: 5.9s (11.9x, -----) me:11.0s (22.1x, ----) bigcode2 trunk :0.50s no:14.2s (28.4x, -----) me:28.1s (56.1x, ----) bz2 trunk :1.06s no: 6.6s ( 6.3x, -----) me:26.7s (25.2x, ----) fbench trunk :0.80s no: 3.0s ( 3.8x, -----) me:11.8s (14.7x, ----) ffbench trunk :0.52s no: 1.6s ( 3.2x, -----) me: 6.4s (12.3x, ----) heap trunk :0.34s no: 2.1s ( 6.1x, -----) me:15.2s (44.6x, ----) heap_pdb4 trunk :0.33s no: 2.2s ( 6.6x, -----) me:22.0s (66.6x, ----) many-loss trunk :0.03s no: 0.6s (19.3x, -----) me: 3.9s (128.3x, ---) many-xpts trunk :0.08s no: 0.7s ( 9.2x, -----) me: 5.4s (67.5x, ----) sarp trunk :0.04s no: 0.7s (16.2x, -----) me: 6.1s (153.2x, ---) tinycc trunk :0.36s no: 5.2s (14.6x, -----) me:29.7s (82.5x, ----) -- Finished tests in perf ---------------------------------------------- After: with tchaining -- Running tests in perf ---------------------------------------------- bigcode1 trunk :0.50s no: 4.6s ( 9.3x, -----) me: 8.1s (16.2x, ----) bigcode2 trunk :0.51s no: 9.0s (17.6x, -----) me:17.0s (33.4x, ----) bz2 trunk :1.07s no: 5.5s ( 5.1x, -----) me:24.0s (22.4x, ----) fbench trunk :0.80s no: 2.8s ( 3.5x, -----) me:10.9s (13.6x, ----) ffbench trunk :0.51s no: 1.5s ( 2.9x, -----) me: 5.8s (11.3x, ----) heap trunk :0.35s no: 1.9s ( 5.3x, -----) me:14.8s (42.3x, ----) heap_pdb4 trunk :0.33s no: 2.0s ( 6.2x, -----) me:21.4s (64.8x, ----) many-loss trunk :0.03s no: 0.4s (14.3x, -----) me: 3.5s (116.3x, ---) many-xpts trunk :0.08s no: 0.7s ( 8.5x, -----) me: 5.1s (63.5x, ----) sarp trunk :0.04s no: 0.5s (12.5x, -----) me: 5.8s (145.8x, ---) tinycc trunk :0.35s no: 4.1s (11.8x, -----) me:26.7s (76.4x, ----) -- Finished tests in perf ---------------------------------------------- Well worth the effort. Florian |
|
From: Rich C. <rc...@wi...> - 2012-04-21 03:12:14
|
valgrind revision: 12519
VEX revision: 2296
C compiler: gcc (SUSE Linux) 4.6.2
Assembler: GNU assembler (GNU Binutils; openSUSE Factory) 2.21.1
C library: GNU C Library stable release version 2.14.1 (20111007), by Roland McGrath et al.
uname -mrs: Linux 3.1.0-1-desktop x86_64
Vendor version: Welcome to openSUSE 12.1 "Asparagus" RC 1 - Kernel %r (%t).
Nightly build on groovy ( gcc 4.6.1 Linux 3.1.0-1-desktop x86_64 )
Started at 2012-04-20 21:55:01 CDT
Ended at 2012-04-20 22:12:06 CDT
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
== 607 tests, 2 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/overlap (stderr)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... failed
Last 20 lines of verbose log follow echo
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -DVGPV_amd64_linux_vanilla=1 -I../coregrind -DVG_LIBDIR="\"/home/coe/src/vg/nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"amd64-linux\"" -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -DVGPV_amd64_linux_vanilla=1 -I../coregrind -DVG_LIBDIR="\"/home/coe/src/vg/nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"amd64-linux\"" -m64 -g -Wno-long-long -MT libcoregrind_amd64_linux_a-m_trampoline.o -MD -MP -MF .deps/libcoregrind_amd64_linux_a-m_trampoline.Tpo -c -o libcoregrind_amd64_linux_a-m_trampoline.o `test -f 'm_trampoline.S' || echo './'`m_trampoline.S
mv -f .deps/libcoregrind_amd64_linux_a-m_trampoline.Tpo .deps/libcoregrind_amd64_linux_a-m_trampoline.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -DVGPV_amd64_linux_vanilla=1 -I../coregrind -DVG_LIBDIR="\"/home/coe/src/vg/nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"amd64-linux\"" -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -fno-builtin -DENABLE_LINUX_TICKET_LOCK -Wno-long-long -Wno-pointer-sign -fno-stack-protector -MT libcoregrind_amd64_linux_a-m_translate.o -MD -MP -MF .deps/libcoregrind_amd64_linux_a-m_translate.Tpo -c -o libcoregrind_amd64_linux_a-m_translate.o `test -f 'm_translate.c' || echo './'`m_translate.c
m_translate.c: In function 'vgPlain_translate':
m_translate.c:1510:10: error: 'VexTranslateArgs' has no member named 'dispatch_assisted'
m_translate.c:1512:10: error: 'VexTranslateArgs' has no member named 'dispatch_unassisted'
m_translate.c:1513:15: error: 'VexTranslateArgs' has no member named 'dispatch_assisted'
m_translate.c:1518:10: error: 'VexTranslateArgs' has no member named 'dispatch_assisted'
m_translate.c:1520:10: error: 'VexTranslateArgs' has no member named 'dispatch_unassisted'
m_translate.c:1525:10: error: 'VexTranslateArgs' has no member named 'dispatch_assisted'
m_translate.c:1527:10: error: 'VexTranslateArgs' has no member named 'dispatch_unassisted'
make[3]: *** [libcoregrind_amd64_linux_a-m_translate.o] Error 1
make[3]: *** Waiting for unfinished jobs....
mv -f .deps/libcoregrind_amd64_linux_a-m_tooliface.Tpo .deps/libcoregrind_amd64_linux_a-m_tooliface.Po
make[3]: Leaving directory `/home/coe/src/vg/nightly/valgrind-old/coregrind'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/coe/src/vg/nightly/valgrind-old/coregrind'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/coe/src/vg/nightly/valgrind-old'
make: *** [all] Error 2
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Fri Apr 20 21:57:04 2012
--- new.short Fri Apr 20 22:12:06 2012
***************
*** 3,26 ****
Configuring valgrind ... done
! Building valgrind ... failed
- Last 20 lines of verbose log follow echo
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -DVGPV_amd64_linux_vanilla=1 -I../coregrind -DVG_LIBDIR="\"/home/coe/src/vg/nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"amd64-linux\"" -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -DVGPV_amd64_linux_vanilla=1 -I../coregrind -DVG_LIBDIR="\"/home/coe/src/vg/nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"amd64-linux\"" -m64 -g -Wno-long-long -MT libcoregrind_amd64_linux_a-m_trampoline.o -MD -MP -MF .deps/libcoregrind_amd64_linux_a-m_trampoline.Tpo -c -o libcoregrind_amd64_linux_a-m_trampoline.o `test -f 'm_trampoline.S' || echo './'`m_trampoline.S
- mv -f .deps/libcoregrind_amd64_linux_a-m_trampoline.Tpo .deps/libcoregrind_amd64_linux_a-m_trampoline.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -DVGPV_amd64_linux_vanilla=1 -I../coregrind -DVG_LIBDIR="\"/home/coe/src/vg/nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"amd64-linux\"" -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -fno-builtin -DENABLE_LINUX_TICKET_LOCK -Wno-long-long -Wno-pointer-sign -fno-stack-protector -MT libcoregrind_amd64_linux_a-m_translate.o -MD -MP -MF .deps/libcoregrind_amd64_linux_a-m_translate.Tpo -c -o libcoregrind_amd64_linux_a-m_translate.o `test -f 'm_translate.c' || echo './'`m_translate.c
- m_translate.c: In function 'vgPlain_translate':
- m_translate.c:1510:10: error: 'VexTranslateArgs' has no member named 'dispatch_assisted'
- m_translate.c:1512:10: error: 'VexTranslateArgs' has no member named 'dispatch_unassisted'
- m_translate.c:1513:15: error: 'VexTranslateArgs' has no member named 'dispatch_assisted'
- m_translate.c:1518:10: error: 'VexTranslateArgs' has no member named 'dispatch_assisted'
- m_translate.c:1520:10: error: 'VexTranslateArgs' has no member named 'dispatch_unassisted'
- m_translate.c:1525:10: error: 'VexTranslateArgs' has no member named 'dispatch_assisted'
- m_translate.c:1527:10: error: 'VexTranslateArgs' has no member named 'dispatch_unassisted'
- make[3]: *** [libcoregrind_amd64_linux_a-m_translate.o] Error 1
- make[3]: *** Waiting for unfinished jobs....
- mv -f .deps/libcoregrind_amd64_linux_a-m_tooliface.Tpo .deps/libcoregrind_amd64_linux_a-m_tooliface.Po
- make[3]: Leaving directory `/home/coe/src/vg/nightly/valgrind-old/coregrind'
- make[2]: *** [all] Error 2
- make[2]: Leaving directory `/home/coe/src/vg/nightly/valgrind-old/coregrind'
- make[1]: *** [all-recursive] Error 1
- make[1]: Leaving directory `/home/coe/src/vg/nightly/valgrind-old'
- make: *** [all] Error 2
--- 3,13 ----
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 607 tests, 2 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
! gdbserver_tests/mssnapshot (stderrB)
! memcheck/tests/origin5-bz2 (stderr)
! memcheck/tests/overlap (stderr)
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2012-04-20 21:57:07.612375416 -0500
+++ mssnapshot.stderrB.out 2012-04-20 22:02:01.163948944 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=f20c99249f5a5776e1377d3bd728502e3f455a3f"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=1f368f83b776815033caab6e389d7030bba4593e"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=3c6112e7d6b5cd8a95263caf838fa495bc4ac337"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2012-04-20 21:57:08.397368914 -0500
+++ origin5-bz2.stderr.out 2012-04-20 22:03:48.412065056 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- 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)
- 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:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2012-04-20 21:57:08.352369286 -0500
+++ origin5-bz2.stderr.out 2012-04-20 22:03:48.412065056 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2012-04-20 21:57:08.328369484 -0500
+++ origin5-bz2.stderr.out 2012-04-20 22:03:48.412065056 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2012-04-20 21:57:08.416368756 -0500
+++ origin5-bz2.stderr.out 2012-04-20 22:03:48.412065056 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2012-04-20 21:57:08.325369509 -0500
+++ origin5-bz2.stderr.out 2012-04-20 22:03:48.412065056 -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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
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
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
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
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
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
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
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
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
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
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
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
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
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
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
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
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
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
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
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
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/overlap.stderr.diff
=================================================
--- overlap.stderr.exp 2012-04-20 21:57:08.362369203 -0500
+++ overlap.stderr.out 2012-04-20 22:03:55.477006883 -0500
@@ -1,9 +1,9 @@
Source and destination overlap in memcpy(0x........, 0x........, 21)
- at 0x........: memcpy (mc_replace_strmem.c:...)
+ at 0x........: memcpy@@GLIBC_2.14 (mc_replace_strmem.c:...)
by 0x........: main (overlap.c:40)
Source and destination overlap in memcpy(0x........, 0x........, 21)
- at 0x........: memcpy (mc_replace_strmem.c:...)
+ at 0x........: memcpy@@GLIBC_2.14 (mc_replace_strmem.c:...)
by 0x........: main (overlap.c:42)
Source and destination overlap in strncpy(0x........, 0x........, 21)
|
|
From: Tom H. <to...@co...> - 2012-04-21 03:08:15
|
valgrind revision: 12519 VEX revision: 2296 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.1.0-7.fc16.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2012-04-21 03:41:04 BST Ended at 2012-04-21 04:07:54 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 == 597 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable4 (stderr) none/tests/amd64/sse4-64 (stdout) |