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
(24) |
|
2
(50) |
3
(26) |
4
(17) |
5
(18) |
6
(20) |
7
(20) |
8
(16) |
|
9
(19) |
10
(11) |
11
(17) |
12
(17) |
13
(20) |
14
(18) |
15
(18) |
|
16
(15) |
17
(27) |
18
(22) |
19
(31) |
20
(19) |
21
(21) |
22
(14) |
|
23
(14) |
24
(18) |
25
(15) |
26
|
27
(1) |
28
|
29
(2) |
|
30
(16) |
|
|
|
|
|
|
|
From: <sv...@va...> - 2012-09-02 21:59:11
|
sewardj 2012-09-02 22:59:01 +0100 (Sun, 02 Sep 2012)
New Revision: 12951
Log:
Move the version number along.
Modified files:
branches/VALGRIND_3_8_BRANCH/configure.in
Modified: branches/VALGRIND_3_8_BRANCH/configure.in (+1 -1)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/configure.in 2012-09-02 22:53:17 +01:00 (rev 12950)
+++ branches/VALGRIND_3_8_BRANCH/configure.in 2012-09-02 22:59:01 +01:00 (rev 12951)
@@ -8,7 +8,7 @@
##------------------------------------------------------------##
# Process this file with autoconf to produce a configure script.
-AC_INIT([Valgrind],[3.8.0],[val...@li...])
+AC_INIT([Valgrind],[3.8.1.SVN],[val...@li...])
AC_CONFIG_SRCDIR(coregrind/m_main.c)
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign])
|
|
From: <sv...@va...> - 2012-09-02 21:53:26
|
sewardj 2012-09-02 22:53:17 +0100 (Sun, 02 Sep 2012)
New Revision: 12950
Log:
Update.
Modified files:
trunk/NEWS
Modified: trunk/NEWS (+29 -27)
===================================================================
--- trunk/NEWS 2012-09-02 22:20:27 +01:00 (rev 12949)
+++ trunk/NEWS 2012-09-02 22:53:17 +01:00 (rev 12950)
@@ -20,35 +20,37 @@
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
where XXXXXX is the bug number as listed below.
-219156 [380] handle statically linked malloc and/or other malloc libs
-254088 [380] Valgrind should know about UD2 instruction
-274695 [390] s390x: Support "compare to/from logical" instructions (new in z196)
-275800 [390] s390x: Add support for the ecag instruction (part 1)
-284004 [381] == 301281
-289584 [381] Unhandled instruction: 0xF 0x29 0xE5 (MOVAPS)
-295808 [381] amd64->IR: 0xF3 0xF 0xBC 0xC0 (TZCNT)
-301280 [380] == 254088
-301281 [381] valgrind hangs on OS X when the process calls system()
-301902 [380] == 254088
-304346 [380] == 219156
-304754 [380] NEWS blows TeX's little mind
-304867 [381] implement MOVBE instruction in x86 mode
-305042 [381] amd64: implement 0F 7F encoding of movq between two registers
-305199 [381] ARM: implement QDADD and QDSUB
-305321 [381] amd64->IR: 0xF 0xD 0xC (prefetchw)
-n-i-bz [381] shmat of a segment > 4Gb does not work
-n-i-bz [381] gdbserver_tests/simulate_control_c script wrong USR1 sig# on mips
-n-i-bz [381] vgdb ptrace calls wrong on mips, causing blocked syscalls to fail
-n-i-bz [381] Fixes for more MPI false positives
+v = verified in 3_8_BRANCH
-305513 [381] killed by fatal signal: SIGSEGV
-304980 [381] Assertion 'lo <= hi' failed in vgModuleLocal_find_rx_mapping
-298281 [381] wcslen causes false(?) uninitialised value warnings
-n-i-bz [381] exp-sgcheck's memcpy causes programs to segfault
-305690 [381] DRD reporting invalid semaphore when sem_trywait returns
- EAGAIN or sem_timedwait returns ETIMEDOUT
-305926 [381] Invalid alignment checks for some AVX instructions
+219156 [380] handle statically linked malloc and/or other malloc libs
+254088 [380] Valgrind should know about UD2 instruction
+274695 [390] s390x: Support "compare to/from logical" instructions (new in z196)
+275800 [390] s390x: Add support for the ecag instruction (part 1)
+284004 v [381] == 301281
+289584 [381] Unhandled instruction: 0xF 0x29 0xE5 (MOVAPS)
+295808 [381] amd64->IR: 0xF3 0xF 0xBC 0xC0 (TZCNT)
+301280 [380] == 254088
+301281 v [381] valgrind hangs on OS X when the process calls system()
+301902 [380] == 254088
+304346 [380] == 219156
+304754 [380] NEWS blows TeX's little mind
+304867 [381] implement MOVBE instruction in x86 mode
+305042 [381] amd64: implement 0F 7F encoding of movq between two registers
+305199 [381] ARM: implement QDADD and QDSUB
+305321 [381] amd64->IR: 0xF 0xD 0xC (prefetchw)
+n-i-bz [381] shmat of a segment > 4Gb does not work
+n-i-bz [381] gdbserver_tests/simulate_control_c script wrong USR1 sig# on mips
+n-i-bz [381] vgdb ptrace calls wrong on mips, causing blocked syscalls to fail
+n-i-bz [381] Fixes for more MPI false positives
+305513 [381] killed by fatal signal: SIGSEGV
+304980 [381] Assertion 'lo <= hi' failed in vgModuleLocal_find_rx_mapping
+298281 [381] wcslen causes false(?) uninitialised value warnings
+n-i-bz [381] exp-sgcheck's memcpy causes programs to segfault
+305690 [381] DRD reporting invalid semaphore when sem_trywait returns
+ EAGAIN or sem_timedwait returns ETIMEDOUT
+305926 [381] Invalid alignment checks for some AVX instructions
+n-i-bz [381] volatile in stack check, re clang
Release 3.8.0 (10 August 2012)
|
|
From: <sv...@va...> - 2012-09-02 21:20:35
|
sewardj 2012-09-02 22:20:27 +0100 (Sun, 02 Sep 2012)
New Revision: 12949
Log:
Update.
Modified files:
trunk/NEWS
trunk/docs/internals/3_8_BUGSTATUS.txt
Modified: trunk/NEWS (+2 -0)
===================================================================
--- trunk/NEWS 2012-09-02 22:19:29 +01:00 (rev 12948)
+++ trunk/NEWS 2012-09-02 22:20:27 +01:00 (rev 12949)
@@ -47,8 +47,10 @@
n-i-bz [381] exp-sgcheck's memcpy causes programs to segfault
305690 [381] DRD reporting invalid semaphore when sem_trywait returns
EAGAIN or sem_timedwait returns ETIMEDOUT
+305926 [381] Invalid alignment checks for some AVX instructions
+
Release 3.8.0 (10 August 2012)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.8.0 is a feature release with many improvements and the usual
Modified: trunk/docs/internals/3_8_BUGSTATUS.txt (+22 -33)
===================================================================
--- trunk/docs/internals/3_8_BUGSTATUS.txt 2012-09-02 22:19:29 +01:00 (rev 12948)
+++ trunk/docs/internals/3_8_BUGSTATUS.txt 2012-09-02 22:20:27 +01:00 (rev 12949)
@@ -13,39 +13,30 @@
-- PUSH TO 3_8_BRANCH
-2469 Fix a mixup ..
-12873 ?? Use -s USR1 instead of -10 to send SIGUSR1 signal
-12874 Fix n-i-bz shmat of a segment > 4Gb does not work
-12878 ?? On Darwin, use __NR_poll_nocancel rather than __NR_poll
+(B38=2500) 2469 Fix a mixup ..
+(B38=12930) 12873 n-i-bz: Use -s USR1 instead of -10 to send SIGUSR1 signal
+(B38=12931) 12874 n-i-bz: shmat of a segment > 4Gb does not work
+(B38=12933) 12878 n-i-bz: On Darwin, use __NR_poll_nocancel rather than __NR_poll
+(B38=12934) 12879 + 12882 + 12883 (301281, OSX hang on "system")
+(B38=12936) 12881 ptrace mips stuff
+(B38=12938) 12885 (Iop_DPBtoBCD and Iop_BCDtoDPB fix)
+(B38=2502) 2475 (289584: Handle a reg-reg encoding of MOVAPS)
+(B38=2503) 2476 (305042: Implement 0F 7F encoding of movq reg-reg)
+(B38=12940) 12887 (n-i-bz libmpiwrap.c fixes)
+(B38=2504) 2477 (305321: Re-enable 'prefetch m8' and 'prefetchw m8')
+(B38=2505) 2478 (295617: Fix LZCNT and TZCNT properly)
+(B38=2506) 2479 (305199: Implement QDADD and QDSUB)
+(B38=2507) 2480 (304867: Implement MOVBE in 32 bit mode)
+(B38=12941) 12891 (304980: Fix up range checking in ML_(addLineInfo))
+(B38=12942) 12892 (305513: Fix skipping of block forms)
+(B38=12943) 12893 (298281: Implement a wrapper for wcslen on Linux)
+(B38=12944) 12894 (n-i-bz, exp-sgcheck memcpy)
+(B38=12945) 12897/8 (305690: andle non-zero sem_*wait() return values correctly)
+(B38=2508) 2499 (305926: Invalid alignment checks for some AVX instructions)
+(B38=12946) 12923 (304980: Guard against negative symbol sizes)
+(B38=12948) 12947 (n-i-bz: volatile in stack check, re clang)
-12879 + 12882 + 12883 (301281)
-12881 ptrace mips stuff
-12885 (op_DPBtoBCD and Iop_BCDtoDPB fix)
-
-2475 (289584)
-2476 (305042)
-
-12887 (n-i-bz libmpiwrap.c fixes)
-
-2477 (305321)
-2478 (295617)
-2479 (305199) also testcase 12888 ?
-2480 (304867)
-
-12891 (304980) (provided it doesn't break anything else)
-12892 (305513)
-12893 (298281)
-12894 (n-i-bz, exp-sgcheck memcpy)
-
-merge r12897 and r12898 to the 3.8.1 branch. (305690)
-
-- volatile in stack check, re clang (dev@, Andrew Morrow)
-- 305926 Invalid alignment checks for some AVX instructions
-
-12923 (304980 more)
-
-
-------- Bugs brought forward from 3_7_BUGSTATUS.txt --------
291310 FXSAVE instruction marks memory as undefined on amd64
@@ -100,8 +91,6 @@
305728 Add support for AVX2 instructions
-305926 Invalid alignment checks for some AVX instructions
-
305948 ppc64: code generation for ShlD64 / ShrD64 asserts
305957 m_debuginfo/d3basics.c:965 (vgModuleLocal_evaluate_GX):
|
|
From: <sv...@va...> - 2012-09-02 21:19:38
|
sewardj 2012-09-02 22:19:29 +0100 (Sun, 02 Sep 2012)
New Revision: 12948
Log:
Merge from trunk, r12947 (Fix stack bounds check, n-i-bz)
Modified directories:
branches/VALGRIND_3_8_BRANCH/
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_main.c
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
Modified: branches/VALGRIND_3_8_BRANCH/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Property changed: branches/VALGRIND_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12894,12897-12898,12923
+ /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12894,12897-12898,12923,12947
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12894,12897-12898,12923
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12894,12897-12898,12923,12947
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_main.c (+18 -6)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/coregrind/m_main.c 2012-09-02 22:17:36 +01:00 (rev 12947)
+++ branches/VALGRIND_3_8_BRANCH/coregrind/m_main.c 2012-09-02 22:19:29 +01:00 (rev 12948)
@@ -1613,12 +1613,24 @@
VG_(debugLog)(1, "main", "Checking current stack is plausible\n");
{ HChar* limLo = (HChar*)(&VG_(interim_stack).bytes[0]);
HChar* limHi = limLo + sizeof(VG_(interim_stack));
- HChar* aLocal = (HChar*)&limLo; /* any auto local will do */
- /* "Apple clang version 4.0 (tags/Apple/clang-421.0.57) (based on
- LLVM 3.1svn)" appears to miscompile the following check,
- causing run to abort at this point (in 64-bit mode) even
- though aLocal is within limLo .. limHi. Try building with
- gcc instead. */
+ HChar* volatile
+ aLocal = (HChar*)&limLo; /* any auto local will do */
+ /* Re "volatile": Apple clang version 4.0
+ (tags/Apple/clang-421.0.57) (based on LLVM 3.1svn)" appeared
+ to miscompile the following check, causing run to abort at
+ this point (in 64-bit mode) even though aLocal is within limLo
+ .. limHi. But in fact clang is within its rights to do
+ strange things here. "The reason is that the comparisons
+ aLocal < limLo and aLocal >= limHi cause undefined behaviour
+ (according to c99 6.5.8) because they compare pointers that do
+ not point into the same aggregate." Adding "volatile" appears
+ to fix it because "The compiler would have to prove that there
+ is undefined behavior in order to exploit it. But as a
+ volatile variable can change its value in ways invisible to
+ the compiler, the compiler must make the conservative
+ assumption that it points into the same aggregate as the other
+ pointer its compared against. I.e. the behaviour is possibly
+ defined." (Analysis by Florian Krohm). */
if (aLocal < limLo || aLocal >= limHi) {
/* something's wrong. Stop. */
VG_(debugLog)(0, "main", "Root stack %p to %p, a local %p\n",
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12894,12897-12898,12923
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12894,12897-12898,12923,12947
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12894,12897-12898,12923
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12894,12897-12898,12923,12947
|
|
From: <sv...@va...> - 2012-09-02 21:17:45
|
sewardj 2012-09-02 22:17:36 +0100 (Sun, 02 Sep 2012)
New Revision: 12947
Log:
"Fix" stack bounds check when compiled by Clang 4.0. Fix from Andrew
Morrow, analysis by Florian Krohm.
Modified files:
trunk/coregrind/m_main.c
Modified: trunk/coregrind/m_main.c (+18 -6)
===================================================================
--- trunk/coregrind/m_main.c 2012-09-02 22:04:15 +01:00 (rev 12946)
+++ trunk/coregrind/m_main.c 2012-09-02 22:17:36 +01:00 (rev 12947)
@@ -1618,12 +1618,24 @@
VG_(debugLog)(1, "main", "Checking current stack is plausible\n");
{ HChar* limLo = (HChar*)(&VG_(interim_stack).bytes[0]);
HChar* limHi = limLo + sizeof(VG_(interim_stack));
- HChar* aLocal = (HChar*)&limLo; /* any auto local will do */
- /* "Apple clang version 4.0 (tags/Apple/clang-421.0.57) (based on
- LLVM 3.1svn)" appears to miscompile the following check,
- causing run to abort at this point (in 64-bit mode) even
- though aLocal is within limLo .. limHi. Try building with
- gcc instead. */
+ HChar* volatile
+ aLocal = (HChar*)&limLo; /* any auto local will do */
+ /* Re "volatile": Apple clang version 4.0
+ (tags/Apple/clang-421.0.57) (based on LLVM 3.1svn)" appeared
+ to miscompile the following check, causing run to abort at
+ this point (in 64-bit mode) even though aLocal is within limLo
+ .. limHi. But in fact clang is within its rights to do
+ strange things here. "The reason is that the comparisons
+ aLocal < limLo and aLocal >= limHi cause undefined behaviour
+ (according to c99 6.5.8) because they compare pointers that do
+ not point into the same aggregate." Adding "volatile" appears
+ to fix it because "The compiler would have to prove that there
+ is undefined behavior in order to exploit it. But as a
+ volatile variable can change its value in ways invisible to
+ the compiler, the compiler must make the conservative
+ assumption that it points into the same aggregate as the other
+ pointer its compared against. I.e. the behaviour is possibly
+ defined." (Analysis by Florian Krohm). */
if (aLocal < limLo || aLocal >= limHi) {
/* something's wrong. Stop. */
VG_(debugLog)(0, "main", "Root stack %p to %p, a local %p\n",
|
|
From: <sv...@va...> - 2012-09-02 21:04:23
|
sewardj 2012-09-02 22:04:15 +0100 (Sun, 02 Sep 2012)
New Revision: 12946
Log:
Merge from trunk, r12923 (Guard against negative symbol sizes in ELF
symbol tables, #304980)
Modified directories:
branches/VALGRIND_3_8_BRANCH/
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/priv_storage.h
branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/readelf.c
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
Modified: branches/VALGRIND_3_8_BRANCH/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/readelf.c (+19 -5)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/readelf.c 2012-09-02 21:58:17 +01:00 (rev 12945)
+++ branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/readelf.c 2012-09-02 22:04:15 +01:00 (rev 12946)
@@ -236,10 +236,21 @@
*sym_name_out = sym_name;
*sym_avma_out = sym_svma; /* we will bias this shortly */
*is_text_out = True;
- *sym_size_out = (Int)sym->st_size;
*sym_tocptr_out = 0; /* unknown/inapplicable */
*from_opd_out = False;
*is_ifunc = False;
+ /* Get the symbol size, but restrict it to fit in a signed 32 bit
+ int. Also, deal with the stupid case of negative size by making
+ the size be 1. Note that sym->st_size has type UWord,
+ effectively. */
+ { Word size_tmp = (Word)sym->st_size;
+ Word max_Int = (1LL << 31) - 1;
+ if (size_tmp < 0) size_tmp = 1;
+ if (size_tmp > max_Int) size_tmp = max_Int;
+ *sym_size_out = (Int)size_tmp;
+ }
+ /* After this point refer only to *sym_size_out and not to
+ sym->st_size. */
/* Figure out if we're interested in the symbol. Firstly, is it of
the right flavour? */
@@ -251,9 +262,9 @@
&&
(ELFXX_ST_TYPE(sym->st_info) == STT_FUNC
|| ELFXX_ST_TYPE(sym->st_info) == STT_OBJECT
-#ifdef STT_GNU_IFUNC
+# ifdef STT_GNU_IFUNC
|| ELFXX_ST_TYPE(sym->st_info) == STT_GNU_IFUNC
-#endif
+# endif
);
/* Work out the svma and bias for each section as it will appear in
@@ -351,7 +362,7 @@
if (!plausible
&& *is_text_out
&& ELFXX_ST_TYPE(sym->st_info) == STT_NOTYPE
- && sym->st_size > 0
+ && *sym_size_out > 0
&& di->opd_present
&& di->opd_size > 0
&& *sym_avma_out >= di->opd_avma
@@ -384,7 +395,7 @@
in /system/lib/libc.so: strlen strcmp strcpy memcmp memcpy
in /system/bin/linker: __dl_strcmp __dl_strlen
*/
- if (sym->st_size == 0) {
+ if (*sym_size_out == 0) {
# if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
*sym_size_out = 2048;
# else
@@ -556,6 +567,9 @@
background. */
Bool in_rx;
vg_assert(di->fsm.have_rx_map);
+ /* This could actually wrap around and cause
+ ML_(find_rx_mapping) to assert. But that seems so unlikely,
+ let's wait for it to happen before fixing it. */
in_rx = (ML_(find_rx_mapping)(di, *sym_avma_out,
*sym_avma_out + *sym_size_out) != NULL);
if (in_text)
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12894,12897-12898
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12894,12897-12898,12923
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12894,12897-12898
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12894,12897-12898,12923
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12894,12897-12898
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12894,12897-12898,12923
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/priv_storage.h (+4 -2)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/priv_storage.h 2012-09-02 21:58:17 +01:00 (rev 12945)
+++ branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/priv_storage.h 2012-09-02 22:04:15 +01:00 (rev 12946)
@@ -872,8 +872,10 @@
if not found. Binary search. */
extern Word ML_(search_one_fpotab) ( struct _DebugInfo* di, Addr ptr );
-/* Helper function for the most often needed searching for an rx mapping
- containing the specified address range. */
+/* Helper function for the most often needed searching for an rx
+ mapping containing the specified address range. The range must
+ fall entirely within the mapping to be considered to be within it.
+ Asserts if lo > hi; caller must ensure this doesn't happen. */
extern struct _DebugInfoMapping* ML_(find_rx_mapping) ( struct _DebugInfo* di,
Addr lo, Addr hi );
Property changed: branches/VALGRIND_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12894,12897-12898
+ /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12894,12897-12898,12923
|
|
From: <sv...@va...> - 2012-09-02 21:01:44
|
sewardj 2012-09-02 22:01:35 +0100 (Sun, 02 Sep 2012)
New Revision: 2508
Log:
Merge from trunk, r2499 (Remove redundant alignment checks, #305926)
Modified directories:
branches/VEX_3_8_BRANCH/
Modified files:
branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c
Modified: branches/VEX_3_8_BRANCH/
Modified: branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c (+2 -3)
===================================================================
--- branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 21:44:47 +01:00 (rev 2507)
+++ branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 22:01:35 +01:00 (rev 2508)
@@ -16028,7 +16028,8 @@
DIP("%sphminposuw %s,%s\n", mbV, nameXMMReg(rE), nameXMMReg(rG));
} else {
addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
- gen_SEGV_if_not_16_aligned(addr);
+ if (!isAvx)
+ gen_SEGV_if_not_16_aligned(addr);
assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
delta += alen;
DIP("%sphminposuw %s,%s\n", mbV, dis_buf, nameXMMReg(rG));
@@ -25898,7 +25899,6 @@
nameXMMReg(rV), nameXMMReg(rG));
} else {
addr = disAMode( &alen, vbi, pfx, delta, dis_buf, 1 );
- gen_SEGV_if_not_16_aligned( addr );
assign( sV, loadLE(Ity_V128, mkexpr(addr)) );
imm8 = getUChar(delta+alen);
delta += alen+1;
@@ -26291,7 +26291,6 @@
} else {
addr = disAMode( &alen, vbi, pfx, delta, dis_buf,
1/* imm8 is 1 byte after the amode */ );
- gen_SEGV_if_not_16_aligned( addr );
assign( src_vec, loadLE( Ity_V128, mkexpr(addr) ) );
imm8 = (Int)getUChar(delta+alen);
delta += alen+1;
Property changed: branches/VEX_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:2272-2295
/trunk:2469,2475-2480
+ /branches/TCHAIN:2272-2295
/trunk:2469,2475-2480,2499
|
|
From: <sv...@va...> - 2012-09-02 20:58:26
|
sewardj 2012-09-02 21:58:17 +0100 (Sun, 02 Sep 2012)
New Revision: 12945
Log:
Merge from trunk, revs 12897 and 12898. (Handle non-zero sem_*wait()
return values correctly, #305690)
Modified directories:
branches/VALGRIND_3_8_BRANCH/
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
branches/VALGRIND_3_8_BRANCH/drd/drd_semaphore.c
Modified: branches/VALGRIND_3_8_BRANCH/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12894
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12894,12897-12898
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12894
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12894,12897-12898
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12894
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12894,12897-12898
Property changed: branches/VALGRIND_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12894
+ /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12894,12897-12898
Modified: branches/VALGRIND_3_8_BRANCH/drd/drd_semaphore.c (+10 -7)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/drd/drd_semaphore.c 2012-09-02 21:54:16 +01:00 (rev 12944)
+++ branches/VALGRIND_3_8_BRANCH/drd/drd_semaphore.c 2012-09-02 21:58:17 +01:00 (rev 12945)
@@ -339,8 +339,7 @@
/**
* Called after sem_wait() finished.
- * @note Do not rely on the value of 'waited' -- some glibc versions do
- * not set it correctly.
+ * @note Some C libraries do not set the 'waited' value correctly.
*/
void DRD_(semaphore_post_wait)(const DrdThreadId tid, const Addr semaphore,
const Bool waited)
@@ -348,16 +347,17 @@
struct semaphore_info* p;
Segment* sg;
+ tl_assert(waited == 0 || waited == 1);
p = semaphore_get(semaphore);
if (s_trace_semaphore)
- DRD_(trace_msg)("[%d] sem_wait 0x%lx value %u -> %u",
+ DRD_(trace_msg)("[%d] sem_wait 0x%lx value %u -> %u%s",
DRD_(thread_get_running_tid)(), semaphore,
- p ? p->value : 0, p ? p->value - 1 : 0);
+ p ? p->value : 0, p ? p->value - waited : 0,
+ waited ? "" : " (did not wait)");
- if (p)
- {
+ if (p) {
p->waiters--;
- p->value--;
+ p->value -= waited;
}
/*
@@ -378,6 +378,9 @@
return;
}
+ if (!waited)
+ return;
+
if (p->waits_to_skip > 0)
p->waits_to_skip--;
else
|
|
From: <sv...@va...> - 2012-09-02 20:54:24
|
sewardj 2012-09-02 21:54:16 +0100 (Sun, 02 Sep 2012)
New Revision: 12944
Log:
Merge from trunk, r12894 (Change exp-sgcheck's memcpy implementation
to be memmove-like, n-i-bz)
Modified directories:
branches/VALGRIND_3_8_BRANCH/
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
branches/VALGRIND_3_8_BRANCH/exp-sgcheck/h_intercepts.c
Modified: branches/VALGRIND_3_8_BRANCH/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12893
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12894
Modified: branches/VALGRIND_3_8_BRANCH/exp-sgcheck/h_intercepts.c (+63 -35)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/exp-sgcheck/h_intercepts.c 2012-09-02 21:52:10 +01:00 (rev 12943)
+++ branches/VALGRIND_3_8_BRANCH/exp-sgcheck/h_intercepts.c 2012-09-02 21:54:16 +01:00 (rev 12944)
@@ -229,44 +229,72 @@
#define MEMCPY(soname, fnname) \
void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- ( void *dst, const void *src, SizeT sz ); \
+ ( void *dst, const void *src, SizeT len ); \
void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- ( void *dest, const void *src, SizeT sz ) \
+ ( void *dst, const void *src, SizeT len ) \
{ \
- const UChar* s = (const UChar*)src; \
- UChar* d = (UChar*)dest; \
- const UWord* sW = (const UWord*)src; \
- UWord* dW = (UWord*)dest; \
- const UWord al = sizeof(UWord)-1; \
- \
- if (0 == (((UWord)dW) & al) && 0 == (((UWord)sW) & al)) { \
- while (sz >= 4 * sizeof(UWord)) { \
- dW[0] = sW[0]; \
- dW[1] = sW[1]; \
- dW[2] = sW[2]; \
- dW[3] = sW[3]; \
- sz -= 4 * sizeof(UWord); \
- dW += 4; \
- sW += 4; \
+ const Addr WS = sizeof(UWord); /* 8 or 4 */ \
+ const Addr WM = WS - 1; /* 7 or 3 */ \
+ \
+ if (len > 0) { \
+ if (dst < src) { \
+ \
+ /* Copying backwards. */ \
+ SizeT n = len; \
+ Addr d = (Addr)dst; \
+ Addr s = (Addr)src; \
+ \
+ if (((s^d) & WM) == 0) { \
+ /* s and d have same UWord alignment. */ \
+ /* Pull up to a UWord boundary. */ \
+ while ((s & WM) != 0 && n >= 1) \
+ { *(UChar*)d = *(UChar*)s; s += 1; d += 1; n -= 1; } \
+ /* Copy UWords. */ \
+ while (n >= WS) \
+ { *(UWord*)d = *(UWord*)s; s += WS; d += WS; n -= WS; } \
+ if (n == 0) \
+ return dst; \
+ } \
+ if (((s|d) & 1) == 0) { \
+ /* Both are 16-aligned; copy what we can thusly. */ \
+ while (n >= 2) \
+ { *(UShort*)d = *(UShort*)s; s += 2; d += 2; n -= 2; } \
+ } \
+ /* Copy leftovers, or everything if misaligned. */ \
+ while (n >= 1) \
+ { *(UChar*)d = *(UChar*)s; s += 1; d += 1; n -= 1; } \
+ \
+ } else if (dst > src) { \
+ \
+ SizeT n = len; \
+ Addr d = ((Addr)dst) + n; \
+ Addr s = ((Addr)src) + n; \
+ \
+ /* Copying forwards. */ \
+ if (((s^d) & WM) == 0) { \
+ /* s and d have same UWord alignment. */ \
+ /* Back down to a UWord boundary. */ \
+ while ((s & WM) != 0 && n >= 1) \
+ { s -= 1; d -= 1; *(UChar*)d = *(UChar*)s; n -= 1; } \
+ /* Copy UWords. */ \
+ while (n >= WS) \
+ { s -= WS; d -= WS; *(UWord*)d = *(UWord*)s; n -= WS; } \
+ if (n == 0) \
+ return dst; \
+ } \
+ if (((s|d) & 1) == 0) { \
+ /* Both are 16-aligned; copy what we can thusly. */ \
+ while (n >= 2) \
+ { s -= 2; d -= 2; *(UShort*)d = *(UShort*)s; n -= 2; } \
+ } \
+ /* Copy leftovers, or everything if misaligned. */ \
+ while (n >= 1) \
+ { s -= 1; d -= 1; *(UChar*)d = *(UChar*)s; n -= 1; } \
+ \
+ } \
} \
- if (sz == 0) \
- return dest; \
- while (sz >= 1 * sizeof(UWord)) { \
- dW[0] = sW[0]; \
- sz -= 1 * sizeof(UWord); \
- dW += 1; \
- sW += 1; \
- } \
- if (sz == 0) \
- return dest; \
- s = (const UChar*)sW; \
- d = (UChar*)dW; \
- } \
- \
- while (sz--) \
- *d++ = *s++; \
- \
- return dest; \
+ \
+ return dst; \
}
MEMCPY(VG_Z_LIBC_SONAME, memcpy)
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12893
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12894
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12893
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12894
Property changed: branches/VALGRIND_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12893
+ /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12894
|
|
From: <sv...@va...> - 2012-09-02 20:52:18
|
sewardj 2012-09-02 21:52:10 +0100 (Sun, 02 Sep 2012)
New Revision: 12943
Log:
Merge from trunk, r12893 (Implement a wrapper for wcslen on Linux, #298281)
Modified directories:
branches/VALGRIND_3_8_BRANCH/
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
branches/VALGRIND_3_8_BRANCH/memcheck/mc_replace_strmem.c
Modified: branches/VALGRIND_3_8_BRANCH/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12892
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12893
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12892
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12893
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12892
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12893
Property changed: branches/VALGRIND_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12892
+ /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12893
Modified: branches/VALGRIND_3_8_BRANCH/memcheck/mc_replace_strmem.c (+27 -0)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/memcheck/mc_replace_strmem.c 2012-09-02 21:50:15 +01:00 (rev 12942)
+++ branches/VALGRIND_3_8_BRANCH/memcheck/mc_replace_strmem.c 2012-09-02 21:52:10 +01:00 (rev 12943)
@@ -96,6 +96,7 @@
20340 STRSPN
20350 STRCASESTR
20360 MEMRCHR
+ 20370 WCSLEN
*/
@@ -1543,6 +1544,32 @@
#endif
+/*---------------------- wcslen ----------------------*/
+
+// This is a wchar_t equivalent to strlen. Unfortunately
+// we don't have wchar_t available here, but it looks like
+// a 32 bit int on Linux. I don't know if that is also
+// valid on MacOSX.
+
+#define WCSLEN(soname, fnname) \
+ SizeT VG_REPLACE_FUNCTION_EZU(20370,soname,fnname) \
+ ( const UInt* str ); \
+ SizeT VG_REPLACE_FUNCTION_EZU(20370,soname,fnname) \
+ ( const UInt* str ) \
+ { \
+ SizeT i = 0; \
+ while (str[i] != 0) i++; \
+ return i; \
+ }
+
+#if defined(VGO_linux)
+ WCSLEN(VG_Z_LIBC_SONAME, wcslen)
+
+#elif defined(VGO_darwin)
+
+#endif
+
+
/*------------------------------------------------------------*/
/*--- Improve definedness checking of process environment ---*/
/*------------------------------------------------------------*/
|
|
From: John R. <jr...@bi...> - 2012-09-02 20:52:04
|
On 09/02/2012 11:44 AM, Florian Krohm wrote:
> I would like to propose that we make the following changes related to
> emulation warnings:
[snip]
> (2) Issue a particular warning only once. Currently, we issue it up
> to three times.
[snip]
> With respect to how often a specific warning is issued, I do not see an
> advantage in giving it more than once. The amount of information
> provided is the same in each such warning, as the message is fixed. Only
> the backtrace could be different.
I agree that receiving the same warning dozens of times is annoying,
but I appreciate small natural numbers: "One, two, three, infinity."
[a favorite book by George Gamow;
http://en.wikipedia.org/wiki/One_Two_Three_..._Infinity ]
Particularly because I can see three tracebacks, I consider that
the amount of information grows with each warning, up to 3 times or so.
[Are they all the same? Each different? All from the same phase
of the execution of the app (environment/startup, pass1, ...)? ]
--
|
|
From: <sv...@va...> - 2012-09-02 20:50:24
|
sewardj 2012-09-02 21:50:15 +0100 (Sun, 02 Sep 2012)
New Revision: 12942
Log:
Merge from trunk, r12892 (Fix skipping of block forms, #305513)
Modified directories:
branches/VALGRIND_3_8_BRANCH/
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/readdwarf.c
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
Modified: branches/VALGRIND_3_8_BRANCH/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Property changed: branches/VALGRIND_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891
+ /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891-12892
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/readdwarf.c (+3 -2)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/readdwarf.c 2012-09-02 21:48:03 +01:00 (rev 12941)
+++ branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/readdwarf.c 2012-09-02 21:50:15 +01:00 (rev 12942)
@@ -1115,7 +1115,9 @@
case 0x01: /* FORM_addr */ p += addr_size; break;
case 0x03: /* FORM_block2 */ p += ML_(read_UShort)(p) + 2; break;
case 0x04: /* FORM_block4 */ p += ML_(read_UInt)(p) + 4; break;
- case 0x09: /* FORM_block */ p += read_leb128U( &p ); break;
+ case 0x09: /* FORM_block */ /* fallthrough */
+ case 0x18: /* FORM_exprloc */ { ULong block_len = read_leb128U( &p );
+ p += block_len; break; }
case 0x0a: /* FORM_block1 */ p += *p + 1; break;
case 0x0c: /* FORM_flag */ p++; break;
case 0x0d: /* FORM_sdata */ read_leb128S( &p ); break;
@@ -1126,7 +1128,6 @@
case 0x13: /* FORM_ref4 */ p += 4; break;
case 0x14: /* FORM_ref8 */ p += 8; break;
case 0x15: /* FORM_ref_udata */ read_leb128U( &p ); break;
- case 0x18: /* FORM_exprloc */ p += read_leb128U( &p ); break;
case 0x19: /* FORM_flag_present */break;
case 0x20: /* FORM_ref_sig8 */ p += 8; break;
case 0x1f20: /* FORM_GNU_ref_alt */ p += ui->dw64 ? 8 : 4; break;
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891-12892
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891-12892
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891-12892
|
|
From: <sv...@va...> - 2012-09-02 20:48:11
|
sewardj 2012-09-02 21:48:03 +0100 (Sun, 02 Sep 2012)
New Revision: 12941
Log:
Merge from trunk, r12891 (Fix up range checking in ML_(addLineInfo),
#304980)
Modified directories:
branches/VALGRIND_3_8_BRANCH/
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/storage.c
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
Modified: branches/VALGRIND_3_8_BRANCH/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887,12891
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/storage.c (+13 -5)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/storage.c 2012-09-02 21:31:39 +01:00 (rev 12940)
+++ branches/VALGRIND_3_8_BRANCH/coregrind/m_debuginfo/storage.c 2012-09-02 21:48:03 +01:00 (rev 12941)
@@ -347,7 +347,7 @@
{
static const Bool debug = False;
DiLoc loc;
- Int size = next - this;
+ UWord size = next - this;
/* Ignore zero-sized locs */
if (this == next) return;
@@ -377,22 +377,30 @@
if (0)
VG_(message)(Vg_DebugMsg,
"warning: line info address range too large "
- "at entry %d: %d\n", entry, size);
+ "at entry %d: %lu\n", entry, size);
size = 1;
}
+ /* At this point, we know that the original value for |size|, viz
+ |next - this|, will only still be used in the case where
+ |this| <u |next|, so it can't have underflowed. Considering
+ that and the three checks that follow it, the following must
+ hold. */
+ vg_assert(size >= 1);
+ vg_assert(size <= MAX_LOC_SIZE);
+
/* Rule out ones which are completely outside the r-x mapped area.
See "Comment_Regarding_Text_Range_Checks" elsewhere in this file
for background and rationale. */
vg_assert(di->fsm.have_rx_map && di->fsm.have_rw_map);
- if (ML_(find_rx_mapping)(di, this, next - 1) == NULL) {
+ if (ML_(find_rx_mapping)(di, this, this + size - 1) == NULL) {
if (0)
VG_(message)(Vg_DebugMsg,
"warning: ignoring line info entry falling "
"outside current DebugInfo: %#lx %#lx %#lx %#lx\n",
di->text_avma,
di->text_avma + di->text_size,
- this, next-1);
+ this, this + size - 1);
return;
}
@@ -420,7 +428,7 @@
loc.dirname = dirname;
if (0) VG_(message)(Vg_DebugMsg,
- "addLoc: addr %#lx, size %d, line %d, file %s\n",
+ "addLoc: addr %#lx, size %lu, line %d, file %s\n",
this,size,lineno,filename);
addLoc ( di, &loc );
Property changed: branches/VALGRIND_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887
+ /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887,12891
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887,12891
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887,12891
|
|
From: <sv...@va...> - 2012-09-02 20:44:57
|
sewardj 2012-09-02 21:44:47 +0100 (Sun, 02 Sep 2012)
New Revision: 2507
Log:
Merge from trunk, r2480 (Implement MOVBE in 32 bit mode. Fixes
#304867.)
Modified directories:
branches/VEX_3_8_BRANCH/
Modified files:
branches/VEX_3_8_BRANCH/priv/guest_x86_toIR.c
Modified: branches/VEX_3_8_BRANCH/
Property changed: branches/VEX_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:2272-2295
/trunk:2469,2475-2479
+ /branches/TCHAIN:2272-2295
/trunk:2469,2475-2480
Modified: branches/VEX_3_8_BRANCH/priv/guest_x86_toIR.c (+62 -16)
===================================================================
--- branches/VEX_3_8_BRANCH/priv/guest_x86_toIR.c 2012-09-02 21:42:15 +01:00 (rev 2506)
+++ branches/VEX_3_8_BRANCH/priv/guest_x86_toIR.c 2012-09-02 21:44:47 +01:00 (rev 2507)
@@ -7871,6 +7871,38 @@
return False;
}
+static IRTemp math_BSWAP ( IRTemp t1, IRType ty )
+{
+ IRTemp t2 = newTemp(ty);
+ if (ty == Ity_I32) {
+ assign( t2,
+ binop(
+ Iop_Or32,
+ binop(Iop_Shl32, mkexpr(t1), mkU8(24)),
+ binop(
+ Iop_Or32,
+ binop(Iop_And32, binop(Iop_Shl32, mkexpr(t1), mkU8(8)),
+ mkU32(0x00FF0000)),
+ binop(Iop_Or32,
+ binop(Iop_And32, binop(Iop_Shr32, mkexpr(t1), mkU8(8)),
+ mkU32(0x0000FF00)),
+ binop(Iop_And32, binop(Iop_Shr32, mkexpr(t1), mkU8(24)),
+ mkU32(0x000000FF) )
+ )))
+ );
+ return t2;
+ }
+ if (ty == Ity_I16) {
+ assign(t2,
+ binop(Iop_Or16,
+ binop(Iop_Shl16, mkexpr(t1), mkU8(8)),
+ binop(Iop_Shr16, mkexpr(t1), mkU8(8)) ));
+ return t2;
+ }
+ vassert(0);
+ /*NOTREACHED*/
+ return IRTemp_INVALID;
+}
/*------------------------------------------------------------*/
/*--- Disassemble a single instruction ---*/
@@ -12623,7 +12655,34 @@
);
goto decode_success;
}
+
+ /* 0F 38 F0 = MOVBE m16/32(E), r16/32(G) */
+ /* 0F 38 F1 = MOVBE r16/32(G), m16/32(E) */
+ if ((sz == 2 || sz == 4)
+ && insn[0] == 0x0F && insn[1] == 0x38
+ && (insn[2] == 0xF0 || insn[2] == 0xF1)
+ && !epartIsReg(insn[3])) {
+ modrm = insn[3];
+ addr = disAMode(&alen, sorb, delta + 3, dis_buf);
+ delta += 3 + alen;
+ ty = szToITy(sz);
+ IRTemp src = newTemp(ty);
+
+ if (insn[2] == 0xF0) { /* LOAD */
+ assign(src, loadLE(ty, mkexpr(addr)));
+ IRTemp dst = math_BSWAP(src, ty);
+ putIReg(sz, gregOfRM(modrm), mkexpr(dst));
+ DIP("movbe %s,%s\n", dis_buf, nameIReg(sz, gregOfRM(modrm)));
+ } else { /* STORE */
+ assign(src, getIReg(sz, gregOfRM(modrm)));
+ IRTemp dst = math_BSWAP(src, ty);
+ storeLE(mkexpr(addr), mkexpr(dst));
+ DIP("movbe %s,%s\n", nameIReg(sz, gregOfRM(modrm)), dis_buf);
+ }
+ goto decode_success;
+ }
+
/* ---------------------------------------------------- */
/* --- end of the SSSE3 decoder. --- */
/* ---------------------------------------------------- */
@@ -14437,25 +14496,12 @@
case 0xCE:
case 0xCF: /* BSWAP %edi */
/* AFAICS from the Intel docs, this only exists at size 4. */
- vassert(sz == 4);
+ if (sz != 4) goto decode_failure;
+
t1 = newTemp(Ity_I32);
- t2 = newTemp(Ity_I32);
assign( t1, getIReg(4, opc-0xC8) );
+ t2 = math_BSWAP(t1, Ity_I32);
- assign( t2,
- binop(Iop_Or32,
- binop(Iop_Shl32, mkexpr(t1), mkU8(24)),
- binop(Iop_Or32,
- binop(Iop_And32, binop(Iop_Shl32, mkexpr(t1), mkU8(8)),
- mkU32(0x00FF0000)),
- binop(Iop_Or32,
- binop(Iop_And32, binop(Iop_Shr32, mkexpr(t1), mkU8(8)),
- mkU32(0x0000FF00)),
- binop(Iop_And32, binop(Iop_Shr32, mkexpr(t1), mkU8(24)),
- mkU32(0x000000FF) )
- )))
- );
-
putIReg(4, opc-0xC8, mkexpr(t2));
DIP("bswapl %s\n", nameIReg(4, opc-0xC8));
break;
|
|
From: <sv...@va...> - 2012-09-02 20:42:23
|
sewardj 2012-09-02 21:42:15 +0100 (Sun, 02 Sep 2012)
New Revision: 2506
Log:
Merge from trunk, r2479 (Implement QDADD and QDSUB. Fixes #305199.)
Modified directories:
branches/VEX_3_8_BRANCH/
Modified files:
branches/VEX_3_8_BRANCH/priv/guest_arm_toIR.c
Modified: branches/VEX_3_8_BRANCH/
Property changed: branches/VEX_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:2272-2295
/trunk:2469,2475-2478
+ /branches/TCHAIN:2272-2295
/trunk:2469,2475-2479
Modified: branches/VEX_3_8_BRANCH/priv/guest_arm_toIR.c (+118 -0)
===================================================================
--- branches/VEX_3_8_BRANCH/priv/guest_arm_toIR.c 2012-09-02 21:38:00 +01:00 (rev 2505)
+++ branches/VEX_3_8_BRANCH/priv/guest_arm_toIR.c 2012-09-02 21:42:15 +01:00 (rev 2506)
@@ -10321,6 +10321,65 @@
/* fall through */
}
+ /* ------------------ qdadd<c> <Rd>,<Rm>,<Rn> ------------------- */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
+
+ if (isT) {
+ if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF090) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,0,0,1,0,1,0,0) &&
+ INSNA(11,8) == BITS4(0,0,0,0) &&
+ INSNA(7,4) == BITS4(0,1,0,1)) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
+
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp rN_d = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
+
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ or_into_QFLAG32(
+ signed_overflow_after_Add32(
+ binop(Iop_Add32, mkexpr(rNt), mkexpr(rNt)), rNt, rNt),
+ condT
+ );
+
+ assign(rN_d, binop(Iop_QAdd32S, mkexpr(rNt), mkexpr(rNt)));
+ assign(res_q, binop(Iop_QAdd32S, mkexpr(rMt), mkexpr(rN_d)));
+ if (isT)
+ putIRegT( regD, mkexpr(res_q), condT );
+ else
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+ or_into_QFLAG32(
+ signed_overflow_after_Add32(
+ binop(Iop_Add32, mkexpr(rMt), mkexpr(rN_d)), rMt, rN_d),
+ condT
+ );
+
+ DIP("qdadd%s r%u, r%u, r%u\n", nCC(conq),regD,regM,regN);
+ return True;
+ }
+ /* fall through */
+ }
+
/* ------------------ qsub<c> <Rd>,<Rn>,<Rm> ------------------- */
{
UInt regD = 99, regN = 99, regM = 99;
@@ -10372,6 +10431,65 @@
/* fall through */
}
+ /* ------------------ qdsub<c> <Rd>,<Rm>,<Rn> ------------------- */
+ {
+ UInt regD = 99, regN = 99, regM = 99;
+ Bool gate = False;
+
+ if (isT) {
+ if (INSNT0(15,4) == 0xFA8 && (INSNT1(15,0) & 0xF0F0) == 0xF0B0) {
+ regN = INSNT0(3,0);
+ regD = INSNT1(11,8);
+ regM = INSNT1(3,0);
+ if (!isBadRegT(regD) && !isBadRegT(regN) && !isBadRegT(regM))
+ gate = True;
+ }
+ } else {
+ if (INSNA(27,20) == BITS8(0,0,0,1,0,1,1,0) &&
+ INSNA(11,8) == BITS4(0,0,0,0) &&
+ INSNA(7,4) == BITS4(0,1,0,1)) {
+ regD = INSNA(15,12);
+ regN = INSNA(19,16);
+ regM = INSNA(3,0);
+ if (regD != 15 && regN != 15 && regM != 15)
+ gate = True;
+ }
+ }
+
+ if (gate) {
+ IRTemp rNt = newTemp(Ity_I32);
+ IRTemp rMt = newTemp(Ity_I32);
+ IRTemp rN_d = newTemp(Ity_I32);
+ IRTemp res_q = newTemp(Ity_I32);
+
+ assign( rNt, isT ? getIRegT(regN) : getIRegA(regN) );
+ assign( rMt, isT ? getIRegT(regM) : getIRegA(regM) );
+
+ or_into_QFLAG32(
+ signed_overflow_after_Add32(
+ binop(Iop_Add32, mkexpr(rNt), mkexpr(rNt)), rNt, rNt),
+ condT
+ );
+
+ assign(rN_d, binop(Iop_QAdd32S, mkexpr(rNt), mkexpr(rNt)));
+ assign(res_q, binop(Iop_QSub32S, mkexpr(rMt), mkexpr(rN_d)));
+ if (isT)
+ putIRegT( regD, mkexpr(res_q), condT );
+ else
+ putIRegA( regD, mkexpr(res_q), condT, Ijk_Boring );
+
+ or_into_QFLAG32(
+ signed_overflow_after_Sub32(
+ binop(Iop_Sub32, mkexpr(rMt), mkexpr(rN_d)), rMt, rN_d),
+ condT
+ );
+
+ DIP("qdsub%s r%u, r%u, r%u\n", nCC(conq),regD,regM,regN);
+ return True;
+ }
+ /* fall through */
+ }
+
/* ---------- Doesn't match anything. ---------- */
return False;
|
|
From: <sv...@va...> - 2012-09-02 20:38:09
|
sewardj 2012-09-02 21:38:00 +0100 (Sun, 02 Sep 2012)
New Revision: 2505
Log:
Merge from trunk, r2478 (Fix LZCNT and TZCNT properly. Fixes #295808.)
Modified directories:
branches/VEX_3_8_BRANCH/
Modified files:
branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c
branches/VEX_3_8_BRANCH/priv/guest_x86_toIR.c
Modified: branches/VEX_3_8_BRANCH/
Modified: branches/VEX_3_8_BRANCH/priv/guest_x86_toIR.c (+17 -1)
===================================================================
--- branches/VEX_3_8_BRANCH/priv/guest_x86_toIR.c 2012-09-02 21:35:38 +01:00 (rev 2504)
+++ branches/VEX_3_8_BRANCH/priv/guest_x86_toIR.c 2012-09-02 21:38:00 +01:00 (rev 2505)
@@ -14021,12 +14021,28 @@
for the rest, it means REP) */
case 0xF3: {
Addr32 eip_orig = guest_EIP_bbstart + delta_start;
- if (sorb != 0) goto decode_failure;
abyte = getIByte(delta); delta++;
if (abyte == 0x66) { sz = 2; abyte = getIByte(delta); delta++; }
+ if (sorb != 0 && abyte != 0x0F) goto decode_failure;
+
switch (abyte) {
+ case 0x0F:
+ switch (getIByte(delta)) {
+ /* On older CPUs, TZCNT behaves the same as BSF. */
+ case 0xBC: /* REP BSF Gv,Ev */
+ delta = dis_bs_E_G ( sorb, sz, delta + 1, True );
+ break;
+ /* On older CPUs, LZCNT behaves the same as BSR. */
+ case 0xBD: /* REP BSR Gv,Ev */
+ delta = dis_bs_E_G ( sorb, sz, delta + 1, False );
+ break;
+ default:
+ goto decode_failure;
+ }
+ break;
+
case 0xA4: sz = 1; /* REP MOVS<sz> */
case 0xA5:
dis_REP_op ( &dres, X86CondAlways, dis_MOVS, sz, eip_orig,
Property changed: branches/VEX_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:2272-2295
/trunk:2469,2475-2477
+ /branches/TCHAIN:2272-2295
/trunk:2469,2475-2478
Modified: branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c (+6 -3)
===================================================================
--- branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 21:35:38 +01:00 (rev 2504)
+++ branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 21:38:00 +01:00 (rev 2505)
@@ -20084,13 +20084,16 @@
return delta;
case 0xBC: /* BSF Gv,Ev */
- if (haveF2orF3(pfx)) goto decode_failure;
+ if (haveF2(pfx)) goto decode_failure;
delta = dis_bs_E_G ( vbi, pfx, sz, delta, True );
return delta;
case 0xBD: /* BSR Gv,Ev */
- if (!haveF2orF3(pfx)) {
- /* no-F2 no-F3 0F BD = BSR */
+ if (!haveF2orF3(pfx)
+ || (haveF3noF2(pfx)
+ && 0 == (archinfo->hwcaps & VEX_HWCAPS_AMD64_LZCNT))) {
+ /* no-F2 no-F3 0F BD = BSR
+ or F3 0F BD = REP; BSR on older CPUs. */
delta = dis_bs_E_G ( vbi, pfx, sz, delta, False );
return delta;
}
|
|
From: <sv...@va...> - 2012-09-02 20:35:55
|
sewardj 2012-09-02 21:35:38 +0100 (Sun, 02 Sep 2012)
New Revision: 2504
Log:
Merge from trunk, r2477 (e-enable 'prefetch m8' and 'prefetchw m8'.
Fixes #305321.)
Modified directories:
branches/VEX_3_8_BRANCH/
Modified files:
branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c
Modified: branches/VEX_3_8_BRANCH/
Modified: branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c (+16 -17)
===================================================================
--- branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 21:28:28 +01:00 (rev 2503)
+++ branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 21:35:38 +01:00 (rev 2504)
@@ -19744,6 +19744,22 @@
DIP("ud2\n");
return delta;
+ case 0x0D: /* 0F 0D /0 -- prefetch mem8 */
+ /* 0F 0D /1 -- prefetchw mem8 */
+ if (have66orF2orF3(pfx)) goto decode_failure;
+ modrm = getUChar(delta);
+ if (epartIsReg(modrm)) goto decode_failure;
+ if (gregLO3ofRM(modrm) != 0 && gregLO3ofRM(modrm) != 1)
+ goto decode_failure;
+ addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
+ delta += alen;
+ switch (gregLO3ofRM(modrm)) {
+ case 0: DIP("prefetch %s\n", dis_buf); break;
+ case 1: DIP("prefetchw %s\n", dis_buf); break;
+ default: vassert(0); /*NOTREACHED*/
+ }
+ return delta;
+
case 0x1F:
if (haveF2orF3(pfx)) goto decode_failure;
modrm = getUChar(delta);
@@ -26941,24 +26957,7 @@
/* =-=-=-=-=-=-=-=-=- Jcond d32 -=-=-=-=-=-=-=-=-= */
/* =-=-=-=-=-=-=-=-=- PREFETCH =-=-=-=-=-=-=-=-=-= */
- case 0x0D: /* 0F 0D /0 -- prefetch mem8 */
- /* 0F 0D /1 -- prefetchw mem8 */
- if (have66orF2orF3(pfx)) goto decode_failure;
- modrm = getUChar(delta);
- if (epartIsReg(modrm)) goto decode_failure;
- if (gregLO3ofRM(modrm) != 0 && gregLO3ofRM(modrm) != 1)
- goto decode_failure;
- addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
- delta += alen;
-
- switch (gregLO3ofRM(modrm)) {
- case 0: DIP("prefetch %s\n", dis_buf); break;
- case 1: DIP("prefetchw %s\n", dis_buf); break;
- default: vassert(0); /*NOTREACHED*/
- }
- break;
-
/* =-=-=-=-=-=-=-=-=- RDTSC -=-=-=-=-=-=-=-=-=-=-= */
/* =-=-=-=-=-=-=-=-=- SETcc Eb =-=-=-=-=-=-=-=-=-= */
Property changed: branches/VEX_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:2272-2295
/trunk:2469,2475-2476
+ /branches/TCHAIN:2272-2295
/trunk:2469,2475-2477
|
|
From: <sv...@va...> - 2012-09-02 20:31:48
|
sewardj 2012-09-02 21:31:39 +0100 (Sun, 02 Sep 2012)
New Revision: 12940
Log:
Merge from trunk, r12887 (n-i-bz: Fix false positives in
count_from_Status etc al.)
Modified directories:
branches/VALGRIND_3_8_BRANCH/
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
branches/VALGRIND_3_8_BRANCH/mpi/libmpiwrap.c
Modified: branches/VALGRIND_3_8_BRANCH/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885,12887
Property changed: branches/VALGRIND_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885
+ /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885,12887
Modified: branches/VALGRIND_3_8_BRANCH/mpi/libmpiwrap.c (+4 -0)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/mpi/libmpiwrap.c 2012-09-02 21:26:23 +01:00 (rev 12939)
+++ branches/VALGRIND_3_8_BRANCH/mpi/libmpiwrap.c 2012-09-02 21:31:39 +01:00 (rev 12940)
@@ -413,7 +413,9 @@
MPI_Status* status)
{
int n;
+ if (cONFIG_DER) VALGRIND_DISABLE_ERROR_REPORTING;
int err = PMPI_Get_count(status, datatype, &n);
+ if (cONFIG_DER) VALGRIND_ENABLE_ERROR_REPORTING;
if (err == MPI_SUCCESS) {
*recv_count = n;
return True;
@@ -1107,6 +1109,7 @@
if (cONFIG_DER) VALGRIND_DISABLE_ERROR_REPORTING;
CALL_FN_W_7W(err, fn, buf,count,datatype,source,tag,comm,status);
if (cONFIG_DER) VALGRIND_ENABLE_ERROR_REPORTING;
+ make_mem_defined_if_addressable_if_success_untyped(err, status, sizeof(*status));
if (err == MPI_SUCCESS && count_from_Status(&recv_count,datatype,status)) {
make_mem_defined_if_addressable(buf, recv_count, datatype);
}
@@ -1724,6 +1727,7 @@
recvbuf,recvcount,recvtype,source,recvtag,
comm,status);
if (cONFIG_DER) VALGRIND_ENABLE_ERROR_REPORTING;
+ make_mem_defined_if_addressable_if_success_untyped(err, status, sizeof(*status));
if (err == MPI_SUCCESS
&& count_from_Status(&recvcount_actual,recvtype,status)) {
make_mem_defined_if_addressable(recvbuf, recvcount_actual, recvtype);
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885,12887
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885,12887
|
|
From: <sv...@va...> - 2012-09-02 20:28:37
|
sewardj 2012-09-02 21:28:28 +0100 (Sun, 02 Sep 2012)
New Revision: 2503
Log:
Merge from trunk, r2476 (Iimplement 0F 7F encoding of movq between two
registers. Fixes #305042.)
Modified directories:
branches/VEX_3_8_BRANCH/
Modified files:
branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c
Modified: branches/VEX_3_8_BRANCH/
Modified: branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c (+5 -3)
===================================================================
--- branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 21:25:18 +01:00 (rev 2502)
+++ branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 21:28:28 +01:00 (rev 2503)
@@ -7104,9 +7104,11 @@
goto mmx_decode_failure;
modrm = getUChar(delta);
if (epartIsReg(modrm)) {
- /* Fall through. The assembler doesn't appear to generate
- these. */
- goto mmx_decode_failure;
+ delta++;
+ putMMXReg( eregLO3ofRM(modrm), getMMXReg(gregLO3ofRM(modrm)) );
+ DIP("movq %s, %s\n",
+ nameMMXReg(gregLO3ofRM(modrm)),
+ nameMMXReg(eregLO3ofRM(modrm)));
} else {
IRTemp addr = disAMode( &len, vbi, pfx, delta, dis_buf, 0 );
delta += len;
Property changed: branches/VEX_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:2272-2295
/trunk:2469,2475
+ /branches/TCHAIN:2272-2295
/trunk:2469,2475-2476
|
|
From: <sv...@va...> - 2012-09-02 20:26:31
|
philippe 2012-09-02 21:26:23 +0100 (Sun, 02 Sep 2012)
New Revision: 12939
Log:
Improve callgrind performance by 4 to 8% using UNLIKELY
Performance improvements from 4 to 8% obtained on amd64 on the perf tests by:
1. using UNLIKELY inside tracing macros
2. avoid calling CLG_(switch_thread)(tid) on the hot patch setup_bbcc
unless tid differs from CLG_(current_tid).
Modified files:
trunk/callgrind/bbcc.c
trunk/callgrind/global.h
Modified: trunk/callgrind/global.h (+3 -3)
===================================================================
--- trunk/callgrind/global.h 2012-09-02 21:12:14 +01:00 (rev 12938)
+++ trunk/callgrind/global.h 2012-09-02 21:26:23 +01:00 (rev 12939)
@@ -843,8 +843,8 @@
#if CLG_ENABLE_DEBUG
#define CLG_DEBUGIF(x) \
- if ( (CLG_(clo).verbose >x) && \
- (CLG_(stat).bb_executions >= CLG_(clo).verbose_start))
+ if (UNLIKELY( (CLG_(clo).verbose >x) && \
+ (CLG_(stat).bb_executions >= CLG_(clo).verbose_start)))
#define CLG_DEBUG(x,format,args...) \
CLG_DEBUGIF(x) { \
@@ -853,7 +853,7 @@
}
#define CLG_ASSERT(cond) \
- if (!(cond)) { \
+ if (UNLIKELY(!(cond))) { \
CLG_(print_context)(); \
CLG_(print_bbno)(); \
tl_assert(cond); \
Modified: trunk/callgrind/bbcc.c (+6 -1)
===================================================================
--- trunk/callgrind/bbcc.c 2012-09-02 21:12:14 +01:00 (rev 12938)
+++ trunk/callgrind/bbcc.c 2012-09-02 21:26:23 +01:00 (rev 12939)
@@ -571,7 +571,12 @@
*/
tid = VG_(get_running_tid)();
#if 1
- CLG_(switch_thread)(tid);
+ /* CLG_(switch_thread) is a no-op when tid is equal to CLG_(current_tid).
+ * As this is on the hot path, we only call CLG_(switch_thread)(tid)
+ * if tid differs from the CLG_(current_tid).
+ */
+ if (UNLIKELY(tid != CLG_(current_tid)))
+ CLG_(switch_thread)(tid);
#else
CLG_ASSERT(VG_(get_running_tid)() == CLG_(current_tid));
#endif
|
|
From: <sv...@va...> - 2012-09-02 20:25:26
|
sewardj 2012-09-02 21:25:18 +0100 (Sun, 02 Sep 2012)
New Revision: 2502
Log:
Merge from trunk, r2475 (Handle a reg-reg encoding of MOVAPS. Fixes #289584.)
Modified directories:
branches/VEX_3_8_BRANCH/
Modified files:
branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c
Modified: branches/VEX_3_8_BRANCH/
Modified: branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c (+6 -1)
===================================================================
--- branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 19:07:08 +01:00 (rev 2501)
+++ branches/VEX_3_8_BRANCH/priv/guest_amd64_toIR.c 2012-09-02 21:25:18 +01:00 (rev 2502)
@@ -11596,6 +11596,11 @@
modrm = getUChar(delta);
if (epartIsReg(modrm)) {
/* fall through; awaiting test case */
+ putXMMReg( eregOfRexRM(pfx,modrm),
+ getXMMReg( gregOfRexRM(pfx,modrm) ));
+ DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
+ nameXMMReg(eregOfRexRM(pfx,modrm)));
+ delta += 1;
} else {
addr = disAMode ( &alen, vbi, pfx, delta, dis_buf, 0 );
gen_SEGV_if_not_16_aligned( addr );
@@ -11603,8 +11608,8 @@
DIP("movaps %s,%s\n", nameXMMReg(gregOfRexRM(pfx,modrm)),
dis_buf );
delta += alen;
- goto decode_success;
}
+ goto decode_success;
}
/* 66 0F 29 = MOVAPD -- move from G (xmm) to E (mem or xmm). */
if (have66noF2noF3(pfx)
Property changed: branches/VEX_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:2272-2295
/trunk:2469
+ /branches/TCHAIN:2272-2295
/trunk:2469,2475
|
|
From: <sv...@va...> - 2012-09-02 20:12:23
|
sewardj 2012-09-02 21:12:14 +0100 (Sun, 02 Sep 2012)
New Revision: 12938
Log:
Merge from trunk, r12885 (Fix propagation of undefinedness for
Iop_DPBtoBCD and Iop_BCDtoDPB.)
Modified directories:
branches/VALGRIND_3_8_BRANCH/
Modified files:
branches/VALGRIND_3_8_BRANCH/memcheck/mc_translate.c
Modified: branches/VALGRIND_3_8_BRANCH/
Property changed: branches/VALGRIND_3_8_BRANCH (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879
+ /branches/TCHAIN:12477-12516
/trunk:12873,12878-12879,12885
Modified: branches/VALGRIND_3_8_BRANCH/memcheck/mc_translate.c (+2 -2)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/memcheck/mc_translate.c 2012-09-02 21:10:49 +01:00 (rev 12937)
+++ branches/VALGRIND_3_8_BRANCH/memcheck/mc_translate.c 2012-09-02 21:12:14 +01:00 (rev 12938)
@@ -3628,6 +3628,8 @@
case Iop_D32toD64:
case Iop_ExtractExpD64: /* D64 -> I64 */
case Iop_ExtractExpD128: /* D128 -> I64 */
+ case Iop_DPBtoBCD:
+ case Iop_BCDtoDPB:
return mkPCastTo(mce, Ity_I64, vatom);
case Iop_D64toD128:
@@ -3704,8 +3706,6 @@
case Iop_ReinterpF32asI32:
case Iop_ReinterpI64asD64:
case Iop_ReinterpD64asI64:
- case Iop_DPBtoBCD:
- case Iop_BCDtoDPB:
case Iop_NotV256:
case Iop_NotV128:
case Iop_Not64:
|
|
From: <sv...@va...> - 2012-09-02 20:10:58
|
sewardj 2012-09-02 21:10:49 +0100 (Sun, 02 Sep 2012)
New Revision: 12937
Log:
Commit a bunch of svn:mergeinfo stuff. Doesn't change any code.
Modified directories:
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883,12885
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883,12885
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881,12885
|
|
From: <sv...@va...> - 2012-09-02 20:07:59
|
sewardj 2012-09-02 21:07:51 +0100 (Sun, 02 Sep 2012)
New Revision: 12936
Log:
Merge from trunk, r12881 (fix n-i-bz vgdb ptrace calls wrong on mips)
Modified directories:
branches/VALGRIND_3_8_BRANCH/coregrind/
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified files:
branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c
branches/VALGRIND_3_8_BRANCH/coregrind/vgdb.c
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/
Modified: branches/VALGRIND_3_8_BRANCH/coregrind/vgdb.c (+12 -5)
===================================================================
--- branches/VALGRIND_3_8_BRANCH/coregrind/vgdb.c 2012-09-02 19:10:34 +01:00 (rev 12935)
+++ branches/VALGRIND_3_8_BRANCH/coregrind/vgdb.c 2012-09-02 21:07:51 +01:00 (rev 12936)
@@ -925,7 +925,7 @@
#elif defined(VGA_s390x)
sp = user_mod.regs.gprs[15];
#elif defined(VGA_mips32)
- sp = user_mod.regs[29];
+ sp = user_mod.regs[29*2];
#else
I_die_here : (sp) architecture missing in vgdb.c
#endif
@@ -999,11 +999,18 @@
#elif defined(VGA_s390x)
XERROR(0, "(fn32) s390x has no 32bits implementation");
#elif defined(VGA_mips32)
- /* put check arg in register 0 */
- user_mod.regs[4] = check;
+ /* put check arg in register 4 */
+ user_mod.regs[4*2] = check;
+ user_mod.regs[4*2+1] = 0xffffffff; // sign extend $a0
+ /* This sign extension is needed when vgdb 32 bits runs
+ on a 64 bits OS. */
/* put NULL return address in ra */
- user_mod.regs[31] = bad_return;
- user_mod.regs[25] = shared32->invoke_gdbserver;
+ user_mod.regs[31*2] = bad_return;
+ user_mod.regs[31*2+1] = 0;
+ user_mod.regs[34*2] = shared32->invoke_gdbserver;
+ user_mod.regs[34*2+1] = 0;
+ user_mod.regs[25*2] = shared32->invoke_gdbserver;
+ user_mod.regs[25*2+1] = 0;
#else
I_die_here : architecture missing in vgdb.c
#endif
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap/syswrap-generic.c (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12882-12883
+ /branches/TCHAIN/coregrind/m_syswrap/syswrap-generic.c:12477-12516
/trunk/coregrind/m_syswrap/syswrap-generic.c:12874,12878-12879,12881-12883
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
+ /branches/TCHAIN/coregrind:12477-12516
/trunk/coregrind:12873,12881
Property changed: branches/VALGRIND_3_8_BRANCH/coregrind/m_syswrap (+0 -0)
___________________________________________________________________
Name: svn:mergeinfo
- /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12882-12883
+ /branches/TCHAIN/coregrind/m_syswrap:12477-12516
/trunk/coregrind/m_syswrap:12873,12881-12883
|
|
From: Florian K. <br...@ac...> - 2012-09-02 18:44:59
|
I would like to propose that we make the following changes related to
emulation warnings:
(1) Issue emulation warnings by default. Currently, we don't do that
(2) Issue a particular warning only once. Currently, we issue it up
to three times.
The rationale is, that warnings are note-worthy so people should know
about them. For instance, the emulation warning I added today informs
about a limitation related to rounding floating point numbers, with the
effect that results under valgrind could be different.
svn blame did not provide any insight why that particular default was
chosen.
With respect to how often a specific warning is issued, I do not see an
advantage in giving it more than once. The amount of information
provided is the same in each such warning, as the message is fixed. Only
the backtrace could be different.
So I wanted to throw this out and see what people think about it.
Florian
|