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
(11) |
2
(9) |
3
(14) |
4
(18) |
5
(13) |
|
6
(4) |
7
(12) |
8
(16) |
9
(14) |
10
(8) |
11
(9) |
12
(7) |
|
13
(12) |
14
(6) |
15
(14) |
16
(5) |
17
(10) |
18
(8) |
19
(5) |
|
20
(10) |
21
(16) |
22
(5) |
23
(14) |
24
(10) |
25
(11) |
26
(6) |
|
27
(9) |
28
(8) |
29
(11) |
30
(9) |
31
(18) |
|
|
|
From: Nicholas N. <nj...@cs...> - 2008-01-13 22:36:39
|
On Sun, 13 Jan 2008, Josef Weidendorfer wrote: >> A while back I actually started writing a separate tool that did exactly >> this. I didn't get very far with it, though. > > What was the problem? Motivation :) No particular technical problems. Nick |
|
From: <sv...@va...> - 2008-01-13 15:36:12
|
Author: sewardj
Date: 2008-01-13 15:36:15 +0000 (Sun, 13 Jan 2008)
New Revision: 7345
Log:
Merge r7334 (Enable some syscalls needed to run firefox on 64-bit ppc
on Fedora 8.)
Modified:
branches/DATASYMS/coregrind/m_syswrap/syswrap-ppc64-linux.c
Modified: branches/DATASYMS/coregrind/m_syswrap/syswrap-ppc64-linux.c
===================================================================
--- branches/DATASYMS/coregrind/m_syswrap/syswrap-ppc64-linux.c 2008-01-13 15:27:44 UTC (rev 7344)
+++ branches/DATASYMS/coregrind/m_syswrap/syswrap-ppc64-linux.c 2008-01-13 15:36:15 UTC (rev 7345)
@@ -1269,7 +1269,7 @@
GENXY(__NR_wait4, sys_wait4), // 114
// _____(__NR_swapoff, sys_swapoff), // 115
-// _____(__NR_sysinfo, sys_sysinfo), // 116
+ LINXY(__NR_sysinfo, sys_sysinfo), // 116
PLAXY(__NR_ipc, sys_ipc), // 117
GENX_(__NR_fsync, sys_fsync), // 118
// _____(__NR_sigreturn, sys_sigreturn), // 119
@@ -1328,13 +1328,13 @@
GENX_(__NR_mremap, sys_mremap), // 163
// _____(__NR_setresuid, sys_setresuid), // 164
-// _____(__NR_getresuid, sys_getresuid), // 165
+ LINXY(__NR_getresuid, sys_getresuid), // 165
// _____(__NR_query_module, sys_query_module), // 166
GENXY(__NR_poll, sys_poll), // 167
// _____(__NR_nfsservctl, sys_nfsservctl), // 168
// _____(__NR_setresgid, sys_setresgid), // 169
-// _____(__NR_getresgid, sys_getresgid), // 170
+ LINXY(__NR_getresgid, sys_getresgid), // 170
// _____(__NR_prctl, sys_prctl), // 171
PLAX_(__NR_rt_sigreturn, sys_rt_sigreturn), // 172
LINXY(__NR_rt_sigaction, sys_rt_sigaction), // 173
|
|
From: <sv...@va...> - 2008-01-13 15:27:41
|
Author: sewardj
Date: 2008-01-13 15:27:44 +0000 (Sun, 13 Jan 2008)
New Revision: 7344
Log:
Improve error reporting when failing to open the ELF file.
Modified:
branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
branches/DATASYMS/coregrind/m_debuginfo/storage.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-01-13 15:26:15 UTC (rev 7343)
+++ branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-01-13 15:27:44 UTC (rev 7344)
@@ -451,7 +451,10 @@
VG_(memset)(buf1k, 0, sizeof(buf1k));
fd = VG_(open)( filename, VKI_O_RDONLY, 0 );
if (fd.isError) {
- ML_(symerr)(NULL, True, "can't open file to inspect ELF header");
+ DebugInfo fake_di;
+ VG_(memset)(&fake_di, 0, sizeof(fake_di));
+ fake_di.filename = filename;
+ ML_(symerr)(&fake_di, True, "can't open file to inspect ELF header");
return;
}
nread = VG_(read)( fd.res, buf1k, sizeof(buf1k) );
Modified: branches/DATASYMS/coregrind/m_debuginfo/storage.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/storage.c 2008-01-13 15:26:15 UTC (rev 7343)
+++ branches/DATASYMS/coregrind/m_debuginfo/storage.c 2008-01-13 15:27:44 UTC (rev 7344)
@@ -64,7 +64,7 @@
VG_(message)(Vg_DebugMsg, "WARNING: Serious error when "
"reading debug info");
- if (VG_(clo_verbosity) < 2) {
+ if (True || VG_(clo_verbosity) < 2) {
/* Need to show what the file name is, at verbosity levels 2
or below, since that won't already have been shown */
VG_(message)(Vg_DebugMsg,
|
|
From: <sv...@va...> - 2008-01-13 15:26:12
|
Author: sewardj
Date: 2008-01-13 15:26:15 +0000 (Sun, 13 Jan 2008)
New Revision: 7343
Log:
Fix up .sbss fiddling a bit.
Modified:
branches/DATASYMS/coregrind/m_debuginfo/readelf.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/readelf.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-01-13 14:12:13 UTC (rev 7342)
+++ branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-01-13 15:26:15 UTC (rev 7343)
@@ -1508,27 +1508,30 @@
== di->bss_svma) {
/* Immediately precedes .bss */
di->bss_size += (di->bss_svma - sbss_svma);
+ di->bss_bias += (di->bss_svma - sbss_svma);
di->bss_svma -= (di->bss_svma - sbss_svma);
/* but don't mess with .bss avma or bias */
TRACE_SYMTAB("found .sbss of size %ld immediately preceding .bss\n",
sbss_size);
- TRACE_SYMTAB("revised .bss svma %p .. %p\n",
+ TRACE_SYMTAB("revised .bss svma = %p .. %p\n",
di->bss_svma, di->bss_svma + di->bss_size - 1);
- TRACE_SYMTAB("revised .bss avma %p .. %p\n",
+ TRACE_SYMTAB("revised .bss avma = %p .. %p\n",
di->bss_avma, di->bss_avma + di->bss_size - 1);
+ TRACE_SYMTAB("revised .bss bias = %p\n", di->bss_bias);
}
else
- if (round_Addr_upwards(di->bss_svma + di->bss_size, sbss_align)
- == sbss_svma) {
+ if (round_Addr_upwards(di->bss_svma + di->bss_size, sbss_align)
+ == sbss_svma) {
/* Immediately follows .bss */
di->bss_size += (sbss_svma - di->bss_svma);
/* but don't mess with .bss avma or bias */
TRACE_SYMTAB("found .sbss of size %ld immediately following .bss\n",
sbss_size);
- TRACE_SYMTAB("revised .bss svma %p .. %p\n",
+ TRACE_SYMTAB("revised .bss svma = %p .. %p\n",
di->bss_svma, di->bss_svma + di->bss_size - 1);
- TRACE_SYMTAB("revised .bss avma %p .. %p\n",
+ TRACE_SYMTAB("revised .bss avma = %p .. %p\n",
di->bss_avma, di->bss_avma + di->bss_size - 1);
+ TRACE_SYMTAB("revised .bss bias = %p\n", di->bss_bias);
}
else {
/* Can't ascertain relative position. Complain and
|
|
From: <sv...@va...> - 2008-01-13 14:12:10
|
Author: sewardj
Date: 2008-01-13 14:12:13 +0000 (Sun, 13 Jan 2008)
New Revision: 7342
Log:
Improve debug printing in prefersym().
Modified:
branches/DATASYMS/coregrind/m_debuginfo/storage.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/storage.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/storage.c 2008-01-13 14:11:24 UTC (rev 7341)
+++ branches/DATASYMS/coregrind/m_debuginfo/storage.c 2008-01-13 14:12:13 UTC (rev 7342)
@@ -556,6 +556,11 @@
Int vlena, vlenb; /* length without version */
const UChar *vpa, *vpb;
+ Bool preferA = False;
+ Bool preferB = False;
+
+ vg_assert(a->addr == b->addr);
+
vlena = lena = VG_(strlen)(a->name);
vlenb = lenb = VG_(strlen)(b->name);
@@ -567,37 +572,57 @@
if (vpb)
vlenb = vpb - b->name;
- TRACE_SYMTAB("choosing between '%s' and '%s'\n", a->name, b->name);
-
/* MPI hack: prefer PMPI_Foo over MPI_Foo */
if (0==VG_(strncmp)(a->name, "MPI_", 4)
&& 0==VG_(strncmp)(b->name, "PMPI_", 5)
- && 0==VG_(strcmp)(a->name, 1+b->name))
- return b;
- else
+ && 0==VG_(strcmp)(a->name, 1+b->name)) {
+ preferB = True; goto out;
+ }
if (0==VG_(strncmp)(b->name, "MPI_", 4)
&& 0==VG_(strncmp)(a->name, "PMPI_", 5)
- && 0==VG_(strcmp)(b->name, 1+a->name))
- return a;
+ && 0==VG_(strcmp)(b->name, 1+a->name)) {
+ preferA = True; goto out;
+ }
/* Select the shortest unversioned name */
- if (vlena < vlenb)
- return a;
- else if (vlenb < vlena)
- return b;
+ if (vlena < vlenb) {
+ preferA = True; goto out;
+ }
+ if (vlenb < vlena) {
+ preferB = True; goto out;
+ }
/* Equal lengths; select the versioned name */
- if (vpa && !vpb)
- return a;
- if (vpb && !vpa)
- return b;
+ if (vpa && !vpb) {
+ preferA = True; goto out;
+ }
+ if (vpb && !vpa) {
+ preferB = True; goto out;
+ }
/* Either both versioned or neither is versioned; select them
alphabetically */
- if (VG_(strcmp)(a->name, b->name) < 0)
+ if (VG_(strcmp)(a->name, b->name) < 0) {
+ preferA = True; goto out;
+ }
+ /* else */ {
+ preferB = True; goto out;
+ }
+ /*NOTREACHED*/
+ vg_assert(0);
+ out:
+ if (preferA && !preferB) {
+ TRACE_SYMTAB("sym at %p: prefer '%s' over '%s'\n",
+ a->addr, a->name, b->name );
return a;
- else
+ }
+ if (preferB && !preferA) {
+ TRACE_SYMTAB("sym at %p: prefer '%s' over '%s'\n",
+ b->addr, b->name, a->name );
return b;
+ }
+ /*NOTREACHED*/
+ vg_assert(0);
}
static void canonicaliseSymtab ( struct _DebugInfo* di )
|
|
From: <sv...@va...> - 2008-01-13 14:11:23
|
Author: sewardj
Date: 2008-01-13 14:11:24 +0000 (Sun, 13 Jan 2008)
New Revision: 7341
Log:
Try to straighten out _bias computations for: .text .data .sdata .bss
Modified:
branches/DATASYMS/coregrind/m_debuginfo/readelf.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/readelf.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-01-13 01:54:19 UTC (rev 7340)
+++ branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-01-13 14:11:24 UTC (rev 7341)
@@ -1325,8 +1325,11 @@
di->text_svma = svma;
di->text_avma = di->rx_map_avma + foff - di->rx_map_foff;
di->text_size = size;
- di->text_bias = VG_PGROUNDDN(di->text_avma) - VG_PGROUNDDN(svma);
- TRACE_SYMTAB("acquiring .text avma = %p .. %p\n",
+ di->text_bias = di->text_avma - svma;
+ TRACE_SYMTAB("acquiring .text svma = %p .. %p\n",
+ di->text_svma,
+ di->text_svma + di->text_size - 1);
+ TRACE_SYMTAB("acquiring .text avma = %p .. %p\n",
di->text_avma,
di->text_avma + di->text_size - 1);
TRACE_SYMTAB("acquiring .text bias = %p\n", di->text_bias);
@@ -1341,7 +1344,10 @@
di->data_svma = svma;
di->data_avma = di->rw_map_avma + foff - di->rw_map_foff;
di->data_size = size;
- di->data_bias = VG_PGROUNDDN(di->data_avma) - VG_PGROUNDDN(svma);
+ di->data_bias = di->data_avma - svma;
+ TRACE_SYMTAB("acquiring .data svma = %p .. %p\n",
+ di->data_svma,
+ di->data_svma + di->data_size - 1);
TRACE_SYMTAB("acquiring .data avma = %p .. %p\n",
di->data_avma,
di->data_avma + di->data_size - 1);
@@ -1357,7 +1363,10 @@
di->sdata_svma = svma;
di->sdata_avma = di->rw_map_avma + foff - di->rw_map_foff;
di->sdata_size = size;
- di->sdata_bias = VG_PGROUNDDN(di->sdata_avma) - VG_PGROUNDDN(svma);
+ di->sdata_bias = di->sdata_avma - svma;
+ TRACE_SYMTAB("acquiring .sdata svma = %p .. %p\n",
+ di->sdata_svma,
+ di->sdata_svma + di->sdata_size - 1);
TRACE_SYMTAB("acquiring .sdata avma = %p .. %p\n",
di->sdata_avma,
di->sdata_avma + di->sdata_size - 1);
@@ -1373,13 +1382,15 @@
di->bss_svma = svma;
di->bss_avma = di->rw_map_avma + foff - di->rw_map_foff;
di->bss_size = size;
- di->bss_bias = VG_PGROUNDDN(di->bss_avma) - VG_PGROUNDDN(svma);
+ di->bss_bias = di->bss_avma - svma;
bss_align = alyn;
+ TRACE_SYMTAB("acquiring .bss svma = %p .. %p\n",
+ di->bss_svma,
+ di->bss_svma + di->bss_size - 1);
TRACE_SYMTAB("acquiring .bss avma = %p .. %p\n",
di->bss_avma,
di->bss_avma + di->bss_size - 1);
TRACE_SYMTAB("acquiring .bss bias = %p\n", di->bss_bias);
- TRACE_SYMTAB("acquiring .bss svma = %p\n", di->bss_svma);
} else
if ((!inrw) && (!inrx) && size > 0 && di->bss_size == 0) {
/* File contains a .bss, but it didn't get mapped. Ignore. */
@@ -1396,8 +1407,8 @@
/* Accept .sbss where mapped as rw (data) */
if (0 == VG_(strcmp)(name, ".sbss")) {
if (inrw && size > 0 && sbss_size == 0) {
- sbss_size = size;
- sbss_svma = svma;
+ sbss_size = size;
+ sbss_svma = svma;
sbss_align = alyn;
} else {
BAD(".sbss");
@@ -1501,7 +1512,8 @@
/* but don't mess with .bss avma or bias */
TRACE_SYMTAB("found .sbss of size %ld immediately preceding .bss\n",
sbss_size);
- TRACE_SYMTAB("revised .bss svma %p\n", di->bss_svma);
+ TRACE_SYMTAB("revised .bss svma %p .. %p\n",
+ di->bss_svma, di->bss_svma + di->bss_size - 1);
TRACE_SYMTAB("revised .bss avma %p .. %p\n",
di->bss_avma, di->bss_avma + di->bss_size - 1);
}
@@ -1513,7 +1525,8 @@
/* but don't mess with .bss avma or bias */
TRACE_SYMTAB("found .sbss of size %ld immediately following .bss\n",
sbss_size);
- TRACE_SYMTAB("revised .bss svma %p (is unchanged)\n", di->bss_svma);
+ TRACE_SYMTAB("revised .bss svma %p .. %p\n",
+ di->bss_svma, di->bss_svma + di->bss_size - 1);
TRACE_SYMTAB("revised .bss avma %p .. %p\n",
di->bss_avma, di->bss_avma + di->bss_size - 1);
}
|
|
From: Oswald B. <os...@kd...> - 2008-01-13 09:42:11
|
On Sun, Jan 13, 2008 at 01:47:58AM +0000, sv...@va... wrote:
> +++ branches/DATASYMS/coregrind/m_libcbase.c 2008-01-13 01:47:56 UTC (rev 7339)
> @@ -563,13 +563,14 @@
> +Int VG_(log2) ( UInt x )
> {
> Int i;
> /* Any more than 32 and we overflow anyway... */
> for (i = 0; i < 32; i++) {
> + if ((1U << i) == x) return i;
> }
inefficient ...
int pos = -1;
if (n >= 1<<16) { n >>= 16; pos += 16; }
if (n >= 1<< 8) { n >>= 8; pos += 8; }
if (n >= 1<< 4) { n >>= 4; pos += 4; }
if (n >= 1<< 2) { n >>= 2; pos += 2; }
return pos + n - ((n + 1) >> 2);
on x86, a single "bsr" will do the trick.
unless you actually *want* this: Returns -1 if x is not a power of two.
--
Hi! I'm a .signature virus! Copy me into your ~/.signature, please!
--
Confusion, chaos, panic - my work here is done.
|
|
From: Tom H. <th...@cy...> - 2008-01-13 03:38:07
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-01-13 03:05:09 GMT 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 == 366 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) |
|
From: Tom H. <th...@cy...> - 2008-01-13 03:28:37
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-01-13 03:10:04 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 366 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (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 == 366 tests, 10 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Jan 13 03:19:47 2008 --- new.short Sun Jan 13 03:28:40 2008 *************** *** 8,10 **** ! == 366 tests, 10 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 366 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 16,19 **** none/tests/mremap2 (stdout) - none/tests/pth_detached (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) --- 16,17 ---- |
|
From: Tom H. <th...@cy...> - 2008-01-13 03:15:44
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-01-13 03:00:03 GMT 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 == 368 tests, 30 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2008-01-13 01:57:21
|
Author: sewardj
Date: 2008-01-13 01:54:19 +0000 (Sun, 13 Jan 2008)
New Revision: 7340
Log:
Improve .bss handling. I still don't really understand how to
reliably figure out at which VMA ld.so maps the .bss section, though.
Also, handle .sdata segments -- these are another kind of .data
segment that show up on ppc32-linux.
Modified:
branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h
branches/DATASYMS/coregrind/m_debuginfo/readelf.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-01-13 01:47:56 UTC (rev 7339)
+++ branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-01-13 01:54:19 UTC (rev 7340)
@@ -700,9 +700,17 @@
&& di->text_avma <= ptr
&& ptr < di->text_avma + di->text_size;
} else {
- inRange = di->data_size > 0
- && di->data_avma <= ptr
- && ptr < di->data_avma + di->data_size + di->bss_size;
+ inRange = (di->data_size > 0
+ && di->data_avma <= ptr
+ && ptr < di->data_avma + di->data_size)
+ ||
+ (di->sdata_size > 0
+ && di->sdata_avma <= ptr
+ && ptr < di->sdata_avma + di->sdata_size)
+ ||
+ (di->bss_size > 0
+ && di->bss_avma <= ptr
+ && ptr < di->bss_avma + di->bss_size);
}
/* Note this short-circuit check relies on the assumption that
Modified: branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h 2008-01-13 01:47:56 UTC (rev 7339)
+++ branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h 2008-01-13 01:54:19 UTC (rev 7340)
@@ -274,15 +274,24 @@
though. */
/* .text */
Addr text_avma;
+ Addr text_svma;
SizeT text_size;
OffT text_bias;
/* .data */
+ Addr data_svma;
Addr data_avma;
SizeT data_size;
OffT data_bias;
+ /* .sdata */
+ Addr sdata_svma;
+ Addr sdata_avma;
+ SizeT sdata_size;
+ OffT sdata_bias;
/* .bss */
+ Addr bss_svma;
Addr bss_avma;
SizeT bss_size;
+ OffT bss_bias;
/* .plt */
Addr plt_avma;
SizeT plt_size;
Modified: branches/DATASYMS/coregrind/m_debuginfo/readelf.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-01-13 01:47:56 UTC (rev 7339)
+++ branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-01-13 01:54:19 UTC (rev 7340)
@@ -216,6 +216,7 @@
)
{
Bool plausible, is_in_opd;
+ Bool in_text, in_data, in_sdata, in_bss;
/* Set defaults */
*sym_name_out = sym_name;
@@ -238,6 +239,8 @@
);
/* Now bias sym_avma_out accordingly */
+#if 0
+ /* This works, but seems a bit crude */
if (ELFXX_ST_TYPE(sym->st_info) == STT_OBJECT) {
*is_text_out = False;
*sym_avma_out += di->data_bias;
@@ -245,6 +248,38 @@
*is_text_out = True;
*sym_avma_out += di->text_bias;
}
+#else
+ /* Try to figure out exactly which section the symbol is from and
+ bias accordingly. Screws up if the previously deduced section
+ svma address ranges are wrong. */
+ if (di->text_size > 0
+ && sym_svma >= di->text_svma
+ && sym_svma < di->text_svma + di->text_size) {
+ *is_text_out = True;
+ *sym_avma_out += di->text_bias;
+ } else
+ if (di->data_size > 0
+ && sym_svma >= di->data_svma
+ && sym_svma < di->data_svma + di->data_size) {
+ *is_text_out = False;
+ *sym_avma_out += di->data_bias;
+ } else
+ if (di->sdata_size > 0
+ && sym_svma >= di->sdata_svma
+ && sym_svma < di->sdata_svma + di->sdata_size) {
+ *is_text_out = False;
+ *sym_avma_out += di->sdata_bias;
+ } else
+ if (di->bss_size > 0
+ && sym_svma >= di->bss_svma
+ && sym_svma < di->bss_svma + di->bss_size) {
+ *is_text_out = False;
+ *sym_avma_out += di->bss_bias;
+ } else {
+ *is_text_out = True;
+ *sym_avma_out += di->text_bias;
+ }
+#endif
# if defined(VGP_ppc64_linux)
/* Allow STT_NOTYPE in the very special case where we're running on
@@ -255,8 +290,8 @@
&& ELFXX_ST_TYPE(sym->st_info) == STT_NOTYPE
&& sym->st_size > 0
&& di->opd_size > 0
- && *sym_svma_out >= di->opd_avma
- && *sym_svma_out < di->opd_avma + di->opd_size)
+ && *sym_avma_out >= di->opd_avma
+ && *sym_avma_out < di->opd_avma + di->opd_size)
plausible = True;
# endif
@@ -315,9 +350,11 @@
# else
Int offset_in_opd;
ULong* fn_descr;
+ Bool details = 1||False;
- if (0) VG_(printf)("opdXXX: opd_bias %p, sym_svma_out %p\n",
- (void*)(opd_bias), (void*)*sym_avma_out);
+ if (details)
+ TRACE_SYMTAB("opdXXX: opd_bias %p, sym_svma_out %p\n",
+ (void*)(opd_bias), (void*)*sym_avma_out);
if (!VG_IS_8_ALIGNED(*sym_avma_out)) {
TRACE_SYMTAB(" ignore -- not 8-aligned: %s\n", sym_name);
@@ -342,9 +379,11 @@
fn_descr = (ULong*)(opd_img + offset_in_opd);
- if (0) VG_(printf)("opdXXY: offset %d, fn_descr %p\n",
- offset_in_opd, fn_descr);
- if (0) VG_(printf)("opdXXZ: *fn_descr %p\n", (void*)(fn_descr[0]));
+ if (details)
+ TRACE_SYMTAB("opdXXY: offset %d, fn_descr %p\n",
+ offset_in_opd, fn_descr);
+ if (details)
+ TRACE_SYMTAB("opdXXZ: *fn_descr %p\n", (void*)(fn_descr[0]));
/* opd_bias is the what we have to add to SVMAs found in .opd to
get plausible .text AVMAs for the entry point, and .data
@@ -380,9 +419,30 @@
/* If no part of the symbol falls within the mapped range,
ignore it. */
+
+ in_text
+ = di->text_size > 0
+ && !(*sym_avma_out + *sym_size_out <= di->text_avma
+ || *sym_avma_out >= di->text_avma + di->text_size);
+
+ in_data
+ = di->data_size > 0
+ && !(*sym_avma_out + *sym_size_out <= di->data_avma
+ || *sym_avma_out >= di->data_avma + di->data_size);
+
+ in_sdata
+ = di->sdata_size > 0
+ && !(*sym_avma_out + *sym_size_out <= di->sdata_avma
+ || *sym_avma_out >= di->sdata_avma + di->sdata_size);
+
+ in_bss
+ = di->bss_size > 0
+ && !(*sym_avma_out + *sym_size_out <= di->bss_avma
+ || *sym_avma_out >= di->bss_avma + di->bss_size);
+
+
if (*is_text_out) {
- if (*sym_avma_out + *sym_size_out <= di->text_avma
- || *sym_avma_out >= di->text_avma + di->text_size) {
+ if (!in_text) {
TRACE_SYMTAB(
"ignore -- %p .. %p outside .text svma range %p .. %p\n",
*sym_avma_out, *sym_avma_out + *sym_size_out,
@@ -391,15 +451,10 @@
return False;
}
} else {
- /* KLUDGED BSS CHECK -- see comments at start of fn */
- if (*sym_avma_out + *sym_size_out <= di->data_avma
- || *sym_avma_out >= di->data_avma + di->data_size
- + di->bss_size) {
+ if (!(in_data || in_sdata || in_bss)) {
TRACE_SYMTAB(
- "ignore -- %p .. %p outside .data svma range %p .. %p\n",
- *sym_avma_out, *sym_avma_out + *sym_size_out,
- di->data_avma,
- di->data_avma + di->data_size);
+ "ignore -- %p .. %p outside .data / .sdata / .bss svma ranges\n",
+ *sym_avma_out, *sym_avma_out + *sym_size_out);
return False;
}
}
@@ -508,6 +563,7 @@
Addr tocptr;
Int size;
Bool from_opd;
+ Bool is_text;
}
TempSym;
@@ -651,6 +707,7 @@
elem->tocptr = sym_tocptr;
elem->size = sym_size;
elem->from_opd = from_opd;
+ elem->is_text = is_text;
VG_(OSetGen_Insert)(oset, elem);
if (di->trace_symtab) {
VG_(printf)(" to-oset [%4d]: "
@@ -677,14 +734,14 @@
risym.size = elem->size;
risym.name = ML_(addStr) ( di, elem->key.name, -1 );
risym.tocptr = elem->tocptr;
- risym.isText = True;
+ risym.isText = elem->is_text;
vg_assert(risym.name != NULL);
ML_(addSym) ( di, &risym );
if (di->trace_symtab) {
VG_(printf)(" rec(%c) [%4d]: "
" val %010p, toc %010p, sz %4d %s\n",
- is_text ? 't' : 'd',
+ risym.isText ? 't' : 'd',
i, (void*) risym.addr,
(void*) risym.tocptr,
(Int) risym.size,
@@ -864,6 +921,16 @@
return (void*)( ((UChar*)base) + index * scale );
}
+static Addr round_Addr_upwards ( Addr a, UInt align )
+{
+ if (align > 0) {
+ vg_assert(-1 != VG_(log2)(align));
+ a = VG_ROUNDUP(a, align);
+ }
+ return a;
+}
+
+
/* Find the file offset corresponding to SVMA by using the program
headers. This is taken from binutils-2.17/binutils/readelf.c
offset_from_vma(). */
@@ -926,6 +993,14 @@
UWord shdr_ent_szB = 0;
UChar* shdr_strtab_img = NULL;
+ /* To do with figuring out where .sbss is relative to .bss. A
+ kludge at the best of times. */
+ SizeT sbss_size;
+ Addr sbss_svma;
+ UInt bss_align;
+ UInt sbss_align;
+
+
vg_assert(di);
vg_assert(di->have_rx_map == True);
vg_assert(di->have_rw_map == True);
@@ -1190,6 +1265,10 @@
di->soname = "NONE";
}
+ /*SizeT*/ sbss_size = 0;
+ /*Addr */ sbss_svma = 0;
+ /*UInt */ bss_align = 0;
+ /*UInt */ sbss_align = 0;
/* Now read the section table. */
TRACE_SYMTAB("\n");
@@ -1198,21 +1277,23 @@
di->rx_map_foff, di->rx_map_foff + di->rx_map_size - 1 );
TRACE_SYMTAB("rw: foffsets %ld .. %ld\n",
di->rw_map_foff, di->rw_map_foff + di->rw_map_size - 1 );
+
for (i = 0; i < shdr_nent; i++) {
ElfXX_Shdr* shdr = INDEX_BIS( shdr_img, i, shdr_ent_szB );
UChar* name = shdr_strtab_img + shdr->sh_name;
Addr svma = shdr->sh_addr;
OffT foff = shdr->sh_offset;
UWord size = shdr->sh_size;
+ UInt alyn = shdr->sh_addralign;
Bool bits = !(shdr->sh_type == SHT_NOBITS);
Bool inrx = size > 0 && foff >= di->rx_map_foff
&& foff < di->rx_map_foff + di->rx_map_size;
Bool inrw = size > 0 && foff >= di->rw_map_foff
&& foff < di->rw_map_foff + di->rw_map_size;
- TRACE_SYMTAB(" [sec %2ld] %s %s foff %6ld .. %6ld "
+ TRACE_SYMTAB(" [sec %2ld] %s %s al%2u foff %6ld .. %6ld "
" svma %p name \"%s\"\n",
- i, inrx ? "rx" : " ", inrw ? "rw" : " ",
+ i, inrx ? "rx" : " ", inrw ? "rw" : " ", alyn,
foff, foff+size-1, (void*)svma, name );
/* Check for sane-sized segments. SHT_NOBITS sections have zero
@@ -1222,6 +1303,13 @@
goto out;
}
+ /* Check for a sane alignment value. */
+ if (alyn > 0 && -1 == VG_(log2)(alyn)) {
+ ML_(symerr)(di, True, "ELF Section contains invalid "
+ ".sh_addralign value");
+ goto out;
+ }
+
# define BAD(_secname) \
do { ML_(symerr)(di, True, \
"Can't make sense of " _secname \
@@ -1234,6 +1322,7 @@
/* Accept .text where mapped as rx (code) */
if (0 == VG_(strcmp)(name, ".text")) {
if (inrx && size > 0 && di->text_size == 0) {
+ di->text_svma = svma;
di->text_avma = di->rx_map_avma + foff - di->rx_map_foff;
di->text_size = size;
di->text_bias = VG_PGROUNDDN(di->text_avma) - VG_PGROUNDDN(svma);
@@ -1249,6 +1338,7 @@
/* Accept .data where mapped as rw (data) */
if (0 == VG_(strcmp)(name, ".data")) {
if (inrw && size > 0 && di->data_size == 0) {
+ di->data_svma = svma;
di->data_avma = di->rw_map_avma + foff - di->rw_map_foff;
di->data_size = size;
di->data_bias = VG_PGROUNDDN(di->data_avma) - VG_PGROUNDDN(svma);
@@ -1261,24 +1351,59 @@
}
}
+ /* Accept .sdata where mapped as rw (data) */
+ if (0 == VG_(strcmp)(name, ".sdata")) {
+ if (inrw && size > 0 && di->sdata_size == 0) {
+ di->sdata_svma = svma;
+ di->sdata_avma = di->rw_map_avma + foff - di->rw_map_foff;
+ di->sdata_size = size;
+ di->sdata_bias = VG_PGROUNDDN(di->sdata_avma) - VG_PGROUNDDN(svma);
+ TRACE_SYMTAB("acquiring .sdata avma = %p .. %p\n",
+ di->sdata_avma,
+ di->sdata_avma + di->sdata_size - 1);
+ TRACE_SYMTAB("acquiring .sdata bias = %p\n", di->sdata_bias);
+ } else {
+ BAD(".sdata");
+ }
+ }
+
/* Accept .bss where mapped as rw (data) */
if (0 == VG_(strcmp)(name, ".bss")) {
if (inrw && size > 0 && di->bss_size == 0) {
+ di->bss_svma = svma;
di->bss_avma = di->rw_map_avma + foff - di->rw_map_foff;
di->bss_size = size;
+ di->bss_bias = VG_PGROUNDDN(di->bss_avma) - VG_PGROUNDDN(svma);
+ bss_align = alyn;
TRACE_SYMTAB("acquiring .bss avma = %p .. %p\n",
di->bss_avma,
di->bss_avma + di->bss_size - 1);
+ TRACE_SYMTAB("acquiring .bss bias = %p\n", di->bss_bias);
+ TRACE_SYMTAB("acquiring .bss svma = %p\n", di->bss_svma);
} else
if ((!inrw) && (!inrx) && size > 0 && di->bss_size == 0) {
/* File contains a .bss, but it didn't get mapped. Ignore. */
+ di->bss_svma = 0;
di->bss_avma = 0;
di->bss_size = 0;
+ di->bss_bias = 0;
+ bss_align = 0;
} else {
BAD(".bss");
}
}
+ /* Accept .sbss where mapped as rw (data) */
+ if (0 == VG_(strcmp)(name, ".sbss")) {
+ if (inrw && size > 0 && sbss_size == 0) {
+ sbss_size = size;
+ sbss_svma = svma;
+ sbss_align = alyn;
+ } else {
+ BAD(".sbss");
+ }
+ }
+
/* Accept .got where mapped as rw (data) */
if (0 == VG_(strcmp)(name, ".got")) {
if (inrw && size > 0 && di->got_size == 0) {
@@ -1361,6 +1486,49 @@
}
+ /* We found a .sbss section too. If if immediately adjoins the
+ .bss, pretend it's a part of .bss. This is a hack. Fortunately
+ .sbss (small-items .bss section) seems to exist on
+ ppc32/64-linux, so if this screws up it at least won't affect
+ the main x86/amd64-linux ports. */
+ if (di->bss_size > 0 && sbss_size > 0) {
+
+ if (round_Addr_upwards(sbss_svma + sbss_size, bss_align)
+ == di->bss_svma) {
+ /* Immediately precedes .bss */
+ di->bss_size += (di->bss_svma - sbss_svma);
+ di->bss_svma -= (di->bss_svma - sbss_svma);
+ /* but don't mess with .bss avma or bias */
+ TRACE_SYMTAB("found .sbss of size %ld immediately preceding .bss\n",
+ sbss_size);
+ TRACE_SYMTAB("revised .bss svma %p\n", di->bss_svma);
+ TRACE_SYMTAB("revised .bss avma %p .. %p\n",
+ di->bss_avma, di->bss_avma + di->bss_size - 1);
+ }
+ else
+ if (round_Addr_upwards(di->bss_svma + di->bss_size, sbss_align)
+ == sbss_svma) {
+ /* Immediately follows .bss */
+ di->bss_size += (sbss_svma - di->bss_svma);
+ /* but don't mess with .bss avma or bias */
+ TRACE_SYMTAB("found .sbss of size %ld immediately following .bss\n",
+ sbss_size);
+ TRACE_SYMTAB("revised .bss svma %p (is unchanged)\n", di->bss_svma);
+ TRACE_SYMTAB("revised .bss avma %p .. %p\n",
+ di->bss_avma, di->bss_avma + di->bss_size - 1);
+ }
+ else {
+ /* Can't ascertain relative position. Complain and
+ ignore. */
+ TRACE_SYMTAB("found .sbss of size %ld but not immediately "
+ "preceding/following .bss\n",
+ sbss_size);
+ TRACE_SYMTAB("therefore ignoring it\n");
+ ML_(symerr)(di, True, ".sbss which is not adjacent to .bss");
+ }
+
+ }
+
if (0) VG_(printf)("YYYY text_: avma %p size %ld bias %p\n",
di->text_avma, di->text_size, di->text_bias);
@@ -1440,7 +1608,7 @@
if ( shdr->sh_offset \
+ (nobits ? 0 : sec_size) > n_oimage ) { \
ML_(symerr)(di, True, \
- " section beyond image end?!"); \
+ " section beyond image end?!"); \
goto out; \
} \
} \
|
|
From: <sv...@va...> - 2008-01-13 01:57:01
|
Author: sewardj
Date: 2008-01-13 01:47:56 +0000 (Sun, 13 Jan 2008)
New Revision: 7339
Log:
Make the argument to VG_(log2) be unsigned. Doesn't really make sense
to interpret it as a signed value.
Modified:
branches/DATASYMS/coregrind/m_libcbase.c
branches/DATASYMS/include/pub_tool_libcbase.h
Modified: branches/DATASYMS/coregrind/m_libcbase.c
===================================================================
--- branches/DATASYMS/coregrind/m_libcbase.c 2008-01-11 07:24:37 UTC (rev 7338)
+++ branches/DATASYMS/coregrind/m_libcbase.c 2008-01-13 01:47:56 UTC (rev 7339)
@@ -563,13 +563,14 @@
Misc useful functions
------------------------------------------------------------------ */
-/* Returns the base-2 logarithm of x. Returns -1 if x is not a power of two. */
-Int VG_(log2) ( Int x )
+/* Returns the base-2 logarithm of x. Returns -1 if x is not a power
+ of two. */
+Int VG_(log2) ( UInt x )
{
Int i;
/* Any more than 32 and we overflow anyway... */
for (i = 0; i < 32; i++) {
- if (1 << i == x) return i;
+ if ((1U << i) == x) return i;
}
return -1;
}
Modified: branches/DATASYMS/include/pub_tool_libcbase.h
===================================================================
--- branches/DATASYMS/include/pub_tool_libcbase.h 2008-01-11 07:24:37 UTC (rev 7338)
+++ branches/DATASYMS/include/pub_tool_libcbase.h 2008-01-13 01:47:56 UTC (rev 7339)
@@ -135,8 +135,9 @@
extern void VG_(ssort)( void* base, SizeT nmemb, SizeT size,
Int (*compar)(void*, void*) );
-/* Returns the base-2 logarithm of x. Returns -1 if x is not a power of two. */
-extern Int VG_(log2) ( Int x );
+/* Returns the base-2 logarithm of x. Returns -1 if x is not a power
+ of two. */
+extern Int VG_(log2) ( UInt x );
// A pseudo-random number generator returning a random UInt. If pSeed
// is NULL, it uses its own seed, which starts at zero. If pSeed is
|