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
(8) |
2
(8) |
3
(15) |
4
(14) |
5
(12) |
6
(40) |
7
(9) |
|
8
(5) |
9
(12) |
10
(9) |
11
(13) |
12
(7) |
13
(7) |
14
(19) |
|
15
(18) |
16
(13) |
17
(16) |
18
(8) |
19
(16) |
20
(16) |
21
(12) |
|
22
(21) |
23
(39) |
24
(27) |
25
(33) |
26
(41) |
27
(17) |
28
(15) |
|
From: Josef W. <Jos...@gm...> - 2009-02-27 17:55:44
|
On Friday 27 February 2009, Nicholas Nethercote wrote: > On Fri, Feb 27, 2009 at 9:13 AM, Josef Weidendorfer > <Jos...@gm...> wrote: > > On Thursday 26 February 2009, Nicholas Nethercote wrote: > > > > An externally distributed tool still would need to get an version > > number of the tool interface used in the static VG libraries, > > at build time. Of course, it just can > > look at the Valgrind release version (I assume with pkgconfig?). > > Still, would it be better to have an explicit tool interface version > > given in valgrind.pc? > > How would the external tool be distributed? > > If binary, it'll be compiled with some version of the core, so no problem there. Sure. > If source, it'll presumably be copied into an existing valgrind source > tree to be compiled. IMHO the preferable way is to be distributed as "exp-" tool with a VG release, as then, any needed patches to VG core for the tool are already merged. The second preferable way would be for the external tool to not need any VG core changes, and be compilable with the headers/libraries installed from a regular VG installation. It should be the last option for an external tool to be copied into an existing VG source for compilation, as it needs patching Makefile.am/configure.in. Consequently, the tool probably will provide a patch for this. More problematic is that this way, any needed changes to VG core by the tool are easily distributed in this patch, and there is no motivation/reason at all for the tool author to try to push the core changes upstream. I can only assume that because of this we already missed quite some potentially interesting VG core patches, especially if the patches do not even show up on the VG mailing list. Any idea how to improve this situation? > In that case, if the version is right it'll > compile ok. If not, it'll fail to compile. I guess there's a > possible middle case where the meaning of something has changed, but > in a way that doesn't affect compilation. It seems pretty unlikely, > however. Also, noticing when the interface version number needs > updating is a problem... in between official releases, there could be > a large number of interfaces due to lots of minor changes. > > So I'm inclined to use the Valgrind release version as the only number of note. I am fine with this. Especially, as we experienced that incrementing the tool interface version on changes is easy to forget. Josef > > N > |
|
From: <sv...@va...> - 2009-02-27 15:47:40
|
Author: sewardj
Date: 2009-02-27 15:47:36 +0000 (Fri, 27 Feb 2009)
New Revision: 9292
Log:
* minor formatting changes
* change how the -v output is printed, so as to make it (arguably)
easier to read
Modified:
branches/DARWIN/coregrind/m_debuginfo/readmacho.c
Modified: branches/DARWIN/coregrind/m_debuginfo/readmacho.c
===================================================================
--- branches/DARWIN/coregrind/m_debuginfo/readmacho.c 2009-02-27 15:43:27 UTC (rev 9291)
+++ branches/DARWIN/coregrind/m_debuginfo/readmacho.c 2009-02-27 15:47:36 UTC (rev 9292)
@@ -62,19 +62,19 @@
/* --- !!! --- EXTERNAL HEADERS end --- !!! --- */
#if VG_WORDSIZE == 4
-#define MAGIC MH_MAGIC
-#define MACH_HEADER mach_header
-#define LC_SEGMENT_CMD LC_SEGMENT
-#define SEGMENT_COMMAND segment_command
-#define SECTION section
-#define NLIST nlist
+# define MAGIC MH_MAGIC
+# define MACH_HEADER mach_header
+# define LC_SEGMENT_CMD LC_SEGMENT
+# define SEGMENT_COMMAND segment_command
+# define SECTION section
+# define NLIST nlist
#else
-#define MAGIC MH_MAGIC_64
-#define MACH_HEADER mach_header_64
-#define LC_SEGMENT_CMD LC_SEGMENT_64
-#define SEGMENT_COMMAND segment_command_64
-#define SECTION section_64
-#define NLIST nlist_64
+# define MAGIC MH_MAGIC_64
+# define MACH_HEADER mach_header_64
+# define LC_SEGMENT_CMD LC_SEGMENT_64
+# define SEGMENT_COMMAND segment_command_64
+# define SECTION section_64
+# define NLIST nlist_64
#endif
@@ -116,7 +116,8 @@
risym.tocptr = 0;
risym.addr = sym_addr;
- risym.size = di->text_avma+di->text_size - sym_addr; // let canonicalize fix it
+ risym.size = // let canonicalize fix it
+ di->text_avma+di->text_size - sym_addr;
risym.name = ML_(addStr)(di, o_strtab + nl->n_un.n_strx, -1);
risym.isText = True;
// Lots of user function names get prepended with an underscore. Eg. the
@@ -135,7 +136,7 @@
}
-#if ! defined (APPLE_DSYM_EXT_AND_SUBDIRECTORY)
+#if !defined(APPLE_DSYM_EXT_AND_SUBDIRECTORY)
#define APPLE_DSYM_EXT_AND_SUBDIRECTORY ".dSYM/Contents/Resources/DWARF/"
#endif
@@ -286,7 +287,8 @@
struct fat_arch *arch_be;
struct fat_arch arch;
int f;
- if (fat_size < sizeof(struct fat_header) + fh.nfat_arch * sizeof(struct fat_arch)) {
+ if (fat_size < sizeof(struct fat_header)
+ + fh.nfat_arch * sizeof(struct fat_arch)) {
ML_(symerr)(NULL, False, "Invalid Mach-O file (1 too small).");
return 0;
}
@@ -295,17 +297,17 @@
f++, arch_be++)
{
Int cputype;
-# if defined(VGA_ppc)
+# if defined(VGA_ppc)
cputype = CPU_TYPE_POWERPC;
-# elif defined(VGA_ppc64)
+# elif defined(VGA_ppc64)
cputype = CPU_TYPE_POWERPC64;
-# elif defined(VGA_x86)
+# elif defined(VGA_x86)
cputype = CPU_TYPE_X86;
-# elif defined(VGA_amd64)
+# elif defined(VGA_amd64)
cputype = CPU_TYPE_X86_64;
-# else
-# error unknown architecture
-# endif
+# else
+# error "unknown architecture"
+# endif
arch.cputype = VG_(ntohl)(arch_be->cputype);
arch.cpusubtype = VG_(ntohl)(arch_be->cpusubtype);
arch.offset = VG_(ntohl)(arch_be->offset);
@@ -321,7 +323,8 @@
}
}
if (f == fh.nfat_arch) {
- ML_(symerr)(NULL, True, "No acceptable architecture found in fat file.");
+ ML_(symerr)(NULL, True,
+ "No acceptable architecture found in fat file.");
return 0;
}
} else {
@@ -402,8 +405,8 @@
and uuid and nlist and STABS */
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "Looking for debug info in %s ...",
- di->filename);
+ VG_(message)(Vg_DebugMsg,
+ "%s (%#lx)", di->filename, di->rx_map_avma );
di->text_bias = 0;
ob_map_base = map_file(di->filename, &ob_map_size);
@@ -422,7 +425,8 @@
for (c = 0, cmd = (struct load_command *)(mh+1);
c < mh->ncmds;
- c++, cmd = (struct load_command *)(cmd->cmdsize + (unsigned long)cmd))
+ c++, cmd = (struct load_command *)(cmd->cmdsize
+ + (unsigned long)cmd))
{
if (cmd->cmd == LC_SYMTAB) {
symcmd = (struct symtab_command *)cmd;
@@ -437,7 +441,8 @@
UChar *soname = VG_(strrchr)(dylibname, '/');
if (!soname) soname = dylibname;
else soname++;
- di->soname = VG_(arena_strdup)(VG_AR_DINFO, "di.readmacho.dylibname", soname);
+ di->soname = VG_(arena_strdup)(VG_AR_DINFO,
+ "di.readmacho.dylibname", soname);
}
else if (cmd->cmd==LC_ID_DYLINKER && mh->filetype==MH_DYLINKER) {
struct dylinker_command *dcmd = (struct dylinker_command *)cmd;
@@ -445,7 +450,8 @@
UChar *soname = VG_(strrchr)(dylinkername, '/');
if (!soname) soname = dylinkername;
else soname++;
- di->soname = VG_(arena_strdup)(VG_AR_DINFO, "di.readmacho.dylinkername", soname);
+ di->soname = VG_(arena_strdup)(VG_AR_DINFO,
+ "di.readmacho.dylinkername", soname);
}
else if (cmd->cmd == LC_SEGMENT_CMD) {
struct SEGMENT_COMMAND *seg = (struct SEGMENT_COMMAND *)cmd;
@@ -467,11 +473,12 @@
}
}
- ; /* Don't unmap object yet; we'll read nlist and STABS after DWARF. */
+ /* Don't unmap object yet; we'll read nlist and STABS after DWARF. */
}
if (!di->soname) {
- di->soname = VG_(arena_strdup)(VG_AR_DINFO, "di.readmacho.noname", "NONE");
+ di->soname = VG_(arena_strdup)(VG_AR_DINFO,
+ "di.readmacho.noname", "NONE");
}
@@ -482,28 +489,27 @@
if (dsymfile) {
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "Looking for debug info in %s ...",
- dsymfile);
+ VG_(message)(Vg_DebugMsg, " dsyms= %s", dsymfile);
dw_map_base = map_file(dsymfile, &dw_map_size);
if (dw_map_base) {
dw_oimage = make_thin(dw_map_base, dw_map_size, &dw_n_oimage);
}
}
if (dw_oimage) {
- UChar *debug_info_img = NULL;
- Int debug_info_sz;
- UChar *debug_abbv_img;
- Int debug_abbv_sz;
- UChar *debug_line_img;
- Int debug_line_sz;
- UChar *debug_str_img;
- Int debug_str_sz;
- UChar *debug_ranges_img;
- Int debug_ranges_sz;
- UChar *debug_loc_img;
- Int debug_loc_sz;
- UChar *debug_name_img;
- Int debug_name_sz;
+ UChar* debug_info_img = NULL;
+ Int debug_info_sz;
+ UChar* debug_abbv_img;
+ Int debug_abbv_sz;
+ UChar* debug_line_img;
+ Int debug_line_sz;
+ UChar* debug_str_img;
+ Int debug_str_sz;
+ UChar* debug_ranges_img;
+ Int debug_ranges_sz;
+ UChar* debug_loc_img;
+ Int debug_loc_sz;
+ UChar* debug_name_img;
+ Int debug_name_sz;
debug_info_img =
getsectdata(dw_oimage, dw_n_oimage,
@@ -528,14 +534,18 @@
"__DWARF", "__debug_pubnames", &debug_name_sz);
if (debug_info_img) {
- if (VG_(clo_verbosity) > 1)
+ if (VG_(clo_verbosity) > 1) {
+ if (0)
VG_(message)(Vg_DebugMsg,
- "Reading DWARF debuginfo for %s (%#lx) from %s"
+ "Reading dwarf3 for %s (%#lx) from %s"
" (%d %d %d %d %d %d)",
di->filename, di->text_avma, dsymfile,
debug_info_sz, debug_abbv_sz, debug_line_sz,
debug_str_sz, debug_ranges_sz, debug_loc_sz
);
+ VG_(message)(Vg_DebugMsg,
+ " reading dwarf3 from dsyms file");
+ }
/* The old reader: line numbers and unwind info only */
ML_(read_debuginfo_dwarf3) ( di,
debug_info_img, debug_info_sz,
@@ -606,9 +616,9 @@
strs = (UChar *)(ob_oimage + symcmd->stroff);
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "Reading nlist symbols and STABS debuginfo for %s (%#lx) (%d %d)",
- di->filename, di->text_avma,
- dysymcmd->nextdefsym, dysymcmd->nlocalsym );
+ VG_(message)(Vg_DebugMsg,
+ " reading syms from primary file (%d %d)",
+ dysymcmd->nextdefsym, dysymcmd->nlocalsym );
// extern symbols
read_symtab(di,
syms + dysymcmd->iextdefsym, dysymcmd->nextdefsym,
@@ -619,6 +629,9 @@
strs, symcmd->strsize);
if (!got_dwarf) {
// debug info
+ VG_(message)(Vg_DebugMsg,
+ " reading stabs from primary file (%d %d)",
+ dysymcmd->nextdefsym, dysymcmd->nlocalsym );
ML_(read_debuginfo_stabs) ( di, di->text_bias,
(UChar *)syms,
symcmd->nsyms * sizeof(struct NLIST),
@@ -647,4 +660,6 @@
return False;
}
-
+/*--------------------------------------------------------------------*/
+/*--- end readmacho.c ---*/
+/*--------------------------------------------------------------------*/
|
|
From: <sv...@va...> - 2009-02-27 15:43:31
|
Author: sewardj
Date: 2009-02-27 15:43:27 +0000 (Fri, 27 Feb 2009)
New Revision: 9291
Log:
Merge r9054 (make the leak checker a bit less verbose) from trunk
Modified:
branches/DARWIN/memcheck/mc_leakcheck.c
Modified: branches/DARWIN/memcheck/mc_leakcheck.c
===================================================================
--- branches/DARWIN/memcheck/mc_leakcheck.c 2009-02-27 05:27:12 UTC (rev 9290)
+++ branches/DARWIN/memcheck/mc_leakcheck.c 2009-02-27 15:43:27 UTC (rev 9291)
@@ -412,8 +412,8 @@
static void lc_scan_memory(Addr start, SizeT len)
{
- if (VG_(clo_verbosity) > 1) {
- VG_(message)(Vg_DebugMsg, "Scanning segment: %#lx..%#lx (%ld)",
+ if (VG_(clo_verbosity) > 2) {
+ VG_(message)(Vg_DebugMsg, " Scanning segment: %#lx..%#lx (%ld)",
start, start+len-1, len);
}
lc_scan_memory_WRK(start, len, -1);
|
|
From: Bart V. A. <bar...@gm...> - 2009-02-27 08:37:59
|
Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) started at 2009-02-27 02:00:01 EST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 406 tests, 38 stderr failures, 9 stdout failures, 0 post failures == exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 406 tests, 40 stderr failures, 9 stdout failures, 0 post failures == exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/unit_libcbase (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/faultstatus (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Feb 27 02:47:05 2009 --- new.short Fri Feb 27 03:37:55 2009 *************** *** 8,10 **** ! == 406 tests, 40 stderr failures, 9 stdout failures, 0 post failures == exp-ptrcheck/tests/bad_percentify (stderr) --- 8,10 ---- ! == 406 tests, 38 stderr failures, 9 stdout failures, 0 post failures == exp-ptrcheck/tests/bad_percentify (stderr) *************** *** 38,40 **** memcheck/tests/pointer-trace (stderr) - memcheck/tests/unit_libcbase (stderr) memcheck/tests/varinfo1 (stderr) --- 38,39 ---- *************** *** 46,48 **** memcheck/tests/wrap8 (stderr) - none/tests/faultstatus (stderr) none/tests/linux/mremap (stderr) --- 45,46 ---- |
|
From: xinran w. <xin...@gm...> - 2009-02-27 06:07:15
|
Stephen,
I see. Thank you very much!
Just tried --trace-flags= and --trace-notbelow= options and they are
really helpful options.
-Xinran
On Thu, Feb 26, 2009 at 10:35 PM, Stephen McCamant <sm...@cs...> wrote:
>>>>>> "XW" == xinran wang <xin...@gm...> writes:
>
> XW> Hi,
> XW> I'm writting a new Valgrind tool. I have a question: How can I get
> XW> the value of a temporary, eg. the value of t1 ?
>
> XW> For exmaple, how can I know the temporary value with index temp1
> XW> in the below function "wrtmp_rdtmp_handler".
>
> There isn't any way to lookup the value of a Tmp at "runtime" (e.g.,
> from inside a helper function like wrtmp_rdtmp_handler), because
> they are part of the x86->IR->x86 "compilation" process. It's just
> like there's no way a C function can ask "what's the value of variable
> var in the code that called me?". Instead, you have to get the value
> of the Tmp in the IR, and then pass that to the helper. You do that by
> putting a RdTmp IRExpr in the IR. You've already checked that "data"
> is a RdTmp IRExpr in this branch of the code, so I think you just need
> to pass that RdTmp expression at the first element in the IRExprVec.
>
> As Nick mentions, you then need to change the helper arguments to
> "Word" type and make sure the value you're passing fits.
>
> XW> // code snippet to instrument Ist_WrTmp instruction with Iex_RdTmp data
> XW> IRStmt* st = sbIn->stmts[i];
>
> XW> switch (st->tag) {
> XW> case Ist_WrTmp:
> XW> data = st->Ist.WrTmp.data;
> XW> type = typeOfIRExpr(sbOut->tyenv, data);
> XW> tl_assert(type != Ity_INVALID);
> XW> switch (data->tag) {
>
> XW> case Iex_RdTmp:
> XW> argv = mkIRExprVec_2( mkIRExpr_HWord(
> data-> Iex.RdTmp.tmp ),
> XW> mkIRExpr_HWord(st->Ist.WrTmp.tmp) );
> XW> di = unsafeIRDirty_0_N( /*regparms*/2,
> XW> "wrtmp_rdtmp_handler",
> XW> VG_(fnptr_to_fnentry)( wrtmp_rdtmp_handler ),
> XW> argv );
> XW> addStmtToIRSB( sbOut, IRStmt_Dirty(di) );
> XW> break;
> XW> }
> XW> }
> XW> ~~~~~~~~~~~~~~~~~~~~~~~
>
> XW> Any suggest will be greatly appreciated.
>
> Another perspective that I've found helpful is to think about the IR
> as a programming language, using the syntax of the way Valgrind dumps
> it for tracing. (There's a good chance you'll have to learn this for
> debugging, at any rate.) You can look at other "code" written in the
> IR using the --trace-flags= and --trace-notbelow= options. One you get
> used to that language, you can translate back into the code to build
> the IR code you want.
>
> In that language, you want to do handler(t7), while what you're doing
> now is handler(0x7:I32).
>
> Hope this helps,
>
> -- Stephen
>
>
|
|
From: <sv...@va...> - 2009-02-27 05:27:20
|
Author: njn
Date: 2009-02-27 05:27:12 +0000 (Fri, 27 Feb 2009)
New Revision: 9290
Log:
Merge r9289 (remove dead INTERFACE cruft) from the trunk.
Modified:
branches/DARWIN/callgrind/dump.c
branches/DARWIN/coregrind/m_main.c
branches/DARWIN/include/pub_tool_libcproc.h
branches/DARWIN/include/pub_tool_tooliface.h
Modified: branches/DARWIN/callgrind/dump.c
===================================================================
--- branches/DARWIN/callgrind/dump.c 2009-02-27 03:38:28 UTC (rev 9289)
+++ branches/DARWIN/callgrind/dump.c 2009-02-27 05:27:12 UTC (rev 9290)
@@ -1640,7 +1640,6 @@
Int i,j,size = 0;
HChar* argv;
-#if VG_CORE_INTERFACE_VERSION > 8
if (VG_(args_the_exename))
size = VG_(sprintf)(cmdbuf, " %s", VG_(args_the_exename));
@@ -1651,15 +1650,6 @@
for(j=0;argv[j]!=0;j++)
if (size < BUF_LEN) cmdbuf[size++] = argv[j];
}
-#else
- for(i = 0; i < VG_(client_argc); i++) {
- argv = VG_(client_argv)[i];
- if (!argv) continue;
- if ((size>0) && (size < BUF_LEN)) cmdbuf[size++] = ' ';
- for(j=0;argv[j]!=0;j++)
- if (size < BUF_LEN) cmdbuf[size++] = argv[j];
- }
-#endif
if (size == BUF_LEN) size--;
cmdbuf[size] = 0;
Modified: branches/DARWIN/coregrind/m_main.c
===================================================================
--- branches/DARWIN/coregrind/m_main.c 2009-02-27 03:38:28 UTC (rev 9289)
+++ branches/DARWIN/coregrind/m_main.c 2009-02-27 05:27:12 UTC (rev 9290)
@@ -1636,7 +1636,7 @@
// p: setup_file_descriptors() [for 'VG_(fd_xxx_limit)']
//--------------------------------------------------------------
VG_(debugLog)(1, "main", "Initialise the tool part 1 (pre_clo_init)\n");
- (VG_(tool_info).tl_pre_clo_init)();
+ VG_(tl_pre_clo_init)();
//--------------------------------------------------------------
// If --tool and --help/--help-debug was given, now give the core+tool
Modified: branches/DARWIN/include/pub_tool_libcproc.h
===================================================================
--- branches/DARWIN/include/pub_tool_libcproc.h 2009-02-27 03:38:28 UTC (rev 9289)
+++ branches/DARWIN/include/pub_tool_libcproc.h 2009-02-27 05:27:12 UTC (rev 9290)
@@ -35,9 +35,7 @@
Command-line and environment stuff
------------------------------------------------------------------ */
-/* Client args and environment. Note that VG_(client_argv)[] can be written
- to by the client, so you should check each entry is non-NULL before
- printing. VG_(client_envp) can be inspected with VG_(getenv)(). */
+/* Client environment. */
extern Char** VG_(client_envp);
/* Looks up VG_(client_envp) */
Modified: branches/DARWIN/include/pub_tool_tooliface.h
===================================================================
--- branches/DARWIN/include/pub_tool_tooliface.h 2009-02-27 03:38:28 UTC (rev 9289)
+++ branches/DARWIN/include/pub_tool_tooliface.h 2009-02-27 05:27:12 UTC (rev 9290)
@@ -37,39 +37,23 @@
/* ------------------------------------------------------------------ */
/* The interface version */
-/* The version number indicates binary-incompatible changes to the
- interface; if the core and tool versions don't match, Valgrind
- will abort. */
-#define VG_CORE_INTERFACE_VERSION 11
+/* Initialise tool. Must do the following:
+ - initialise the `details' struct, via the VG_(details_*)() functions
+ - register the basic tool functions, via VG_(basic_tool_funcs)().
+ May do the following:
+ - initialise the `needs' struct to indicate certain requirements, via
+ the VG_(needs_*)() functions
+ - any other tool-specific initialisation
+*/
+extern void (*VG_(tl_pre_clo_init)) ( void );
-typedef struct _ToolInfo {
- Int sizeof_ToolInfo;
- Int interface_version;
+/* Every tool must include this macro somewhere, exactly once. The
+ interface version is no longer relevant, but we kept the same name
+ to avoid requiring changes to tools.
+*/
+#define VG_DETERMINE_INTERFACE_VERSION(pre_clo_init) \
+ void (*VG_(tl_pre_clo_init)) ( void ) = pre_clo_init;
- /* Initialise tool. Must do the following:
- - initialise the `details' struct, via the VG_(details_*)() functions
- - register any helpers called by generated code
-
- May do the following:
- - initialise the `needs' struct to indicate certain requirements, via
- the VG_(needs_*)() functions
- - initialize all the tool's entrypoints via the VG_(init_*)() functions
- - register any tool-specific profiling events
- - any other tool-specific initialisation
- */
- void (*tl_pre_clo_init) ( void );
-} ToolInfo;
-
-extern const ToolInfo VG_(tool_info);
-
-/* Every tool must include this macro somewhere, exactly once. */
-#define VG_DETERMINE_INTERFACE_VERSION(pre_clo_init) \
- const ToolInfo VG_(tool_info) = { \
- .sizeof_ToolInfo = sizeof(ToolInfo), \
- .interface_version = VG_CORE_INTERFACE_VERSION, \
- .tl_pre_clo_init = pre_clo_init, \
- };
-
/* ------------------------------------------------------------------ */
/* Basic tool functions */
|
|
From: Stephen M.
|
>>>>> "XW" == xinran wang <xin...@gm...> writes:
XW> Hi,
XW> I'm writting a new Valgrind tool. I have a question: How can I get
XW> the value of a temporary, eg. the value of t1 ?
XW> For exmaple, how can I know the temporary value with index temp1
XW> in the below function "wrtmp_rdtmp_handler".
There isn't any way to lookup the value of a Tmp at "runtime" (e.g.,
from inside a helper function like wrtmp_rdtmp_handler), because
they are part of the x86->IR->x86 "compilation" process. It's just
like there's no way a C function can ask "what's the value of variable
var in the code that called me?". Instead, you have to get the value
of the Tmp in the IR, and then pass that to the helper. You do that by
putting a RdTmp IRExpr in the IR. You've already checked that "data"
is a RdTmp IRExpr in this branch of the code, so I think you just need
to pass that RdTmp expression at the first element in the IRExprVec.
As Nick mentions, you then need to change the helper arguments to
"Word" type and make sure the value you're passing fits.
XW> // code snippet to instrument Ist_WrTmp instruction with Iex_RdTmp data
XW> IRStmt* st = sbIn->stmts[i];
XW> switch (st->tag) {
XW> case Ist_WrTmp:
XW> data = st->Ist.WrTmp.data;
XW> type = typeOfIRExpr(sbOut->tyenv, data);
XW> tl_assert(type != Ity_INVALID);
XW> switch (data->tag) {
XW> case Iex_RdTmp:
XW> argv = mkIRExprVec_2( mkIRExpr_HWord(
data-> Iex.RdTmp.tmp ),
XW> mkIRExpr_HWord(st->Ist.WrTmp.tmp) );
XW> di = unsafeIRDirty_0_N( /*regparms*/2,
XW> "wrtmp_rdtmp_handler",
XW> VG_(fnptr_to_fnentry)( wrtmp_rdtmp_handler ),
XW> argv );
XW> addStmtToIRSB( sbOut, IRStmt_Dirty(di) );
XW> break;
XW> }
XW> }
XW> ~~~~~~~~~~~~~~~~~~~~~~~
XW> Any suggest will be greatly appreciated.
Another perspective that I've found helpful is to think about the IR
as a programming language, using the syntax of the way Valgrind dumps
it for tracing. (There's a good chance you'll have to learn this for
debugging, at any rate.) You can look at other "code" written in the
IR using the --trace-flags= and --trace-notbelow= options. One you get
used to that language, you can translate back into the code to build
the IR code you want.
In that language, you want to do handler(t7), while what you're doing
now is handler(0x7:I32).
Hope this helps,
-- Stephen
|
|
From: xinran w. <xin...@gm...> - 2009-02-27 04:15:00
|
Nick, Thank you for your quick response. I understand how my handler function is called and it does work at runtime in my tool. My question is what is the pointer to variable t1. i.e. How to refer t1 ? Are these temporary variables stored in a global array or linked list? If yes, could you tell me the name of the array. , -Xinran On Thu, Feb 26, 2009 at 9:37 PM, Nicholas Nethercote <n.n...@gm...> wrote: > On Fri, Feb 27, 2009 at 1:47 PM, xinran wang <xin...@gm...> wrote: >> >> Thank you very much for your response. I do need to access the value >> of t1 at runtime. Could you tell me how to access the value at my >> function, e.g. wrtmp_rdtmp_handler. >> My function "wrtmp_rdtmp_handler" will be called at runtime, right ? > > Yes. The arguments won't have type IRTemp, though; that type only > exists at compile-time. > I think all arguments for called functions must be word-sized, eg. > Word or SizeT. Have a look at the function trace_load() in > lackey/lk_main.c and how it is called; I think what you have is very > close to working. > > NIck > |
|
From: Tom H. <th...@cy...> - 2009-02-27 03:48:47
|
Nightly build on vauxhall ( x86_64, Fedora 10 ) started at 2009-02-27 03:20:05 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 486 tests, 0 stderr failures, 1 stdout failure, 0 post failures ==
none/tests/vgprintf (stdout)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... done
Regression test results follow
== 486 tests, 0 stderr failures, 0 stdout failures, 0 post failures ==
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Fri Feb 27 03:34:23 2009
--- new.short Fri Feb 27 03:48:35 2009
***************
*** 4,6 ****
Building valgrind ... done
! Running regression tests ... done
--- 4,6 ----
Building valgrind ... done
! Running regression tests ... failed
***************
*** 8,10 ****
! == 486 tests, 0 stderr failures, 0 stdout failures, 0 post failures ==
--- 8,11 ----
! == 486 tests, 0 stderr failures, 1 stdout failure, 0 post failures ==
! none/tests/vgprintf (stdout)
|
|
From: Tom H. <th...@cy...> - 2009-02-27 03:45:15
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2009-02-27 03:05:07 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 477 tests, 5 stderr failures, 1 stdout failure, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/tc20_verifywrap (stderr) none/tests/vgprintf (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 477 tests, 5 stderr failures, 0 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/tc20_verifywrap (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Feb 27 03:25:14 2009 --- new.short Fri Feb 27 03:45:09 2009 *************** *** 8,10 **** ! == 477 tests, 5 stderr failures, 0 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) --- 8,10 ---- ! == 477 tests, 5 stderr failures, 1 stdout failure, 0 post failures == exp-ptrcheck/tests/ccc (stderr) *************** *** 14,15 **** --- 14,16 ---- helgrind/tests/tc20_verifywrap (stderr) + none/tests/vgprintf (stdout) |
|
From: Tom H. <th...@cy...> - 2009-02-27 03:40:36
|
Nightly build on mg ( x86_64, Fedora 9 ) started at 2009-02-27 03:10:03 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 483 tests, 4 stderr failures, 3 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) memcheck/tests/linux/timerfd-syscall (stdout) none/tests/linux/mremap2 (stdout) none/tests/vgprintf (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 483 tests, 4 stderr failures, 2 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) memcheck/tests/linux/timerfd-syscall (stdout) none/tests/linux/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Feb 27 03:21:06 2009 --- new.short Fri Feb 27 03:32:03 2009 *************** *** 8,10 **** ! == 483 tests, 4 stderr failures, 2 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) --- 8,10 ---- ! == 483 tests, 4 stderr failures, 3 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) *************** *** 15,16 **** --- 15,17 ---- none/tests/linux/mremap2 (stdout) + none/tests/vgprintf (stdout) |
|
From: Nicholas N. <n.n...@gm...> - 2009-02-27 03:40:36
|
On Fri, Feb 27, 2009 at 1:47 PM, xinran wang <xin...@gm...> wrote: > > Thank you very much for your response. I do need to access the value > of t1 at runtime. Could you tell me how to access the value at my > function, e.g. wrtmp_rdtmp_handler. > My function "wrtmp_rdtmp_handler" will be called at runtime, right ? Yes. The arguments won't have type IRTemp, though; that type only exists at compile-time. I think all arguments for called functions must be word-sized, eg. Word or SizeT. Have a look at the function trace_load() in lackey/lk_main.c and how it is called; I think what you have is very close to working. NIck |
|
From: <sv...@va...> - 2009-02-27 03:40:21
|
Author: njn
Date: 2009-02-27 03:38:28 +0000 (Fri, 27 Feb 2009)
New Revision: 9289
Log:
Remove dead code relating to interface versions.
Modified:
trunk/callgrind/dump.c
trunk/coregrind/m_main.c
trunk/include/pub_tool_libcproc.h
trunk/include/pub_tool_tooliface.h
Modified: trunk/callgrind/dump.c
===================================================================
--- trunk/callgrind/dump.c 2009-02-27 03:23:42 UTC (rev 9288)
+++ trunk/callgrind/dump.c 2009-02-27 03:38:28 UTC (rev 9289)
@@ -1640,7 +1640,6 @@
Int i,j,size = 0;
HChar* argv;
-#if VG_CORE_INTERFACE_VERSION > 8
if (VG_(args_the_exename))
size = VG_(sprintf)(cmdbuf, " %s", VG_(args_the_exename));
@@ -1651,15 +1650,6 @@
for(j=0;argv[j]!=0;j++)
if (size < BUF_LEN) cmdbuf[size++] = argv[j];
}
-#else
- for(i = 0; i < VG_(client_argc); i++) {
- argv = VG_(client_argv)[i];
- if (!argv) continue;
- if ((size>0) && (size < BUF_LEN)) cmdbuf[size++] = ' ';
- for(j=0;argv[j]!=0;j++)
- if (size < BUF_LEN) cmdbuf[size++] = argv[j];
- }
-#endif
if (size == BUF_LEN) size--;
cmdbuf[size] = 0;
Modified: trunk/coregrind/m_main.c
===================================================================
--- trunk/coregrind/m_main.c 2009-02-27 03:23:42 UTC (rev 9288)
+++ trunk/coregrind/m_main.c 2009-02-27 03:38:28 UTC (rev 9289)
@@ -1585,7 +1585,7 @@
// p: setup_file_descriptors() [for 'VG_(fd_xxx_limit)']
//--------------------------------------------------------------
VG_(debugLog)(1, "main", "Initialise the tool part 1 (pre_clo_init)\n");
- (VG_(tool_info).tl_pre_clo_init)();
+ VG_(tl_pre_clo_init)();
//--------------------------------------------------------------
// If --tool and --help/--help-debug was given, now give the core+tool
Modified: trunk/include/pub_tool_libcproc.h
===================================================================
--- trunk/include/pub_tool_libcproc.h 2009-02-27 03:23:42 UTC (rev 9288)
+++ trunk/include/pub_tool_libcproc.h 2009-02-27 03:38:28 UTC (rev 9289)
@@ -35,9 +35,7 @@
Command-line and environment stuff
------------------------------------------------------------------ */
-/* Client args and environment. Note that VG_(client_argv)[] can be written
- to by the client, so you should check each entry is non-NULL before
- printing. VG_(client_envp) can be inspected with VG_(getenv)(). */
+/* Client environment. */
extern Char** VG_(client_envp);
/* Looks up VG_(client_envp) */
Modified: trunk/include/pub_tool_tooliface.h
===================================================================
--- trunk/include/pub_tool_tooliface.h 2009-02-27 03:23:42 UTC (rev 9288)
+++ trunk/include/pub_tool_tooliface.h 2009-02-27 03:38:28 UTC (rev 9289)
@@ -37,39 +37,23 @@
/* ------------------------------------------------------------------ */
/* The interface version */
-/* The version number indicates binary-incompatible changes to the
- interface; if the core and tool versions don't match, Valgrind
- will abort. */
-#define VG_CORE_INTERFACE_VERSION 11
+/* Initialise tool. Must do the following:
+ - initialise the `details' struct, via the VG_(details_*)() functions
+ - register the basic tool functions, via VG_(basic_tool_funcs)().
+ May do the following:
+ - initialise the `needs' struct to indicate certain requirements, via
+ the VG_(needs_*)() functions
+ - any other tool-specific initialisation
+*/
+extern void (*VG_(tl_pre_clo_init)) ( void );
-typedef struct _ToolInfo {
- Int sizeof_ToolInfo;
- Int interface_version;
+/* Every tool must include this macro somewhere, exactly once. The
+ interface version is no longer relevant, but we kept the same name
+ to avoid requiring changes to tools.
+*/
+#define VG_DETERMINE_INTERFACE_VERSION(pre_clo_init) \
+ void (*VG_(tl_pre_clo_init)) ( void ) = pre_clo_init;
- /* Initialise tool. Must do the following:
- - initialise the `details' struct, via the VG_(details_*)() functions
- - register any helpers called by generated code
-
- May do the following:
- - initialise the `needs' struct to indicate certain requirements, via
- the VG_(needs_*)() functions
- - initialize all the tool's entrypoints via the VG_(init_*)() functions
- - register any tool-specific profiling events
- - any other tool-specific initialisation
- */
- void (*tl_pre_clo_init) ( void );
-} ToolInfo;
-
-extern const ToolInfo VG_(tool_info);
-
-/* Every tool must include this macro somewhere, exactly once. */
-#define VG_DETERMINE_INTERFACE_VERSION(pre_clo_init) \
- const ToolInfo VG_(tool_info) = { \
- .sizeof_ToolInfo = sizeof(ToolInfo), \
- .interface_version = VG_CORE_INTERFACE_VERSION, \
- .tl_pre_clo_init = pre_clo_init, \
- };
-
/* ------------------------------------------------------------------ */
/* Basic tool functions */
|
|
From: <sv...@va...> - 2009-02-27 03:24:02
|
Author: njn Date: 2009-02-27 03:23:42 +0000 (Fri, 27 Feb 2009) New Revision: 9288 Log: Merged r9287 (vgprintf fix) from the DARWIN branch. Modified: trunk/none/tests/vgprintf.stdout.exp Modified: trunk/none/tests/vgprintf.stdout.exp =================================================================== --- trunk/none/tests/vgprintf.stdout.exp 2009-02-26 23:15:53 UTC (rev 9287) +++ trunk/none/tests/vgprintf.stdout.exp 2009-02-27 03:23:42 UTC (rev 9288) @@ -1 +1 @@ -. +... |
|
From: xinran w. <xin...@gm...> - 2009-02-27 02:47:46
|
Nick, Thank you very much for your response. I do need to access the value of t1 at runtime. Could you tell me how to access the value at my function, e.g. wrtmp_rdtmp_handler. My function "wrtmp_rdtmp_handler" will be called at runtime, right ? -Xinran On Thu, Feb 26, 2009 at 7:29 PM, Nicholas Nethercote <n.n...@gm...> wrote: > On Fri, Feb 27, 2009 at 9:25 AM, xinran wang <xin...@gm...> wrote: >> >> I'm writting a new Valgrind tool. I have a question: How can I get the >> value of a temporary, eg. the value of t1 ? > > I think you might be confusing compile-time with run-time, which is > easy to do. t1 is the name of the temporary at compile-time. You > can't actually access the value that will be in it until run-time, if > that makes sense. > > Nick > |
|
From: Nicholas N. <n.n...@gm...> - 2009-02-27 01:29:25
|
On Fri, Feb 27, 2009 at 9:25 AM, xinran wang <xin...@gm...> wrote: > > I'm writting a new Valgrind tool. I have a question: How can I get the > value of a temporary, eg. the value of t1 ? I think you might be confusing compile-time with run-time, which is easy to do. t1 is the name of the temporary at compile-time. You can't actually access the value that will be in it until run-time, if that makes sense. Nick |
|
From: Nicholas N. <n.n...@gm...> - 2009-02-27 01:20:51
|
On Fri, Feb 27, 2009 at 9:13 AM, Josef Weidendorfer <Jos...@gm...> wrote: > On Thursday 26 February 2009, Nicholas Nethercote wrote: > > An externally distributed tool still would need to get an version > number of the tool interface used in the static VG libraries, > at build time. Of course, it just can > look at the Valgrind release version (I assume with pkgconfig?). > Still, would it be better to have an explicit tool interface version > given in valgrind.pc? How would the external tool be distributed? If binary, it'll be compiled with some version of the core, so no problem there. If source, it'll presumably be copied into an existing valgrind source tree to be compiled. In that case, if the version is right it'll compile ok. If not, it'll fail to compile. I guess there's a possible middle case where the meaning of something has changed, but in a way that doesn't affect compilation. It seems pretty unlikely, however. Also, noticing when the interface version number needs updating is a problem... in between official releases, there could be a large number of interfaces due to lots of minor changes. So I'm inclined to use the Valgrind release version as the only number of note. N |