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
|
3
|
4
|
|
5
|
6
|
7
(2) |
8
(16) |
9
|
10
|
11
(1) |
|
12
(19) |
13
(12) |
14
(15) |
15
(5) |
16
(15) |
17
(1) |
18
(15) |
|
19
|
20
(3) |
21
(1) |
22
(12) |
23
(4) |
24
(5) |
25
(15) |
|
26
(4) |
27
(12) |
28
|
29
(2) |
30
(13) |
31
(13) |
|
|
From: Philippe W. <phi...@sk...> - 2014-01-24 20:44:04
|
On Fri, 2014-01-24 at 17:08 +0530, Subhashish Pradhan wrote: > Hello, > > > If Valgrind were to be ported to a new os, what modifications need be > done to get it working? > > > My assumptions till now have been: > > > Implementing wrappers in coregrind/m_syswrap/syswrap-os.c > Building the dependencies on host > Compiling on that os. Depends what the "new os" is. If that os looks a lot like linux it will be easier. If the os is completely different, it will be a lot more difficult. At fosdem, there will be a presentation about porting valgrind on solaris. That might give some clues for a "somewhat" easy port. You could also look at the diff-s for the bsd port. Otherwise, there is a tentative valgrind port to ms-windows, which will be the example of a wildly different os : sourceforge.net/projects/valgrind4win/ What is your target os ? Philippe |
|
From: Philippe W. <phi...@sk...> - 2014-01-24 20:38:39
|
On Thu, 2014-01-23 at 12:59 -0800, Carl E. Love wrote: > I suspect that the "bad code" is being run on the guest and is not part > of Valgrind binary running on the native machine. I have found and > fixed this type of issue in the Valgrind code running on the native > machine. I am wondering how to track what function is being run on the > guest and examine the register state after each guest instruction is > executed. Effectively, I want to single step through the execution of > the guest code one instruction at a time to see what function and where > the bad address gets generated. Any ideas? Thanks. Not too sure what 'one instruction at a time' means. If you want to step one instruction at a time of the guest code, then use options --vgdb-error=0 --vgdb-=full and connect gdb to valgrind. The gdb will debug the guest program, and the guest registers will be up to date at each instruction as --vgdb=full automatically enables --vex-iropt-register-updates=allregs-at-each-insn With that, gdb will allow e.g. stepi and examiniation of all registers after each stepi instruction. Now, if you want to step one "JIT-ted" instruction at a time in the code valgrind has JIT-ted for a guest instruction, then I guess you will have to follow the scheduler jumps and all that stuff to reach and step in the JIT-ted code. That does not look to be a pleasant moment :(. Philippe |
|
From: <sv...@va...> - 2014-01-24 16:44:19
|
Author: carll
Date: Fri Jan 24 16:44:08 2014
New Revision: 13780
Log:
This patch by adr...@fr... fixes the lrmw and stmw
instructions.
The patch also adds ppc32 and ppc64 test cases for the instructions.
The patch is a fix for bugzilla 329956 "valgrind crashes when lmw/stmw instructions are used on ppc64".
The VEX code commit is 2802
Added:
trunk/none/tests/ppc32/ldst_multiple.c
trunk/none/tests/ppc32/ldst_multiple.stderr.exp
trunk/none/tests/ppc32/ldst_multiple.stdout.exp
trunk/none/tests/ppc32/ldst_multiple.vgtest
trunk/none/tests/ppc64/ldst_multiple.c (with props)
trunk/none/tests/ppc64/ldst_multiple.stderr.exp
trunk/none/tests/ppc64/ldst_multiple.stdout.exp
trunk/none/tests/ppc64/ldst_multiple.vgtest
Modified:
trunk/none/tests/ppc32/Makefile.am
trunk/none/tests/ppc64/Makefile.am
Modified: trunk/none/tests/ppc32/Makefile.am
==============================================================================
--- trunk/none/tests/ppc32/Makefile.am (original)
+++ trunk/none/tests/ppc32/Makefile.am Fri Jan 24 16:44:08 2014
@@ -43,7 +43,8 @@
jm_int_isa_2_07.stderr.exp jm_int_isa_2_07.stdout.exp jm_int_isa_2_07.vgtest \
test_isa_2_07_part2.stderr.exp test_isa_2_07_part2.stdout.exp test_isa_2_07_part2.vgtest \
test_tm.stderr.exp test_tm.stdout.exp test_tm.vgtest \
- test_touch_tm.stderr.exp test_touch_tm.stdout.exp test_touch_tm.vgtest
+ test_touch_tm.stderr.exp test_touch_tm.stdout.exp test_touch_tm.vgtest \
+ ldst_multiple.stderr.exp ldst_multiple.stdout.exp ldst_multiple.vgtest
check_PROGRAMS = \
@@ -59,7 +60,8 @@
test_isa_2_07_part1 \
test_isa_2_07_part2 \
test_tm \
- test_touch_tm
+ test_touch_tm \
+ ldst_multiple
AM_CFLAGS += @FLAG_M32@
AM_CXXFLAGS += @FLAG_M32@
Added: trunk/none/tests/ppc32/ldst_multiple.c
==============================================================================
--- trunk/none/tests/ppc32/ldst_multiple.c (added)
+++ trunk/none/tests/ppc32/ldst_multiple.c Fri Jan 24 16:44:08 2014
@@ -0,0 +1,191 @@
+#include <stdio.h>
+#include <stdint.h>
+
+#ifndef __powerpc64__
+typedef uint32_t HWord_t;
+#else
+typedef uint64_t HWord_t;
+#endif
+
+typedef void (*test_func_t)();
+
+typedef struct test_table {
+ test_func_t func;
+ char *name;
+} test_table_t;
+
+static uint32_t values[] = {
+ 0x6efbcfdf,
+ 0xd16c2fd4,
+ 0xf9dc1743,
+ 0xa5aa0bd4,
+ 0x6c8f0c14,
+ 0x69a24188,
+ 0x53b57f1b,
+};
+
+register HWord_t r27 asm("r27");
+register HWord_t r28 asm("r28");
+register HWord_t r29 asm("r29");
+register HWord_t r30 asm("r30");
+register HWord_t r31 asm("r31");
+
+register HWord_t r14 asm("r14");
+
+HWord_t temp[5];
+
+#ifdef __powerpc64__
+
+#define SAVE_REGS(addr) \
+ asm volatile( \
+ " std 27, 0(%0) \n" \
+ " std 28, 8(%0) \n" \
+ " std 29, 16(%0) \n" \
+ " std 30, 24(%0) \n" \
+ " std 31, 32(%0) \n" \
+ ::"b"(addr))
+
+#define RESTORE_REGS(addr) \
+ asm volatile( \
+ " ld 27, 0(%0) \n" \
+ " ld 28, 8(%0) \n" \
+ " ld 29, 16(%0) \n" \
+ " ld 30, 24(%0) \n" \
+ " ld 31, 32(%0) \n" \
+ ::"b"(addr))
+
+#else /* !__powerpc64__ */
+
+#define SAVE_REGS(addr) \
+ asm volatile( \
+ " stw 27, 0(%0) \n" \
+ " stw 28, 4(%0) \n" \
+ " stw 29, 8(%0) \n" \
+ " stw 30, 12(%0) \n" \
+ " stw 31, 16(%0) \n" \
+ ::"b"(addr))
+
+#define RESTORE_REGS(addr) \
+ asm volatile( \
+ " lwz 27, 0(%0) \n" \
+ " lwz 28, 4(%0) \n" \
+ " lwz 29, 8(%0) \n" \
+ " lwz 30, 12(%0) \n" \
+ " lwz 31, 16(%0) \n" \
+ ::"b"(addr))
+
+#endif /* __powerpc64__ */
+
+/*
+ * gcc is not happy if we modify r31 (the frame pointer) behind its back
+ * so we omit it
+ */
+static void __attribute__((optimize("-fomit-frame-pointer"))) test_lmw(void)
+{
+ r14 = (HWord_t)values;
+
+ /* save r27 - r31 */
+ SAVE_REGS(temp);
+
+ /* load r27 - r31 */
+ asm volatile(
+ " lmw %r27, 0(%r14) \n");
+
+#ifdef __powerpc64__
+ printf("lmw => %016lx %016lx %016lx %016lx %016lx\n",
+#else
+ printf("lmw => %08x %08x %08x %08x %08x\n",
+#endif
+ r27, r28, r29, r30, r31);
+
+ /*
+ * test load multiple with nonzero immediate offset
+ * load the last two values into r30 - r31.
+ * r27 - r29 should remain the same
+ */
+ asm volatile(
+ " lmw %r30, 20(%r14) \n");
+
+#ifdef __powerpc64__
+ printf("lmw => %016lx %016lx %016lx %016lx %016lx\n",
+#else
+ printf("lmw => %08x %08x %08x %08x %08x\n",
+#endif
+ r27, r28, r29, r30, r31);
+
+ /* restore r27 - r31 */
+ RESTORE_REGS(temp);
+}
+
+/*
+ * gcc is not happy if we modify r31 (the frame pointer) behind its back
+ * so we omit it
+ */
+static void __attribute__((optimize("-fomit-frame-pointer"))) test_stmw(void)
+{
+ uint32_t result[7] = { 0 };
+ int i;
+
+ SAVE_REGS(temp);
+
+#ifdef __powerpc64__
+ asm volatile(
+ " lwz 27, 0(%0) \n" \
+ " lwz 28, 4(%0) \n" \
+ " lwz 29, 8(%0) \n" \
+ " lwz 30, 12(%0) \n" \
+ " lwz 31, 16(%0) \n" \
+ ::"b"(values));
+#else
+ RESTORE_REGS(values);
+#endif
+
+ r14 = (HWord_t)&result;
+
+ /* store r27 - r31 */
+ asm volatile(
+ " stmw %r27, 0(%r14) \n");
+
+ printf("stmw => ");
+ for (i = 0; i < sizeof(result) / sizeof(result[0]); i++)
+ printf("%08x ", result[i]);
+
+ printf("\n");
+
+ /*
+ * test store multiple with nonzero immediate offset
+ * store r30 - r31 into the last two places in the array
+ * the rest of the array should remain the same
+ */
+ asm volatile(
+ " stmw %r30, 20(%r14) \n");
+
+ printf("stmw => ");
+ for (i = 0; i < sizeof(result) / sizeof(result[0]); i++)
+ printf("%08x ", result[i]);
+
+ printf("\n");
+
+ RESTORE_REGS(temp);
+}
+
+static test_table_t all_tests[] = {
+ { &test_lmw,
+ "Test Load Multiple instruction" },
+ { &test_stmw,
+ "Test Store Multiple instruction" },
+ { NULL, NULL },
+};
+
+int main(void)
+{
+ test_func_t func;
+ int i = 0;
+
+ while ((func = all_tests[i].func)) {
+ (*func)();
+ i++;
+ }
+
+ return 0;
+}
Added: trunk/none/tests/ppc32/ldst_multiple.stderr.exp
==============================================================================
--- trunk/none/tests/ppc32/ldst_multiple.stderr.exp (added)
+++ trunk/none/tests/ppc32/ldst_multiple.stderr.exp Fri Jan 24 16:44:08 2014
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/ppc32/ldst_multiple.stdout.exp
==============================================================================
--- trunk/none/tests/ppc32/ldst_multiple.stdout.exp (added)
+++ trunk/none/tests/ppc32/ldst_multiple.stdout.exp Fri Jan 24 16:44:08 2014
@@ -0,0 +1,4 @@
+lmw => 6efbcfdf d16c2fd4 f9dc1743 a5aa0bd4 6c8f0c14
+lmw => 6efbcfdf d16c2fd4 f9dc1743 69a24188 53b57f1b
+stmw => 6efbcfdf d16c2fd4 f9dc1743 a5aa0bd4 6c8f0c14 00000000 00000000
+stmw => 6efbcfdf d16c2fd4 f9dc1743 a5aa0bd4 6c8f0c14 a5aa0bd4 6c8f0c14
Added: trunk/none/tests/ppc32/ldst_multiple.vgtest
==============================================================================
--- trunk/none/tests/ppc32/ldst_multiple.vgtest (added)
+++ trunk/none/tests/ppc32/ldst_multiple.vgtest Fri Jan 24 16:44:08 2014
@@ -0,0 +1 @@
+prog: ldst_multiple
Modified: trunk/none/tests/ppc64/Makefile.am
==============================================================================
--- trunk/none/tests/ppc64/Makefile.am (original)
+++ trunk/none/tests/ppc64/Makefile.am Fri Jan 24 16:44:08 2014
@@ -31,7 +31,8 @@
jm_int_isa_2_07.stderr.exp jm_int_isa_2_07.stdout.exp jm_int_isa_2_07.vgtest \
test_isa_2_07_part2.stderr.exp test_isa_2_07_part2.stdout.exp test_isa_2_07_part2.vgtest \
test_tm.stderr.exp test_tm.stdout.exp test_tm.vgtest \
- test_touch_tm.stderr.exp test_touch_tm.stdout.exp test_touch_tm.vgtest
+ test_touch_tm.stderr.exp test_touch_tm.stdout.exp test_touch_tm.vgtest \
+ ldst_multiple.stderr.exp ldst_multiple.stdout.exp ldst_multiple.vgtest
check_PROGRAMS = \
allexec \
@@ -39,7 +40,7 @@
power6_mf_gpr test_isa_2_06_part1 test_isa_2_06_part2 \
test_isa_2_06_part3 test_dfp1 test_dfp2 test_dfp3 test_dfp4 \
test_dfp5 test_isa_2_07_part1 test_isa_2_07_part2 \
- test_tm test_touch_tm
+ test_tm test_touch_tm ldst_multiple
AM_CFLAGS += @FLAG_M64@
AM_CXXFLAGS += @FLAG_M64@
Added: trunk/none/tests/ppc64/ldst_multiple.c
==============================================================================
--- trunk/none/tests/ppc64/ldst_multiple.c (added)
+++ trunk/none/tests/ppc64/ldst_multiple.c Fri Jan 24 16:44:08 2014
@@ -0,0 +1 @@
+link ../ppc32/ldst_multiple.c
\ No newline at end of file
Added: trunk/none/tests/ppc64/ldst_multiple.stderr.exp
==============================================================================
--- trunk/none/tests/ppc64/ldst_multiple.stderr.exp (added)
+++ trunk/none/tests/ppc64/ldst_multiple.stderr.exp Fri Jan 24 16:44:08 2014
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/ppc64/ldst_multiple.stdout.exp
==============================================================================
--- trunk/none/tests/ppc64/ldst_multiple.stdout.exp (added)
+++ trunk/none/tests/ppc64/ldst_multiple.stdout.exp Fri Jan 24 16:44:08 2014
@@ -0,0 +1,4 @@
+lmw => 000000006efbcfdf 00000000d16c2fd4 00000000f9dc1743 00000000a5aa0bd4 000000006c8f0c14
+lmw => 000000006efbcfdf 00000000d16c2fd4 00000000f9dc1743 0000000069a24188 0000000053b57f1b
+stmw => 6efbcfdf d16c2fd4 f9dc1743 a5aa0bd4 6c8f0c14 00000000 00000000
+stmw => 6efbcfdf d16c2fd4 f9dc1743 a5aa0bd4 6c8f0c14 a5aa0bd4 6c8f0c14
Added: trunk/none/tests/ppc64/ldst_multiple.vgtest
==============================================================================
--- trunk/none/tests/ppc64/ldst_multiple.vgtest (added)
+++ trunk/none/tests/ppc64/ldst_multiple.vgtest Fri Jan 24 16:44:08 2014
@@ -0,0 +1 @@
+prog: ldst_multiple
|
|
From: <sv...@va...> - 2014-01-24 16:42:38
|
Author: carll
Date: Fri Jan 24 16:42:26 2014
New Revision: 2808
Log:
This patch by adr...@fr... fixes the lrmw and stmw
instructions.
The patch also adds ppc32 and ppc64 test cases for the instructions.
The patch is a fix for bugzilla 329956 "valgrind crashes when lmw/stmw instructions are used on ppc64".
Modified:
trunk/priv/guest_ppc_toIR.c
Modified: trunk/priv/guest_ppc_toIR.c
==============================================================================
--- trunk/priv/guest_ppc_toIR.c (original)
+++ trunk/priv/guest_ppc_toIR.c Fri Jan 24 16:42:26 2014
@@ -5233,6 +5233,7 @@
Int simm16 = extend_s_16to32(uimm16);
IRType ty = mode64 ? Ity_I64 : Ity_I32;
+ IROp mkAdd = mode64 ? Iop_Add64 : Iop_Add32;
IRTemp EA = newTemp(ty);
UInt r = 0;
UInt ea_off = 0;
@@ -5248,7 +5249,7 @@
}
DIP("lmw r%u,%d(r%u)\n", rD_addr, simm16, rA_addr);
for (r = rD_addr; r <= 31; r++) {
- irx_addr = binop(Iop_Add32, mkexpr(EA), mkU32(ea_off));
+ irx_addr = binop(mkAdd, mkexpr(EA), mode64 ? mkU64(ea_off) : mkU32(ea_off));
putIReg( r, mkWidenFrom32(ty, loadBE(Ity_I32, irx_addr ),
False) );
ea_off += 4;
@@ -5258,7 +5259,7 @@
case 0x2F: // stmw (Store Multiple Word, PPC32 p527)
DIP("stmw r%u,%d(r%u)\n", rS_addr, simm16, rA_addr);
for (r = rS_addr; r <= 31; r++) {
- irx_addr = binop(Iop_Add32, mkexpr(EA), mkU32(ea_off));
+ irx_addr = binop(mkAdd, mkexpr(EA), mode64 ? mkU64(ea_off) : mkU32(ea_off));
storeBE( irx_addr, mkNarrowTo32(ty, getIReg(r)) );
ea_off += 4;
}
|
|
From: Subhashish P. <sp...@gm...> - 2014-01-24 11:38:53
|
Hello, If Valgrind were to be ported to a new os, what modifications need be done to get it working? My assumptions till now have been: Implementing wrappers in coregrind/m_syswrap/syswrap-os.c Building the dependencies on host Compiling on that os. Am I wrong or missing anything? Thanks in advance. Regards, Subhashish |