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
|
2
(2) |
3
(7) |
|
4
|
5
(11) |
6
(13) |
7
(7) |
8
(5) |
9
(12) |
10
(19) |
|
11
(12) |
12
(7) |
13
(14) |
14
(8) |
15
(5) |
16
(5) |
17
(7) |
|
18
(12) |
19
(14) |
20
(12) |
21
(8) |
22
(4) |
23
(4) |
24
|
|
25
(11) |
26
(17) |
27
(15) |
28
(10) |
29
(19) |
30
(18) |
|
|
From: <sv...@va...> - 2011-09-23 18:08:07
|
Author: florian
Date: 2011-09-23 19:03:21 +0100 (Fri, 23 Sep 2011)
New Revision: 2207
Log:
Document and assert that needs_self_check of VexTranslateArgs
must not be NULL.
Modified:
trunk/priv/main_main.c
trunk/pub/libvex.h
Modified: trunk/priv/main_main.c
===================================================================
--- trunk/priv/main_main.c 2011-09-23 15:04:29 UTC (rev 2206)
+++ trunk/priv/main_main.c 2011-09-23 18:03:21 UTC (rev 2207)
@@ -228,6 +228,8 @@
vex_traceflags = vta->traceflags;
vassert(vex_initdone);
+ vassert(vta->needs_self_check != NULL);
+
vexSetAllocModeTEMP_and_clear();
vexAllocSanityCheck();
Modified: trunk/pub/libvex.h
===================================================================
--- trunk/pub/libvex.h 2011-09-23 15:04:29 UTC (rev 2206)
+++ trunk/pub/libvex.h 2011-09-23 18:03:21 UTC (rev 2207)
@@ -539,10 +539,10 @@
IRSB* (*finaltidy) ( IRSB* );
/* IN: a callback used to ask the caller which of the extents,
- if any, a self check is required for. The returned value is
- a bitmask with a 1 in position i indicating that the i'th
- extent needs a check. Since there can be at most 3 extents,
- the returned values must be between 0 and 7. */
+ if any, a self check is required for. Must not be NULL.
+ The returned value is a bitmask with a 1 in position i indicating
+ that the i'th extent needs a check. Since there can be at most
+ 3 extents, the returned values must be between 0 and 7. */
UInt (*needs_self_check)( /*callback_opaque*/void*,
VexGuestExtents* );
|
|
From: <sv...@va...> - 2011-09-23 15:09:14
|
Author: sewardj
Date: 2011-09-23 16:04:29 +0100 (Fri, 23 Sep 2011)
New Revision: 2206
Log:
Add a couple of spec rules for MI and PL after LOGIC. These are
important for avoiding false positives in Android syscall handlers.
Modified:
trunk/priv/guest_arm_helpers.c
Modified: trunk/priv/guest_arm_helpers.c
===================================================================
--- trunk/priv/guest_arm_helpers.c 2011-09-23 10:12:19 UTC (rev 2205)
+++ trunk/priv/guest_arm_helpers.c 2011-09-23 15:04:29 UTC (rev 2206)
@@ -676,6 +676,21 @@
binop(Iop_CmpNE32, cc_dep1, mkU32(0)));
}
+ if (isU32(cond_n_op, (ARMCondPL << 4) | ARMG_CC_OP_LOGIC)) {
+ /* PL after LOGIC --> test (res >> 31) == 0 */
+ return unop(Iop_1Uto32,
+ binop(Iop_CmpEQ32,
+ binop(Iop_Shr32, cc_dep1, mkU8(31)),
+ mkU32(0)));
+ }
+ if (isU32(cond_n_op, (ARMCondMI << 4) | ARMG_CC_OP_LOGIC)) {
+ /* MI after LOGIC --> test (res >> 31) == 1 */
+ return unop(Iop_1Uto32,
+ binop(Iop_CmpEQ32,
+ binop(Iop_Shr32, cc_dep1, mkU8(31)),
+ mkU32(1)));
+ }
+
/*----------------- AL -----------------*/
/* A critically important case for Thumb code.
|
|
From: <sv...@va...> - 2011-09-23 10:17:09
|
Author: sewardj
Date: 2011-09-23 11:12:19 +0100 (Fri, 23 Sep 2011)
New Revision: 2205
Log:
Add some counter arrays for profiling N,Z,C,V flag evaluations.
Modified:
trunk/priv/guest_arm_helpers.c
Modified: trunk/priv/guest_arm_helpers.c
===================================================================
--- trunk/priv/guest_arm_helpers.c 2011-09-23 08:30:34 UTC (rev 2204)
+++ trunk/priv/guest_arm_helpers.c 2011-09-23 10:12:19 UTC (rev 2205)
@@ -51,12 +51,69 @@
*/
+/* Set to 1 to get detailed profiling info about individual N, Z, C
+ and V flag evaluation. */
+#define PROFILE_NZCV_FLAGS 0
+
+#if PROFILE_NZCV_FLAGS
+
+static UInt tab_n_eval[ARMG_CC_OP_NUMBER];
+static UInt tab_z_eval[ARMG_CC_OP_NUMBER];
+static UInt tab_c_eval[ARMG_CC_OP_NUMBER];
+static UInt tab_v_eval[ARMG_CC_OP_NUMBER];
+static UInt initted = 0;
+static UInt tot_evals = 0;
+
+static void initCounts ( void )
+{
+ UInt i;
+ for (i = 0; i < ARMG_CC_OP_NUMBER; i++) {
+ tab_n_eval[i] = tab_z_eval[i] = tab_c_eval[i] = tab_v_eval[i] = 0;
+ }
+ initted = 1;
+}
+
+static void showCounts ( void )
+{
+ UInt i;
+ vex_printf("\n N Z C V\n");
+ vex_printf( "---------------------------------------------------\n");
+ for (i = 0; i < ARMG_CC_OP_NUMBER; i++) {
+ vex_printf("CC_OP=%d %9d %9d %9d %9d\n",
+ i,
+ tab_n_eval[i], tab_z_eval[i],
+ tab_c_eval[i], tab_v_eval[i] );
+ }
+}
+
+#define NOTE_N_EVAL(_cc_op) NOTE_EVAL(_cc_op, tab_n_eval)
+#define NOTE_Z_EVAL(_cc_op) NOTE_EVAL(_cc_op, tab_z_eval)
+#define NOTE_C_EVAL(_cc_op) NOTE_EVAL(_cc_op, tab_c_eval)
+#define NOTE_V_EVAL(_cc_op) NOTE_EVAL(_cc_op, tab_v_eval)
+
+#define NOTE_EVAL(_cc_op, _tab) \
+ do { \
+ if (!initted) initCounts(); \
+ vassert( ((UInt)(_cc_op)) < ARMG_CC_OP_NUMBER); \
+ _tab[(UInt)(_cc_op)]++; \
+ tot_evals++; \
+ if (0 == (tot_evals & 0xFFFFF)) \
+ showCounts(); \
+ } while (0)
+
+#endif /* PROFILE_NZCV_FLAGS */
+
+
/* Calculate the N flag from the supplied thunk components, in the
least significant bit of the word. Returned bits 31:1 are zero. */
static
UInt armg_calculate_flag_n ( UInt cc_op, UInt cc_dep1,
UInt cc_dep2, UInt cc_dep3 )
{
+# if PROFILE_NZCV_FLAGS
+ NOTE_N_EVAL(cc_op);
+# endif
+
switch (cc_op) {
case ARMG_CC_OP_COPY: {
/* (nzcv:28x0, unused, unused) */
@@ -133,6 +190,10 @@
UInt armg_calculate_flag_z ( UInt cc_op, UInt cc_dep1,
UInt cc_dep2, UInt cc_dep3 )
{
+# if PROFILE_NZCV_FLAGS
+ NOTE_Z_EVAL(cc_op);
+# endif
+
switch (cc_op) {
case ARMG_CC_OP_COPY: {
/* (nzcv:28x0, unused, unused) */
@@ -210,6 +271,10 @@
UInt armg_calculate_flag_c ( UInt cc_op, UInt cc_dep1,
UInt cc_dep2, UInt cc_dep3 )
{
+# if PROFILE_NZCV_FLAGS
+ NOTE_C_EVAL(cc_op);
+# endif
+
switch (cc_op) {
case ARMG_CC_OP_COPY: {
/* (nzcv:28x0, unused, unused) */
@@ -287,6 +352,10 @@
UInt armg_calculate_flag_v ( UInt cc_op, UInt cc_dep1,
UInt cc_dep2, UInt cc_dep3 )
{
+# if PROFILE_NZCV_FLAGS
+ NOTE_V_EVAL(cc_op);
+# endif
+
switch (cc_op) {
case ARMG_CC_OP_COPY: {
/* (nzcv:28x0, unused, unused) */
|
|
From: <sv...@va...> - 2011-09-23 08:35:21
|
Author: sewardj
Date: 2011-09-23 09:30:34 +0100 (Fri, 23 Sep 2011)
New Revision: 2204
Log:
Add a couple more spec rules: LO after SUB and GT after SUB.
Modified:
trunk/priv/guest_arm_helpers.c
Modified: trunk/priv/guest_arm_helpers.c
===================================================================
--- trunk/priv/guest_arm_helpers.c 2011-09-22 21:33:27 UTC (rev 2203)
+++ trunk/priv/guest_arm_helpers.c 2011-09-23 08:30:34 UTC (rev 2204)
@@ -532,6 +532,12 @@
binop(Iop_CmpNE32, cc_dep1, cc_dep2));
}
+ if (isU32(cond_n_op, (ARMCondGT << 4) | ARMG_CC_OP_SUB)) {
+ /* GT after SUB --> test argL >s argR
+ --> test argR <s argL */
+ return unop(Iop_1Uto32,
+ binop(Iop_CmpLT32S, cc_dep2, cc_dep1));
+ }
if (isU32(cond_n_op, (ARMCondLE << 4) | ARMG_CC_OP_SUB)) {
/* LE after SUB --> test argL <=s argR */
return unop(Iop_1Uto32,
@@ -557,6 +563,11 @@
return unop(Iop_1Uto32,
binop(Iop_CmpLE32U, cc_dep2, cc_dep1));
}
+ if (isU32(cond_n_op, (ARMCondLO << 4) | ARMG_CC_OP_SUB)) {
+ /* LO after SUB --> test argL <u argR */
+ return unop(Iop_1Uto32,
+ binop(Iop_CmpLT32U, cc_dep1, cc_dep2));
+ }
if (isU32(cond_n_op, (ARMCondLS << 4) | ARMG_CC_OP_SUB)) {
/* LS after SUB --> test argL <=u argR */
|