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
|
3
(6) |
4
(9) |
5
(23) |
6
(6) |
7
(10) |
8
(2) |
|
9
(1) |
10
(5) |
11
(2) |
12
(5) |
13
(2) |
14
(2) |
15
(4) |
|
16
(3) |
17
(22) |
18
(21) |
19
(15) |
20
(24) |
21
(5) |
22
(5) |
|
23
(14) |
24
(2) |
25
(2) |
26
(1) |
27
|
28
|
29
(1) |
|
30
|
31
|
|
|
|
|
|
|
From: Philippe W. <phi...@sk...> - 2016-10-06 20:36:49
|
On Thu, 2016-10-06 at 21:59 +0200, Philippe Waroquiers wrote: > But of course, when calling VALGRIND_MEMPOOL_FREE, by definition, the > addr > given as argument is supposed to be a chunk of the pool, and is > released. > So, this flag is by itself useless, unless it is combined with > VALGRIND_MEMPOOL_METAPOOL. I just confirmed using the test leak-autofreepool 3 that if you do a leak search before you have cleaned up the pool, then you get again an internal assertion in valgrind due to overlapping blocks. So, effectively, using only the flag VALGRIND_MEMPOOL_AUTO_FREE is not very useful, as any leak search done with such a not released pool will crash. Philippe |
|
From: Philippe W. <phi...@sk...> - 2016-10-06 19:58:39
|
I am a little bit lost in the documentation and/or semantic of the recently added meta mempool feature. First, valgrind.h tells: ... When the VALGRIND_MEMPOOL_AUTO_FREE is passed, a MEMPOOL_DELETE will auto-free all chunks (so not reported as leaks) for allocators that assume that destroying a pool destroys all objects in the pool. ... But this operation MEMPOOL_DELETE does not exist. This looks to be rather VALGRIND_MEMPOOL_FREE. In the manual, the description is somewhat different. Second thing confusing me: The user manual tells for META mempool first describe the auto free flag: ... This indicates that items allocated from this memory pool are automatically freed when VALGRIND_MEMPOOL_FREE is used on a block. ... But of course, when calling VALGRIND_MEMPOOL_FREE, by definition, the addr given as argument is supposed to be a chunk of the pool, and is released. So, this flag is by itself useless, unless it is combined with VALGRIND_MEMPOOL_METAPOOL. Do I miss something ? Assuming I did not miss something, then we now have a new macro VALGRIND_CREATE_META_MEMPOOL(pool, rzB, is_zeroed, flags) which in its names indicates it is a meta pool. So, it is unclear why we ask the user to specify VALGRIND_MEMPOOL_METAPOOL and/or allows the user to specify VALGRIND_MEMPOOL_AUTO_FREE, as this will be useless unless the pool is a real meta pool. (checking the code, effectively, the only thing an AUTO_FREE pool does is to release automatically the '2nd level smaller blocks' when a 'first level pool bigger block' is released with VALGRIND_MEMPOOL_FREE The second flag documented is also somewhat confusingly described: ... This indicates that memory that has been marked as being allocated with VALGRIND_MALLOCLIKE_BLOCK is used by a custom allocator to pass out memory to an application (again marked with VALGRIND_MALLOCLIKE_BLOCK). ... I do not see anything in tests and/or code that would implement something like a double level of VALGRIND_MALLOCLIKE_BLOCK. As I understand, we have a first level of blocks which are described with VALGRIND_MEMPOOL_ALLOC Then, such first level blocks can be split and allocated using VALGRIND_MALLOCLIKE_BLOCK. I think it would be better to clarify the documentation and maybe remove this (useless for the user) VALGRIND_MEMPOOL_METAPOOL : The underlying (internal) client request might effectively be the same (and so have an 'internal' flag VALGRIND_MEMPOOL_METAPOOL but it looks to me that describing this flag to the user is just confusing. Philippe |
|
From: <sv...@va...> - 2016-10-06 17:46:32
|
Author: petarj
Date: Thu Oct 6 18:46:14 2016
New Revision: 16026
Log:
mips32: fix the wrong offset for mmap2()
The offset for mmap2 is specified in 4096-byte units, not page size
units.
Patch by Duncan Palmer <dp...@di...>.
It fixes BZ#352197.
Modified:
trunk/coregrind/m_syswrap/syswrap-mips32-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-mips32-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-mips32-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-mips32-linux.c Thu Oct 6 18:46:14 2016
@@ -530,7 +530,7 @@
PRE(sys_mmap2)
{
- /* Exactly like sys_mmap() except the file offset is specified in pagesize
+ /* Exactly like sys_mmap() except the file offset is specified in 4096 byte
units rather than bytes, so that it can be used for files bigger than
2^32 bytes. */
SysRes r;
@@ -540,7 +540,7 @@
unsigned long, prot, unsigned long, flags,
unsigned long, fd, unsigned long, offset);
r = mips_PRE_sys_mmap(tid, ARG1, ARG2, ARG3, ARG4, ARG5,
- VKI_PAGE_SIZE * (Off64T) ARG6);
+ 4096 * (Off64T) ARG6);
SET_STATUS_from_SysRes(r);
}
|
|
From: <sv...@va...> - 2016-10-06 13:54:21
|
Author: petarj
Date: Thu Oct 6 14:54:12 2016
New Revision: 3258
Log:
mips: remove support for mfc0/dmfc0
Remove support for mfc0/dmfc0, as these instructions are privileged
instructions and Valgrind cannot execute these.
Modified:
trunk/priv/guest_mips_defs.h
trunk/priv/guest_mips_helpers.c
trunk/priv/guest_mips_toIR.c
Modified: trunk/priv/guest_mips_defs.h
==============================================================================
--- trunk/priv/guest_mips_defs.h (original)
+++ trunk/priv/guest_mips_defs.h Thu Oct 6 14:54:12 2016
@@ -93,11 +93,6 @@
SUBS, SUBD, DIVS
} flt_op;
-extern UInt mips32_dirtyhelper_mfc0 ( UInt rd, UInt sel );
-
-extern ULong mips64_dirtyhelper_dmfc0 ( UInt rd, UInt sel );
-
-
#if defined(__mips__) && ((defined(__mips_isa_rev) && __mips_isa_rev >= 2))
extern UInt mips32_dirtyhelper_rdhwr ( UInt rt, UInt rd );
extern ULong mips64_dirtyhelper_rdhwr ( ULong rt, ULong rd );
Modified: trunk/priv/guest_mips_helpers.c
==============================================================================
--- trunk/priv/guest_mips_helpers.c (original)
+++ trunk/priv/guest_mips_helpers.c Thu Oct 6 14:54:12 2016
@@ -418,668 +418,6 @@
}
};
-#define ASM_VOLATILE_CASE(rd, sel) \
- case rd: \
- asm volatile ("mfc0 %0, $" #rd ", "#sel"\n\t" :"=r" (x) ); \
- break;
-
-UInt mips32_dirtyhelper_mfc0(UInt rd, UInt sel)
-{
- UInt x = 0;
-#if defined(__mips__) && ((defined(__mips_isa_rev) && __mips_isa_rev >= 2))
- switch (sel) {
- case 0:
- /* __asm__("mfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE(0, 0);
- ASM_VOLATILE_CASE(1, 0);
- ASM_VOLATILE_CASE(2, 0);
- ASM_VOLATILE_CASE(3, 0);
- ASM_VOLATILE_CASE(4, 0);
- ASM_VOLATILE_CASE(5, 0);
- ASM_VOLATILE_CASE(6, 0);
- ASM_VOLATILE_CASE(7, 0);
- ASM_VOLATILE_CASE(8, 0);
- ASM_VOLATILE_CASE(9, 0);
- ASM_VOLATILE_CASE(10, 0);
- ASM_VOLATILE_CASE(11, 0);
- ASM_VOLATILE_CASE(12, 0);
- ASM_VOLATILE_CASE(13, 0);
- ASM_VOLATILE_CASE(14, 0);
- ASM_VOLATILE_CASE(15, 0);
- ASM_VOLATILE_CASE(16, 0);
- ASM_VOLATILE_CASE(17, 0);
- ASM_VOLATILE_CASE(18, 0);
- ASM_VOLATILE_CASE(19, 0);
- ASM_VOLATILE_CASE(20, 0);
- ASM_VOLATILE_CASE(21, 0);
- ASM_VOLATILE_CASE(22, 0);
- ASM_VOLATILE_CASE(23, 0);
- ASM_VOLATILE_CASE(24, 0);
- ASM_VOLATILE_CASE(25, 0);
- ASM_VOLATILE_CASE(26, 0);
- ASM_VOLATILE_CASE(27, 0);
- ASM_VOLATILE_CASE(28, 0);
- ASM_VOLATILE_CASE(29, 0);
- ASM_VOLATILE_CASE(30, 0);
- ASM_VOLATILE_CASE(31, 0);
- default:
- break;
- }
- break;
- case 1:
- /* __asm__("mfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE(0, 1);
- ASM_VOLATILE_CASE(1, 1);
- ASM_VOLATILE_CASE(2, 1);
- ASM_VOLATILE_CASE(3, 1);
- ASM_VOLATILE_CASE(4, 1);
- ASM_VOLATILE_CASE(5, 1);
- ASM_VOLATILE_CASE(6, 1);
- ASM_VOLATILE_CASE(7, 1);
- ASM_VOLATILE_CASE(8, 1);
- ASM_VOLATILE_CASE(9, 1);
- ASM_VOLATILE_CASE(10, 1);
- ASM_VOLATILE_CASE(11, 1);
- ASM_VOLATILE_CASE(12, 1);
- ASM_VOLATILE_CASE(13, 1);
- ASM_VOLATILE_CASE(14, 1);
- ASM_VOLATILE_CASE(15, 1);
- ASM_VOLATILE_CASE(16, 1);
- ASM_VOLATILE_CASE(17, 1);
- ASM_VOLATILE_CASE(18, 1);
- ASM_VOLATILE_CASE(19, 1);
- ASM_VOLATILE_CASE(20, 1);
- ASM_VOLATILE_CASE(21, 1);
- ASM_VOLATILE_CASE(22, 1);
- ASM_VOLATILE_CASE(23, 1);
- ASM_VOLATILE_CASE(24, 1);
- ASM_VOLATILE_CASE(25, 1);
- ASM_VOLATILE_CASE(26, 1);
- ASM_VOLATILE_CASE(27, 1);
- ASM_VOLATILE_CASE(28, 1);
- ASM_VOLATILE_CASE(29, 1);
- ASM_VOLATILE_CASE(30, 1);
- ASM_VOLATILE_CASE(31, 1);
- default:
- break;
- }
- break;
- case 2:
- /* __asm__("mfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE(0, 2);
- ASM_VOLATILE_CASE(1, 2);
- ASM_VOLATILE_CASE(2, 2);
- ASM_VOLATILE_CASE(3, 1);
- ASM_VOLATILE_CASE(4, 2);
- ASM_VOLATILE_CASE(5, 2);
- ASM_VOLATILE_CASE(6, 2);
- ASM_VOLATILE_CASE(7, 2);
- ASM_VOLATILE_CASE(8, 2);
- ASM_VOLATILE_CASE(9, 2);
- ASM_VOLATILE_CASE(10, 2);
- ASM_VOLATILE_CASE(11, 2);
- ASM_VOLATILE_CASE(12, 2);
- ASM_VOLATILE_CASE(13, 2);
- ASM_VOLATILE_CASE(14, 2);
- ASM_VOLATILE_CASE(15, 2);
- ASM_VOLATILE_CASE(16, 2);
- ASM_VOLATILE_CASE(17, 2);
- ASM_VOLATILE_CASE(18, 2);
- ASM_VOLATILE_CASE(19, 2);
- ASM_VOLATILE_CASE(20, 2);
- ASM_VOLATILE_CASE(21, 2);
- ASM_VOLATILE_CASE(22, 2);
- ASM_VOLATILE_CASE(23, 2);
- ASM_VOLATILE_CASE(24, 2);
- ASM_VOLATILE_CASE(25, 2);
- ASM_VOLATILE_CASE(26, 2);
- ASM_VOLATILE_CASE(27, 2);
- ASM_VOLATILE_CASE(28, 2);
- ASM_VOLATILE_CASE(29, 2);
- ASM_VOLATILE_CASE(30, 2);
- ASM_VOLATILE_CASE(31, 2);
- default:
- break;
- }
- break;
- case 3:
- /* __asm__("mfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE(0, 3);
- ASM_VOLATILE_CASE(1, 3);
- ASM_VOLATILE_CASE(2, 3);
- ASM_VOLATILE_CASE(3, 3);
- ASM_VOLATILE_CASE(4, 3);
- ASM_VOLATILE_CASE(5, 3);
- ASM_VOLATILE_CASE(6, 3);
- ASM_VOLATILE_CASE(7, 3);
- ASM_VOLATILE_CASE(8, 3);
- ASM_VOLATILE_CASE(9, 3);
- ASM_VOLATILE_CASE(10, 3);
- ASM_VOLATILE_CASE(11, 3);
- ASM_VOLATILE_CASE(12, 3);
- ASM_VOLATILE_CASE(13, 3);
- ASM_VOLATILE_CASE(14, 3);
- ASM_VOLATILE_CASE(15, 3);
- ASM_VOLATILE_CASE(16, 3);
- ASM_VOLATILE_CASE(17, 3);
- ASM_VOLATILE_CASE(18, 3);
- ASM_VOLATILE_CASE(19, 3);
- ASM_VOLATILE_CASE(20, 3);
- ASM_VOLATILE_CASE(21, 3);
- ASM_VOLATILE_CASE(22, 3);
- ASM_VOLATILE_CASE(23, 3);
- ASM_VOLATILE_CASE(24, 3);
- ASM_VOLATILE_CASE(25, 3);
- ASM_VOLATILE_CASE(26, 3);
- ASM_VOLATILE_CASE(27, 3);
- ASM_VOLATILE_CASE(28, 3);
- ASM_VOLATILE_CASE(29, 3);
- ASM_VOLATILE_CASE(30, 3);
- ASM_VOLATILE_CASE(31, 3);
- default:
- break;
- }
- break;
- case 4:
- /* __asm__("mfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE(0, 4);
- ASM_VOLATILE_CASE(1, 4);
- ASM_VOLATILE_CASE(2, 4);
- ASM_VOLATILE_CASE(3, 4);
- ASM_VOLATILE_CASE(4, 4);
- ASM_VOLATILE_CASE(5, 4);
- ASM_VOLATILE_CASE(6, 4);
- ASM_VOLATILE_CASE(7, 4);
- ASM_VOLATILE_CASE(8, 4);
- ASM_VOLATILE_CASE(9, 4);
- ASM_VOLATILE_CASE(10, 4);
- ASM_VOLATILE_CASE(11, 4);
- ASM_VOLATILE_CASE(12, 4);
- ASM_VOLATILE_CASE(13, 4);
- ASM_VOLATILE_CASE(14, 4);
- ASM_VOLATILE_CASE(15, 4);
- ASM_VOLATILE_CASE(16, 4);
- ASM_VOLATILE_CASE(17, 4);
- ASM_VOLATILE_CASE(18, 4);
- ASM_VOLATILE_CASE(19, 4);
- ASM_VOLATILE_CASE(20, 4);
- ASM_VOLATILE_CASE(21, 4);
- ASM_VOLATILE_CASE(22, 4);
- ASM_VOLATILE_CASE(23, 4);
- ASM_VOLATILE_CASE(24, 4);
- ASM_VOLATILE_CASE(25, 4);
- ASM_VOLATILE_CASE(26, 4);
- ASM_VOLATILE_CASE(27, 4);
- ASM_VOLATILE_CASE(28, 4);
- ASM_VOLATILE_CASE(29, 4);
- ASM_VOLATILE_CASE(30, 4);
- ASM_VOLATILE_CASE(31, 4);
- default:
- break;
- }
- break;
- case 5:
- /* __asm__("mfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE(0, 5);
- ASM_VOLATILE_CASE(1, 5);
- ASM_VOLATILE_CASE(2, 5);
- ASM_VOLATILE_CASE(3, 5);
- ASM_VOLATILE_CASE(4, 5);
- ASM_VOLATILE_CASE(5, 5);
- ASM_VOLATILE_CASE(6, 5);
- ASM_VOLATILE_CASE(7, 5);
- ASM_VOLATILE_CASE(8, 5);
- ASM_VOLATILE_CASE(9, 5);
- ASM_VOLATILE_CASE(10, 5);
- ASM_VOLATILE_CASE(11, 5);
- ASM_VOLATILE_CASE(12, 5);
- ASM_VOLATILE_CASE(13, 5);
- ASM_VOLATILE_CASE(14, 5);
- ASM_VOLATILE_CASE(15, 5);
- ASM_VOLATILE_CASE(16, 5);
- ASM_VOLATILE_CASE(17, 5);
- ASM_VOLATILE_CASE(18, 5);
- ASM_VOLATILE_CASE(19, 5);
- ASM_VOLATILE_CASE(20, 5);
- ASM_VOLATILE_CASE(21, 5);
- ASM_VOLATILE_CASE(22, 5);
- ASM_VOLATILE_CASE(23, 5);
- ASM_VOLATILE_CASE(24, 5);
- ASM_VOLATILE_CASE(25, 5);
- ASM_VOLATILE_CASE(26, 5);
- ASM_VOLATILE_CASE(27, 5);
- ASM_VOLATILE_CASE(28, 5);
- ASM_VOLATILE_CASE(29, 5);
- ASM_VOLATILE_CASE(30, 5);
- ASM_VOLATILE_CASE(31, 5);
- default:
- break;
- }
- break;
- case 6:
- /* __asm__("mfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE(0, 6);
- ASM_VOLATILE_CASE(1, 6);
- ASM_VOLATILE_CASE(2, 6);
- ASM_VOLATILE_CASE(3, 6);
- ASM_VOLATILE_CASE(4, 6);
- ASM_VOLATILE_CASE(5, 6);
- ASM_VOLATILE_CASE(6, 6);
- ASM_VOLATILE_CASE(7, 6);
- ASM_VOLATILE_CASE(8, 6);
- ASM_VOLATILE_CASE(9, 6);
- ASM_VOLATILE_CASE(10, 6);
- ASM_VOLATILE_CASE(11, 6);
- ASM_VOLATILE_CASE(12, 6);
- ASM_VOLATILE_CASE(13, 6);
- ASM_VOLATILE_CASE(14, 6);
- ASM_VOLATILE_CASE(15, 6);
- ASM_VOLATILE_CASE(16, 6);
- ASM_VOLATILE_CASE(17, 6);
- ASM_VOLATILE_CASE(18, 6);
- ASM_VOLATILE_CASE(19, 6);
- ASM_VOLATILE_CASE(20, 6);
- ASM_VOLATILE_CASE(21, 6);
- ASM_VOLATILE_CASE(22, 6);
- ASM_VOLATILE_CASE(23, 6);
- ASM_VOLATILE_CASE(24, 6);
- ASM_VOLATILE_CASE(25, 6);
- ASM_VOLATILE_CASE(26, 6);
- ASM_VOLATILE_CASE(27, 6);
- ASM_VOLATILE_CASE(28, 6);
- ASM_VOLATILE_CASE(29, 6);
- ASM_VOLATILE_CASE(30, 6);
- ASM_VOLATILE_CASE(31, 6);
- default:
- break;
- }
- break;
- case 7:
- /* __asm__("mfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE(0, 7);
- ASM_VOLATILE_CASE(1, 7);
- ASM_VOLATILE_CASE(2, 7);
- ASM_VOLATILE_CASE(3, 7);
- ASM_VOLATILE_CASE(4, 7);
- ASM_VOLATILE_CASE(5, 7);
- ASM_VOLATILE_CASE(6, 7);
- ASM_VOLATILE_CASE(7, 7);
- ASM_VOLATILE_CASE(8, 7);
- ASM_VOLATILE_CASE(9, 7);
- ASM_VOLATILE_CASE(10, 7);
- ASM_VOLATILE_CASE(11, 7);
- ASM_VOLATILE_CASE(12, 7);
- ASM_VOLATILE_CASE(13, 7);
- ASM_VOLATILE_CASE(14, 7);
- ASM_VOLATILE_CASE(15, 7);
- ASM_VOLATILE_CASE(16, 7);
- ASM_VOLATILE_CASE(17, 7);
- ASM_VOLATILE_CASE(18, 7);
- ASM_VOLATILE_CASE(19, 7);
- ASM_VOLATILE_CASE(20, 7);
- ASM_VOLATILE_CASE(21, 7);
- ASM_VOLATILE_CASE(22, 7);
- ASM_VOLATILE_CASE(23, 7);
- ASM_VOLATILE_CASE(24, 7);
- ASM_VOLATILE_CASE(25, 7);
- ASM_VOLATILE_CASE(26, 7);
- ASM_VOLATILE_CASE(27, 7);
- ASM_VOLATILE_CASE(28, 7);
- ASM_VOLATILE_CASE(29, 7);
- ASM_VOLATILE_CASE(30, 7);
- ASM_VOLATILE_CASE(31, 7);
- default:
- break;
- }
- break;
-
- default:
- break;
- }
-#endif
- return x;
-}
-
-#undef ASM_VOLATILE_CASE
-
-#define ASM_VOLATILE_CASE(rd, sel) \
- case rd: \
- asm volatile ("dmfc0 %0, $" #rd ", "#sel"\n\t" :"=r" (x) ); \
- break;
-
-ULong mips64_dirtyhelper_dmfc0 ( UInt rd, UInt sel )
-{
- ULong x = 0;
-#if defined(VGP_mips64_linux)
- switch (sel) {
- case 0:
- /* __asm__("dmfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE (0, 0);
- ASM_VOLATILE_CASE (1, 0);
- ASM_VOLATILE_CASE (2, 0);
- ASM_VOLATILE_CASE (3, 0);
- ASM_VOLATILE_CASE (4, 0);
- ASM_VOLATILE_CASE (5, 0);
- ASM_VOLATILE_CASE (6, 0);
- ASM_VOLATILE_CASE (7, 0);
- ASM_VOLATILE_CASE (8, 0);
- ASM_VOLATILE_CASE (9, 0);
- ASM_VOLATILE_CASE (10, 0);
- ASM_VOLATILE_CASE (11, 0);
- ASM_VOLATILE_CASE (12, 0);
- ASM_VOLATILE_CASE (13, 0);
- ASM_VOLATILE_CASE (14, 0);
- ASM_VOLATILE_CASE (15, 0);
- ASM_VOLATILE_CASE (16, 0);
- ASM_VOLATILE_CASE (17, 0);
- ASM_VOLATILE_CASE (18, 0);
- ASM_VOLATILE_CASE (19, 0);
- ASM_VOLATILE_CASE (20, 0);
- ASM_VOLATILE_CASE (21, 0);
- ASM_VOLATILE_CASE (22, 0);
- ASM_VOLATILE_CASE (23, 0);
- ASM_VOLATILE_CASE (24, 0);
- ASM_VOLATILE_CASE (25, 0);
- ASM_VOLATILE_CASE (26, 0);
- ASM_VOLATILE_CASE (27, 0);
- ASM_VOLATILE_CASE (28, 0);
- ASM_VOLATILE_CASE (29, 0);
- ASM_VOLATILE_CASE (30, 0);
- ASM_VOLATILE_CASE (31, 0);
- default:
- break;
- }
- break;
- case 1:
- /* __asm__("dmfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE (0, 1);
- ASM_VOLATILE_CASE (1, 1);
- ASM_VOLATILE_CASE (2, 1);
- ASM_VOLATILE_CASE (3, 1);
- ASM_VOLATILE_CASE (4, 1);
- ASM_VOLATILE_CASE (5, 1);
- ASM_VOLATILE_CASE (6, 1);
- ASM_VOLATILE_CASE (7, 1);
- ASM_VOLATILE_CASE (8, 1);
- ASM_VOLATILE_CASE (9, 1);
- ASM_VOLATILE_CASE (10, 1);
- ASM_VOLATILE_CASE (11, 1);
- ASM_VOLATILE_CASE (12, 1);
- ASM_VOLATILE_CASE (13, 1);
- ASM_VOLATILE_CASE (14, 1);
- ASM_VOLATILE_CASE (15, 1);
- ASM_VOLATILE_CASE (16, 1);
- ASM_VOLATILE_CASE (17, 1);
- ASM_VOLATILE_CASE (18, 1);
- ASM_VOLATILE_CASE (19, 1);
- ASM_VOLATILE_CASE (20, 1);
- ASM_VOLATILE_CASE (21, 1);
- ASM_VOLATILE_CASE (22, 1);
- ASM_VOLATILE_CASE (23, 1);
- ASM_VOLATILE_CASE (24, 1);
- ASM_VOLATILE_CASE (25, 1);
- ASM_VOLATILE_CASE (26, 1);
- ASM_VOLATILE_CASE (27, 1);
- ASM_VOLATILE_CASE (28, 1);
- ASM_VOLATILE_CASE (29, 1);
- ASM_VOLATILE_CASE (30, 1);
- ASM_VOLATILE_CASE (31, 1);
- default:
- break;
- }
- break;
- case 2:
- /* __asm__("dmfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE (0, 2);
- ASM_VOLATILE_CASE (1, 2);
- ASM_VOLATILE_CASE (2, 2);
- ASM_VOLATILE_CASE (3, 1);
- ASM_VOLATILE_CASE (4, 2);
- ASM_VOLATILE_CASE (5, 2);
- ASM_VOLATILE_CASE (6, 2);
- ASM_VOLATILE_CASE (7, 2);
- ASM_VOLATILE_CASE (8, 2);
- ASM_VOLATILE_CASE (9, 2);
- ASM_VOLATILE_CASE (10, 2);
- ASM_VOLATILE_CASE (11, 2);
- ASM_VOLATILE_CASE (12, 2);
- ASM_VOLATILE_CASE (13, 2);
- ASM_VOLATILE_CASE (14, 2);
- ASM_VOLATILE_CASE (15, 2);
- ASM_VOLATILE_CASE (16, 2);
- ASM_VOLATILE_CASE (17, 2);
- ASM_VOLATILE_CASE (18, 2);
- ASM_VOLATILE_CASE (19, 2);
- ASM_VOLATILE_CASE (20, 2);
- ASM_VOLATILE_CASE (21, 2);
- ASM_VOLATILE_CASE (22, 2);
- ASM_VOLATILE_CASE (23, 2);
- ASM_VOLATILE_CASE (24, 2);
- ASM_VOLATILE_CASE (25, 2);
- ASM_VOLATILE_CASE (26, 2);
- ASM_VOLATILE_CASE (27, 2);
- ASM_VOLATILE_CASE (28, 2);
- ASM_VOLATILE_CASE (29, 2);
- ASM_VOLATILE_CASE (30, 2);
- ASM_VOLATILE_CASE (31, 2);
- default:
- break;
- }
- break;
- case 3:
- /* __asm__("dmfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE (0, 3);
- ASM_VOLATILE_CASE (1, 3);
- ASM_VOLATILE_CASE (2, 3);
- ASM_VOLATILE_CASE (3, 3);
- ASM_VOLATILE_CASE (4, 3);
- ASM_VOLATILE_CASE (5, 3);
- ASM_VOLATILE_CASE (6, 3);
- ASM_VOLATILE_CASE (7, 3);
- ASM_VOLATILE_CASE (8, 3);
- ASM_VOLATILE_CASE (9, 3);
- ASM_VOLATILE_CASE (10, 3);
- ASM_VOLATILE_CASE (11, 3);
- ASM_VOLATILE_CASE (12, 3);
- ASM_VOLATILE_CASE (13, 3);
- ASM_VOLATILE_CASE (14, 3);
- ASM_VOLATILE_CASE (15, 3);
- ASM_VOLATILE_CASE (16, 3);
- ASM_VOLATILE_CASE (17, 3);
- ASM_VOLATILE_CASE (18, 3);
- ASM_VOLATILE_CASE (19, 3);
- ASM_VOLATILE_CASE (20, 3);
- ASM_VOLATILE_CASE (21, 3);
- ASM_VOLATILE_CASE (22, 3);
- ASM_VOLATILE_CASE (23, 3);
- ASM_VOLATILE_CASE (24, 3);
- ASM_VOLATILE_CASE (25, 3);
- ASM_VOLATILE_CASE (26, 3);
- ASM_VOLATILE_CASE (27, 3);
- ASM_VOLATILE_CASE (28, 3);
- ASM_VOLATILE_CASE (29, 3);
- ASM_VOLATILE_CASE (30, 3);
- ASM_VOLATILE_CASE (31, 3);
- default:
- break;
- }
- break;
- case 4:
- /* __asm__("dmfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE (0, 4);
- ASM_VOLATILE_CASE (1, 4);
- ASM_VOLATILE_CASE (2, 4);
- ASM_VOLATILE_CASE (3, 4);
- ASM_VOLATILE_CASE (4, 4);
- ASM_VOLATILE_CASE (5, 4);
- ASM_VOLATILE_CASE (6, 4);
- ASM_VOLATILE_CASE (7, 4);
- ASM_VOLATILE_CASE (8, 4);
- ASM_VOLATILE_CASE (9, 4);
- ASM_VOLATILE_CASE (10, 4);
- ASM_VOLATILE_CASE (11, 4);
- ASM_VOLATILE_CASE (12, 4);
- ASM_VOLATILE_CASE (13, 4);
- ASM_VOLATILE_CASE (14, 4);
- ASM_VOLATILE_CASE (15, 4);
- ASM_VOLATILE_CASE (16, 4);
- ASM_VOLATILE_CASE (17, 4);
- ASM_VOLATILE_CASE (18, 4);
- ASM_VOLATILE_CASE (19, 4);
- ASM_VOLATILE_CASE (20, 4);
- ASM_VOLATILE_CASE (21, 4);
- ASM_VOLATILE_CASE (22, 4);
- ASM_VOLATILE_CASE (23, 4);
- ASM_VOLATILE_CASE (24, 4);
- ASM_VOLATILE_CASE (25, 4);
- ASM_VOLATILE_CASE (26, 4);
- ASM_VOLATILE_CASE (27, 4);
- ASM_VOLATILE_CASE (28, 4);
- ASM_VOLATILE_CASE (29, 4);
- ASM_VOLATILE_CASE (30, 4);
- ASM_VOLATILE_CASE (31, 4);
- default:
- break;
- }
- break;
- case 5:
- /* __asm__("dmfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE (0, 5);
- ASM_VOLATILE_CASE (1, 5);
- ASM_VOLATILE_CASE (2, 5);
- ASM_VOLATILE_CASE (3, 5);
- ASM_VOLATILE_CASE (4, 5);
- ASM_VOLATILE_CASE (5, 5);
- ASM_VOLATILE_CASE (6, 5);
- ASM_VOLATILE_CASE (7, 5);
- ASM_VOLATILE_CASE (8, 5);
- ASM_VOLATILE_CASE (9, 5);
- ASM_VOLATILE_CASE (10, 5);
- ASM_VOLATILE_CASE (11, 5);
- ASM_VOLATILE_CASE (12, 5);
- ASM_VOLATILE_CASE (13, 5);
- ASM_VOLATILE_CASE (14, 5);
- ASM_VOLATILE_CASE (15, 5);
- ASM_VOLATILE_CASE (16, 5);
- ASM_VOLATILE_CASE (17, 5);
- ASM_VOLATILE_CASE (18, 5);
- ASM_VOLATILE_CASE (19, 5);
- ASM_VOLATILE_CASE (20, 5);
- ASM_VOLATILE_CASE (21, 5);
- ASM_VOLATILE_CASE (22, 5);
- ASM_VOLATILE_CASE (23, 5);
- ASM_VOLATILE_CASE (24, 5);
- ASM_VOLATILE_CASE (25, 5);
- ASM_VOLATILE_CASE (26, 5);
- ASM_VOLATILE_CASE (27, 5);
- ASM_VOLATILE_CASE (28, 5);
- ASM_VOLATILE_CASE (29, 5);
- ASM_VOLATILE_CASE (30, 5);
- ASM_VOLATILE_CASE (31, 5);
- default:
- break;
- }
- break;
- case 6:
- /* __asm__("dmfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE (0, 6);
- ASM_VOLATILE_CASE (1, 6);
- ASM_VOLATILE_CASE (2, 6);
- ASM_VOLATILE_CASE (3, 6);
- ASM_VOLATILE_CASE (4, 6);
- ASM_VOLATILE_CASE (5, 6);
- ASM_VOLATILE_CASE (6, 6);
- ASM_VOLATILE_CASE (7, 6);
- ASM_VOLATILE_CASE (8, 6);
- ASM_VOLATILE_CASE (9, 6);
- ASM_VOLATILE_CASE (10, 6);
- ASM_VOLATILE_CASE (11, 6);
- ASM_VOLATILE_CASE (12, 6);
- ASM_VOLATILE_CASE (13, 6);
- ASM_VOLATILE_CASE (14, 6);
- ASM_VOLATILE_CASE (15, 6);
- ASM_VOLATILE_CASE (16, 6);
- ASM_VOLATILE_CASE (17, 6);
- ASM_VOLATILE_CASE (18, 6);
- ASM_VOLATILE_CASE (19, 6);
- ASM_VOLATILE_CASE (20, 6);
- ASM_VOLATILE_CASE (21, 6);
- ASM_VOLATILE_CASE (22, 6);
- ASM_VOLATILE_CASE (23, 6);
- ASM_VOLATILE_CASE (24, 6);
- ASM_VOLATILE_CASE (25, 6);
- ASM_VOLATILE_CASE (26, 6);
- ASM_VOLATILE_CASE (27, 6);
- ASM_VOLATILE_CASE (28, 6);
- ASM_VOLATILE_CASE (29, 6);
- ASM_VOLATILE_CASE (30, 6);
- ASM_VOLATILE_CASE (31, 6);
- default:
- break;
- }
- break;
- case 7:
- /* __asm__("dmfc0 %0, $1, 0" :"=r" (x)); */
- switch (rd) {
- ASM_VOLATILE_CASE (0, 7);
- ASM_VOLATILE_CASE (1, 7);
- ASM_VOLATILE_CASE (2, 7);
- ASM_VOLATILE_CASE (3, 7);
- ASM_VOLATILE_CASE (4, 7);
- ASM_VOLATILE_CASE (5, 7);
- ASM_VOLATILE_CASE (6, 7);
- ASM_VOLATILE_CASE (7, 7);
- ASM_VOLATILE_CASE (8, 7);
- ASM_VOLATILE_CASE (9, 7);
- ASM_VOLATILE_CASE (10, 7);
- ASM_VOLATILE_CASE (11, 7);
- ASM_VOLATILE_CASE (12, 7);
- ASM_VOLATILE_CASE (13, 7);
- ASM_VOLATILE_CASE (14, 7);
- ASM_VOLATILE_CASE (15, 7);
- ASM_VOLATILE_CASE (16, 7);
- ASM_VOLATILE_CASE (17, 7);
- ASM_VOLATILE_CASE (18, 7);
- ASM_VOLATILE_CASE (19, 7);
- ASM_VOLATILE_CASE (20, 7);
- ASM_VOLATILE_CASE (21, 7);
- ASM_VOLATILE_CASE (22, 7);
- ASM_VOLATILE_CASE (23, 7);
- ASM_VOLATILE_CASE (24, 7);
- ASM_VOLATILE_CASE (25, 7);
- ASM_VOLATILE_CASE (26, 7);
- ASM_VOLATILE_CASE (27, 7);
- ASM_VOLATILE_CASE (28, 7);
- ASM_VOLATILE_CASE (29, 7);
- ASM_VOLATILE_CASE (30, 7);
- ASM_VOLATILE_CASE (31, 7);
- default:
- break;
- }
- break;
-
- default:
- break;
- }
-#endif
- return x;
-}
-
#if defined(__mips__) && ((defined(__mips_isa_rev) && __mips_isa_rev >= 2))
UInt mips32_dirtyhelper_rdhwr ( UInt rt, UInt rd )
{
Modified: trunk/priv/guest_mips_toIR.c
==============================================================================
--- trunk/priv/guest_mips_toIR.c (original)
+++ trunk/priv/guest_mips_toIR.c Thu Oct 6 14:54:12 2016
@@ -13392,33 +13392,6 @@
}
}
break; /* COP1 */
- case 0x10: /* COP0 */
- if (rs == 0) { /* MFC0 */
- DIP("mfc0 r%u, r%u, %u", rt, rd, sel);
- IRTemp val = newTemp(Ity_I32);
- IRExpr** args = mkIRExprVec_3 (IRExpr_BBPTR(), mkU32(rd), mkU32(sel));
- IRDirty *d = unsafeIRDirty_1_N(val,
- 0,
- "mips32_dirtyhelper_mfc0",
- &mips32_dirtyhelper_mfc0,
- args);
- stmt(IRStmt_Dirty(d));
- putIReg(rt, mkexpr(val));
- } else if (rs == 1) {
- /* Doubleword Move from Coprocessor 0 - DMFC0; MIPS64 */
- DIP("dmfc0 r%u, r%u, %u", rt, rd, sel);
- IRTemp val = newTemp(Ity_I64);
- IRExpr** args = mkIRExprVec_3 (IRExpr_BBPTR(), mkU64(rd), mkU64(sel));
- IRDirty *d = unsafeIRDirty_1_N(val,
- 0,
- "mips64_dirtyhelper_dmfc0",
- &mips64_dirtyhelper_dmfc0,
- args);
- stmt(IRStmt_Dirty(d));
- putDReg(rt, mkexpr(val));
- } else
- goto decode_failure;
- break;
case 0x31: /* LWC1 */
/* Load Word to Floating Point - LWC1 (MIPS32) */
|
|
From: Matthias S. <zz...@ge...> - 2016-10-06 06:23:24
|
Hi!
I propose this simple fix (that can be improved later with e.g.
__attribute__((unused)) for gcc).
Currently this code is used to silence a unused warning of the compiler
if NVALGRIND is defined:
#if defined(NVALGRIND)
if (format) *(volatile const char *)format; /* avoid compiler
warning */
return 0;
#else /* NVALGRIND */
This is a simple fix for Bug 358697.
It also adds a testcase.
I consider this added volatile a regression in current trunk (and hope
it will be fixed before next release).
Regards
Matthias
|
|
From: <sv...@va...> - 2016-10-06 05:26:20
|
Author: sewardj
Date: Thu Oct 6 06:25:58 2016
New Revision: 3257
Log:
Relax the overly-restrictive implementation of
(T3) SUB{S}.W Rd, Rn, Rm, {shift}
in the case where Rn=SP, to allow |shift| values of 0,1,2,3
instead of just 0. Fixes #354274. Patch from di...@go....
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
==============================================================================
--- trunk/priv/guest_arm_toIR.c (original)
+++ trunk/priv/guest_arm_toIR.c Thu Oct 6 06:25:58 2016
@@ -20576,10 +20576,10 @@
&& rD != 15 && rN == 13 && imm5 <= 31 && how == 0) {
valid = True;
}
- /* also allow "sub.w reg, sp, reg w/ no shift
+ /* also allow "sub.w reg, sp, reg lsl #N for N=0,1,2 or 3
(T1) "SUB (SP minus register) */
if (!valid && INSN0(8,5) == BITS4(1,1,0,1) // sub
- && rD != 15 && rN == 13 && imm5 == 0 && how == 0) {
+ && rD != 15 && rN == 13 && imm5 <= 3 && how == 0) {
valid = True;
}
if (valid) {
|