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
(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: Julian S. <js...@ac...> - 2007-03-21 17:14:34
|
> There nothing seems to be wrong in VG. Good :-) > OProfile does not seem to check symbol sizes as given in the symbol table > entries, but calculates the sizes on its own by sorting the symbols > according to their address, and calculate the size by address difference to > the next symbol in the (sorted) list. > > However, I do not understand the reason why OProfile does it this way. > Perhaps there were some buggy linkers in the past which generated bogus > size values? I think I know. Imagine a situation where only part of the address range is covered, if you take in to acount the symbol sizes: symA start=0 len=10 symB start=20 len=20 Then for 10 .. 19 there is no associated symbol, and V's reader will say "there is no symbol here; I cannot help you." OProfile will regard symA as extending all the way to the start of symB. Of course that may be more confusing than helpful, but that's the effect. The situation is real, especially for stripped .so's like the mentioned libz.so etc, because the stripping process removes symbol information for non-exported functions, and so the symbol table is "full of holes" so to speak. I looked into this just recently (for libz.so.1.2.3, curiously enough). In fact Valgrind also has a symbol-table cleanup pass, canonicalise_symtab() which does truncate any overlapping symbol ranges, to guarantee that any address is only associated with at most one symbol. J |
|
From: Josef W. <Jos...@gm...> - 2007-03-21 16:57:07
|
On Wednesday 21 March 2007, Julian Seward wrote: > > I'm confused. So you're saying that Valgrind's handling of dynamic > symbol tables is wrong? Ah, I think I got it. There nothing seems to be wrong in VG. I sent a patch for OProfile to also read in the dynamic symbol table. However, I did it in a rush and did not really check for correct behavior in general. So John's comment about "fundamental error" probably was not about using the dynamic symbol table in general, but about my patch ;-) OProfile does not seem to check symbol sizes as given in the symbol table entries, but calculates the sizes on its own by sorting the symbols according to their address, and calculate the size by address difference to the next symbol in the (sorted) list. However, I do not understand the reason why OProfile does it this way. Perhaps there were some buggy linkers in the past which generated bogus size values? Josef |
|
From: Julian S. <js...@ac...> - 2007-03-21 16:13:06
|
On Wednesday 21 March 2007 16:04, Dirk Mueller wrote: > On Sunday, 11. March 2007, Julian Seward wrote: > > Maybe glibc's getenv is fine and the problem is there are invalid > > strings in the environment. The only way I can reproduce this is to > > add (putenv) a non-terminated string containing just '=' and then do > > a getenv: > > Yep, I can confirm. I couldn't find another issue either. So there seems to > be some issue with the code. are you reverting your getenv wrapper? Dirk, thanks for the confirmation. Yes, the getenv wrapper is already reverted. J |
|
From: Dirk M. <dm...@gm...> - 2007-03-21 16:04:41
|
On Sunday, 11. March 2007, Julian Seward wrote: > Maybe glibc's getenv is fine and the problem is there are invalid > strings in the environment. The only way I can reproduce this is to > add (putenv) a non-terminated string containing just '=' and then do > a getenv: Yep, I can confirm. I couldn't find another issue either. So there seems to be some issue with the code. are you reverting your getenv wrapper? Dirk |
|
From: <js...@ac...> - 2007-03-21 11:37:31
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2007-03-21 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: Julian S. <js...@ac...> - 2007-03-21 11:27:55
|
I'm confused. So you're saying that Valgrind's handling of dynamic symbol tables is wrong? On Wednesday 21 March 2007 11:02, Josef Weidendorfer wrote: > Hi, > > [BTW, I am not not subscribed to this mailing list, and > I added valgrind developers mailing list to CC] > > > On Fri, Mar 16, 2007 at 11:35:53PM +0100, Josef Weidendorfer wrote: > > > Obviously, on my OpenSuse 10.2, libz.so is stripped and does not have a > > > symbol table, so opreport only shows the sum for all functions in the > > > library. However, Valgrind also loads the dynamic symbol table, so that > > > cachegrinds report showed the different functions in libz.so. > > > > Which is a fundamental error. The dynsym by its very nature does not > > have unexported symbols, fine > > so any samples taken against those symbols will > > be erroneously reported against the wrong symbol. I don't follow the implication. dynsym may not have unexported symbols, but what does that have to do with whether or not symbols have proper size/length information? J |
|
From: Josef W. <Jos...@gm...> - 2007-03-21 11:02:54
|
Hi, [BTW, I am not not subscribed to this mailing list, and I added valgrind developers mailing list to CC] > On Fri, Mar 16, 2007 at 11:35:53PM +0100, Josef Weidendorfer wrote: > > Obviously, on my OpenSuse 10.2, libz.so is stripped and does not have a > > symbol table, so opreport only shows the sum for all functions in the > > library. However, Valgrind also loads the dynamic symbol table, so that > > cachegrinds report showed the different functions in libz.so. > > Which is a fundamental error. The dynsym by its very nature does not > have unexported symbols, so any samples taken against those symbols will > be erroneously reported against the wrong symbol. As there are no > guarantees as to how the binary is laid out in memory, this means the > profile is at best incomplete and at worst totally misleading. Interesting. So you say that we can not rely on the sizes of dynamic symbols? If that is the case, we probably should change something in Valgrind, too. Here, the output of a "objdump -T ..." looks perfectly fine. With correct symbol sizes, there is no way to get misleading information. (Of course, unexported symbols will be aggregated into one entry). Josef |
|
From: Tom H. <th...@cy...> - 2007-03-21 03:23:44
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2007-03-21 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 == 291 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == 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-21 03:22:52
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-03-21 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/ccO74gei.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccO74gei.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccO74gei.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccO74gei.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccO74gei.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccO74gei.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccO74gei.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccO74gei.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-21/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-03-21/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-03-21/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-03-21/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-03-21/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/ccEToLAc.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccEToLAc.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccEToLAc.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccEToLAc.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccEToLAc.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccEToLAc.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccEToLAc.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccEToLAc.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-21/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-03-21/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-03-21/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-03-21/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-03-21/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Mar 21 03:18:57 2007 --- new.short Wed Mar 21 03:22:44 2007 *************** *** 7,16 **** Last 20 lines of verbose log follow echo ! /tmp/ccEToLAc.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccEToLAc.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccEToLAc.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccEToLAc.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccEToLAc.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccEToLAc.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccEToLAc.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccEToLAc.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/ccO74gei.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccO74gei.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccO74gei.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccO74gei.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccO74gei.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccO74gei.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccO74gei.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccO74gei.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2007-03-21 03:18:49
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-03-21 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 == 291 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == 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-21 03:14:15
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-03-21 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 == 293 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == 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-21 02:27:42
|
Author: sewardj Date: 2007-03-21 02:27:38 +0000 (Wed, 21 Mar 2007) New Revision: 6654 Log: Unbreak the build on ppc64-linux. Modified: trunk/coregrind/Makefile.am Modified: trunk/coregrind/Makefile.am =================================================================== --- trunk/coregrind/Makefile.am 2007-03-19 18:38:55 UTC (rev 6653) +++ trunk/coregrind/Makefile.am 2007-03-21 02:27:38 UTC (rev 6654) @@ -63,6 +63,8 @@ no_op_client_for_valgrind_SOURCES = no_op_client_for_valgrind.c no_op_client_for_valgrind_CPPFLAGS = $(AM_CPPFLAGS_PRI) no_op_client_for_valgrind_CFLAGS = $(AM_CFLAGS_PRI) +no_op_client_for_valgrind_CCASFLAGS = $(AM_CCASFLAGS_PRI) +no_op_client_for_valgrind_LDFLAGS = $(AM_CFLAGS_PRI) # #---------------------------------------------------------- |
|
From: <js...@ac...> - 2007-03-21 01:03:43
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-03-21 02:00:01 CET Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... failed Last 20 lines of verbose log follow echo ranlib libreplacemalloc_toolpreload_ppc64_linux.a if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../coregrind -I.. -I../coregrind/ppc64 -I../coregrind/linux -I../coregrind/ppc64-linux -I../include -I../VEX/pub -DVG_PLATFORM="\"ppc64-linux\"" -DVGA_ppc64=1 -DVGO_linux=1 -DVGP_ppc64_linux=1 -DVG_LIBDIR="\"/home/sewardj/Nightly/Inst/lib/valgrind"\" -m64 -O -g -Wmissing-prototypes -Winline -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -MT valgrind-launcher-linux.o -MD -MP -MF ".deps/valgrind-launcher-linux.Tpo" -c -o valgrind-launcher-linux.o `test -f 'launcher-linux.c' || echo './'`launcher-linux.c; \ then mv -f ".deps/valgrind-launcher-linux.Tpo" ".deps/valgrind-launcher-linux.Po"; else rm -f ".deps/valgrind-launcher-linux.Tpo"; exit 1; fi if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../coregrind -I.. -I../coregrind/ppc64 -I../coregrind/linux -I../coregrind/ppc64-linux -I../include -I../VEX/pub -DVG_PLATFORM="\"ppc64-linux\"" -DVGA_ppc64=1 -DVGO_linux=1 -DVGP_ppc64_linux=1 -DVG_LIBDIR="\"/home/sewardj/Nightly/Inst/lib/valgrind"\" -m64 -O -g -Wmissing-prototypes -Winline -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -MT valgrind-m_debuglog.o -MD -MP -MF ".deps/valgrind-m_debuglog.Tpo" -c -o valgrind-m_debuglog.o `test -f 'm_debuglog.c' || echo './'`m_debuglog.c; \ then mv -f ".deps/valgrind-m_debuglog.Tpo" ".deps/valgrind-m_debuglog.Po"; else rm -f ".deps/valgrind-m_debuglog.Tpo"; exit 1; fi gcc -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -o valgrind -m64 -O -g -Wmissing-prototypes -Winline -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations valgrind-launcher-linux.o valgrind-m_debuglog.o if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../coregrind -I.. -I../coregrind/ppc64 -I../coregrind/linux -I../coregrind/ppc64-linux -I../include -I../VEX/pub -DVG_PLATFORM="\"ppc64-linux\"" -DVGA_ppc64=1 -DVGO_linux=1 -DVGP_ppc64_linux=1 -DVG_LIBDIR="\"/home/sewardj/Nightly/Inst/lib/valgrind"\" -m64 -O -g -Wmissing-prototypes -Winline -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -MT no_op_client_for_valgrind-no_op_client_for_valgrind.o -MD -MP -MF ".deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Tpo" -c -o no_op_client_for_valgrind-no_op_client_for_valgrind.o `test -f 'no_op_client_for_valgrind.c' || echo './'`no_op_client_for_valgrind.c; \ then mv -f ".deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Tpo" ".deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Po"; else rm -f ".deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Tpo"; exit 1; fi gcc -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -o no_op_client_for_valgrind no_op_client_for_valgrind-no_op_client_for_valgrind.o /usr/bin/ld: warning: powerpc:common64 architecture of input file `no_op_client_for_valgrind-no_op_client_for_valgrind.o' is incompatible with powerpc:common output no_op_client_for_valgrind-no_op_client_for_valgrind.o: In function `main': /home/sewardj/Nightly/valgrind/coregrind/no_op_client_for_valgrind.c:11: relocation truncated to fit: R_PPC64_REL24 against `fwrite' collect2: ld returned 1 exit status make[3]: *** [no_op_client_for_valgrind] Error 1 make[3]: Leaving directory `/home/sewardj/Nightly/valgrind/coregrind' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/sewardj/Nightly/valgrind/coregrind' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/sewardj/Nightly/valgrind' make: *** [all] Error 2 |
|
From: <sv...@va...> - 2007-03-21 00:21:58
|
Author: sewardj
Date: 2007-03-21 00:21:56 +0000 (Wed, 21 Mar 2007)
New Revision: 1743
Log:
amd64 equivalents of vx1742 (synthesise SIGILL in the normal way for
some obscure invalid instruction cases, rather than asserting)
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/priv/guest-amd64/toIR.c
===================================================================
--- trunk/priv/guest-amd64/toIR.c 2007-03-20 14:18:45 UTC (rev 1742)
+++ trunk/priv/guest-amd64/toIR.c 2007-03-21 00:21:56 UTC (rev 1743)
@@ -2934,6 +2934,7 @@
case 3: break; // SBB
case 4: op8 = Iop_And8; break; case 5: op8 = Iop_Sub8; break;
case 6: op8 = Iop_Xor8; break; case 7: op8 = Iop_Sub8; break;
+ /*NOTREACHED*/
default: vpanic("dis_Grp1(amd64): unhandled case");
}
@@ -3001,7 +3002,7 @@
ULong dis_Grp2 ( Prefix pfx,
Long delta, UChar modrm,
Int am_sz, Int d_sz, Int sz, IRExpr* shift_expr,
- HChar* shift_expr_txt )
+ HChar* shift_expr_txt, Bool* decode_OK )
{
/* delta on entry points at the modrm byte. */
HChar dis_buf[50];
@@ -3012,6 +3013,8 @@
IRTemp dst1 = newTemp(ty);
IRTemp addr = IRTemp_INVALID;
+ *decode_OK = True;
+
vassert(sz == 1 || sz == 2 || sz == 4 || sz == 8);
/* Put value to shift/rotate in dst0. */
@@ -3033,8 +3036,13 @@
isRotateC = False;
switch (gregLO3ofRM(modrm)) { case 2: case 3: isRotateC = True; }
+ if (gregLO3ofRM(modrm) == 6) {
+ *decode_OK = False;
+ return delta;
+ }
+
if (!isShift && !isRotate && !isRotateC) {
- vex_printf("\ncase %d\n", gregLO3ofRM(modrm));
+ /*NOTREACHED*/
vpanic("dis_Grp2(Reg): unhandled case(amd64)");
}
@@ -3108,6 +3116,7 @@
case 4: op64 = Iop_Shl64; break;
case 5: op64 = Iop_Shr64; break;
case 7: op64 = Iop_Sar64; break;
+ /*NOTREACHED*/
default: vpanic("dis_Grp2:shift"); break;
}
@@ -3442,7 +3451,7 @@
/* Group 3 extended opcodes. */
static
-ULong dis_Grp3 ( Prefix pfx, Int sz, Long delta )
+ULong dis_Grp3 ( Prefix pfx, Int sz, Long delta, Bool* decode_OK )
{
Long d64;
UChar modrm;
@@ -3452,6 +3461,7 @@
IRType ty = szToITy(sz);
IRTemp t1 = newTemp(ty);
IRTemp dst1, src, dst0;
+ *decode_OK = True;
modrm = getUChar(delta);
if (epartIsReg(modrm)) {
switch (gregLO3ofRM(modrm)) {
@@ -3469,6 +3479,9 @@
nameIRegE(sz, pfx, modrm));
break;
}
+ case 1:
+ *decode_OK = False;
+ return delta;
case 2: /* NOT */
delta++;
putIRegE(sz, pfx, modrm,
@@ -3518,9 +3531,8 @@
nameIRegE(sz, pfx, modrm));
break;
default:
- vex_printf(
- "unhandled Grp3(R) case %d\n", (Int)gregLO3ofRM(modrm));
- vpanic("Grp3(amd64)");
+ /*NOTREACHED*/
+ vpanic("Grp3(amd64,R)");
}
} else {
addr = disAMode ( &len, pfx, delta, dis_buf,
@@ -3545,7 +3557,9 @@
DIP("test%c $%lld, %s\n", nameISize(sz), d64, dis_buf);
break;
}
- /* probably OK, but awaiting test case */
+ case 1:
+ *decode_OK = False;
+ return delta;
case 2: /* NOT */
storeLE( mkexpr(addr), unop(mkSizedOp(ty,Iop_Not8), mkexpr(t1)));
DIP("not%c %s\n", nameISize(sz), dis_buf);
@@ -3576,9 +3590,8 @@
DIP("idiv%c %s\n", nameISize(sz), dis_buf);
break;
default:
- vex_printf(
- "unhandled Grp3(M) case %d\n", (Int)gregLO3ofRM(modrm));
- vpanic("Grp3(amd64)");
+ /*NOTREACHED*/
+ vpanic("Grp3(amd64,M)");
}
}
return delta;
@@ -3587,7 +3600,7 @@
/* Group 4 extended opcodes. */
static
-ULong dis_Grp4 ( Prefix pfx, Long delta )
+ULong dis_Grp4 ( Prefix pfx, Long delta, Bool* decode_OK )
{
Int alen;
UChar modrm;
@@ -3596,6 +3609,8 @@
IRTemp t1 = newTemp(ty);
IRTemp t2 = newTemp(ty);
+ *decode_OK = True;
+
modrm = getUChar(delta);
if (epartIsReg(modrm)) {
assign(t1, getIRegE(1, pfx, modrm));
@@ -3611,9 +3626,8 @@
setFlags_INC_DEC( False, t2, ty );
break;
default:
- vex_printf(
- "unhandled Grp4(R) case %d\n", (Int)gregLO3ofRM(modrm));
- vpanic("Grp4(amd64,R)");
+ *decode_OK = False;
+ return delta;
}
delta++;
DIP("%sb %s\n", nameGrp4(gregLO3ofRM(modrm)),
@@ -3633,9 +3647,8 @@
setFlags_INC_DEC( False, t2, ty );
break;
default:
- vex_printf(
- "unhandled Grp4(M) case %d\n", (Int)gregLO3ofRM(modrm));
- vpanic("Grp4(amd64,M)");
+ *decode_OK = False;
+ return delta;
}
delta += alen;
DIP("%sb %s\n", nameGrp4(gregLO3ofRM(modrm)), dis_buf);
@@ -3647,7 +3660,8 @@
/* Group 5 extended opcodes. */
static
ULong dis_Grp5 ( VexAbiInfo* vbi,
- Prefix pfx, Int sz, Long delta, DisResult* dres )
+ Prefix pfx, Int sz, Long delta,
+ DisResult* dres, Bool* decode_OK )
{
Int len;
UChar modrm;
@@ -3659,6 +3673,8 @@
IRTemp t3 = IRTemp_INVALID;
Bool showSz = True;
+ *decode_OK = True;
+
modrm = getUChar(delta);
if (epartIsReg(modrm)) {
assign(t1, getIRegE(sz,pfx,modrm));
@@ -3703,9 +3719,8 @@
showSz = False;
break;
default:
- vex_printf(
- "unhandled Grp5(R) case %d\n", (Int)gregLO3ofRM(modrm));
- vpanic("Grp5(amd64)");
+ *decode_OK = False;
+ return delta;
}
delta++;
DIP("%s%c %s\n", nameGrp5(gregLO3ofRM(modrm)),
@@ -3774,9 +3789,8 @@
}
default:
unhandled:
- vex_printf(
- "unhandled Grp5(M) case %d\n", (Int)gregLO3ofRM(modrm));
- vpanic("Grp5(amd64)");
+ *decode_OK = False;
+ return delta;
}
delta += len;
DIP("%s%c %s\n", nameGrp5(gregLO3ofRM(modrm)),
@@ -13669,7 +13683,8 @@
/* ------------------------ (Grp2 extensions) ---------- */
- case 0xC0: /* Grp2 Ib,Eb */
+ case 0xC0: { /* Grp2 Ib,Eb */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
modrm = getUChar(delta);
am_sz = lengthAMode(pfx,delta);
@@ -13677,20 +13692,24 @@
d64 = getUChar(delta + am_sz);
sz = 1;
delta = dis_Grp2 ( pfx, delta, modrm, am_sz, d_sz, sz,
- mkU8(d64 & 0xFF), NULL );
+ mkU8(d64 & 0xFF), NULL, &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
-
- case 0xC1: /* Grp2 Ib,Ev */
+ }
+ case 0xC1: { /* Grp2 Ib,Ev */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
modrm = getUChar(delta);
am_sz = lengthAMode(pfx,delta);
d_sz = 1;
d64 = getUChar(delta + am_sz);
delta = dis_Grp2 ( pfx, delta, modrm, am_sz, d_sz, sz,
- mkU8(d64 & 0xFF), NULL );
+ mkU8(d64 & 0xFF), NULL, &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
-
- case 0xD0: /* Grp2 1,Eb */
+ }
+ case 0xD0: { /* Grp2 1,Eb */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
modrm = getUChar(delta);
am_sz = lengthAMode(pfx,delta);
@@ -13698,62 +13717,82 @@
d64 = 1;
sz = 1;
delta = dis_Grp2 ( pfx, delta, modrm, am_sz, d_sz, sz,
- mkU8(d64), NULL );
+ mkU8(d64), NULL, &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
-
- case 0xD1: /* Grp2 1,Ev */
+ }
+ case 0xD1: { /* Grp2 1,Ev */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
modrm = getUChar(delta);
am_sz = lengthAMode(pfx,delta);
d_sz = 0;
d64 = 1;
delta = dis_Grp2 ( pfx, delta, modrm, am_sz, d_sz, sz,
- mkU8(d64), NULL );
+ mkU8(d64), NULL, &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
-
- case 0xD2: /* Grp2 CL,Eb */
+ }
+ case 0xD2: { /* Grp2 CL,Eb */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
modrm = getUChar(delta);
am_sz = lengthAMode(pfx,delta);
d_sz = 0;
sz = 1;
delta = dis_Grp2 ( pfx, delta, modrm, am_sz, d_sz, sz,
- getIRegCL(), "%cl" );
+ getIRegCL(), "%cl", &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
-
- case 0xD3: /* Grp2 CL,Ev */
+ }
+ case 0xD3: { /* Grp2 CL,Ev */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
modrm = getUChar(delta);
am_sz = lengthAMode(pfx,delta);
d_sz = 0;
delta = dis_Grp2 ( pfx, delta, modrm, am_sz, d_sz, sz,
- getIRegCL(), "%cl" );
+ getIRegCL(), "%cl", &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
+ }
/* ------------------------ (Grp3 extensions) ---------- */
- case 0xF6: /* Grp3 Eb */
+ case 0xF6: { /* Grp3 Eb */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
- delta = dis_Grp3 ( pfx, 1, delta );
+ delta = dis_Grp3 ( pfx, 1, delta, &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
- case 0xF7: /* Grp3 Ev */
+ }
+ case 0xF7: { /* Grp3 Ev */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
- delta = dis_Grp3 ( pfx, sz, delta );
+ delta = dis_Grp3 ( pfx, sz, delta, &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
+ }
/* ------------------------ (Grp4 extensions) ---------- */
- case 0xFE: /* Grp4 Eb */
+ case 0xFE: { /* Grp4 Eb */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
- delta = dis_Grp4 ( pfx, delta );
+ delta = dis_Grp4 ( pfx, delta, &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
+ }
/* ------------------------ (Grp5 extensions) ---------- */
- case 0xFF: /* Grp5 Ev */
+ case 0xFF: { /* Grp5 Ev */
+ Bool decode_OK = True;
if (haveF2orF3(pfx)) goto decode_failure;
- delta = dis_Grp5 ( vmi, pfx, sz, delta, &dres );
+ delta = dis_Grp5 ( vmi, pfx, sz, delta, &dres, &decode_OK );
+ if (!decode_OK) goto decode_failure;
break;
+ }
/* ------------------------ Escapes to 2-byte opcodes -- */
|