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
(13) |
2
(15) |
|
3
(16) |
4
(42) |
5
(9) |
6
(20) |
7
(22) |
8
(24) |
9
(12) |
|
10
(24) |
11
(11) |
12
(2) |
13
(13) |
14
(8) |
15
|
16
(16) |
|
17
(24) |
18
(36) |
19
(100) |
20
(94) |
21
(50) |
22
(39) |
23
(10) |
|
24
(14) |
25
(19) |
26
(2) |
27
(6) |
28
(17) |
29
(9) |
30
(8) |
|
31
(21) |
|
|
|
|
|
|
|
From: Bart V. A. <bar...@gm...> - 2009-05-11 14:05:11
|
On Mon, May 11, 2009 at 3:22 PM, Naveen Kumar <g_n...@ya...> wrote: > I did some more testing and that LDFLAGS="-L$(TARGET_LIB_PATH)" was the culprit. I removed that for the cross compilation and valgrind starts up fine on target now. Just FYI I did nm on the new executable and there are still undefined symbols > > U __assert_fail@@GLIBC_2.0 > [ ... ] The symbols you listed are all defined in glibc. So undefined symbols probably only cause a segmentation fault on PPC if these are not defined in any shared library that is loaded during startup. And it's good to hear that Valgrind now runs fine ! Bart. |
|
From: Naveen K. <g_n...@ya...> - 2009-05-11 13:22:56
|
Bart
I did some more testing and that LDFLAGS="-L$(TARGET_LIB_PATH)" was the culprit. I removed that for the cross compilation and valgrind starts up fine on target now. Just FYI I did nm on the new executable and there are still undefined symbols
U __assert_fail@@GLIBC_2.0
U __ctype_b_loc@@GLIBC_2.3
U __errno_location@@GLIBC_2.0
U __libc_start_main@@GLIBC_2.0
U access@@GLIBC_2.0
U close@@GLIBC_2.0
U execve@@GLIBC_2.0
U exit@@GLIBC_2.0
U fprintf@@GLIBC_2.0
U fputc@@GLIBC_2.0
U fwrite@@GLIBC_2.0
U getenv@@GLIBC_2.0
U malloc@@GLIBC_2.0
U memcmp@@GLIBC_2.0
U memcpy@@GLIBC_2.0
U memset@@GLIBC_2.0
U mmap@@GLIBC_2.0
U munmap@@GLIBC_2.0
U open@@GLIBC_2.0
U readlink@@GLIBC_2.0
U sprintf@@GLIBC_2.0
U strcat@@GLIBC_2.0
U strchr@@GLIBC_2.0
U strcpy@@GLIBC_2.0
U strerror@@GLIBC_2.0
U strlen@@GLIBC_2.0
U strncmp@@GLIBC_2.0
U sysconf@@GLIBC_2.0
U vfprintf@@GLIBC_2.0
Naveen
----- Original Message ----
From: Bart Van Assche <bar...@gm...>
To: g_n...@ya...
Cc: val...@li...
Sent: Monday, May 11, 2009 2:24:20 AM
Subject: Re: [Valgrind-developers] cross compiling valgrind
On Sat, May 9, 2009 at 9:53 PM, <g_n...@ya...> wrote:
> I understand the logic behind the --prefix option. I am purposely running the valgrind
> executable off of a different path to test if it atleast gives the "unable to locate memcheck
> library" error. After that passes that then I will copy/link directly on target. I will try the
> command that you suggest and check if valgrind is linked properly. Thanks for the info.
Something else you could check is whether there are any undefined
symbols in the Valgrind executable (nm ... | grep ' U '). To my
surprise, I noticed yesterday that it is possible on PPC to create
executables that contain an undefined symbol. When starting such an
executable the result is a segmentation fault.
Bart.
|
|
From: Naveen K. <g_n...@ya...> - 2009-05-11 12:48:02
|
Hmm. I tried nm and I get a lot of errors like this
BFD: /mnt2/package/usr/local/valgrind/bin/valgrind: invalid string offset 12 >= 0 for section `'
BFD: /mnt2/package/usr/local/valgrind/bin/valgrind: invalid string offset 65536 >= 0 for section `.shstrtab'
I tried readelf and it looks like lots of sections are corrupt
-bash-2.05b# readelf -a /mnt2/package/usr/local/valgrind/bin/valgrind
ELF Header:
Magic: 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, big endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: PowerPC
Version: 0x1
Entry point address: 0x100007c8
Start of program headers: 52 (bytes into file)
Start of section headers: 31716 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 8
Size of section headers: 40 (bytes)
Number of section headers: 40
Section header string table index: 37
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] <corrupt> <unknown>: 2e63 74002e64 65627567 5f617261 7075626e AXxSIOTxxxxxop 1852269939 3040357 1651861343
[ 1] <corrupt> <unknown>: 2e64 696e666f 2e6465 6275675f 675f6c69 WAXxMIOGTxxxxop 1633837682 1702232110 1684365941
[ 2] <corrupt> LOOS+4656275 616d6500 2e646562 75675f73 6e676573 AMSIGTxxxxxxop 1953628206 1684365941 1734308449
[ 3] <corrupt> NULL 00000000 000000 000000 00 0 0 0
[ 4] <corrupt> <unknown>: 1b 00000002 10000154 000154 01 W 13 0 0
[ 5] <corrupt> <unknown>: 23 00000002 10000164 000164 04 WAX 32 0 0
[ 6] <corrupt> <unknown>: 31 00000002 10000184 000184 04 WX 212 4 0
[ 7] <corrupt> <unknown>: 37 00000002 10000258 000258 04 WAx 544 5 1
[ 8] <corrupt> <unknown>: 3f 00000002 10000478 000478 01 WA 320 0 0
[ 9] <corrupt> <unknown>: 47 00000002 100005b8 0005b8 02 WAXxMSILOGTxxxxxxxxxop 68 4 0
[10] <corrupt> <unknown>: 54 00000002 100005fc 0005fc 04 AXxMSILOGTxxxxxxxxxop 48 5 1
[11] <corrupt> <unknown>: 63 00000002 1000062c 00062c 04 X 24 4 0
[12] <corrupt> <unknown>: 6d 00000002 10000644 000644 04 X 348 4 26
[13] <corrupt> <unknown>: 77 00000006 100007a0 0007a0 04 W 40 0 0
[14] <corrupt> <unknown>: 7d 00000006 100007c8 0007c8 04 W 9252 0 0
[15] <corrupt> <unknown>: 83 00000006 10002bec 002bec 04 W 32 0 0
[16] <corrupt> <unknown>: 89 00000002 10002c0c 002c0c 04 W 1160 0 0
[17] <corrupt> <unknown>: 91 00000002 10003094 003094 04 W 0 0 0
[18] <corrupt> <unknown>: 99 00000002 10003094 003094 04 W 28 0 0
[19] <corrupt> <unknown>: a7 00000002 100030b0 0030b0 04 W 96 0 0
[20] <corrupt> <unknown>: b1 00000003 10013110 003110 04 W 8 0 0
[21] <corrupt> <unknown>: b8 00000003 10013118 003118 04 W 8 0 0
[22] <corrupt> <unknown>: bf 00000003 10013120 003120 04 W 4 0 0
[23] <corrupt> <unknown>: c4 00000003 10013124 003124 01 W 16 0 0
[24] <corrupt> <unknown>: ca 00000003 10013134 003134 04 AX 200 5 0
[25] <corrupt> <unknown>: d3 00000003 100131fc 0031fc 04 W 12 0 0
[26] <corrupt> <unknown>: d9 00000007 10013208 003208 04 W 20 0 0
[27] <corrupt> <unknown>: de 00000003 1001321c 00321c 04 W 0 0 0
[28] <corrupt> <unknown>: e5 00000003 1001321c 00321c 04 x 8 0 0
[29] <corrupt> <unknown>: 72 00000007 10013224 00321c 04 x 420 0 0
[30] <corrupt> <unknown>: eb 00000003 100133c8 00321c 04 x 4100 0 0
[31] <corrupt> <unknown>: f0 00000000 000000 00321c 01 W 650 0 0
[32] <corrupt> <unknown>: f9 00000000 000000 0034a8 08 W 280 0 0
[33] <corrupt> <unknown>: 108 00000000 000000 0035c0 01 W 313 0 0
[34] <corrupt> <unknown>: 118 00000000 000000 0036f9 01 W 8848 0 0
[35] <corrupt> <unknown>: 124 00000000 000000 005989 01 W 2177 0 0
[36] <corrupt> <unknown>: 132 00000000 000000 00620d 00 W 167772173 176488448 0
[37] <corrupt> NULL 00010000 000000 000000 00 xxxo 1821376512 43778048 0
[38] <corrupt> NULL 00010000 300000 000000 00 xxxo 1865154560 135856128 0
[39] <corrupt> <unknown>: 1000 00010000 000000 000000 00 xxo 2001010688 54001664 0
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
There are no section groups in this file.
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000034 0x10000034 0x10000034 0x00120 0x00120 R E 0x4
INTERP 0x000154 0x10000154 0x10000154 0x0000d 0x0000d R 0x1
[Requesting program interpreter: /lib/ld.so.1]
LOAD 0x000000 0x10000000 0x10000000 0x03110 0x03110 R E 0x10000
LOAD 0x003110 0x10013110 0x10013110 0x0010c 0x012bc RWE 0x10000
readelf: Error: no .dynamic section in the dynamic segment DYNAMIC 0x003134 0x10013134 0x10013134 0x000c8 0x000c8 RW 0x4
NOTE 0x000164 0x10000164 0x10000164 0x00020 0x00020 R 0x4
GNU_EH_FRAME 0x003094 0x10003094 0x10003094 0x0001c 0x0001c R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
Section to Segment mapping:
Segment Sections...
readelf: ../../binutils/readelf.c:3374: process_program_headers: Assertion `string_table != ((void *)0)' failed.
Aborted
----- Original Message ----
From: Bart Van Assche <bar...@gm...>
To: g_n...@ya...
Cc: val...@li...
Sent: Monday, May 11, 2009 2:24:20 AM
Subject: Re: [Valgrind-developers] cross compiling valgrind
On Sat, May 9, 2009 at 9:53 PM, <g_n...@ya...> wrote:
> I understand the logic behind the --prefix option. I am purposely running the valgrind
> executable off of a different path to test if it atleast gives the "unable to locate memcheck
> library" error. After that passes that then I will copy/link directly on target. I will try the
> command that you suggest and check if valgrind is linked properly. Thanks for the info.
Something else you could check is whether there are any undefined
symbols in the Valgrind executable (nm ... | grep ' U '). To my
surprise, I noticed yesterday that it is possible on PPC to create
executables that contain an undefined symbol. When starting such an
executable the result is a segmentation fault.
Bart.
|
|
From: <sv...@va...> - 2009-05-11 11:35:02
|
Author: sewardj
Date: 2009-05-11 12:34:49 +0100 (Mon, 11 May 2009)
New Revision: 9836
Log:
First cut at XML format output for exp-ptrcheck.
Modified:
branches/MESSAGING_TIDYUP/exp-ptrcheck/pc_common.c
branches/MESSAGING_TIDYUP/exp-ptrcheck/pc_main.c
Modified: branches/MESSAGING_TIDYUP/exp-ptrcheck/pc_common.c
===================================================================
--- branches/MESSAGING_TIDYUP/exp-ptrcheck/pc_common.c 2009-05-11 11:33:09 UTC (rev 9835)
+++ branches/MESSAGING_TIDYUP/exp-ptrcheck/pc_common.c 2009-05-11 11:34:49 UTC (rev 9836)
@@ -96,7 +96,7 @@
//////////////////////////////////////////////////////////////
// //
-// Error management //
+// Error management -- storage //
// //
//////////////////////////////////////////////////////////////
@@ -250,6 +250,33 @@
}
+//////////////////////////////////////////////////////////////
+// //
+// Error management -- printing //
+// //
+//////////////////////////////////////////////////////////////
+
+/* Do a printf-style op (with a trailing \n) on either the XML or
+ normal output channel, depending on the setting of VG_(clo_xml).
+*/
+static void emit_WRK ( HChar* format, va_list vargs )
+{
+ if (VG_(clo_xml)) {
+ VG_(vprintf_xml)(format, vargs);
+ } else {
+ VG_(vmessage)(Vg_UserMsg, format, vargs);
+ }
+}
+
+static void emit ( HChar* format, ... ) PRINTF_CHECK(1, 2);
+static void emit ( HChar* format, ... )
+{
+ va_list vargs;
+ va_start(vargs, format);
+ emit_WRK(format, vargs);
+ va_end(vargs);
+}
+
static Char* readwrite(SSizeT sszB)
{
return ( sszB < 0 ? "write" : "read" );
@@ -261,6 +288,11 @@
void pc_pp_Error ( Error* err )
{
+ HChar* what_pre = VG_(clo_xml) ? " <what>" : "";
+ HChar* what_post = VG_(clo_xml) ? "</what>" : "";
+ HChar* auxw_pre = VG_(clo_xml) ? " <auxwhat>" : " ";
+ HChar* auxw_post = VG_(clo_xml) ? "</auxwhat>" : "";
+
XError *xe = (XError*)VG_(get_error_extra)(err);
tl_assert(xe);
@@ -269,14 +301,22 @@
//----------------------------------------------------------
case XE_SorG:
tl_assert(xe);
- VG_(message)(Vg_UserMsg, "Invalid %s of size %ld\n",
- xe->XE.SorG.sszB < 0 ? "write" : "read",
- Word__abs(xe->XE.SorG.sszB) );
+
+ if (VG_(clo_xml))
+ VG_(printf_xml)( " <kind>SorG</kind>\n");
+ emit( "%sInvalid %s of size %ld%s\n",
+ what_pre,
+ xe->XE.SorG.sszB < 0 ? "write" : "read",
+ Word__abs(xe->XE.SorG.sszB),
+ what_post );
VG_(pp_ExeContext)( VG_(get_error_where)(err) );
- VG_(message)(Vg_UserMsg, " Address %#lx expected vs actual:\n",
- xe->XE.SorG.addr);
- VG_(message)(Vg_UserMsg, " Expected: %s\n", &xe->XE.SorG.expect[0] );
- VG_(message)(Vg_UserMsg, " Actual: %s\n", &xe->XE.SorG.actual[0] );
+
+ emit( "%sAddress %#lx expected vs actual:%s\n",
+ auxw_pre, xe->XE.SorG.addr, auxw_post );
+ emit( "%sExpected: %s%s\n",
+ auxw_pre, &xe->XE.SorG.expect[0], auxw_post );
+ emit( "%sActual: %s%s\n",
+ auxw_pre, &xe->XE.SorG.actual[0], auxw_post );
break;
//----------------------------------------------------------
@@ -289,14 +329,16 @@
if (NONPTR == vseg) {
// Access via a non-pointer
- VG_(message)(Vg_UserMsg, "Invalid %s of size %ld\n",
- readwrite(xe->XE.Heap.sszB),
- Word__abs(xe->XE.Heap.sszB));
+ if (VG_(clo_xml))
+ VG_(printf_xml)( " <kind>Heap</kind>\n");
+ emit( "%sInvalid %s of size %ld%s\n",
+ what_pre, readwrite(xe->XE.Heap.sszB),
+ Word__abs(xe->XE.Heap.sszB), what_post );
VG_(pp_ExeContext)( VG_(get_error_where)(err) );
- VG_(message)(Vg_UserMsg,
- " Address %#lx is not derived from "
- "any known block\n", a);
+ emit( "%sAddress %#lx is not derived from "
+ "any known block%s\n",
+ auxw_pre, a, auxw_post );
} else {
// Access via a pointer, but outside its range.
Int cmp;
@@ -309,30 +351,32 @@
? "Doubly-invalid" : "Invalid" );
legit = ( Seg__is_freed(vseg) ? "once-" : "" );
- VG_(message)(Vg_UserMsg, "%s %s of size %ld\n", how_invalid,
- readwrite(xe->XE.Heap.sszB),
- Word__abs(xe->XE.Heap.sszB));
+ if (VG_(clo_xml))
+ VG_(printf_xml)( " <kind>Heap</kind>\n");
+ emit( "%s%s %s of size %ld%s\n",
+ what_pre, how_invalid,
+ readwrite(xe->XE.Heap.sszB),
+ Word__abs(xe->XE.Heap.sszB), what_post );
VG_(pp_ExeContext)( VG_(get_error_where)(err) );
- VG_(message)(Vg_UserMsg,
- " Address %#lx is %lu bytes %s the accessing pointer's\n",
- a, miss_size, place);
- VG_(message)(Vg_UserMsg,
- " %slegitimate range, a block of size %lu %s\n",
- legit, Seg__size(vseg),
- Seg__is_freed(vseg) ? "free'd" : "alloc'd" );
+ emit( "%sAddress %#lx is %lu bytes %s the accessing pointer's%s\n",
+ auxw_pre, a, miss_size, place , auxw_post );
+ emit( "%s%slegitimate range, a block of size %lu %s%s\n",
+ auxw_pre, legit, Seg__size(vseg),
+ Seg__is_freed(vseg) ? "free'd" : "alloc'd", auxw_post );
VG_(pp_ExeContext)(Seg__where(vseg));
}
if (xe->XE.Heap.descr1[0] != 0)
- VG_(message)(Vg_UserMsg, " %s\n", xe->XE.Heap.descr1);
+ emit( "%s%s%s\n", auxw_pre, xe->XE.Heap.descr1, auxw_post );
if (xe->XE.Heap.descr2[0] != 0)
- VG_(message)(Vg_UserMsg, " %s\n", xe->XE.Heap.descr2);
+ emit( "%s%s%s\n", auxw_pre, xe->XE.Heap.descr2, auxw_post );
if (xe->XE.Heap.datasym[0] != 0)
- VG_(message)(Vg_UserMsg, " Address 0x%llx is %llu bytes "
- "inside data symbol \"%s\"\n",
- (ULong)xe->XE.Heap.addr,
- (ULong)xe->XE.Heap.datasymoff,
- xe->XE.Heap.datasym);
+ emit( "%sAddress 0x%llx is %llu bytes "
+ "inside data symbol \"%s\"%s\n",
+ auxw_pre,
+ (ULong)xe->XE.Heap.addr,
+ (ULong)xe->XE.Heap.datasymoff,
+ xe->XE.Heap.datasym, auxw_post );
break;
}
@@ -345,19 +389,21 @@
tl_assert(BOTTOM != seg1);
tl_assert(BOTTOM != seg2 && UNKNOWN != seg2);
- VG_(message)(Vg_UserMsg, "Invalid arguments to %s\n",
- xe->XE.Arith.opname);
+ if (VG_(clo_xml))
+ VG_(printf_xml)(" <kind>Arith</kind>\n");
+ emit( "%sInvalid arguments to %s%s\n",
+ what_pre, xe->XE.Arith.opname, what_post );
VG_(pp_ExeContext)( VG_(get_error_where)(err) );
if (seg1 != seg2) {
if (NONPTR == seg1) {
- VG_(message)(Vg_UserMsg, " First arg not a pointer\n");
+ emit( "%sFirst arg not a pointer%s\n", auxw_pre, auxw_post );
} else if (UNKNOWN == seg1) {
- VG_(message)(Vg_UserMsg, " First arg may be a pointer\n");
+ emit( "%sFirst arg may be a pointer%s\n", auxw_pre, auxw_post );
} else {
- VG_(message)(Vg_UserMsg, " First arg derived from address %#lx of "
- "%lu-byte block alloc'd\n",
- Seg__addr(seg1), Seg__size(seg1) );
+ emit( "%sFirst arg derived from address %#lx of "
+ "%lu-byte block alloc'd%s\n",
+ auxw_pre, Seg__addr(seg1), Seg__size(seg1), auxw_post );
VG_(pp_ExeContext)(Seg__where(seg1));
}
which = "Second arg";
@@ -365,11 +411,11 @@
which = "Both args";
}
if (NONPTR == seg2) {
- VG_(message)(Vg_UserMsg, " %s not a pointer\n", which);
+ emit( "%s%s not a pointer%s\n", auxw_pre, which, auxw_post );
} else {
- VG_(message)(Vg_UserMsg, " %s derived from address %#lx of "
- "%lu-byte block alloc'd\n",
- which, Seg__addr(seg2), Seg__size(seg2) );
+ emit( "%s%s derived from address %#lx of "
+ "%lu-byte block alloc'd%s\n",
+ auxw_pre, which, Seg__addr(seg2), Seg__size(seg2), auxw_post );
VG_(pp_ExeContext)(Seg__where(seg2));
}
break;
@@ -394,40 +440,45 @@
// freed block
tl_assert(is_known_segment(seglo));
tl_assert(Seg__is_freed(seglo)); // XXX what if it's now recycled?
- VG_(message)(Vg_UserMsg, "%s%s contains unaddressable byte(s)\n",
- what, s);
+
+ if (VG_(clo_xml))
+ VG_(printf_xml)(" <kind>SysParam</kind>\n");
+ emit( "%s%s%s contains unaddressable byte(s)%s\n",
+ what_pre, what, s, what_post );
VG_(pp_ExeContext)( VG_(get_error_where)(err) );
- VG_(message)(Vg_UserMsg, " Address %#lx is %ld bytes inside a "
- "%ld-byte block free'd\n",
- lo, lo-Seg__addr(seglo),
- Seg__size(seglo) );
+ emit( "%sAddress %#lx is %ld bytes inside a "
+ "%ld-byte block free'd%s\n",
+ auxw_pre, lo, lo-Seg__addr(seglo),
+ Seg__size(seglo), auxw_post );
VG_(pp_ExeContext)(Seg__where(seglo));
-
} else {
// mismatch
- VG_(message)(Vg_UserMsg, "%s%s is non-contiguous\n", what, s);
+ if (VG_(clo_xml))
+ VG_(printf_xml)(" <kind>SysParam</kind>\n");
+ emit( "%s%s%s is non-contiguous%s\n",
+ what_pre, what, s, what_post );
VG_(pp_ExeContext)( VG_(get_error_where)(err) );
if (UNKNOWN == seglo) {
- VG_(message)(Vg_UserMsg,
- " First byte is not inside a known block\n");
+ emit( "%sFirst byte is not inside a known block%s\n",
+ auxw_pre, auxw_post );
} else {
- VG_(message)(Vg_UserMsg, " First byte (%#lx) is %ld bytes inside a "
- "%ld-byte block alloc'd\n",
- lo, lo-Seg__addr(seglo),
- Seg__size(seglo) );
+ emit( "%sFirst byte (%#lx) is %ld bytes inside a "
+ "%ld-byte block alloc'd%s\n",
+ auxw_pre, lo, lo-Seg__addr(seglo),
+ Seg__size(seglo), auxw_post );
VG_(pp_ExeContext)(Seg__where(seglo));
}
if (UNKNOWN == seghi) {
- VG_(message)(Vg_UserMsg,
- " Last byte is not inside a known block\n");
+ emit( "%sLast byte is not inside a known block%s\n",
+ auxw_pre, auxw_post );
} else {
- VG_(message)(Vg_UserMsg, " Last byte (%#lx) is %ld bytes inside a "
- "%ld-byte block alloc'd\n",
- hi, hi-Seg__addr(seghi),
- Seg__size(seghi) );
+ emit( "%sLast byte (%#lx) is %ld bytes inside a "
+ "%ld-byte block alloc'd%s\n",
+ auxw_pre, hi, hi-Seg__addr(seghi),
+ Seg__size(seghi), auxw_post );
VG_(pp_ExeContext)(Seg__where(seghi));
}
}
Modified: branches/MESSAGING_TIDYUP/exp-ptrcheck/pc_main.c
===================================================================
--- branches/MESSAGING_TIDYUP/exp-ptrcheck/pc_main.c 2009-05-11 11:33:09 UTC (rev 9835)
+++ branches/MESSAGING_TIDYUP/exp-ptrcheck/pc_main.c 2009-05-11 11:34:49 UTC (rev 9836)
@@ -185,6 +185,8 @@
pc_get_error_name,
pc_print_extra_suppression_info);
+ VG_(needs_xml_output) ();
+
VG_(needs_syscall_wrapper)( h_pre_syscall,
h_post_syscall );
|
|
From: <sv...@va...> - 2009-05-11 11:33:20
|
Author: sewardj
Date: 2009-05-11 12:33:09 +0100 (Mon, 11 May 2009)
New Revision: 9835
Log:
Make this test actually generate a SysParam error. It didn't
previously because writing to an fd of -1 got pre-failed by m_syswrap,
and so the tool never got a chance to check the param write(buf).
Modified:
branches/MESSAGING_TIDYUP/exp-ptrcheck/tests/supp.c
branches/MESSAGING_TIDYUP/exp-ptrcheck/tests/supp.stderr.exp
Modified: branches/MESSAGING_TIDYUP/exp-ptrcheck/tests/supp.c
===================================================================
--- branches/MESSAGING_TIDYUP/exp-ptrcheck/tests/supp.c 2009-05-11 08:21:52 UTC (rev 9834)
+++ branches/MESSAGING_TIDYUP/exp-ptrcheck/tests/supp.c 2009-05-11 11:33:09 UTC (rev 9835)
@@ -8,12 +8,12 @@
int main(void)
{
- int i = 11;
+ int i = 11; int fd = open("/dev/null", O_WRONLY);
char* buf = malloc(sizeof(char) * 6);
char c = buf[-1]; // LoadStoreErr
char* x = buf + (long)buf; // ArithErr
char* y = (char*)((long)buf * i); // AsmErr
- write(-1, buf+3, 5); // SysParamErr
-
+ write(fd, buf+3, 5); // SysParamErr
+ close(fd);
return x-y+c;
}
Modified: branches/MESSAGING_TIDYUP/exp-ptrcheck/tests/supp.stderr.exp
===================================================================
--- branches/MESSAGING_TIDYUP/exp-ptrcheck/tests/supp.stderr.exp 2009-05-11 08:21:52 UTC (rev 9834)
+++ branches/MESSAGING_TIDYUP/exp-ptrcheck/tests/supp.stderr.exp 2009-05-11 11:33:09 UTC (rev 9835)
@@ -1,4 +1,10 @@
-Warning: invalid file descriptor -1 in syscall write()
+Syscall param write(buf) is non-contiguous
+ at 0x........: write (in /...libc...)
+ by 0x........: main (supp.c:16)
+ First byte (0x........) is 3 bytes inside a 6-byte block alloc'd
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (supp.c:12)
+ Last byte is not inside a known block
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2009-05-11 08:21:57
|
Author: njn
Date: 2009-05-11 09:21:52 +0100 (Mon, 11 May 2009)
New Revision: 9834
Log:
Merged 9832 from the trunk.
Modified:
branches/DARWIN/coregrind/m_libcassert.c
branches/DARWIN/drd/drd_pthread_intercepts.c
branches/DARWIN/helgrind/hg_intercepts.c
branches/DARWIN/include/pub_tool_redir.h
branches/DARWIN/include/valgrind.h
Modified: branches/DARWIN/coregrind/m_libcassert.c
===================================================================
--- branches/DARWIN/coregrind/m_libcassert.c 2009-05-11 08:10:53 UTC (rev 9833)
+++ branches/DARWIN/coregrind/m_libcassert.c 2009-05-11 08:21:52 UTC (rev 9834)
@@ -130,6 +130,7 @@
{
Addr stacktop;
Addr ips[BACKTRACE_DEPTH];
+ Int n_ips;
ThreadState *tst
= VG_(get_ThreadState)( VG_(lwpid_to_vgtid)( VG_(gettid)() ) );
@@ -142,14 +143,15 @@
stacktop = tst->os_state.valgrind_stack_init_SP;
- VG_(get_StackTrace_wrk)(
- 0/*tid is unknown*/,
- ips, BACKTRACE_DEPTH,
- NULL/*array to dump SP values in*/,
- NULL/*array to dump FP values in*/,
- ip, sp, fp, lr, sp, stacktop
- );
- VG_(pp_StackTrace) (ips, BACKTRACE_DEPTH);
+ n_ips =
+ VG_(get_StackTrace_wrk)(
+ 0/*tid is unknown*/,
+ ips, BACKTRACE_DEPTH,
+ NULL/*array to dump SP values in*/,
+ NULL/*array to dump FP values in*/,
+ ip, sp, fp, lr, sp, stacktop
+ );
+ VG_(pp_StackTrace) (ips, n_ips);
VG_(show_sched_status)();
VG_(printf)(
Modified: branches/DARWIN/drd/drd_pthread_intercepts.c
===================================================================
--- branches/DARWIN/drd/drd_pthread_intercepts.c 2009-05-11 08:10:53 UTC (rev 9833)
+++ branches/DARWIN/drd/drd_pthread_intercepts.c 2009-05-11 08:21:52 UTC (rev 9834)
@@ -79,8 +79,8 @@
#define ALLOCATE_THREAD_ARGS_ON_THE_STACK
#define PTH_FUNC(ret_ty, f, args...) \
- ret_ty VG_WRAP_FUNCTION_ZZ(libpthreadZdsoZd0,f)(args); \
- ret_ty VG_WRAP_FUNCTION_ZZ(libpthreadZdsoZd0,f)(args)
+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \
+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args)
/* Local data structures. */
Modified: branches/DARWIN/helgrind/hg_intercepts.c
===================================================================
--- branches/DARWIN/helgrind/hg_intercepts.c 2009-05-11 08:10:53 UTC (rev 9833)
+++ branches/DARWIN/helgrind/hg_intercepts.c 2009-05-11 08:21:52 UTC (rev 9834)
@@ -58,16 +58,9 @@
/*--- ---*/
/*----------------------------------------------------------------*/
-#if defined(VGO_darwin)
-// Darwin pthread funcs appear to be in the main C library.
-# define PTH_FUNC(ret_ty, f, args...) \
- ret_ty I_WRAP_SONAME_FNNAME_ZZ(libSystemZdZaZddylib,f)(args); \
- ret_ty I_WRAP_SONAME_FNNAME_ZZ(libSystemZdZaZddylib,f)(args)
-#else
-# define PTH_FUNC(ret_ty, f, args...) \
- ret_ty I_WRAP_SONAME_FNNAME_ZZ(libpthreadZdsoZd0,f)(args); \
- ret_ty I_WRAP_SONAME_FNNAME_ZZ(libpthreadZdsoZd0,f)(args)
-#endif
+#define PTH_FUNC(ret_ty, f, args...) \
+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \
+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args)
// Do a client request. This is a macro rather than a function
// so as to avoid having an extra function in the stack trace.
Modified: branches/DARWIN/include/pub_tool_redir.h
===================================================================
--- branches/DARWIN/include/pub_tool_redir.h 2009-05-11 08:10:53 UTC (rev 9833)
+++ branches/DARWIN/include/pub_tool_redir.h 2009-05-11 08:21:52 UTC (rev 9834)
@@ -200,6 +200,16 @@
# define VG_Z_LIBC_DOT_A libCZdaZLansicoreZu64ZdoZR // libC.a(ansicore_64.o)
#endif
+/* --- Soname of the pthreads library. --- */
+
+#if defined(VGO_linux) || defined(VGO_aix5)
+# define VG_Z_LIBPTHREAD_SONAME libpthreadZdsoZd0 // libpthread.so.0
+#elif defined(VGO_darwin)
+# define VG_Z_LIBPTHREAD_SONAME libSystemZdZaZddylib // libSystem.*.dylib
+#else
+# error "Unknown platform"
+#endif
+
/* --- Sonames for Linux ELF linkers. --- */
#if defined(VGO_linux)
Modified: branches/DARWIN/include/valgrind.h
===================================================================
--- branches/DARWIN/include/valgrind.h 2009-05-11 08:10:53 UTC (rev 9833)
+++ branches/DARWIN/include/valgrind.h 2009-05-11 08:21:52 UTC (rev 9834)
@@ -581,11 +581,15 @@
/* Use these to write the name of your wrapper. NOTE: duplicates
VG_WRAP_FUNCTION_Z{U,Z} in pub_tool_redir.h. */
+/* Use an extra level of macroisation so as to ensure the soname/fnname
+ args are fully macro-expanded before pasting them together. */
+#define VG_CONCAT4(_aa,_bb,_cc,_dd) _aa##_bb##_cc##_dd
+
#define I_WRAP_SONAME_FNNAME_ZU(soname,fnname) \
- _vgwZU_##soname##_##fnname
+ VG_CONCAT4(_vgwZU_,soname,_,fnname)
#define I_WRAP_SONAME_FNNAME_ZZ(soname,fnname) \
- _vgwZZ_##soname##_##fnname
+ VG_CONCAT4(_vgwZZ_,soname,_,fnname)
/* Use this macro from within a wrapper function to collect the
context (address and possibly other info) of the original function.
|
|
From: <sv...@va...> - 2009-05-11 08:11:06
|
Author: njn
Date: 2009-05-11 09:10:53 +0100 (Mon, 11 May 2009)
New Revision: 9833
Log:
Implement shmget wrapper on Darwin.
Modified:
branches/DARWIN/coregrind/m_syswrap/priv_syswrap-darwin.h
branches/DARWIN/coregrind/m_syswrap/syswrap-darwin.c
branches/DARWIN/memcheck/tests/darwin/scalar.c
branches/DARWIN/memcheck/tests/darwin/scalar.stderr.exp
Modified: branches/DARWIN/coregrind/m_syswrap/priv_syswrap-darwin.h
===================================================================
--- branches/DARWIN/coregrind/m_syswrap/priv_syswrap-darwin.h 2009-05-11 08:01:09 UTC (rev 9832)
+++ branches/DARWIN/coregrind/m_syswrap/priv_syswrap-darwin.h 2009-05-11 08:10:53 UTC (rev 9833)
@@ -81,6 +81,7 @@
DECL_TEMPLATE(darwin, sys_setegid);
DECL_TEMPLATE(darwin, sys_listxattr);
DECL_TEMPLATE(darwin, sys_flistxattr);
+DECL_TEMPLATE(darwin, sys_shmget);
DECL_TEMPLATE(darwin, sys_shm_open);
DECL_TEMPLATE(darwin, sys_statx);
DECL_TEMPLATE(darwin, sys_fchmod_extended);
Modified: branches/DARWIN/coregrind/m_syswrap/syswrap-darwin.c
===================================================================
--- branches/DARWIN/coregrind/m_syswrap/syswrap-darwin.c 2009-05-11 08:01:09 UTC (rev 9832)
+++ branches/DARWIN/coregrind/m_syswrap/syswrap-darwin.c 2009-05-11 08:10:53 UTC (rev 9833)
@@ -1848,6 +1848,11 @@
POST_MEM_WRITE( ARG2, (vki_ssize_t)RES );
}
+PRE(sys_shmget)
+{
+ PRINT("sys_shmget ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "shmget", vki_key_t, key, vki_size_t, size, int, shmflg);
+}
PRE(sys_shm_open)
{
@@ -7220,7 +7225,7 @@
// _____(__NR_shmat),
// _____(__NR_shmctl),
// _____(__NR_shmdt),
-// _____(__NR_shmget),
+ MACX_(__NR_shmget, sys_shmget),
MACXY(__NR_shm_open, sys_shm_open),
// _____(__NR_shm_unlink),
MACX_(__NR_sem_open, sys_sem_open),
Modified: branches/DARWIN/memcheck/tests/darwin/scalar.c
===================================================================
--- branches/DARWIN/memcheck/tests/darwin/scalar.c 2009-05-11 08:01:09 UTC (rev 9832)
+++ branches/DARWIN/memcheck/tests/darwin/scalar.c 2009-05-11 08:10:53 UTC (rev 9833)
@@ -311,7 +311,11 @@
// __NR_shmat 262
// __NR_shmctl 263
// __NR_shmdt 264
+
// __NR_shmget 265
+ GO(__NR_shmget, "3s 0m");
+ SY(__NR_shmget, x0, x0, x0); FAIL;
+
// __NR_shm_open 266
// __NR_shm_unlink 267
Modified: branches/DARWIN/memcheck/tests/darwin/scalar.stderr.exp
===================================================================
--- branches/DARWIN/memcheck/tests/darwin/scalar.stderr.exp 2009-05-11 08:01:09 UTC (rev 9832)
+++ branches/DARWIN/memcheck/tests/darwin/scalar.stderr.exp 2009-05-11 08:10:53 UTC (rev 9833)
@@ -104,6 +104,18 @@
...
Address 0x........ is not stack'd, malloc'd or (recently) free'd
-----------------------------------------------------
+265: __NR_shmget 3s 0m
+-----------------------------------------------------
+
+Syscall param shmget(key) contains uninitialised byte(s)
+ ...
+
+Syscall param shmget(size) contains uninitialised byte(s)
+ ...
+
+Syscall param shmget(shmflg) contains uninitialised byte(s)
+ ...
+-----------------------------------------------------
268: __NR_sem_open 2s 1m
-----------------------------------------------------
|
|
From: <sv...@va...> - 2009-05-11 08:01:15
|
Author: njn
Date: 2009-05-11 09:01:09 +0100 (Mon, 11 May 2009)
New Revision: 9832
Log:
Factor out the name of the libpthread library. Also fix a minor stack trace
bogon.
Modified:
trunk/coregrind/m_libcassert.c
trunk/drd/drd_pthread_intercepts.c
trunk/helgrind/hg_intercepts.c
trunk/include/pub_tool_redir.h
trunk/include/valgrind.h
Modified: trunk/coregrind/m_libcassert.c
===================================================================
--- trunk/coregrind/m_libcassert.c 2009-05-10 22:42:19 UTC (rev 9831)
+++ trunk/coregrind/m_libcassert.c 2009-05-11 08:01:09 UTC (rev 9832)
@@ -130,6 +130,7 @@
{
Addr stacktop;
Addr ips[BACKTRACE_DEPTH];
+ Int n_ips;
ThreadState *tst
= VG_(get_ThreadState)( VG_(lwpid_to_vgtid)( VG_(gettid)() ) );
@@ -142,14 +143,15 @@
stacktop = tst->os_state.valgrind_stack_init_SP;
- VG_(get_StackTrace_wrk)(
- 0/*tid is unknown*/,
- ips, BACKTRACE_DEPTH,
- NULL/*array to dump SP values in*/,
- NULL/*array to dump FP values in*/,
- ip, sp, fp, lr, sp, stacktop
- );
- VG_(pp_StackTrace) (ips, BACKTRACE_DEPTH);
+ n_ips =
+ VG_(get_StackTrace_wrk)(
+ 0/*tid is unknown*/,
+ ips, BACKTRACE_DEPTH,
+ NULL/*array to dump SP values in*/,
+ NULL/*array to dump FP values in*/,
+ ip, sp, fp, lr, sp, stacktop
+ );
+ VG_(pp_StackTrace) (ips, n_ips);
VG_(show_sched_status)();
VG_(printf)(
Modified: trunk/drd/drd_pthread_intercepts.c
===================================================================
--- trunk/drd/drd_pthread_intercepts.c 2009-05-10 22:42:19 UTC (rev 9831)
+++ trunk/drd/drd_pthread_intercepts.c 2009-05-11 08:01:09 UTC (rev 9832)
@@ -79,8 +79,8 @@
#define ALLOCATE_THREAD_ARGS_ON_THE_STACK
#define PTH_FUNC(ret_ty, f, args...) \
- ret_ty VG_WRAP_FUNCTION_ZZ(libpthreadZdsoZd0,f)(args); \
- ret_ty VG_WRAP_FUNCTION_ZZ(libpthreadZdsoZd0,f)(args)
+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \
+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args)
/* Local data structures. */
Modified: trunk/helgrind/hg_intercepts.c
===================================================================
--- trunk/helgrind/hg_intercepts.c 2009-05-10 22:42:19 UTC (rev 9831)
+++ trunk/helgrind/hg_intercepts.c 2009-05-11 08:01:09 UTC (rev 9832)
@@ -59,8 +59,8 @@
/*----------------------------------------------------------------*/
#define PTH_FUNC(ret_ty, f, args...) \
- ret_ty I_WRAP_SONAME_FNNAME_ZZ(libpthreadZdsoZd0,f)(args); \
- ret_ty I_WRAP_SONAME_FNNAME_ZZ(libpthreadZdsoZd0,f)(args)
+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \
+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args)
// Do a client request. This is a macro rather than a function
// so as to avoid having an extra function in the stack trace.
Modified: trunk/include/pub_tool_redir.h
===================================================================
--- trunk/include/pub_tool_redir.h 2009-05-10 22:42:19 UTC (rev 9831)
+++ trunk/include/pub_tool_redir.h 2009-05-11 08:01:09 UTC (rev 9832)
@@ -198,6 +198,14 @@
# define VG_Z_LIBC_DOT_A libCZdaZLansicoreZu64ZdoZR // libC.a(ansicore_64.o)
#endif
+/* --- Soname of the pthreads library. --- */
+
+#if defined(VGO_linux) || defined(VGO_aix5)
+# define VG_Z_LIBPTHREAD_SONAME libpthreadZdsoZd0 // libpthread.so.0
+#else
+# error "Unknown platform"
+#endif
+
/* --- Sonames for Linux ELF linkers. --- */
#if defined(VGO_linux)
Modified: trunk/include/valgrind.h
===================================================================
--- trunk/include/valgrind.h 2009-05-10 22:42:19 UTC (rev 9831)
+++ trunk/include/valgrind.h 2009-05-11 08:01:09 UTC (rev 9832)
@@ -581,11 +581,15 @@
/* Use these to write the name of your wrapper. NOTE: duplicates
VG_WRAP_FUNCTION_Z{U,Z} in pub_tool_redir.h. */
+/* Use an extra level of macroisation so as to ensure the soname/fnname
+ args are fully macro-expanded before pasting them together. */
+#define VG_CONCAT4(_aa,_bb,_cc,_dd) _aa##_bb##_cc##_dd
+
#define I_WRAP_SONAME_FNNAME_ZU(soname,fnname) \
- _vgwZU_##soname##_##fnname
+ VG_CONCAT4(_vgwZU_,soname,_,fnname)
#define I_WRAP_SONAME_FNNAME_ZZ(soname,fnname) \
- _vgwZZ_##soname##_##fnname
+ VG_CONCAT4(_vgwZZ_,soname,_,fnname)
/* Use this macro from within a wrapper function to collect the
context (address and possibly other info) of the original function.
|
|
From: Bart V. A. <bar...@gm...> - 2009-05-11 06:24:30
|
On Sat, May 9, 2009 at 9:53 PM, <g_n...@ya...> wrote: > I understand the logic behind the --prefix option. I am purposely running the valgrind > executable off of a different path to test if it atleast gives the "unable to locate memcheck > library" error. After that passes that then I will copy/link directly on target. I will try the > command that you suggest and check if valgrind is linked properly. Thanks for the info. Something else you could check is whether there are any undefined symbols in the Valgrind executable (nm ... | grep ' U '). To my surprise, I noticed yesterday that it is possible on PPC to create executables that contain an undefined symbol. When starting such an executable the result is a segmentation fault. Bart. |
|
From: Tom H. <th...@cy...> - 2009-05-11 02:44:55
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2009-05-11 03:05:05 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 480 tests, 0 stderr failures, 0 stdout failures, 0 post failures == |
|
From: Tom H. <th...@cy...> - 2009-05-11 02:27:17
|
Nightly build on mg ( x86_64, Fedora 9 ) started at 2009-05-11 03:10:05 BST Results unchanged 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/linux/mremap2 (stdout) |