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
(32) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
(32) |
2
(22) |
3
(47) |
4
(29) |
5
(18) |
6
(16) |
|
7
(21) |
8
(29) |
9
(23) |
10
(68) |
11
(20) |
12
(17) |
13
(17) |
|
14
(27) |
15
(26) |
16
(21) |
17
(13) |
18
(19) |
19
(29) |
20
(13) |
|
21
(9) |
22
(8) |
23
(29) |
24
(56) |
25
(21) |
26
(46) |
27
(33) |
|
28
(25) |
29
(41) |
30
(35) |
31
(28) |
|
|
|
|
From: <sv...@va...> - 2005-08-10 03:40:34
|
Author: njn
Date: 2005-08-09 01:13:48 +0100 (Tue, 09 Aug 2005)
New Revision: 4350
Log:
Move file to a more appropriate place.
Added:
trunk/docs/internals/3_0_BUGSTATUS.txt
Removed:
trunk/3_0_BUGSTATUS.txt
Deleted: trunk/3_0_BUGSTATUS.txt
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/3_0_BUGSTATUS.txt 2005-08-08 19:49:58 UTC (rev 4349)
+++ trunk/3_0_BUGSTATUS.txt 2005-08-09 00:13:48 UTC (rev 4350)
@@ -1,61 +0,0 @@
-
-Bugs known prior to 3.0.0
-~~~~~~~~~~~~~~~~~~~~~~~~~
- Trunk =
3_0_BRANCH
-Description Serious? status =
status
------------ -------- ------ =
----------
-
-x86 INT/INT3
-
-87263 x86 segment stuff
-
-88116 x86 enter variants assert
-
-96542 x86 16-bit pop insns
-
-109313 x86 cmpxchg8b
-
-109323 ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER.=
=20
- Any fix would be similar to that =
for 110274
-
-109345 ppc32 ptrace patch available should be applied
-
-CrispinF %eflags.ac problem yes fixed-r1319 =
TODO:merge
- & r4334
-
-
-
-Bugs reported after 3.0.0 shipped
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Trunk =
3_0_BRANCH
-Description Serious? status =
status
------------ -------- ------ =
----------
-
-110102 dis_op2_E_G(amd64) yes fixed-r1318 =
TODO:merge
-
-110183 tail of page with _end no
-
-110201 x86 FXTRACT dunno
-
-110202 x86 sys_waitpid(#286) yes fixed =
fixed
-
-110203 clock_getres(,0) dunno fixed =
fixed
-
-110204 fmemopen false +ve no
-
-110205 sigcancel unwind fails yes Tom considering?
-
-110207 mpn accuracy can't be easily fixed; + not conv=
inced it's a
- big problem
-
-110208 execve fail wrong retval yes fixed =
fixed
-
-110209 --show-emwarns misses some dunno -- would like a test case
-
-110240 x86 FP differences really is the same as 110207
-
-110274 SSE1 now mandatory for x86 yes fixed(1321/4339) =
TODO:merge
-
-110301 amd64 hangs at startup yes, but have to wait for 3.1. T=
his is the
- same as previously reported amd64=
-Gentoo
- hang (long delay, really).
Copied: trunk/docs/internals/3_0_BUGSTATUS.txt (from rev 4344, trunk/3_0_=
BUGSTATUS.txt)
|
|
From: <sv...@va...> - 2005-08-10 03:21:52
|
Author: sewardj
Date: 2005-08-09 01:45:22 +0100 (Tue, 09 Aug 2005)
New Revision: 4351
Log:
* Continue cleaning up following removal of stage1. =20
* Partially remove libc dependencies in m_main.c (remove use of=20
dirent.h, dlfcn.h, errno.h and string.h).
* New function in m_syscall, VG_(strerror), to get names for syscall
errors.
Modified:
branches/ASPACEM/coregrind/m_main.c
branches/ASPACEM/coregrind/m_syscall.c
branches/ASPACEM/coregrind/pub_core_syscall.h
branches/ASPACEM/coregrind/pub_core_ume.h
Modified: branches/ASPACEM/coregrind/m_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_main.c 2005-08-09 00:13:48 UTC (rev 4350=
)
+++ branches/ASPACEM/coregrind/m_main.c 2005-08-09 00:45:22 UTC (rev 4351=
)
@@ -44,6 +44,7 @@
#include "pub_core_libcprint.h"
#include "pub_core_libcproc.h"
#include "pub_core_libcsignal.h"
+#include "pub_core_syscall.h" // VG_(strerror)
#include "pub_core_machine.h"
#include "pub_core_main.h"
#include "pub_core_mallocfree.h"
@@ -60,12 +61,8 @@
#include "pub_core_transtab.h"
#include "pub_core_ume.h"
=20
-#include <dirent.h>
-//#include <dlfcn.h>
-#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
#include <unistd.h>
=20
#include "memcheck/memcheck.h"
@@ -107,7 +104,29 @@
it's own use - just a small constant. */
#define N_RESERVED_FDS (10)
=20
+
+
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
+/*=3D=3D=3D Ultra-basic startup stuff =
=3D=3D=3D*/
+/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
+
+/* This may be needed before m_mylibc is OK to run. */
+static Int local_strcmp ( const HChar* s1, const HChar* s2 )
+{
+ while (True) {
+ if (*s1 =3D=3D 0 && *s2 =3D=3D 0) return 0;
+ if (*s1 =3D=3D 0) return -1;
+ if (*s2 =3D=3D 0) return 1;
+
+ if (*(UChar*)s1 < *(UChar*)s2) return -1;
+ if (*(UChar*)s1 > *(UChar*)s2) return 1;
+
+ s1++; s2++;
+ }
+}
+
+
+/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
/*=3D=3D=3D Global entities not referenced from generated code =
=3D=3D=3D*/
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
=20
@@ -553,21 +572,21 @@
If this needs to handle any more variables it should be hacked
into something table driven.
*/
-static char **fix_environment(char **origenv, const char *preload)
+static HChar **fix_environment(HChar **origenv, const HChar *preload)
{
- static const char preload_core_so[] =3D "vg_preload_core.so";
- static const char ld_preload[] =3D "LD_PRELOAD=3D";
- static const char valgrind_clo[] =3D VALGRINDCLO "=3D";
+ static const HChar preload_core_so[] =3D "vg_preload_core.so";
+ static const HChar ld_preload[] =3D "LD_PRELOAD=3D";
+ static const HChar valgrind_clo[] =3D VALGRINDCLO "=3D";
static const int ld_preload_len =3D sizeof(ld_preload)-1;
static const int valgrind_clo_len =3D sizeof(valgrind_clo)-1;
int ld_preload_done =3D 0;
- char *preload_core_path;
+ HChar *preload_core_path;
int preload_core_path_len;
- int vgliblen =3D strlen(VG_(libdir));
- char **cpp;
- char **ret;
+ int vgliblen =3D VG_(strlen)(VG_(libdir));
+ HChar **cpp;
+ HChar **ret;
int envc;
- const int preloadlen =3D (preload =3D=3D NULL) ? 0 : strlen(preload);
+ const int preloadlen =3D (preload =3D=3D NULL) ? 0 : VG_(strlen)(prel=
oad);
=20
/* Find the vg_preload_core.so; also make room for the tool preload
library */
@@ -588,7 +607,7 @@
envc++;
=20
/* Allocate a new space */
- ret =3D malloc(sizeof(char *) * (envc+1+1)); /* 1 new entry + NULL */
+ ret =3D malloc(sizeof(HChar *) * (envc+1+1)); /* 1 new entry + NULL *=
/
vg_assert(ret);
=20
/* copy it over */
@@ -600,9 +619,9 @@
=20
/* Walk over the new environment, mashing as we go */
for (cpp =3D ret; cpp && *cpp; cpp++) {
- if (memcmp(*cpp, ld_preload, ld_preload_len) =3D=3D 0) {
- int len =3D strlen(*cpp) + preload_core_path_len;
- char *cp =3D malloc(len);
+ if (VG_(memcmp)(*cpp, ld_preload, ld_preload_len) =3D=3D 0) {
+ int len =3D VG_(strlen)(*cpp) + preload_core_path_len;
+ HChar *cp =3D malloc(len);
vg_assert(cp);
=20
snprintf(cp, len, "%s%s:%s",
@@ -611,7 +630,7 @@
*cpp =3D cp;
=20
ld_preload_done =3D 1;
- } else if (memcmp(*cpp, valgrind_clo, valgrind_clo_len) =3D=3D 0) =
{
+ } else if (VG_(memcmp)(*cpp, valgrind_clo, valgrind_clo_len) =3D=3D=
0) {
*cpp =3D "";
}
}
@@ -619,7 +638,7 @@
/* Add the missing bits */
if (!ld_preload_done) {
int len =3D ld_preload_len + preload_core_path_len;
- char *cp =3D malloc(len);
+ HChar *cp =3D malloc(len);
vg_assert(cp);
=20
snprintf(cp, len, "%s%s", ld_preload, preload_core_path);
@@ -716,31 +735,31 @@
argc =3D 0;
if (info->interp_name !=3D NULL) {
argc++;
- stringsize +=3D strlen(info->interp_name) + 1;
+ stringsize +=3D VG_(strlen)(info->interp_name) + 1;
}
if (info->interp_args !=3D NULL) {
argc++;
- stringsize +=3D strlen(info->interp_args) + 1;
+ stringsize +=3D VG_(strlen)(info->interp_args) + 1;
}
=20
/* now scan the args we're given... */
for (cpp =3D orig_argv; *cpp; cpp++) {
argc++;
- stringsize +=3D strlen(*cpp) + 1;
+ stringsize +=3D VG_(strlen)(*cpp) + 1;
}
=20
/* ...and the environment */
envc =3D 0;
for (cpp =3D orig_envp; cpp && *cpp; cpp++) {
envc++;
- stringsize +=3D strlen(*cpp) + 1;
+ stringsize +=3D VG_(strlen)(*cpp) + 1;
}
=20
/* now, how big is the auxv? */
auxsize =3D sizeof(*auxv); /* there's always at least one entry: AT_N=
ULL */
for (cauxv =3D orig_auxv; cauxv->a_type !=3D AT_NULL; cauxv++) {
if (cauxv->a_type =3D=3D AT_PLATFORM)
- stringsize +=3D strlen(cauxv->u.a_ptr) + 1;
+ stringsize +=3D VG_(strlen)(cauxv->u.a_ptr) + 1;
auxsize +=3D sizeof(*cauxv);
}
=20
@@ -862,7 +881,6 @@
break;
=20
case AT_IGNORE:
- case AT_EXECFD:
case AT_PHENT:
case AT_PAGESZ:
case AT_FLAGS:
@@ -932,20 +950,20 @@
/*=3D=3D=3D Find executable =
=3D=3D=3D*/
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
=20
-static const char* executable_name;
+/* Need a static copy because can't use dynamic mem allocation yet */
+static HChar executable_name[VKI_PATH_MAX];
=20
static Bool match_executable(const char *entry) {
- char buf[strlen(entry) + strlen(executable_name) + 2];
+ char buf[VG_(strlen)(entry) + VG_(strlen)(executable_name) + 2];
=20
/* empty PATH element means . */
if (*entry =3D=3D '\0')
entry =3D ".";
=20
snprintf(buf, sizeof(buf), "%s/%s", entry, executable_name);
- =20
if (access(buf, R_OK|X_OK) =3D=3D 0) {
- executable_name =3D strdup(buf);
- vg_assert(NULL !=3D executable_name);
+ VG_(strncpy)( executable_name, buf, VKI_PATH_MAX-1 );
+ executable_name[VKI_PATH_MAX-1] =3D 0;
return True;
}
return False;
@@ -954,8 +972,10 @@
static const char* find_executable(const char* exec)
{
vg_assert(NULL !=3D exec);
- executable_name =3D exec;
- if (strchr(executable_name, '/') =3D=3D NULL) {
+ VG_(strncpy)( executable_name, exec, VKI_PATH_MAX-1 );
+ executable_name[VKI_PATH_MAX-1] =3D 0;
+
+ if (VG_(strchr)(executable_name, '/') =3D=3D NULL) {
/* no '/' - we need to search the path */
char *path =3D getenv("PATH");
scan_colsep(path, match_executable);
@@ -968,140 +988,33 @@
/*=3D=3D=3D Loading tools =
=3D=3D=3D*/
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
=20
-static void list_tools(void)
-{
- DIR *dir =3D opendir(VG_(libdir));
- struct dirent *de;
- int first =3D 1;
+/* Return a pointer to the tool_info struct. Also looks to see if
+ there's a matching vgpreload_*.so file, and returns its name in
+ *preloadpath. */
=20
- if (dir =3D=3D NULL) {
- fprintf(stderr, "Can't open %s: %s (installation problem?)\n",
- VG_(libdir), strerror(errno));
- return;
- }
+/* HACK required because we can't use VG_(strdup) yet -- dynamic
+ memory allocation is not running. */
+static HChar load_tool__preloadpath[VKI_PATH_MAX];
=20
- while ((de =3D readdir(dir)) !=3D NULL) {
- int len =3D strlen(de->d_name);
-
- /* look for vgtool_TOOL.so names */
- if (len > (7+1+3) && /* "vgtool_" + at least 1-char toolname + "=
.so" */
- strncmp(de->d_name, "vgtool_", 7) =3D=3D 0 &&
- VG_STREQ(de->d_name + len - 3, ".so")) {
- if (first) {
- fprintf(stderr, "Available tools:\n");
- first =3D 0;
- }
- de->d_name[len-3] =3D '\0';
- fprintf(stderr, "\t%s\n", de->d_name+7);
- }
- }
-
- closedir(dir);
-
- if (first)
- fprintf(stderr, "No tools available in \"%s\" (installation proble=
m?)\n",
- VG_(libdir));
-}
-
-
-/* Find and load a tool, and check it looks ok. Also looks to see if th=
ere's=20
- * a matching vgpreload_*.so file, and returns its name in *preloadpath.=
*/
static void load_tool( const char *toolname,
ToolInfo** toolinfo_out, char **preloadpath_out )
{
extern ToolInfo VG_(tool_info);
*toolinfo_out =3D &VG_(tool_info);
- /* HHHHHHHHACCCCCCCCCCK */
- //*preloadpath_out =3D "/home/sewardj/VgASPACEM/aspacem/Inst/lib/valg=
rind/vgpreload_memcheck.so";
- int len =3D strlen(VG_(libdir)) + strlen(toolname) + 16;
- char buf[len];
- char* preloadpath =3D NULL;
=20
+ Int len =3D VG_(strlen)(VG_(libdir)) + VG_(strlen)(toolname) + 16;
+ HChar buf[len];
+
snprintf(buf, len, "%s/vgpreload_%s.so", VG_(libdir), toolname);
- if (access(buf, R_OK) =3D=3D 0) {
- preloadpath =3D strdup(buf);
- *preloadpath_out =3D preloadpath;
+ if (access(buf, R_OK) =3D=3D 0 || len >=3D VKI_PATH_MAX-1) {
+ VG_(strncpy)( load_tool__preloadpath, buf, VKI_PATH_MAX-1 );
+ load_tool__preloadpath[VKI_PATH_MAX-1] =3D 0;
+ *preloadpath_out =3D load_tool__preloadpath;
} else {
- fprintf(stderr, "valgrind: couldn't load tool\n");
- list_tools();
+ fprintf(stderr, "valgrind: couldn't find preload file for tool %s\=
n",=20
+ toolname);
exit(127);
}
-
-//zz Bool ok;
-//zz int len =3D strlen(VG_(libdir)) + strlen(toolname) + 16;
-//zz char buf[len];
-//zz void* handle;
-//zz ToolInfo* toolinfo;
-//zz char* preloadpath =3D NULL;
-//zz=20
-//zz // XXX: allowing full paths for --tool option -- does it make se=
nse?
-//zz // Doesn't allow for vgpreload_<tool>.so.
-//zz=20
-//zz if (strchr(toolname, '/') !=3D 0) {
-//zz /* toolname contains '/', and so must be a pathname */
-//zz handle =3D dlopen(toolname, RTLD_NOW);
-//zz } else {
-//zz /* just try in the libdir */
-//zz snprintf(buf, len, "%s/vgtool_%s.so", VG_(libdir), toolname);
-//zz handle =3D dlopen(buf, RTLD_NOW);
-//zz=20
-//zz if (handle !=3D NULL) {
-//zz snprintf(buf, len, "%s/vgpreload_%s.so", VG_(libdir), toolname);
-//zz if (access(buf, R_OK) =3D=3D 0) {
-//zz preloadpath =3D strdup(buf);
-//zz vg_assert(NULL !=3D preloadpath);
-//zz }
-//zz }
-//zz }
-//zz=20
-//zz ok =3D (NULL !=3D handle);
-//zz if (!ok) {
-//zz fprintf(stderr, "Can't open tool \"%s\": %s\n", toolname, dle=
rror());
-//zz goto bad_load;
-//zz }
-//zz=20
-//zz toolinfo =3D dlsym(handle, "vgPlain_tool_info");
-//zz ok =3D (NULL !=3D toolinfo);
-//zz if (!ok) {
-//zz fprintf(stderr, "Tool \"%s\" doesn't define its ToolInfo - "
-//zz "add VG_DETERMINE_INTERFACE_VERSION?\n", tool=
name);
-//zz goto bad_load;
-//zz }
-//zz=20
-//zz ok =3D (toolinfo->sizeof_ToolInfo =3D=3D sizeof(*toolinfo) &&
-//zz toolinfo->interface_version =3D=3D VG_CORE_INTERFACE_VERSI=
ON &&
-//zz toolinfo->tl_pre_clo_init !=3D NULL);
-//zz if (!ok) {=20
-//zz fprintf(stderr, "Error:\n"
-//zz " Tool and core interface versions do not match.\n"
-//zz " Interface version used by core is: %d (size %d)\n"
-//zz " Interface version used by tool is: %d (size %d)\n"
-//zz " The version numbers must match.\n",
-//zz VG_CORE_INTERFACE_VERSION,=20
-//zz (Int)sizeof(*toolinfo),
-//zz toolinfo->interface_version,
-//zz toolinfo->sizeof_ToolInfo);
-//zz fprintf(stderr, " You need to at least recompile, and possib=
ly update,\n");
-//zz if (VG_CORE_INTERFACE_VERSION > toolinfo->interface_version)
-//zz fprintf(stderr, " your tool to work with this version of =
Valgrind.\n");
-//zz else
-//zz fprintf(stderr, " your version of Valgrind to work with t=
his tool.\n");
-//zz goto bad_load;
-//zz }
-//zz=20
-//zz vg_assert(NULL !=3D toolinfo);
-//zz *toolinfo_out =3D toolinfo;
-//zz *preloadpath_out =3D preloadpath;
-//zz return;
-//zz=20
-//zz=20
-//zz bad_load:
-//zz if (handle !=3D NULL)
-//zz dlclose(handle);
-//zz=20
-//zz fprintf(stderr, "valgrind: couldn't load tool\n");
-//zz list_tools();
-//zz exit(127);
}
=20
=20
@@ -1174,7 +1087,7 @@
ret =3D VG_(do_exec)(exec, info);
if (ret !=3D 0) {
fprintf(stderr, "valgrind: do_exec(%s) failed: %s\n",
- exec, strerror(ret));
+ exec, VG_(strerror)(ret));
exit(127);
}
}
@@ -1327,7 +1240,7 @@
/* parse the options we have (only the options we care about now) */
for (i =3D 1; i < vg_argc; i++) {
=20
- if (strcmp(vg_argv[i], "--version") =3D=3D 0) {
+ if (local_strcmp(vg_argv[i], "--version") =3D=3D 0) {
printf("valgrind-" VERSION "\n");
exit(0);
=20
@@ -1385,7 +1298,7 @@
// prefix matches, convert "--toolname:foo" to "--foo"
if (0)
VG_(printf)("tool-specific arg: %s\n", arg);
- arg =3D strdup(arg + toolname_len + 1);
+ arg =3D VG_(strdup)(arg + toolname_len + 1);
arg[0] =3D '-';
arg[1] =3D '-';
=20
@@ -1767,8 +1680,8 @@
=20
=20
/* Check that the requested tool actually supports XML output. */
- if (VG_(clo_xml) && 0 !=3D VG_(strcmp)(toolname, "memcheck")
- && 0 !=3D VG_(strcmp)(toolname, "none")) {
+ if (VG_(clo_xml) && 0 !=3D local_strcmp(toolname, "memcheck")
+ && 0 !=3D local_strcmp(toolname, "none")) {
VG_(clo_xml) =3D False;
VG_(message)(Vg_UserMsg,=20
"Currently only Memcheck|None supports XML output.");=20
@@ -1980,7 +1893,7 @@
=20
if (VG_(memcmp)(arg, "--exec=3D", 7) =3D=3D 0) {
// don't copy existing --exec=3D arg
- } else if (VG_(strcmp)(arg, "--") =3D=3D 0) {
+ } else if (local_strcmp(arg, "--") =3D=3D 0) {
// stop at "--"
break;
} else {
@@ -2351,22 +2264,6 @@
*/
=20
=20
-/* This may be needed before m_mylibc is OK to run. */
-static Int local_strcmp ( const HChar* s1, const HChar* s2 )
-{
- while (True) {
- if (*s1 =3D=3D 0 && *s2 =3D=3D 0) return 0;
- if (*s1 =3D=3D 0) return -1;
- if (*s2 =3D=3D 0) return 1;
-
- if (*(UChar*)s1 < *(UChar*)s2) return -1;
- if (*(UChar*)s1 > *(UChar*)s2) return 1;
-
- s1++; s2++;
- }
-}
-
-
Int main(Int argc, HChar **argv, HChar **envp)
{
HChar **cl_argv;
Modified: branches/ASPACEM/coregrind/m_syscall.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_syscall.c 2005-08-09 00:13:48 UTC (rev 4=
350)
+++ branches/ASPACEM/coregrind/m_syscall.c 2005-08-09 00:45:22 UTC (rev 4=
351)
@@ -215,6 +215,36 @@
#endif
}
=20
+/* ---------------------------------------------------------------------
+ Names of errors.
+ ------------------------------------------------------------------ */
+
+/* Return a string which gives the name of an error value. Note,
+ unlike the standard C syserror fn, the returned string is not
+ malloc-allocated or writable -- treat it as a constant.=20
+ TODO: implement this properly. */
+
+const HChar* VG_(strerror) ( UWord errnum )
+{
+ switch (errnum) {
+ case VKI_EPERM: return "EPERM";
+ case VKI_ESRCH: return "ESRCH";
+ case VKI_EINTR: return "EINTR";
+ case VKI_EBADF: return "EBADF";
+ case VKI_EAGAIN: return "EAGAIN";
+ case VKI_ENOMEM: return "ENOMEM";
+ case VKI_EACCES: return "EACCES";
+ case VKI_EFAULT: return "EFAULT";
+ case VKI_EEXIST: return "EEXIST";
+ case VKI_EINVAL: return "EINVAL";
+ case VKI_EMFILE: return "EMFILE";
+ case VKI_ENOSYS: return "ENOSYS";
+ case VKI_ERESTARTSYS: return "ERESTARTSYS";
+ default: return "VG_(strerror): unknown error";
+ }
+}
+
+
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
Modified: branches/ASPACEM/coregrind/pub_core_syscall.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/pub_core_syscall.h 2005-08-09 00:13:48 UTC=
(rev 4350)
+++ branches/ASPACEM/coregrind/pub_core_syscall.h 2005-08-09 00:45:22 UTC=
(rev 4351)
@@ -67,9 +67,16 @@
extern SysRes VG_(mk_SysRes_Error) ( UWord val );
extern SysRes VG_(mk_SysRes_Success) ( UWord val );
=20
+
+/* Return a string which gives the name of an error value. Note,
+ unlike the standard C syserror fn, the returned string is not
+ malloc-allocated or writable -- treat it as a constant. */
+
+extern const HChar* VG_(strerror) ( UWord errnum );
+
+
#endif // __PUB_CORE_SYSCALL_H
=20
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
-
Modified: branches/ASPACEM/coregrind/pub_core_ume.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/pub_core_ume.h 2005-08-09 00:13:48 UTC (re=
v 4350)
+++ branches/ASPACEM/coregrind/pub_core_ume.h 2005-08-09 00:45:22 UTC (re=
v 4351)
@@ -112,10 +112,6 @@
=20
extern struct ume_auxv *VG_(find_auxv)(UWord* orig_esp);
=20
-/* Our private auxv entries */
-#define AT_UME_PADFD 0xff01 /* padding file fd */
-#define AT_UME_EXECFD 0xff02 /* stage1 executable fd */
-
#endif /* __PUB_CORE_UME_H */
=20
/*--------------------------------------------------------------------*/
|
|
From: <js...@ac...> - 2005-08-10 03:19:57
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2005-08-10 04:40:00 CEST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 154 tests, 90 stderr failures, 7 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stdout) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/strchr (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/with-space (stderr) memcheck/tests/writev (stderr) memcheck/tests/xml1 (stderr) memcheck/tests/zeropage (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/dlclose (stdout) cachegrind/tests/dlclose (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/fdleak_creat (stderr) none/tests/fdleak_dup (stderr) none/tests/fdleak_dup2 (stderr) none/tests/fdleak_fcntl (stderr) none/tests/fdleak_ipv4 (stderr) none/tests/fdleak_open (stderr) none/tests/fdleak_pipe (stderr) none/tests/fdleak_socketpair (stderr) none/tests/manythreads (stdout) none/tests/manythreads (stderr) none/tests/pending (stdout) none/tests/pending (stderr) none/tests/pth_blockedsig (stderr) none/tests/pth_cancel1 (stdout) none/tests/pth_cancel1 (stderr) none/tests/pth_cancel2 (stderr) none/tests/thread-exits (stdout) none/tests/thread-exits (stderr) |
|
From: Tom H. <to...@co...> - 2005-08-10 03:18:15
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2005-08-09 03:30:03 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 181 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == 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 == 181 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 9 03:35:50 2005 --- new.short Tue Aug 9 03:41:31 2005 *************** *** 8,13 **** ! == 181 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/weirdioctl (stderr) - memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) --- 8,12 ---- ! == 181 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) |
|
From: Christian P. <tr...@ge...> - 2005-08-10 02:44:21
|
Heya, well, well known, I'm on amd64, however, everytime I'm [re]building my loca= l=20 trunk I must see, that it's also compiling for ppc and x86; I *could* understand why it's compiling x86 (are they sharing code?), but f= or=20 sure not why it is compiling files containing the substring "ppc"). Is there any reason for this? Thanks in advance, Christian Parpart. =2D-=20 02:50:26 up 138 days, 15:58, 1 user, load average: 1.68, 2.43, 2.20 |
|
From: Tom H. <to...@co...> - 2005-08-10 02:41:35
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2005-08-10 03:30:02 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 181 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-10 02:40:23
|
Nightly build on ginetta ( i686, Red Hat 8.0 ) started at 2005-08-09 03:10:06 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 180 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == 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 == 180 tests, 3 stderr failures, 0 stdout failures ================= memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 9 03:18:28 2005 --- new.short Tue Aug 9 03:24:58 2005 *************** *** 8,11 **** ! == 180 tests, 3 stderr failures, 0 stdout failures ================= ! memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) --- 8,10 ---- ! == 180 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-10 02:28:13
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-08-10 03:15:03 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 180 tests, 15 stderr failures, 0 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == 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 == 180 tests, 14 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) none/tests/x86/yield (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Aug 10 03:21:25 2005 --- new.short Wed Aug 10 03:27:42 2005 *************** *** 8,10 **** ! == 180 tests, 14 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 180 tests, 15 stderr failures, 0 stdout failures ================= memcheck/tests/addressable (stderr) *************** *** 21,25 **** memcheck/tests/stack_changes (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) - none/tests/x86/yield (stdout) --- 21,25 ---- memcheck/tests/stack_changes (stderr) + memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-10 02:24:15
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2005-08-09 03:10:06 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 159 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-10 02:24:14
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2005-08-09 03:05:10 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 159 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-10 02:24:13
|
Nightly build on ginetta ( i686, Red Hat 8.0 ) started at 2005-08-10 03:10:09 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 180 tests, 3 stderr failures, 0 stdout failures ================= memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == 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 == 180 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Aug 10 03:18:15 2005 --- new.short Wed Aug 10 03:24:05 2005 *************** *** 8,10 **** ! == 180 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) --- 8,11 ---- ! == 180 tests, 3 stderr failures, 0 stdout failures ================= ! memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-10 02:21:43
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-08-09 03:00:03 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 159 tests, 7 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) ================================================= == 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 == 159 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/tls (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 9 03:18:02 2005 --- new.short Tue Aug 9 03:35:45 2005 *************** *** 8,10 **** ! == 159 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/sigprocmask (stderr) --- 8,10 ---- ! == 159 tests, 7 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) *************** *** 16,18 **** none/tests/fdleak_fcntl (stderr) - none/tests/tls (stdout) --- 16,17 ---- |
|
From: Tom H. <th...@cy...> - 2005-08-10 02:20:56
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2005-08-10 03:10:07 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 159 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-10 02:17:23
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2005-08-10 03:05:10 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 159 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-10 02:12:25
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-08-10 03:00:04 BST Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 159 tests, 7 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) |
|
From: <js...@ac...> - 2005-08-10 02:05:47
|
Nightly build on g5 ( YDL 4.0, ppc970 ) started at 2005-08-09 04:40:00 CEST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 154 tests, 90 stderr failures, 7 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stdout) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/strchr (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/with-space (stderr) memcheck/tests/writev (stderr) memcheck/tests/xml1 (stderr) memcheck/tests/zeropage (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/dlclose (stdout) cachegrind/tests/dlclose (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/fdleak_creat (stderr) none/tests/fdleak_dup (stderr) none/tests/fdleak_dup2 (stderr) none/tests/fdleak_fcntl (stderr) none/tests/fdleak_ipv4 (stderr) none/tests/fdleak_open (stderr) none/tests/fdleak_pipe (stderr) none/tests/fdleak_socketpair (stderr) none/tests/manythreads (stdout) none/tests/manythreads (stderr) none/tests/pending (stdout) none/tests/pending (stderr) none/tests/pth_blockedsig (stderr) none/tests/pth_cancel1 (stdout) none/tests/pth_cancel1 (stderr) none/tests/pth_cancel2 (stderr) none/tests/thread-exits (stdout) none/tests/thread-exits (stderr) |
|
From: <sv...@va...> - 2005-08-10 00:07:54
|
Author: sewardj
Date: 2005-08-09 12:37:09 +0100 (Tue, 09 Aug 2005)
New Revision: 4352
Log:
Remove from m_main.c all glibc dependencies except malloc and free.
This required implementing VG_(access) and VG_(snprintf).
Modified:
branches/ASPACEM/coregrind/m_libcfile.c
branches/ASPACEM/coregrind/m_libcprint.c
branches/ASPACEM/coregrind/m_main.c
branches/ASPACEM/coregrind/pub_core_libcfile.h
branches/ASPACEM/include/pub_tool_libcprint.h
Modified: branches/ASPACEM/coregrind/m_libcfile.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_libcfile.c 2005-08-09 00:45:22 UTC (rev =
4351)
+++ branches/ASPACEM/coregrind/m_libcfile.c 2005-08-09 11:37:09 UTC (rev =
4352)
@@ -182,6 +182,26 @@
return res.isError ? -1 : res.val;
}
=20
+/* Check accessibility of a file. Returns zero for access granted,
+ nonzero otherwise. */
+Int VG_(access) ( HChar* path, Bool irusr, Bool iwusr, Bool ixusr )
+{
+#if defined(VGO_linux)
+ /* Very annoyingly, I cannot find any definition for R_OK et al in
+ the kernel interfaces. Therefore I reluctantly resort to
+ hardwiring in these magic numbers that I determined by
+ experimentation. */
+ UWord w =3D (irusr ? 4/*R_OK*/ : 0)
+ | (iwusr ? 2/*W_OK*/ : 0)
+ | (ixusr ? 1/*X_OK*/ : 0);
+ SysRes res =3D VG_(do_syscall2)(__NR_access, (UWord)path, w);
+ return res.isError ? 1 : res.val;
+#else
+# error "Don't know how to do VG_(access) on this OS"
+#endif
+}
+
+
/* ---------------------------------------------------------------------
Socket-related stuff. This is very Linux-kernel specific.
------------------------------------------------------------------ */
Modified: branches/ASPACEM/coregrind/m_libcprint.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_libcprint.c 2005-08-09 00:45:22 UTC (rev=
4351)
+++ branches/ASPACEM/coregrind/m_libcprint.c 2005-08-09 11:37:09 UTC (rev=
4352)
@@ -70,10 +70,12 @@
printf() and friends
------------------------------------------------------------------ */
=20
-typedef struct {
- char buf[100];
- int n;
-} printf_buf;
+typedef=20
+ struct {
+ HChar buf[100];
+ Int n;
+ }=20
+ printf_buf;
=20
// Adds a single char to the buffer. When the buffer gets sufficiently
// full, we write its contents to the logging sink.
@@ -151,6 +153,53 @@
return ret;
}
=20
+
+/* A replacement for snprintf. */
+typedef=20
+ struct {
+ HChar* buf;
+ Int buf_size;
+ Int buf_used;
+ }=20
+ snprintf_buf;
+
+static void add_to_vg_snprintf_buf ( HChar c, void* p )
+{
+ snprintf_buf* b =3D p;
+ if (b->buf_size > 0 && b->buf_used < b->buf_size) {
+ b->buf[b->buf_used++] =3D c;
+ if (b->buf_used < b->buf_size)
+ b->buf[b->buf_used] =3D 0;
+ }=20
+}
+
+UInt VG_(vsnprintf) ( Char* buf, Int size, const HChar *format, va_list =
vargs )
+{
+ Int ret;
+ snprintf_buf b;
+ b.buf =3D buf;
+ b.buf_size =3D size < 0 ? 0 : size;
+ b.buf_used =3D 0;
+
+ ret =3D VG_(debugLog_vprintf)=20
+ ( add_to_vg_snprintf_buf, &b, format, vargs );
+
+ return b.buf_used;
+}
+
+UInt VG_(snprintf) ( Char* buf, Int size, const HChar *format, ... )
+{
+ UInt ret;
+ va_list vargs;
+
+ va_start(vargs,format);
+ ret =3D VG_(vsnprintf)(buf, size, format, vargs);
+ va_end(vargs);
+
+ return ret;
+}
+
+
/* ---------------------------------------------------------------------
percentify()
------------------------------------------------------------------ */
Modified: branches/ASPACEM/coregrind/m_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_main.c 2005-08-09 00:45:22 UTC (rev 4351=
)
+++ branches/ASPACEM/coregrind/m_main.c 2005-08-09 11:37:09 UTC (rev 4352=
)
@@ -61,9 +61,7 @@
#include "pub_core_transtab.h"
#include "pub_core_ume.h"
=20
-#include <stdio.h>
#include <stdlib.h>
-#include <unistd.h>
=20
#include "memcheck/memcheck.h"
=20
@@ -279,7 +277,7 @@
VKI_MAP_PRIVATE|VKI_MAP_ANONYMOUS|VKI_MAP_FIXED|VKI_MA=
P_NORESERVE,
-1, 0);
if (res.isError) {
- fprintf(stderr,=20
+ VG_(printf)(
"valgrind: Could not allocate address space (%p bytes)\n"
"valgrind: for shadow memory\n"
"valgrind: Possible causes:\n"
@@ -291,7 +289,7 @@
"valgrind: too-small (eg. 2GB) user address space.\n"
, (void*)shadow_size
);=20
- exit(1);
+ VG_(exit)(1);
}
}
}
@@ -304,14 +302,14 @@
// at call site.
static char* get_file_clo(char* dir)
{
-# define FLEN 512
Int n;
SysRes fd;
struct vki_stat s1;
Char* f_clo =3D NULL;
- Char filename[FLEN];
+ Char filename[VKI_PATH_MAX];
=20
- snprintf(filename, FLEN, "%s/.valgrindrc", ( NULL =3D=3D dir ? "" : d=
ir ) );
+ VG_(snprintf)(filename, VKI_PATH_MAX, "%s/.valgrindrc",=20
+ ( NULL =3D=3D dir ? "" : dir ) );
fd =3D VG_(open)(filename, 0, VKI_S_IRUSR);
if ( !fd.isError ) {
if ( 0 =3D=3D VG_(fstat)(fd.val, &s1) ) {
@@ -324,7 +322,6 @@
VG_(close)(fd.val);
}
return f_clo;
-# undef FLEN
}
=20
static Int count_args(char* s)
@@ -375,8 +372,8 @@
=20
// get_file_clo() allocates the return value with malloc(). We do no=
t
// free f1_clo and f2_clo as they get put into vg_argv[] which must p=
ersist.
- char* env_clo =3D getenv(VALGRINDOPTS);
- char* f1_clo =3D get_file_clo( getenv("HOME") );
+ char* env_clo =3D VG_(getenv)(VALGRINDOPTS);
+ char* f1_clo =3D get_file_clo( VG_(getenv)("HOME") );
char* f2_clo =3D get_file_clo(".");
=20
/* copy any extra args from file or environment, if present */
@@ -393,8 +390,8 @@
f2_arg_count =3D count_args(f2_clo);
=20
if (0)
- printf("extra-argc=3D%d %d %d\n",
- env_arg_count, f1_arg_count, f2_arg_count);
+ VG_(printf)("extra-argc=3D%d %d %d\n",
+ env_arg_count, f1_arg_count, f2_arg_count);
=20
/* +2: +1 for null-termination, +1 for added '--' */
from =3D vg_argv0;
@@ -447,7 +444,7 @@
int vg_argc0;
char** vg_argv0;
char** cl_argv;
- char* env_clo =3D getenv(VALGRINDCLO);
+ char* env_clo =3D VG_(getenv)(VALGRINDCLO);
=20
if (env_clo !=3D NULL && *env_clo !=3D '\0') {
char *cp;
@@ -509,7 +506,7 @@
if (0) {
Int i;
for (i =3D 0; i < vg_argc0; i++)
- printf("vg_argv0[%d]=3D\"%s\"\n", i, vg_argv0[i]);
+ VG_(printf)("vg_argv0[%d]=3D\"%s\"\n", i, vg_argv0[i]);
}
=20
*vg_argc_out =3D vg_argc0;
@@ -595,11 +592,11 @@
vg_assert(preload_core_path);
=20
if (preload)
- snprintf(preload_core_path, preload_core_path_len, "%s/%s:%s",=20
- VG_(libdir), preload_core_so, preload);
+ VG_(snprintf)(preload_core_path, preload_core_path_len, "%s/%s:%s"=
,=20
+ VG_(libdir), preload_core_so, preload);
else
- snprintf(preload_core_path, preload_core_path_len, "%s/%s",=20
- VG_(libdir), preload_core_so);
+ VG_(snprintf)(preload_core_path, preload_core_path_len, "%s/%s",=20
+ VG_(libdir), preload_core_so);
=20
/* Count the original size of the env */
envc =3D 0; /* trailing NULL */
@@ -624,8 +621,8 @@
HChar *cp =3D malloc(len);
vg_assert(cp);
=20
- snprintf(cp, len, "%s%s:%s",
- ld_preload, preload_core_path, (*cpp)+ld_preload_len);
+ VG_(snprintf)(cp, len, "%s%s:%s",
+ ld_preload, preload_core_path, (*cpp)+ld_preload_=
len);
=20
*cpp =3D cp;
=20
@@ -641,7 +638,7 @@
HChar *cp =3D malloc(len);
vg_assert(cp);
=20
- snprintf(cp, len, "%s%s", ld_preload, preload_core_path);
+ VG_(snprintf)(cp, len, "%s%s", ld_preload, preload_core_path);
=20
ret[envc++] =3D cp;
}
@@ -665,7 +662,7 @@
*cp++ =3D '\0';
=20
if (0)
- printf("copied %p \"%s\" len %lld\n", orig, orig, (Long)(cp-orig))=
;
+ VG_(printf)("copied %p \"%s\" len %lld\n", orig, orig, (Long)(cp-o=
rig));
=20
*tab =3D cp;
=20
@@ -794,11 +791,11 @@
VG_(clstk_base) =3D VG_PGROUNDDN(cl_esp);
=20
if (0)
- printf("stringsize=3D%d auxsize=3D%d stacksize=3D%d\n"
- "clstk_base %p\n"
- "clstk_end %p\n",
- stringsize, auxsize, stacksize,
- (void*)VG_(clstk_base), (void*)VG_(clstk_end));
+ VG_(printf)("stringsize=3D%d auxsize=3D%d stacksize=3D%d\n"
+ "clstk_base %p\n"
+ "clstk_end %p\n",
+ stringsize, auxsize, stacksize,
+ (void*)VG_(clstk_base), (void*)VG_(clstk_end));
=20
/* =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D alloc=
ate space =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D */
=20
@@ -927,7 +924,7 @@
default:
/* stomp out anything we don't know about */
if (0)
- printf("stomping auxv entry %lld\n", (ULong)auxv->a_type);
+ VG_(printf)("stomping auxv entry %lld\n", (ULong)auxv->a_type);
auxv->a_type =3D AT_IGNORE;
break;
=20
@@ -960,8 +957,8 @@
if (*entry =3D=3D '\0')
entry =3D ".";
=20
- snprintf(buf, sizeof(buf), "%s/%s", entry, executable_name);
- if (access(buf, R_OK|X_OK) =3D=3D 0) {
+ VG_(snprintf)(buf, sizeof(buf), "%s/%s", entry, executable_name);
+ if (VG_(access)(buf, True/*r*/, False/*w*/, True/*x*/) =3D=3D 0) {
VG_(strncpy)( executable_name, buf, VKI_PATH_MAX-1 );
executable_name[VKI_PATH_MAX-1] =3D 0;
return True;
@@ -977,7 +974,7 @@
=20
if (VG_(strchr)(executable_name, '/') =3D=3D NULL) {
/* no '/' - we need to search the path */
- char *path =3D getenv("PATH");
+ char *path =3D VG_(getenv)("PATH");
scan_colsep(path, match_executable);
}
return executable_name;
@@ -1005,15 +1002,16 @@
Int len =3D VG_(strlen)(VG_(libdir)) + VG_(strlen)(toolname) + 16;
HChar buf[len];
=20
- snprintf(buf, len, "%s/vgpreload_%s.so", VG_(libdir), toolname);
- if (access(buf, R_OK) =3D=3D 0 || len >=3D VKI_PATH_MAX-1) {
+ VG_(snprintf)(buf, len, "%s/vgpreload_%s.so", VG_(libdir), toolname);
+ if (VG_(access)(buf, True/*r*/, False/*w*/, False/*x*/) =3D=3D 0=20
+ && len < VKI_PATH_MAX-1) {
VG_(strncpy)( load_tool__preloadpath, buf, VKI_PATH_MAX-1 );
load_tool__preloadpath[VKI_PATH_MAX-1] =3D 0;
*preloadpath_out =3D load_tool__preloadpath;
} else {
- fprintf(stderr, "valgrind: couldn't find preload file for tool %s\=
n",=20
- toolname);
- exit(127);
+ VG_(printf)("valgrind: couldn't find preload file for tool %s\n",=20
+ toolname);
+ VG_(exit)(127);
}
}
=20
@@ -1086,9 +1084,9 @@
.val;
ret =3D VG_(do_exec)(exec, info);
if (ret !=3D 0) {
- fprintf(stderr, "valgrind: do_exec(%s) failed: %s\n",
- exec, VG_(strerror)(ret));
- exit(127);
+ VG_(printf)("valgrind: do_exec(%s) failed: %s\n",
+ exec, VG_(strerror)(ret));
+ VG_(exit)(127);
}
}
=20
@@ -1241,8 +1239,8 @@
for (i =3D 1; i < vg_argc; i++) {
=20
if (local_strcmp(vg_argv[i], "--version") =3D=3D 0) {
- printf("valgrind-" VERSION "\n");
- exit(0);
+ VG_(printf)("valgrind-" VERSION "\n");
+ VG_(exit)(0);
=20
} else if (VG_CLO_STREQ(vg_argv[i], "--help") ||
VG_CLO_STREQ(vg_argv[i], "-h")) {
@@ -2266,25 +2264,35 @@
=20
Int main(Int argc, HChar **argv, HChar **envp)
{
- HChar **cl_argv;
- const HChar *tool =3D "memcheck"; // default to Memcheck
- const HChar *exec =3D NULL;
- HChar *preload; /* tool-specific LD_PRELOAD .so */
- HChar **env;
- Int need_help =3D 0; // 0 =3D no, 1 =3D --help, 2 =3D --help-deb=
ug
- struct exeinfo info;
- ToolInfo *toolinfo =3D NULL;
- Addr client_eip;
- Addr sp_at_startup; /* client's SP at the point we gained control=
. */
- UInt * client_auxv;
- struct vki_rlimit zero =3D { 0, 0 };
- Int loglevel, i;
+ HChar** cl_argv;
+ const HChar* tool =3D "memcheck"; // default to Memcheck
+ const HChar* exec =3D NULL;
+ HChar* preload; /* tool-specific LD_PRELOAD .so */
+ HChar** env;
+ Int need_help =3D 0; // 0 =3D no, 1 =3D --help, 2 =3D =
--help-debug
+ struct exeinfo info;
+ ToolInfo* toolinfo =3D NULL;
+ Addr client_eip;
+ Addr sp_at_startup; /* client's SP at the point we
+ gained control. */
+ UInt* client_auxv;
+ Int loglevel, i;
+ struct vki_rlimit zero =3D { 0, 0 };
=20
//=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
// Nb: startup is complex. Prerequisites are shown at every step.
//
// *** Be very careful when messing with the order ***
+ //
+ // TODO (JRS 9 Aug 05):=20
+ // - there's circular dependencies with VG_(getenv).
+ // TODO: review and clarify all issues to do with
+ // environment variables.
+ // =20
//=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+ =20
+ /* This is needed to make VG_(getenv) usable early. */
+ VG_(client_envp) =3D (Char**)envp;
=20
//--------------------------------------------------------------
// Start up the logging mechanism
@@ -2340,7 +2348,7 @@
// Look for alternative libdir =20
// p: none
//--------------------------------------------------------------
- { HChar *cp =3D getenv(VALGRINDLIB);
+ if (0) { HChar *cp =3D VG_(getenv)(VALGRINDLIB);
if (cp !=3D NULL)
VG_(libdir) =3D cp;
}
Modified: branches/ASPACEM/coregrind/pub_core_libcfile.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/pub_core_libcfile.h 2005-08-09 00:45:22 UT=
C (rev 4351)
+++ branches/ASPACEM/coregrind/pub_core_libcfile.h 2005-08-09 11:37:09 UT=
C (rev 4352)
@@ -60,6 +60,8 @@
extern Int VG_(getsockopt) ( Int sd, Int level, Int optname, void *optv=
al,
Int *optlen );
=20
+extern Int VG_(access) ( HChar* path, Bool irusr, Bool iwusr, Bool ixusr=
);
+
#endif // __PUB_CORE_LIBCFILE_H
=20
/*--------------------------------------------------------------------*/
Modified: branches/ASPACEM/include/pub_tool_libcprint.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/include/pub_tool_libcprint.h 2005-08-09 00:45:22 UTC=
(rev 4351)
+++ branches/ASPACEM/include/pub_tool_libcprint.h 2005-08-09 11:37:09 UTC=
(rev 4352)
@@ -39,12 +39,18 @@
* --log-fd/--log-file/--log-socket argument, which defaults to 2 (stder=
r).
* Hence no need for VG_(fprintf)().
*/
-extern UInt VG_(printf) ( const HChar *format, ... );
-extern UInt VG_(vprintf) ( const HChar *format, va_list vargs );
+extern UInt VG_(printf) ( const HChar *format, ... );
+extern UInt VG_(vprintf) ( const HChar *format, va_list vargs );
/* too noisy ... __attribute__ ((format (printf, 1, 2))) ; */
-extern UInt VG_(sprintf) ( Char* buf, const HChar* format, ... );
-extern UInt VG_(vsprintf)( Char* buf, const HChar* format, va_list vargs=
);
=20
+extern UInt VG_(sprintf) ( Char* buf, const HChar* format, ... );
+extern UInt VG_(vsprintf) ( Char* buf, const HChar* format, va_list varg=
s );
+
+extern UInt VG_(snprintf) ( Char* buf, Int size,=20
+ const HChar *format, ... );
+extern UInt VG_(vsnprintf)( Char* buf, Int size,=20
+ const HChar *format, va_list varg=
s );
+
// Percentify n/m with d decimal places. Includes the '%' symbol at the=
end.
extern void VG_(percentify)(UInt n, UInt m, UInt d, Int n_buf, char buf[=
]);
=20
|
|
From: <sv...@va...> - 2005-08-10 00:03:40
|
Author: sewardj
Date: 2005-08-09 13:30:07 +0100 (Tue, 09 Aug 2005)
New Revision: 4353
Log:
m_main.c is now a glibc-free zone!
It's becoming clearer how startup should be structured. Basically the
address space manager should be started as early as possible -- much
earlier than it is at present, before any poking around at command
lines, environment variables or whatever. That's because so much of
the startup stuff depends on dynamic memory allocation, which depends
on aspacemgr.
Modified:
branches/ASPACEM/coregrind/m_main.c
Modified: branches/ASPACEM/coregrind/m_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_main.c 2005-08-09 11:37:09 UTC (rev 4352=
)
+++ branches/ASPACEM/coregrind/m_main.c 2005-08-09 12:30:07 UTC (rev 4353=
)
@@ -61,8 +61,6 @@
#include "pub_core_transtab.h"
#include "pub_core_ume.h"
=20
-#include <stdlib.h>
-
#include "memcheck/memcheck.h"
=20
#ifndef AT_DCACHEBSIZE
@@ -123,7 +121,27 @@
}
}
=20
+// HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK HACK A
+// temporary bootstrapping allocator, for use until such time as we
+// can get rid of the circularites in allocator dependencies at
+// startup.
+#define N_HACK_BYTES 10000
+static Int hack_bytes_used =3D 0;
+static HChar hack_bytes[N_HACK_BYTES];
=20
+static void* hack_malloc ( Int n )
+{
+ VG_(debugLog)(1, "main", " FIXME: hack_malloc(%d)\n", n);
+ while (n % 16) n++;
+ if (hack_bytes_used + n > N_HACK_BYTES) {
+ VG_(printf)("valgrind: N_HACK_BYTES too low. Sorry.\n");
+ VG_(exit)(0);
+ }
+ hack_bytes_used +=3D n;
+ return (void*) &hack_bytes[hack_bytes_used - n];
+}
+
+
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
/*=3D=3D=3D Global entities not referenced from generated code =
=3D=3D=3D*/
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
@@ -313,7 +331,7 @@
fd =3D VG_(open)(filename, 0, VKI_S_IRUSR);
if ( !fd.isError ) {
if ( 0 =3D=3D VG_(fstat)(fd.val, &s1) ) {
- f_clo =3D malloc(s1.st_size+1);
+ f_clo =3D VG_(malloc)(s1.st_size+1);
vg_assert(f_clo);
n =3D VG_(read)(fd.val, f_clo, s1.st_size);
if (n =3D=3D -1) n =3D 0;
@@ -395,8 +413,8 @@
=20
/* +2: +1 for null-termination, +1 for added '--' */
from =3D vg_argv0;
- vg_argv0 =3D malloc( (orig_arg_count + env_arg_count + f1_arg_coun=
t=20
- + f2_arg_count + 2) * sizeof(char **));
+ vg_argv0 =3D VG_(malloc)( (orig_arg_count + env_arg_count + f1_arg=
_count=20
+ + f2_arg_count + 2) * sizeof(char **));
vg_assert(vg_argv0);
to =3D vg_argv0;
=20
@@ -459,7 +477,7 @@
if (*cp =3D=3D VG_CLO_SEP)
vg_argc0++;
=20
- vg_argv0 =3D malloc(sizeof(char **) * (vg_argc0 + 1));
+ vg_argv0 =3D VG_(malloc)(sizeof(char **) * (vg_argc0 + 1));
vg_assert(vg_argv0);
=20
cpp =3D vg_argv0;
@@ -588,7 +606,8 @@
/* Find the vg_preload_core.so; also make room for the tool preload
library */
preload_core_path_len =3D sizeof(preload_core_so) + vgliblen + preloa=
dlen + 16;
- preload_core_path =3D malloc(preload_core_path_len);
+ /* FIXME */
+ preload_core_path =3D /*VG_(malloc)*/ hack_malloc(preload_core_path_l=
en);
vg_assert(preload_core_path);
=20
if (preload)
@@ -604,7 +623,7 @@
envc++;
=20
/* Allocate a new space */
- ret =3D malloc(sizeof(HChar *) * (envc+1+1)); /* 1 new entry + NULL *=
/
+ ret =3D /* FIXME VG_(malloc)*/ hack_malloc (sizeof(HChar *) * (envc+1=
+1)); /* 1 new entry + NULL */
vg_assert(ret);
=20
/* copy it over */
@@ -618,7 +637,7 @@
for (cpp =3D ret; cpp && *cpp; cpp++) {
if (VG_(memcmp)(*cpp, ld_preload, ld_preload_len) =3D=3D 0) {
int len =3D VG_(strlen)(*cpp) + preload_core_path_len;
- HChar *cp =3D malloc(len);
+ HChar *cp =3D /*FIXME VG_(malloc)*/ hack_malloc(len);
vg_assert(cp);
=20
VG_(snprintf)(cp, len, "%s%s:%s",
@@ -635,7 +654,7 @@
/* Add the missing bits */
if (!ld_preload_done) {
int len =3D ld_preload_len + preload_core_path_len;
- HChar *cp =3D malloc(len);
+ HChar *cp =3D /*FIXME VG_(malloc)*/ hack_malloc (len);
vg_assert(cp);
=20
VG_(snprintf)(cp, len, "%s%s", ld_preload, preload_core_path);
@@ -643,7 +662,7 @@
ret[envc++] =3D cp;
}
=20
- free(preload_core_path);
+ //FIXME VG_(free)(preload_core_path);
ret[envc] =3D NULL;
=20
return ret;
@@ -816,11 +835,11 @@
/* --- argv --- */
if (info->interp_name) {
*ptr++ =3D (Addr)copy_str(&strtab, info->interp_name);
- free(info->interp_name);
+//FIXME free(info->interp_name);
}
if (info->interp_args) {
*ptr++ =3D (Addr)copy_str(&strtab, info->interp_args);
- free(info->interp_args);
+//FIXME free(info->interp_args);
}
for (cpp =3D orig_argv; *cpp; ptr++, cpp++) {
*ptr =3D (Addr)copy_str(&strtab, *cpp);
@@ -1478,8 +1497,9 @@
VG_(bad_option)(arg);
}
skip_arg:
- if (arg !=3D vg_argv[i])
- free(arg);
+ if (arg !=3D vg_argv[i]) {
+ //FIXME free(arg);
+ }
}
=20
/* Make VEX control parameters sane */
@@ -2438,7 +2458,7 @@
=20
sp_at_startup =3D setup_client_stack(init_sp, cl_argv, env, &info,
&client_auxv);
- free(env);
+ //FIXME free(env);
}
=20
VG_(debugLog)(2, "main",
|