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
(32) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
(14) |
2
(8) |
3
(7) |
|
4
(7) |
5
(7) |
6
(6) |
7
(11) |
8
(10) |
9
(14) |
10
(10) |
|
11
(13) |
12
(15) |
13
(6) |
14
(8) |
15
(6) |
16
(6) |
17
(6) |
|
18
(6) |
19
(11) |
20
(15) |
21
(14) |
22
(11) |
23
(7) |
24
(17) |
|
25
(14) |
26
(28) |
27
(21) |
28
(23) |
29
(21) |
30
(17) |
31
(8) |
|
From: <js...@ac...> - 2007-03-10 10:51:42
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2007-03-10 09:00:01 GMT 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 == 219 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) none/tests/ppc32/round (stdout) none/tests/ppc32/round (stderr) none/tests/ppc32/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: Tom H. <th...@cy...> - 2007-03-10 03:23:56
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2007-03-10 03:10:07 GMT 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 == 289 tests, 5 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/amd64/defcfaexpr (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) |
|
From: Tom H. <th...@cy...> - 2007-03-10 03:22:46
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-03-10 03:15:02 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/ccn3LBmB.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccn3LBmB.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccn3LBmB.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccn3LBmB.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccn3LBmB.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccn3LBmB.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccn3LBmB.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccn3LBmB.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/ccqNtwVg.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccqNtwVg.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccqNtwVg.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccqNtwVg.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccqNtwVg.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccqNtwVg.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccqNtwVg.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccqNtwVg.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-03-10/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 10 03:18:50 2007 --- new.short Sat Mar 10 03:22:38 2007 *************** *** 7,16 **** Last 20 lines of verbose log follow echo ! /tmp/ccqNtwVg.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccqNtwVg.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccqNtwVg.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccqNtwVg.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccqNtwVg.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccqNtwVg.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccqNtwVg.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccqNtwVg.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 --- 7,16 ---- Last 20 lines of verbose log follow echo ! /tmp/ccn3LBmB.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccn3LBmB.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccn3LBmB.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccn3LBmB.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccn3LBmB.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccn3LBmB.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccn3LBmB.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccn3LBmB.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2007-03-10 03:18:50
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-03-10 03:05:05 GMT 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 == 289 tests, 7 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/amd64/defcfaexpr (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2007-03-10 03:12:04
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-03-10 03:00:02 GMT 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 == 291 tests, 7 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/amd64/defcfaexpr (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: <sv...@va...> - 2007-03-10 02:27:47
|
Author: njn
Date: 2007-03-10 02:27:44 +0000 (Sat, 10 Mar 2007)
New Revision: 6639
Log:
wibble
Modified:
trunk/memcheck/mc_malloc_wrappers.c
Modified: trunk/memcheck/mc_malloc_wrappers.c
===================================================================
--- trunk/memcheck/mc_malloc_wrappers.c 2007-03-10 00:52:54 UTC (rev 6638)
+++ trunk/memcheck/mc_malloc_wrappers.c 2007-03-10 02:27:44 UTC (rev 6639)
@@ -6,8 +6,7 @@
/*
This file is part of MemCheck, a heavyweight Valgrind tool for
- detecting memory errors, and AddrCheck, a lightweight Valgrind tool
- for detecting memory errors.
+ detecting memory errors.
Copyright (C) 2000-2007 Julian Seward
js...@ac...
|
|
From: <js...@ac...> - 2007-03-10 02:11:38
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-03-10 02:00:01 CET 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 == 225 tests, 6 stderr failures, 3 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/res_search (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 225 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 10 02:08:34 2007 --- new.short Sat Mar 10 02:17:17 2007 *************** *** 8,10 **** ! == 225 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) --- 8,10 ---- ! == 225 tests, 6 stderr failures, 3 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) *************** *** 17,18 **** --- 17,19 ---- none/tests/mremap2 (stdout) + none/tests/res_search (stdout) |
|
From: <sv...@va...> - 2007-03-10 00:52:57
|
Author: njn
Date: 2007-03-10 00:52:54 +0000 (Sat, 10 Mar 2007)
New Revision: 6638
Log:
update
Modified:
trunk/README_MISSING_SYSCALL_OR_IOCTL
Modified: trunk/README_MISSING_SYSCALL_OR_IOCTL
===================================================================
--- trunk/README_MISSING_SYSCALL_OR_IOCTL 2007-03-08 19:57:43 UTC (rev 6637)
+++ trunk/README_MISSING_SYSCALL_OR_IOCTL 2007-03-10 00:52:54 UTC (rev 6638)
@@ -101,7 +101,7 @@
grep NNN /usr/include/asm/unistd.h
This should tell you something like __NR_mysyscallname.
- Copy this entry to coregrind/vki_unistd-$(VG_PLATFORM).h.
+ Copy this entry to include/vki/vki-scnums-$(VG_PLATFORM).h.
2. Do 'man 2 mysyscallname' to get some idea of what the syscall
|
|
From: Ashley P. <as...@qu...> - 2007-03-09 19:16:01
|
Hi,
I've been thinking about this patch for a week or two now because of
problems with the a couple of hand-rolled memcpy() routines we have, a
lot of our code is clean on 64 bit platforms when the
--partial-loads-ok=yes flag is used but fails with short buffer overruns
on i686, this patch was an attempt to fix that.
Unfortunatly in practice it only seems to fix a small % of errors for us
because our copy routines only use dword copies for larger messages and
word copies for smaller messages, I'm still seeing errors of the form
shown if anybody can recommend a way of suppressing them properly. The
key thing is it's a four byte aligned/eight byte misaligned word read
immediately after a chunk of addressable memory and the suppressions
format doesn't let me specify this.
RMS_RANK 0
Invalid read of size 4
at 0x4305C19: elan_tportTxStart (tportTx.c:299)
by 0x4245705: MPID_ELAN_SendContig (adi2send.c:70)
by 0x424566F: MPID_SendContig (adi2send.c:139)
by 0x4242044: MPID_SendDatatype (adi2hsend.c:66)
by 0x426A595: PMPI_Send (send.c:91)
by 0x8048F46: main (sendvector.c:94)
Address 0x5f0f41c is 0 bytes after a block of size 20 alloc'd
at 0x401B742: malloc (vg_replace_malloc.c:207)
by 0x42443D7: MPID_PackMessage (adi2mpack.c:37)
by 0x424200C: MPID_SendDatatype (adi2hsend.c:62)
by 0x426A595: PMPI_Send (send.c:91)
by 0x8048F46: main (sendvector.c:94)
Also the comment in mc_include.h where it says "default: YES" appears
incorrect.
Ashley,
$ svn diff memcheck/mc_main.c memcheck/mc_include.h include/pub_tool_debuginfo.h
Index: memcheck/mc_main.c
===================================================================
--- memcheck/mc_main.c (revision 6637)
+++ memcheck/mc_main.c (working copy)
@@ -1160,6 +1160,7 @@
SizeT n_addrs_bad = 0;
Addr ai;
Bool partial_load_exemption_applies;
+ Bool partial_dword_load_exemption_applies;
UChar vbits8;
Bool ok;
@@ -1225,8 +1226,13 @@
= MC_(clo_partial_loads_ok) && szB == VG_WORDSIZE
&& VG_IS_WORD_ALIGNED(a)
&& n_addrs_bad < VG_WORDSIZE;
-
- if (n_addrs_bad > 0 && !partial_load_exemption_applies)
+
+ partial_dword_load_exemption_applies
+ = MC_(clo_partial_dword_loads_ok) && szB == 8
+ && VG_IS_8_ALIGNED(a)
+ && n_addrs_bad < 8;
+
+ if (n_addrs_bad > 0 && !partial_load_exemption_applies && !partial_dword_load_exemption_applies)
mc_record_address_error( VG_(get_running_tid)(), a, szB, False );
return vbits64;
@@ -4367,6 +4373,7 @@
/*------------------------------------------------------------*/
Bool MC_(clo_partial_loads_ok) = False;
+Bool MC_(clo_partial_dword_loads_ok) = False;
Int MC_(clo_freelist_vol) = 5000000;
LeakCheckMode MC_(clo_leak_check) = LC_Summary;
VgRes MC_(clo_leak_resolution) = Vg_LowRes;
@@ -4377,6 +4384,7 @@
static Bool mc_process_cmd_line_options(Char* arg)
{
VG_BOOL_CLO(arg, "--partial-loads-ok", MC_(clo_partial_loads_ok))
+ else VG_BOOL_CLO(arg, "--partial-dword-loads-ok",MC_(clo_partial_dword_loads_ok))
else VG_BOOL_CLO(arg, "--show-reachable", MC_(clo_show_reachable))
else VG_BOOL_CLO(arg, "--workaround-gcc296-bugs",MC_(clo_workaround_gcc296_bugs))
Index: memcheck/mc_include.h
===================================================================
--- memcheck/mc_include.h (revision 6637)
+++ memcheck/mc_include.h (working copy)
@@ -254,6 +254,9 @@
/* Allow loads from partially-valid addresses? default: YES */
extern Bool MC_(clo_partial_loads_ok);
+/* Allow dword loads from partially-valid addresses? default: YES */
+extern Bool MC_(clo_partial_dword_loads_ok);
+
/* Max volume of the freed blocks queue. */
extern Int MC_(clo_freelist_vol);
Index: include/pub_tool_debuginfo.h
===================================================================
--- include/pub_tool_debuginfo.h (revision 6637)
+++ include/pub_tool_debuginfo.h (working copy)
@@ -77,6 +77,8 @@
/* Succeeds if the address is within a shared object or the main executable.
It doesn't matter if debug info is present or not. */
extern Bool VG_(get_objname) ( Addr a, Char* objname, Int n_objname );
+/* Returns the mapped base of the object for a given eip */
+extern Bool VG_(get_objbase) ( Addr a, Addr* base);
/* Puts into 'buf' info about the code address %eip: the address, function
name (if known) and filename/line number (if known), like this:
|
|
From: Julian S. <js...@ac...> - 2007-03-09 18:19:51
|
Fixed (r1739). Thanks for tracking it down. > That "kludge" doesn't work. Instead, Pin_Load and Pin_Store need to > use a temporary index register in this case, like Pin_AvLdSt does. Rather than fix the assembler to work around not-directly representable address modes, I fixed this in the previous stage (instruction selection) by stopping iselWordExpr_AMode constructing them in the first place. For good measure I also checked the handling of load/store amodes in the ppc64->IR conversion (front end) and that all looks correct to me. J |
|
From: Greg P. <gp...@us...> - 2007-03-09 18:18:47
|
Julian Seward writes:
> > gcc emits code like this when manipulating packed structures
> > with 8-byte fields on 2-byte boundaries.
>
> I'd like to make a small C test case that shows gcc doing this,
> but am not sure from your description what's needed. Can you
> show a fragment of C with a suitable type definition?
gcc's optimizer is weird. In the test below, the assignment in
main() uses `li ; stdx`, but the assignment in fn() does not.
An asm test is probably more future-proof. I'm using gcc-4.0.1.
#include <stdint.h>
struct s {
char pad[158];
uintptr_t p;
} __attribute__((packed));
__attribute__((noinline))
void fn(struct s *s) {
s->p = 88;
}
int main() {
struct s s;
s.p = 99;
fn(&s);
return 0;
}
% cc -arch ppc64 test.c -o - -S -O3
.section __TEXT,__text,regular,pure_instructions
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
.machine ppc64
.text
.align 2
.p2align 4,,15
.globl _fn
_fn:
li r0,0
li r2,88
stb r0,164(r3)
stb r2,165(r3)
stb r0,158(r3)
stb r0,159(r3)
stb r0,160(r3)
stb r0,161(r3)
stb r0,162(r3)
stb r0,163(r3)
blr
.align 2
.p2align 4,,15
.globl _main
_main:
mflr r0
li r2,99
std r0,16(r1)
stdu r1,-304(r1)
li r0,270
addi r3,r1,112
stdx r2,r1,r0
bl _fn
addi r1,r1,304
li r3,0
ld r0,16(r1)
mtlr r0
blr
.subsections_via_symbols
|
|
From: <sv...@va...> - 2007-03-09 18:07:07
|
Author: sewardj
Date: 2007-03-09 18:07:00 +0000 (Fri, 09 Mar 2007)
New Revision: 1739
Log:
When generating 64-bit code, ensure that any addresses used in 4 or 8
byte loads or stores of the form reg+imm have the lowest 2 bits of imm
set to zero, so that they can safely be used in ld/ldu/lda/std/stdu
instructions. This boils down to doing an extra check in
iselWordExpr_AMode and avoiding the reg+imm case in cases where the
amode might end up in any of the abovementioned instructions.
Modified:
trunk/priv/host-ppc/hdefs.c
trunk/priv/host-ppc/isel.c
Modified: trunk/priv/host-ppc/hdefs.c
===================================================================
--- trunk/priv/host-ppc/hdefs.c 2007-03-09 14:24:38 UTC (rev 1738)
+++ trunk/priv/host-ppc/hdefs.c 2007-03-09 18:07:00 UTC (rev 1739)
@@ -1301,7 +1301,7 @@
Bool idxd = toBool(i->Pin.Load.src->tag == Pam_RR);
UChar sz = i->Pin.Load.sz;
UChar c_sz = sz==1 ? 'b' : sz==2 ? 'h' : sz==4 ? 'w' : 'd';
- vex_printf("l%cz%s ", c_sz, idxd ? "x" : "" );
+ vex_printf("l%c%s%s ", c_sz, sz==8 ? "" : "z", idxd ? "x" : "" );
ppHRegPPC(i->Pin.Load.dst);
vex_printf(",");
ppPPCAMode(i->Pin.Load.src);
@@ -2388,8 +2388,9 @@
if (opc1 == 58 || opc1 == 62) { // ld/std: mode64 only
vassert(mode64);
- // kludge DS form: lowest 2 bits = 00
- idx &= 0xFFFC;
+ /* stay sane with DS form: lowest 2 bits must be 00. This
+ should be guaranteed to us by iselWordExpr_AMode. */
+ vassert(0 == (idx & 3));
}
p = mkFormD(p, opc1, rSD, rA, idx);
return p;
@@ -3028,6 +3029,10 @@
UInt opc1, opc2, sz = i->Pin.Load.sz;
switch (am_addr->tag) {
case Pam_IR:
+ if (mode64 && (sz == 4 || sz == 8)) {
+ /* should be guaranteed to us by iselWordExpr_AMode */
+ vassert(0 == (am_addr->Pam.IR.index & 3));
+ }
switch(sz) {
case 1: opc1 = 34; break;
case 2: opc1 = 40; break;
@@ -3099,6 +3104,10 @@
UInt opc1, opc2, sz = i->Pin.Store.sz;
switch (i->Pin.Store.dst->tag) {
case Pam_IR:
+ if (mode64 && (sz == 4 || sz == 8)) {
+ /* should be guaranteed to us by iselWordExpr_AMode */
+ vassert(0 == (am_addr->Pam.IR.index & 3));
+ }
switch(sz) {
case 1: opc1 = 38; break;
case 2: opc1 = 44; break;
Modified: trunk/priv/host-ppc/isel.c
===================================================================
--- trunk/priv/host-ppc/isel.c 2007-03-09 14:24:38 UTC (rev 1738)
+++ trunk/priv/host-ppc/isel.c 2007-03-09 18:07:00 UTC (rev 1739)
@@ -379,17 +379,26 @@
static PPCRH* iselWordExpr_RH5u_wrk ( ISelEnv* env, IRExpr* e );
static PPCRH* iselWordExpr_RH5u ( ISelEnv* env, IRExpr* e );
-/* In 64-bit mode ONLY, compute an I8 into a Compute an I8 into a
+/* In 64-bit mode ONLY, compute an I8 into a
reg-or-6-bit-unsigned-immediate, the latter being an immediate in
the range 1 .. 63 inclusive. Used for doing shift amounts. */
static PPCRH* iselWordExpr_RH6u_wrk ( ISelEnv* env, IRExpr* e );
static PPCRH* iselWordExpr_RH6u ( ISelEnv* env, IRExpr* e );
/* 32-bit mode: compute an I32 into an AMode.
- 64-bit mode: compute an I64 into an AMode. */
-static PPCAMode* iselWordExpr_AMode_wrk ( ISelEnv* env, IRExpr* e );
-static PPCAMode* iselWordExpr_AMode ( ISelEnv* env, IRExpr* e );
+ 64-bit mode: compute an I64 into an AMode.
+ Requires to know (xferTy) the type of data to be loaded/stored
+ using this amode. That is so that, for 64-bit code generation, any
+ PPCAMode_IR returned will have an index (immediate offset) field
+ that is guaranteed to be 4-aligned, if there is any chance that the
+ amode is to be used in ld/ldu/lda/std/stdu.
+
+ Since there are no such restrictions on 32-bit insns, xferTy is
+ ignored for 32-bit code generation. */
+static PPCAMode* iselWordExpr_AMode_wrk ( ISelEnv* env, IRExpr* e, IRType xferTy );
+static PPCAMode* iselWordExpr_AMode ( ISelEnv* env, IRExpr* e, IRType xferTy );
+
/* 32-bit mode ONLY: compute an I64 into a GPR pair. */
static void iselInt64Expr_wrk ( HReg* rHi, HReg* rLo,
ISelEnv* env, IRExpr* e );
@@ -1161,7 +1170,7 @@
/* --------- LOAD --------- */
case Iex_Load: {
HReg r_dst = newVRegI(env);
- PPCAMode* am_addr = iselWordExpr_AMode( env, e->Iex.Load.addr );
+ PPCAMode* am_addr = iselWordExpr_AMode( env, e->Iex.Load.addr, ty/*of xfer*/ );
if (e->Iex.Load.end != Iend_BE)
goto irreducible;
addInstr(env, PPCInstr_Load( toUChar(sizeofIRType(ty)),
@@ -1513,7 +1522,7 @@
IRExpr_Load(Iend_BE,Ity_I16,bind(0))) );
if (matchIRExpr(&mi,p_LDbe16_then_16Uto32,e)) {
HReg r_dst = newVRegI(env);
- PPCAMode* amode = iselWordExpr_AMode( env, mi.bindee[0] );
+ PPCAMode* amode = iselWordExpr_AMode( env, mi.bindee[0], Ity_I16/*xfer*/ );
addInstr(env, PPCInstr_Load(2,r_dst,amode, mode64));
return r_dst;
}
@@ -1917,6 +1926,11 @@
return toBool(u == (ULong)i);
}
+static Bool uLong_is_4_aligned ( ULong u )
+{
+ return toBool((u & 3ULL) == 0);
+}
+
static Bool sane_AMode ( ISelEnv* env, PPCAMode* am )
{
Bool mode64 = env->mode64;
@@ -1937,20 +1951,30 @@
}
}
-static PPCAMode* iselWordExpr_AMode ( ISelEnv* env, IRExpr* e )
+static
+PPCAMode* iselWordExpr_AMode ( ISelEnv* env, IRExpr* e, IRType xferTy )
{
- PPCAMode* am = iselWordExpr_AMode_wrk(env, e);
+ PPCAMode* am = iselWordExpr_AMode_wrk(env, e, xferTy);
vassert(sane_AMode(env, am));
return am;
}
/* DO NOT CALL THIS DIRECTLY ! */
-static PPCAMode* iselWordExpr_AMode_wrk ( ISelEnv* env, IRExpr* e )
+static PPCAMode* iselWordExpr_AMode_wrk ( ISelEnv* env, IRExpr* e, IRType xferTy )
{
IRType ty = typeOfIRExpr(env->type_env,e);
if (env->mode64) {
+ /* If the data load/store type is I32 or I64, this amode might
+ be destined for use in ld/ldu/lwa/st/stu. In which case
+ insist that if it comes out as an _IR, the immediate must
+ have its bottom two bits be zero. This does assume that for
+ any other type (I8/I16/I128/F32/F64/V128) the amode will not
+ be parked in any such instruction. But that seems a
+ reasonable assumption. */
+ Bool aligned4imm = toBool(xferTy == Ity_I32 || xferTy == Ity_I64);
+
vassert(ty == Ity_I64);
/* Add64(expr,i), where i == sign-extend of (i & 0xFFFF) */
@@ -1958,6 +1982,9 @@
&& e->Iex.Binop.op == Iop_Add64
&& e->Iex.Binop.arg2->tag == Iex_Const
&& e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U64
+ && (aligned4imm ? uLong_is_4_aligned(e->Iex.Binop.arg2
+ ->Iex.Const.con->Ico.U64)
+ : True)
&& uLong_fits_in_16_bits(e->Iex.Binop.arg2
->Iex.Const.con->Ico.U64)) {
return PPCAMode_IR( (Int)e->Iex.Binop.arg2->Iex.Const.con->Ico.U64,
@@ -2816,7 +2843,7 @@
PPCAMode* am_addr;
HReg r_dst = newVRegF(env);
vassert(e->Iex.Load.ty == Ity_F32);
- am_addr = iselWordExpr_AMode(env, e->Iex.Load.addr);
+ am_addr = iselWordExpr_AMode(env, e->Iex.Load.addr, Ity_F32/*xfer*/);
addInstr(env, PPCInstr_FpLdSt(True/*load*/, 4, r_dst, am_addr));
return r_dst;
}
@@ -2964,7 +2991,7 @@
HReg r_dst = newVRegF(env);
PPCAMode* am_addr;
vassert(e->Iex.Load.ty == Ity_F64);
- am_addr = iselWordExpr_AMode(env, e->Iex.Load.addr);
+ am_addr = iselWordExpr_AMode(env, e->Iex.Load.addr, Ity_F64/*xfer*/);
addInstr(env, PPCInstr_FpLdSt(True/*load*/, 8, r_dst, am_addr));
return r_dst;
}
@@ -3211,7 +3238,7 @@
PPCAMode* am_addr;
HReg v_dst = newVRegV(env);
vassert(e->Iex.Load.ty == Ity_V128);
- am_addr = iselWordExpr_AMode(env, e->Iex.Load.addr);
+ am_addr = iselWordExpr_AMode(env, e->Iex.Load.addr, Ity_V128/*xfer*/);
addInstr(env, PPCInstr_AvLdSt( True/*load*/, 16, v_dst, am_addr));
return v_dst;
}
@@ -3618,7 +3645,7 @@
( mode64 && (tya != Ity_I64)) )
goto stmt_fail;
- am_addr = iselWordExpr_AMode(env, stmt->Ist.Store.addr);
+ am_addr = iselWordExpr_AMode(env, stmt->Ist.Store.addr, tyd/*of xfer*/);
if (tyd == Ity_I8 || tyd == Ity_I16 || tyd == Ity_I32 ||
(mode64 && (tyd == Ity_I64))) {
HReg r_src = iselWordExpr_R(env, stmt->Ist.Store.data);
|
|
From: Julian S. <js...@ac...> - 2007-03-09 15:46:00
|
> > gcc emits code like this when manipulating packed structures
> > with 8-byte fields on 2-byte boundaries.
>
> I'd like to make a small C test case that shows gcc doing this,
> but am not sure from your description what's needed. Can you
> show a fragment of C with a suitable type definition?
Well, I can't get gcc-4.1.0 to knowingly emit a misaligned ldx/stdx
on a ppc970 running SuSE 10.1 - it produces a verbose long sequence of
shifts and byte stores instead. But with an inline asm I can reproduce
it easily enough.
J
$ file ./badness
./badness: ELF 64-bit MSB executable, cisco 7500, version 1 (SYSV), for
GNU/Linux 2.6.4, dynamically linked (uses shared libs), for GNU/Linux 2.6.4,
not stripped
$ ./badness
....1122334455667788............
$ vTRUNK --tool=none ./badness
[...]
1122334455667788................
$ cat badness.c
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef
struct __attribute__ ((__packed__)) {
char before[2];
unsigned long long int w64;
char after[6];
}
T;
void foo (T* t, unsigned long long int w)
{
__asm__ __volatile__(
"stdx %0,%1,%2"
: : "b"(w), "b"(t), "b"(2) : "memory"
);
}
int main ( void )
{
T* t;
unsigned char* p;
int i;
assert(sizeof(T) == 16);
t = calloc(sizeof(T),1);
assert(t);
foo(t, 0x1122334455667788);
p = (unsigned char*)t;
for (i = 0; i < 16; i++)
if (p[i] == 0)
printf("..");
else
printf("%02x", (int)p[i]);
printf("\n");
return 0;
}
|
|
From: <sv...@va...> - 2007-03-09 14:24:57
|
Author: sewardj
Date: 2007-03-09 14:24:38 +0000 (Fri, 09 Mar 2007)
New Revision: 1738
Log:
Comment-only changes.
Modified:
trunk/priv/guest-ppc/toIR.c
Modified: trunk/priv/guest-ppc/toIR.c
===================================================================
--- trunk/priv/guest-ppc/toIR.c 2007-03-01 18:42:07 UTC (rev 1737)
+++ trunk/priv/guest-ppc/toIR.c 2007-03-09 14:24:38 UTC (rev 1738)
@@ -3519,7 +3519,8 @@
case 0x1F: // register offset
assign( EA, ea_rAor0_idxd( rA_addr, rB_addr ) );
break;
- case 0x3A: // immediate offset: 64bit
+ case 0x3A: // immediate offset: 64bit: ld/ldu/lwa: mask off
+ // lowest 2 bits of immediate before forming EA
simm16 = simm16 & 0xFFFFFFFC;
default: // immediate offset
assign( EA, ea_rAor0_simm( rA_addr, simm16 ) );
@@ -3711,9 +3712,10 @@
}
break;
- /* DS Form - 64bit Loads */
+ /* DS Form - 64bit Loads. In each case EA will have been formed
+ with the lowest 2 bits masked off the immediate offset. */
case 0x3A:
- switch (b1<<1 | b0) {
+ switch ((b1<<1) | b0) {
case 0x0: // ld (Load DWord, PPC64 p472)
DIP("ld r%u,%d(r%u)\n", rD_addr, simm16, rA_addr);
putIReg( rD_addr, loadBE(Ity_I64, mkexpr(EA)) );
@@ -3725,7 +3727,6 @@
return False;
}
DIP("ldu r%u,%d(r%u)\n", rD_addr, simm16, rA_addr);
- simm16 = simm16 & ~0x3;
putIReg( rD_addr, loadBE(Ity_I64, mkexpr(EA)) );
putIReg( rA_addr, mkexpr(EA) );
break;
@@ -3779,7 +3780,8 @@
case 0x1F: // register offset
assign( EA, ea_rAor0_idxd( rA_addr, rB_addr ) );
break;
- case 0x3E: // immediate offset: 64bit
+ case 0x3E: // immediate offset: 64bit: std/stdu: mask off
+ // lowest 2 bits of immediate before forming EA
simm16 = simm16 & 0xFFFFFFFC;
default: // immediate offset
assign( EA, ea_rAor0_simm( rA_addr, simm16 ) );
@@ -3908,9 +3910,10 @@
}
break;
- /* DS Form - 64bit Stores */
+ /* DS Form - 64bit Stores. In each case EA will have been formed
+ with the lowest 2 bits masked off the immediate offset. */
case 0x3E:
- switch (b1<<1 | b0) {
+ switch ((b1<<1) | b0) {
case 0x0: // std (Store DWord, PPC64 p580)
DIP("std r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
storeBE( mkexpr(EA), mkexpr(rS) );
|
|
From: Julian S. <js...@ac...> - 2007-03-09 11:30:08
|
Greg Wow, a real live code generation bug! Cool! Thanks for chasing that down. Now I think about this, I believe Paul Mackerras pointed out some problem along these lines a while back, but it fell through the cracks. Oops. > gcc emits code like this when manipulating packed structures > with 8-byte fields on 2-byte boundaries. I'd like to make a small C test case that shows gcc doing this, but am not sure from your description what's needed. Can you show a fragment of C with a suitable type definition? J |
|
From: Greg P. <gp...@us...> - 2007-03-09 10:49:01
|
vex ppc64 generates bad code for instruction sequences like this:
li r0, 2
stdx r3, r1, r0
gcc emits code like this when manipulating packed structures
with 8-byte fields on 2-byte boundaries.
First, vex's optimizer substitutes a constant 0x2 for r0:
------ IMark(0x100000F34, 4) ------
PUT(1024) = 0x100000F34:I64
t3 = GET:I64(24)
t14 = GET:I64(8)
t13 = Add64(t14,0x2:I64)
STbe(t13) = t3
Then instruction selection chooses `std` with an index not divisible by 4:
-- STbe(Add64(GET:I64(8),0x2:I64)) = GET:I64(24)
ldz %vR22,8(%r31)
ldz %vR23,24(%r31)
std %vR23,2(%vR22)
Finally, the assembler silently strips the index&3 part,
because `std` can't encode that:
std %r6,2(%r5)
F8 C5 00 00
...but 0xF8C50000 is `std r6, 0(r5)`, which writes to the wrong address.
host-ppc/hdefs.c contains the following:
if (opc1 == 58 || opc1 == 62) { // ld/std: mode64 only
vassert(mode64);
// kludge DS form: lowest 2 bits = 00
idx &= 0xFFFC;
}
That "kludge" doesn't work. Instead, Pin_Load and Pin_Store need to
use a temporary index register in this case, like Pin_AvLdSt does.
Index: VEX/priv/host-ppc/hdefs.c
===================================================================
--- VEX/priv/host-ppc/hdefs.c (revision 1737)
+++ VEX/priv/host-ppc/hdefs.c (working copy)
@@ -1300,21 +1300,43 @@
case Pin_Load: {
Bool idxd = toBool(i->Pin.Load.src->tag == Pam_RR);
UChar sz = i->Pin.Load.sz;
- UChar c_sz = sz==1 ? 'b' : sz==2 ? 'h' : sz==4 ? 'w' : 'd';
- vex_printf("l%cz%s ", c_sz, idxd ? "x" : "" );
- ppHRegPPC(i->Pin.Load.dst);
- vex_printf(",");
- ppPPCAMode(i->Pin.Load.src);
+ if (sz == 8 && !idxd && (i->Pin.Load.src->Pam.IR.index & 3) != 0) {
+ // ld can't encode idx & 3 != 0
+ // Use `li r30, idx; ldx r_dst, r30, r_base` instead.
+ ppLoadImm(hregPPC_GPR30(mode64),
+ i->Pin.Load.src->Pam.IR.index, mode64);
+ vex_printf(" ; ldx ");
+ ppHRegPPC(i->Pin.Load.dst);
+ vex_printf(",%%r30,");
+ ppHRegPPC(i->Pin.Load.src->Pam.IR.base);
+ } else {
+ UChar c_sz = sz==1 ? 'b' : sz==2 ? 'h' : sz==4 ? 'w' : 'd';
+ vex_printf("l%cz%s ", c_sz, idxd ? "x" : "" );
+ ppHRegPPC(i->Pin.Load.dst);
+ vex_printf(",");
+ ppPPCAMode(i->Pin.Load.src);
+ }
return;
}
case Pin_Store: {
UChar sz = i->Pin.Store.sz;
Bool idxd = toBool(i->Pin.Store.dst->tag == Pam_RR);
- UChar c_sz = sz==1 ? 'b' : sz==2 ? 'h' : sz==4 ? 'w' : /*8*/ 'd';
- vex_printf("st%c%s ", c_sz, idxd ? "x" : "" );
- ppHRegPPC(i->Pin.Store.src);
- vex_printf(",");
- ppPPCAMode(i->Pin.Store.dst);
+ if (sz == 8 && !idxd && (i->Pin.Store.dst->Pam.IR.index & 3) != 0) {
+ // std can't encode idx & 3 != 0
+ // Use `li r30, idx; stdx r_src, r30, r_base` instead.
+ ppLoadImm(hregPPC_GPR30(mode64),
+ i->Pin.Store.dst->Pam.IR.index, mode64);
+ vex_printf(" ; stdx ");
+ ppHRegPPC(i->Pin.Store.src);
+ vex_printf(",%%r30,");
+ ppHRegPPC(i->Pin.Store.dst->Pam.IR.base);
+ } else {
+ UChar c_sz = sz==1 ? 'b' : sz==2 ? 'h' : sz==4 ? 'w' : /*8*/ 'd';
+ vex_printf("st%c%s ", c_sz, idxd ? "x" : "" );
+ ppHRegPPC(i->Pin.Store.src);
+ vex_printf(",");
+ ppPPCAMode(i->Pin.Store.dst);
+ }
return;
}
case Pin_Set: {
@@ -1723,10 +1745,18 @@
case Pin_Load:
addRegUsage_PPCAMode(u, i->Pin.Load.src);
addHRegUse(u, HRmWrite, i->Pin.Load.dst);
+ /* ld can't encode all offsets; use R30 as temp */
+ if ( mode64 && i->Pin.Load.src->tag == Pam_IR && i->Pin.Load.sz == 8 &&
+ (i->Pin.Load.src->Pam.IR.index & 3) != 0 )
+ addHRegUse(u, HRmWrite, hregPPC_GPR30(mode64));
return;
case Pin_Store:
addHRegUse(u, HRmRead, i->Pin.Store.src);
addRegUsage_PPCAMode(u, i->Pin.Store.dst);
+ /* std can't encode all offsets; use R30 as temp */
+ if ( mode64 && i->Pin.Store.dst->tag == Pam_IR && i->Pin.Store.sz == 8 &&
+ (i->Pin.Store.dst->Pam.IR.index & 3) != 0 )
+ addHRegUse(u, HRmWrite, hregPPC_GPR30(mode64));
return;
case Pin_Set:
addHRegUse(u, HRmWrite, i->Pin.Set.dst);
@@ -2386,10 +2416,11 @@
rA = iregNo(am->Pam.IR.base, mode64);
idx = am->Pam.IR.index;
- if (opc1 == 58 || opc1 == 62) { // ld/std: mode64 only
+ if (opc1 == 58 || opc1 == 62) {
+ // ld/std can't encode idx&3 != 0.
+ // Use `li r30, idx; ldx/stdx r_sd, r30, r_base` instead.
vassert(mode64);
- // kludge DS form: lowest 2 bits = 00
- idx &= 0xFFFC;
+ vassert((idx & 3) == 0);
}
p = mkFormD(p, opc1, rSD, rA, idx);
return p;
@@ -3035,7 +3066,16 @@
case 8: opc1 = 58; vassert(mode64); break;
default: goto bad;
}
- p = doAMode_IR(p, opc1, r_dst, am_addr, mode64);
+ if (opc1 == 58 && (am_addr->Pam.IR.index & 3) != 0) {
+ // ld can't encode idx & 3 != 0.
+ // Use `li r30, idx; ldx r_dst, r30, r_base` instead.
+ UInt r_idx = 30;
+ UInt r_base = iregNo(am_addr->Pam.IR.base, mode64);
+ p = mkLoadImm(p, r_idx, am_addr->Pam.IR.index, mode64);
+ p = mkFormX(p, 31, r_dst, r_idx, r_base, 21, 0);
+ } else {
+ p = doAMode_IR(p, opc1, r_dst, am_addr, mode64);
+ }
goto done;
case Pam_RR:
switch(sz) {
@@ -3108,7 +3148,16 @@
default:
goto bad;
}
- p = doAMode_IR(p, opc1, r_src, am_addr, mode64);
+ if (opc1 == 62 && (am_addr->Pam.IR.index & 3) != 0) {
+ // std can't encode idx & 3 != 0.
+ // Use `li r30, idx; stdx r_src, r30, r_base` instead.
+ UInt r_idx = 30;
+ UInt r_base = iregNo(am_addr->Pam.IR.base, mode64);
+ p = mkLoadImm(p, r_idx, am_addr->Pam.IR.index, mode64);
+ p = mkFormX(p, 31, r_src, r_idx, r_base, 149, 0);
+ } else {
+ p = doAMode_IR(p, opc1, r_src, am_addr, mode64);
+ }
goto done;
case Pam_RR:
switch(sz) {
@@ -3352,7 +3401,7 @@
r_idx = iregNo(i->Pin.AvLdSt.addr->Pam.RR.index, mode64);
}
- if (i->Pin.FpLdSt.isLoad) { // Load from memory (1,2,4,16)
+ if (i->Pin.AvLdSt.isLoad) { // Load from memory (1,2,4,16)
opc2 = (sz==1) ? 7 : (sz==2) ? 39 : (sz==4) ? 71 : 103;
p = mkFormX(p, 31, v_reg, r_idx, r_base, opc2, 0);
} else { // Store to memory (1,2,4,16)
--
Greg Parker gp...@us...
|
|
From: <js...@ac...> - 2007-03-09 10:47:50
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2007-03-09 09:00:02 GMT 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 == 219 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) none/tests/ppc32/round (stdout) none/tests/ppc32/round (stderr) none/tests/ppc32/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: Tom H. <th...@cy...> - 2007-03-09 04:46:47
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-03-09 03:00:03 GMT 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 == 291 tests, 7 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/amd64/defcfaexpr (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/tls (stdout) |
|
From: Tom H. <th...@cy...> - 2007-03-09 03:23:40
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2007-03-09 03:10:05 GMT 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 == 289 tests, 5 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/amd64/defcfaexpr (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) |
|
From: Tom H. <th...@cy...> - 2007-03-09 03:22:50
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-03-09 03:15:02 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/ccpthdBH.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccpthdBH.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccpthdBH.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccpthdBH.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccpthdBH.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccpthdBH.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccpthdBH.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccpthdBH.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/cc4tpxDv.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc4tpxDv.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc4tpxDv.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc4tpxDv.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc4tpxDv.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc4tpxDv.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc4tpxDv.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cc4tpxDv.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-03-09/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Mar 9 03:18:53 2007 --- new.short Fri Mar 9 03:22:42 2007 *************** *** 7,16 **** Last 20 lines of verbose log follow echo ! /tmp/cc4tpxDv.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc4tpxDv.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc4tpxDv.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc4tpxDv.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc4tpxDv.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc4tpxDv.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc4tpxDv.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cc4tpxDv.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 --- 7,16 ---- Last 20 lines of verbose log follow echo ! /tmp/ccpthdBH.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccpthdBH.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccpthdBH.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccpthdBH.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccpthdBH.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccpthdBH.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccpthdBH.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccpthdBH.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2007-03-09 03:18:39
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-03-09 03:05:05 GMT 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 == 289 tests, 7 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/amd64/defcfaexpr (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: <js...@ac...> - 2007-03-09 01:16:20
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-03-09 02:00:01 CET Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 225 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: <sv...@va...> - 2007-03-08 19:57:46
|
Author: sewardj Date: 2007-03-08 19:57:43 +0000 (Thu, 08 Mar 2007) New Revision: 6637 Log: Update. Modified: trunk/docs/internals/3_2_BUGSTATUS.txt Modified: trunk/docs/internals/3_2_BUGSTATUS.txt =================================================================== --- trunk/docs/internals/3_2_BUGSTATUS.txt 2007-03-08 19:56:58 UTC (rev 6636) +++ trunk/docs/internals/3_2_BUGSTATUS.txt 2007-03-08 19:57:43 UTC (rev 6637) @@ -56,10 +56,18 @@ get rid of kludge_then_addDiCfSI (r6611; do not merge) [Bug 142279] New: long indirect jmp unhandled: unhandled Grp5(M) case 5 -int3 (133984) ? +int3 (133984): vx1736; merge to stable +vx1737 (26 2E 64 65 90 %es:%cs:%fs:%gs:nop) - x86 - merge +Make configure check try for -fno-stack-protector (users, 26 Feb) +possible false errors on amd64 cmpq/jae, cmpq/jbe + +r6630 pending ?? ptrace extra reason codes +r6631 pending 142186 dd support for some I2C ioctls. + + ------- Bugs reported and fixed in 3.2.3 ------ TRUNK 32BRANCH PRI BUG# WHAT |
|
From: <sv...@va...> - 2007-03-08 19:56:58
|
Author: sewardj Date: 2007-03-08 19:56:58 +0000 (Thu, 08 Mar 2007) New Revision: 6636 Log: Record which SuSE 10.1 packages are needed for a successful 'make dist'. Modified: trunk/docs/README Modified: trunk/docs/README =================================================================== --- trunk/docs/README 2007-03-08 19:56:14 UTC (rev 6635) +++ trunk/docs/README 2007-03-08 19:56:58 UTC (rev 6636) @@ -119,8 +119,26 @@ in recent distros. -Notes [Dec. 2006] +Notes [Mar. 2007] ----------------- +For SuSE 10.1, I have to install the following packages to get a +working toolchain. Non-indented ones I asked YaST to install; +indented ones are extras it added on: + +docbook_4 + iso_ent + xmlcharent +docbook-dsssl-stylesheets + docbook_3 +docbook-xsl-stylesheets +xmltex + gd + latex-ucs + te_latex + tetex + xaw3d +passivetex + pdfxmltex still bombs when building the print docs. On SuSE 10.1 I edited /etc/texmf/web2c/texmf.cnf and changed pool_size.pdfxmltex = 500000 |
|
From: <sv...@va...> - 2007-03-08 19:56:24
|
Author: sewardj
Date: 2007-03-08 19:56:14 +0000 (Thu, 08 Mar 2007)
New Revision: 6635
Log:
Generate valid XML (conforming to docs/internals/xml-output.txt) even
when VG_(name_of_launcher) is NULL.
Modified:
trunk/coregrind/m_main.c
Modified: trunk/coregrind/m_main.c
===================================================================
--- trunk/coregrind/m_main.c 2007-03-08 01:52:37 UTC (rev 6634)
+++ trunk/coregrind/m_main.c 2007-03-08 19:56:14 UTC (rev 6635)
@@ -845,6 +845,9 @@
if (VG_(name_of_launcher))
VG_(message)(Vg_UserMsg, " <exe>%t</exe>",
VG_(name_of_launcher));
+ else
+ VG_(message)(Vg_UserMsg, " <exe>%t</exe>",
+ "(launcher name unknown)");
for (i = 0; i < VG_(sizeXA)( VG_(args_for_valgrind) ); i++) {
VG_(message)(Vg_UserMsg,
" <arg>%t</arg>",
|