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
(4) |
2
(17) |
3
(9) |
4
(14) |
5
(10) |
6
(11) |
7
(8) |
|
8
(9) |
9
(11) |
10
(29) |
11
(27) |
12
(29) |
13
(36) |
14
(8) |
|
15
(18) |
16
(30) |
17
(25) |
18
(6) |
19
(16) |
20
(13) |
21
(10) |
|
22
(16) |
23
(7) |
24
(8) |
25
(13) |
26
(14) |
27
(14) |
28
(5) |
|
29
(6) |
30
(21) |
31
(14) |
|
|
|
|
|
From: <sv...@va...> - 2009-03-09 23:33:22
|
Author: njn
Date: 2009-03-09 23:33:06 +0000 (Mon, 09 Mar 2009)
New Revision: 9331
Log:
Merged r9330 (leak-checker overhaul) from the trunk. Unfortunately the
leak-case-{full,summary} tests fail because one block is unexpectedly
reachable; this may be because too much memory is being included in the
root-set on Darwin.
Added:
branches/DARWIN/memcheck/tests/leak-cases-full.stderr.exp
branches/DARWIN/memcheck/tests/leak-cases-full.vgtest
branches/DARWIN/memcheck/tests/leak-cases-summary.stderr.exp
branches/DARWIN/memcheck/tests/leak-cases-summary.vgtest
branches/DARWIN/memcheck/tests/leak-cases.c
Modified:
branches/DARWIN/NEWS
branches/DARWIN/docs/xml/FAQ.xml
branches/DARWIN/memcheck/docs/mc-manual.xml
branches/DARWIN/memcheck/mc_errors.c
branches/DARWIN/memcheck/mc_include.h
branches/DARWIN/memcheck/mc_leakcheck.c
branches/DARWIN/memcheck/mc_main.c
branches/DARWIN/memcheck/memcheck.h
branches/DARWIN/memcheck/tests/Makefile.am
branches/DARWIN/memcheck/tests/filter_stderr
[... diff too large to include ...]
|
|
From: Greg P. <gp...@ap...> - 2009-03-09 20:05:20
|
On Mar 8, 2009, at 3:01 PM, Nicholas Nethercote wrote: > The LLVM project has an as-yet-nameless static analysis tool which I > just tried on Valgrind. It found 153 things to complain about; this > was on the DARWIN branch on my Mac (which I did because there was a > precompiled binary for Mac). I downloaded it from here: > > http://clang.llvm.org/StaticAnalysis.html In turn, the LLVM developers (some of whom work down the hall) use Valgrind all the time on Linux and now Mac OS X. They consider it "an indispensable tool". Good static and dynamic analysis tools complement each other well. -- Greg Parker gp...@ap... Runtime Wrangler |
|
From: Bart V. A. <bar...@gm...> - 2009-03-09 12:09:55
|
On Mon, Mar 9, 2009 at 12:50 PM, Tom Hughes <to...@co...> wrote: > Bart Van Assche wrote: >> Can you upload this output to a publicly accessible web server ? I >> tried the above steps, but all I get is the following: > > http://www.compton.nu/valgrind/ is the output of a run I've just done on > linux. Thanks ! Bart. |
|
From: Tom H. <to...@co...> - 2009-03-09 11:50:29
|
Bart Van Assche wrote: > On Sun, Mar 8, 2009 at 11:01 PM, Nicholas Nethercote > <n.n...@gm...> wrote: >> Here are the steps I used: >> >> autogen.sh >> /path/to/scan-build configure --prefix=`pwd`/inst >> /path/to/scan-build -o checker-results make >> >> This put the results in the directory checker-results (by default they >> go to /tmp, which is odd). I would have attached the results to this >> email, but they are 132MB, because the output is lots of pretty HTML >> files. > > Can you upload this output to a publicly accessible web server ? I > tried the above steps, but all I get is the following: http://www.compton.nu/valgrind/ is the output of a run I've just done on linux. > Error in tempfile() using > checker-results/2009-03-09-1/clang_output_XXXXXX: Parent directory > (checker-results/2009-03-09-1/) does not exist at > .../llvm/tools/clang/utils/ccc-analyzer line 171 Use a full path to the directory - ie "-o $PWD/checker-results" and it will work. The problem is it creates it at the top level then tries to write to it while in a subdirectory and fails. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |
|
From: Bart V. A. <bar...@gm...> - 2009-03-09 11:05:13
|
A clarification regarding the commit below: currently both Drd and
Helgrind use the bar_trivial test program, but apparently neither the
trunk version of Drd nor Helgrind detect the race on the loop variable
'i'. I'm fixing a race condition with regard to thread creation in
Drd, and I found out the race on the loop variable 'i' by running a
test version of Drd on the test program bar_trivial.
Bart.
On Sun, Mar 8, 2009 at 7:58 PM, <sv...@va...> wrote:
> Author: bart
> Date: 2009-03-08 18:58:06 +0000 (Sun, 08 Mar 2009)
> New Revision: 9325
>
> Log:
> Fixed an unintended data race in the bar_trivial test program.
>
> Modified:
> trunk/helgrind/tests/bar_trivial.c
>
>
> Modified: trunk/helgrind/tests/bar_trivial.c
> ===================================================================
> --- trunk/helgrind/tests/bar_trivial.c 2009-03-06 06:12:27 UTC (rev 9324)
> +++ trunk/helgrind/tests/bar_trivial.c 2009-03-08 18:58:06 UTC (rev 9325)
> @@ -16,7 +16,7 @@
>
> void* child_fn ( void* arg )
> {
> - long r, n = (long)arg;
> + long r, n = *(long*)arg;
>
> if (n == 1) x++;
>
> @@ -36,12 +36,14 @@
> {
> long i, r;
> pthread_t thr[NTHR];
> + long thread_arg[NTHR];
>
> r = pthread_barrier_init(&bar, NULL, NTHR);
> assert(!r);
>
> for (i = 0; i < NTHR; i++) {
> - r = pthread_create(&thr[i], NULL, child_fn, (void*)i);
> + thread_arg[i] = i;
> + r = pthread_create(&thr[i], NULL, child_fn, &(thread_arg[i]));
> assert(!r);
> }
|
|
From: <sv...@va...> - 2009-03-09 09:19:19
|
Author: tom
Date: 2009-03-09 09:19:03 +0000 (Mon, 09 Mar 2009)
New Revision: 9329
Log:
Keep track of the svma and bias values for the debug data separately
as they may be different to those for other sections of the ELF file
if we have separated debug information and the main file has been
prelinked since they were split. Fixes bug #185816.
Modified:
trunk/coregrind/m_debuginfo/d3basics.c
trunk/coregrind/m_debuginfo/priv_storage.h
trunk/coregrind/m_debuginfo/readdwarf.c
trunk/coregrind/m_debuginfo/readdwarf3.c
trunk/coregrind/m_debuginfo/readelf.c
trunk/coregrind/m_debuginfo/readstabs.c
Modified: trunk/coregrind/m_debuginfo/d3basics.c
===================================================================
--- trunk/coregrind/m_debuginfo/d3basics.c 2009-03-08 19:18:21 UTC (rev 9328)
+++ trunk/coregrind/m_debuginfo/d3basics.c 2009-03-09 09:19:03 UTC (rev 9329)
@@ -406,33 +406,33 @@
{
if (di->text_present
&& di->text_size > 0
- && *a >= di->text_svma && *a < di->text_svma + di->text_size) {
- *a += di->text_bias;
+ && *a >= di->text_debug_svma && *a < di->text_debug_svma + di->text_size) {
+ *a += di->text_debug_bias;
}
else if (di->data_present
&& di->data_size > 0
- && *a >= di->data_svma && *a < di->data_svma + di->data_size) {
- *a += di->data_bias;
+ && *a >= di->data_debug_svma && *a < di->data_debug_svma + di->data_size) {
+ *a += di->data_debug_bias;
}
else if (di->sdata_present
&& di->sdata_size > 0
- && *a >= di->sdata_svma && *a < di->sdata_svma + di->sdata_size) {
- *a += di->sdata_bias;
+ && *a >= di->sdata_debug_svma && *a < di->sdata_debug_svma + di->sdata_size) {
+ *a += di->sdata_debug_bias;
}
else if (di->rodata_present
&& di->rodata_size > 0
- && *a >= di->rodata_svma && *a < di->rodata_svma + di->rodata_size) {
- *a += di->rodata_bias;
+ && *a >= di->rodata_debug_svma && *a < di->rodata_debug_svma + di->rodata_size) {
+ *a += di->rodata_debug_bias;
}
else if (di->bss_present
&& di->bss_size > 0
- && *a >= di->bss_svma && *a < di->bss_svma + di->bss_size) {
- *a += di->bss_bias;
+ && *a >= di->bss_debug_svma && *a < di->bss_debug_svma + di->bss_size) {
+ *a += di->bss_debug_bias;
}
else if (di->sbss_present
&& di->sbss_size > 0
- && *a >= di->sbss_svma && *a < di->sbss_svma + di->sbss_size) {
- *a += di->sbss_bias;
+ && *a >= di->sbss_debug_svma && *a < di->sbss_debug_svma + di->sbss_size) {
+ *a += di->sbss_debug_bias;
}
else {
return False;
@@ -541,14 +541,8 @@
switch (opcode) {
case DW_OP_addr:
/* Presumably what is given in the Dwarf3 is a SVMA (how
- could it be otherwise?) So we add the data bias on
- before pushing the result. FIXME: how can we be sure
- the data bias is intended, not the text bias? I don't
- know. */
- /* Furthermore, do we need to take into account the
- horrible prelinking-induced complications as described
- in "Comment_Regarding_DWARF3_Text_Biasing" in
- readdwarf3.c? Currently I don't know. */
+ could it be otherwise?) So we add the appropriate bias
+ on before pushing the result. */
a1 = *(Addr*)expr;
if (bias_address(&a1, di)) {
PUSH( a1 );
Modified: trunk/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_storage.h 2009-03-08 19:18:21 UTC (rev 9328)
+++ trunk/coregrind/m_debuginfo/priv_storage.h 2009-03-09 09:19:03 UTC (rev 9329)
@@ -354,36 +354,48 @@
Addr text_svma;
SizeT text_size;
PtrdiffT text_bias;
+ Addr text_debug_svma;
+ PtrdiffT text_debug_bias;
/* .data */
Bool data_present;
Addr data_svma;
Addr data_avma;
SizeT data_size;
PtrdiffT data_bias;
+ Addr data_debug_svma;
+ PtrdiffT data_debug_bias;
/* .sdata */
Bool sdata_present;
Addr sdata_svma;
Addr sdata_avma;
SizeT sdata_size;
PtrdiffT sdata_bias;
+ Addr sdata_debug_svma;
+ PtrdiffT sdata_debug_bias;
/* .rodata */
Bool rodata_present;
Addr rodata_svma;
Addr rodata_avma;
SizeT rodata_size;
PtrdiffT rodata_bias;
+ Addr rodata_debug_svma;
+ PtrdiffT rodata_debug_bias;
/* .bss */
Bool bss_present;
Addr bss_svma;
Addr bss_avma;
SizeT bss_size;
PtrdiffT bss_bias;
+ Addr bss_debug_svma;
+ PtrdiffT bss_debug_bias;
/* .sbss */
Bool sbss_present;
Addr sbss_svma;
Addr sbss_avma;
SizeT sbss_size;
PtrdiffT sbss_bias;
+ Addr sbss_debug_svma;
+ PtrdiffT sbss_debug_bias;
/* .plt */
Bool plt_present;
Addr plt_avma;
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2009-03-08 19:18:21 UTC (rev 9328)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2009-03-09 09:19:03 UTC (rev 9329)
@@ -362,7 +362,7 @@
switch (op_code) {
case DW_LNE_end_sequence:
if (0) VG_(printf)("1001: si->o %#lx, smr.a %#lx\n",
- di->text_bias, state_machine_regs.address );
+ di->text_debug_bias, state_machine_regs.address );
/* JRS: added for compliance with spec; is pointless due to
reset_state_machine below */
state_machine_regs.end_sequence = 1;
@@ -380,8 +380,8 @@
filename,
lookupDir( state_machine_regs.last_file,
fnidx2dir, dirnames ),
- di->text_bias + state_machine_regs.last_address,
- di->text_bias + state_machine_regs.address,
+ di->text_debug_bias + state_machine_regs.last_address,
+ di->text_debug_bias + state_machine_regs.address,
state_machine_regs.last_line, 0
);
}
@@ -724,7 +724,7 @@
if (0) VG_(printf)("smr.a += %#x\n", adv );
adv = (op_code % info.li_line_range) + info.li_line_base;
if (0) VG_(printf)("1002: di->o %#lx, smr.a %#lx\n",
- di->text_bias, state_machine_regs.address );
+ di->text_debug_bias, state_machine_regs.address );
state_machine_regs.line += adv;
if (di->ddump_line)
@@ -747,8 +747,8 @@
filename,
lookupDir( state_machine_regs.last_file,
&fnidx2dir, &dirnames ),
- di->text_bias + state_machine_regs.last_address,
- di->text_bias + state_machine_regs.address,
+ di->text_debug_bias + state_machine_regs.last_address,
+ di->text_debug_bias + state_machine_regs.address,
state_machine_regs.last_line,
0
);
@@ -771,7 +771,7 @@
case DW_LNS_copy:
if (0) VG_(printf)("1002: di->o %#lx, smr.a %#lx\n",
- di->text_bias, state_machine_regs.address );
+ di->text_debug_bias, state_machine_regs.address );
if (state_machine_regs.is_stmt) {
/* only add a statement if there was a previous boundary */
if (state_machine_regs.last_address) {
@@ -786,8 +786,8 @@
filename,
lookupDir( state_machine_regs.last_file,
&fnidx2dir, &dirnames ),
- di->text_bias + state_machine_regs.last_address,
- di->text_bias + state_machine_regs.address,
+ di->text_debug_bias + state_machine_regs.last_address,
+ di->text_debug_bias + state_machine_regs.address,
state_machine_regs.last_line,
0
);
@@ -3629,7 +3629,7 @@
adi.encoding = the_CIEs[this_CIE].address_encoding;
adi.ehframe_image = ehframe_image;
adi.ehframe_avma = di->ehframe_avma;
- adi.text_bias = di->text_bias;
+ adi.text_bias = di->text_debug_bias;
show_CF_instructions( the_CIEs[this_CIE].instrs,
the_CIEs[this_CIE].ilen, &adi,
the_CIEs[this_CIE].code_a_f,
@@ -3676,7 +3676,7 @@
adi.encoding = the_CIEs[cie].address_encoding;
adi.ehframe_image = ehframe_image;
adi.ehframe_avma = di->ehframe_avma;
- adi.text_bias = di->text_bias;
+ adi.text_bias = di->text_debug_bias;
fde_initloc = read_encoded_Addr(&nbytes, &adi, data);
data += nbytes;
if (di->trace_cfi)
@@ -3685,7 +3685,7 @@
adi.encoding = the_CIEs[cie].address_encoding & 0xf;
adi.ehframe_image = ehframe_image;
adi.ehframe_avma = di->ehframe_avma;
- adi.text_bias = di->text_bias;
+ adi.text_bias = di->text_debug_bias;
/* WAS (incorrectly):
fde_arange = read_encoded_Addr(&nbytes, &adi, data);
@@ -3714,8 +3714,8 @@
(Addr)ciefde_len,
(Addr)(UWord)cie_pointer,
(Addr)look_for,
- ((Addr)fde_initloc) - di->text_bias,
- ((Addr)fde_initloc) - di->text_bias + fde_arange);
+ ((Addr)fde_initloc) - di->text_debug_bias,
+ ((Addr)fde_initloc) - di->text_debug_bias + fde_arange);
if (the_CIEs[cie].saw_z_augmentation) {
UInt length = read_leb128( data, &nbytes, 0);
@@ -3747,7 +3747,7 @@
adi.encoding = the_CIEs[cie].address_encoding;
adi.ehframe_image = ehframe_image;
adi.ehframe_avma = di->ehframe_avma;
- adi.text_bias = di->text_bias;
+ adi.text_bias = di->text_debug_bias;
if (di->trace_cfi)
show_CF_instructions( fde_instrs, fde_ilen, &adi,
Modified: trunk/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf3.c 2009-03-08 19:18:21 UTC (rev 9328)
+++ trunk/coregrind/m_debuginfo/readdwarf3.c 2009-03-09 09:19:03 UTC (rev 9329)
@@ -474,97 +474,8 @@
it more logically belongs. */
-/* "Comment_Regarding_DWARF3_Text_Biasing" (is referred to elsewhere)
- -----------------------------------------------------------------
- apply_kludgey_text_bias() is our mechanism for biasing text
- addresses found in DWARF3 .debug_info, .debug_ranges, .debug_loc
- sections. This is a nasty and unprincipled hack.
-
- Biasing the text svmas, so as to obtain text avmas, should be
- straightforward, right? We just add on di->text_bias, as
- carefully computed by readelf.c.
-
- That works OK most of the time. But in the following case it fails:
- 1. The object is made in the usual way (gcc -g, etc)
- 2. The DWARF3 stuff removed from it and parked in a .debuginfo object
- 3. The remaining (base) object is then prelinked.
-
- Prelinking changes the text svmas throughout an object by some
- constant amount, including the DWARF3 stuff. So if the DWARF3
- stuff remains attached to the original object, then there is no
- problem. However, if the DWARF3 stuff is detached, and the
- remaining object is prelinked and the debuginfo object isn't, then
- we have a problem: the text bias computed for the main object
- isn't correct for the debuginfo object.
-
- So the following kludged is used to bias text svmas.
-
- 1. First, try with the text bias computed for the main object. If
- that gives an avma inside the area in which the text segment is
- known to have been mapped, then all well and good.
-
- 2. If not, try using the avma of the text mapped area as a bias.
- Again, if that works out, fine. This is the heart of the
- kludge. It implicitly treats the svma-s to be biased as if
- they had been prelinked to zero.
-
- 3. If even that doesn't work, just return the avma unchanged.
-
- For each object/object-pair, we count the number of times each
- case occurs. We flag an error (which the user gets to see) if (3)
- ever occurs, or if a mixture of (1) and (2) occurs. That should
- at least catch the most obvious snafus.
-
- Caveats: the main remaining worry is whether this problem somehow
- also affects the data-biasing done for case DW_OP_addr in
- ML_(evaluate_Dwarf3_Expr) in d3basics.c. This is currently
- unknown.
-
- Possible sources of info: canonical description seems to be:
-
- http://people.redhat.com/jakub/prelink.pdf
-
- See para at line 337 starting "DWARF 2 debugging information ..."
-
- This thread looks like the gdb people hitting the same issue:
-
- http://sourceware.org/ml/gdb-patches/2007-01/msg00278.html
-*/
-typedef
- struct {
- /* FIXED */
- Addr rx_map_avma;
- SizeT rx_map_size;
- PtrdiffT text_bias;
- /* VARIABLE -- count stats */
- UWord n_straightforward_biasings;
- UWord n_kludgey_biasings;
- UWord n_failed_biasings;
- }
- KludgeyTextBiaser;
-
-static Addr apply_kludgey_text_bias ( KludgeyTextBiaser* ktb,
- Addr allegedly_text_svma ) {
- Addr res;
- res = allegedly_text_svma + ktb->text_bias;
- if (res >= ktb->rx_map_avma
- && res < ktb->rx_map_avma + ktb->rx_map_size) {
- ktb->n_straightforward_biasings++;
- return res;
- }
- res = allegedly_text_svma + ktb->rx_map_avma;
- if (res >= ktb->rx_map_avma
- && res < ktb->rx_map_avma + ktb->rx_map_size) {
- ktb->n_kludgey_biasings++;
- return res;
- }
- ktb->n_failed_biasings++;
- return allegedly_text_svma; /* this svma is a luzer */
-}
-
-
-/* Apply a text bias to a GX. Kludgily :-( */
-static void bias_GX ( /*MOD*/GExpr* gx, KludgeyTextBiaser* ktb )
+/* Apply a text bias to a GX. */
+static void bias_GX ( /*MOD*/GExpr* gx, struct _DebugInfo* di )
{
UShort nbytes;
Addr* pA;
@@ -582,11 +493,11 @@
vg_assert(uc == 0);
/* t-bias aMin */
pA = (Addr*)p;
- *pA = apply_kludgey_text_bias( ktb, *pA );
+ *pA += di->text_debug_bias;
p += sizeof(Addr);
/* t-bias aMax */
pA = (Addr*)p;
- *pA = apply_kludgey_text_bias( ktb, *pA );
+ *pA += di->text_debug_bias;
p += sizeof(Addr);
/* nbytes, and actual expression */
nbytes = * (UShort*)p; p += sizeof(UShort);
@@ -3206,8 +3117,6 @@
Word i, j, n;
Bool td3 = di->trace_symtab;
XArray* /* of TempVar* */ dioff_lookup_tab;
- Bool text_biasing_borked;
- KludgeyTextBiaser ktb;
#if 0
/* This doesn't work properly because it assumes all entries are
packed end to end, with no holes. But that doesn't always
@@ -3628,19 +3537,14 @@
vg_assert(!di->admin_tyents);
di->admin_tyents = tyents_to_keep;
- /* Bias all the location expressions. See
- "Comment_Regarding_DWARF3_Text_Biasing" above. */
+ /* Bias all the location expressions. */
TRACE_D3("\n");
TRACE_D3("------ Biasing the location expressions ------\n" );
- VG_(memset)( &ktb, 0, sizeof(ktb ));
- ktb.rx_map_avma = di->rx_map_avma;
- ktb.rx_map_size = di->rx_map_size;
- ktb.text_bias = di->text_bias;
n = VG_(sizeXA)( gexprs );
for (i = 0; i < n; i++) {
gexpr = *(GExpr**)VG_(indexXA)( gexprs, i );
- bias_GX( gexpr, &ktb );
+ bias_GX( gexpr, di );
}
TRACE_D3("\n");
@@ -3830,8 +3734,8 @@
/* Apply text biasing, for non-global variables. */
if (varp->level > 0) {
- pcMin = apply_kludgey_text_bias( &ktb, pcMin );
- pcMax = apply_kludgey_text_bias( &ktb, pcMax );
+ pcMin += di->text_debug_bias;
+ pcMax += di->text_debug_bias;
}
if (i > 0 && (i%2) == 0)
@@ -3852,27 +3756,6 @@
/* and move on to the next var */
}
- /* For the text biasing to work out, we expect that:
- - there were no failures, and
- - either all were done straightforwardly, or all kludgily,
- but not with a mixture
- */
- text_biasing_borked
- = ktb.n_failed_biasings > 0
- || (ktb.n_straightforward_biasings > 0 && ktb.n_kludgey_biasings > 0);
-
- if (td3 || text_biasing_borked) {
- VG_(printf)("TEXT SVMA BIASING STATISTICS:\n");
- VG_(printf)(" straightforward biasings: %lu\n",
- ktb.n_straightforward_biasings );
- VG_(printf)(" kludgey biasings: %lu\n",
- ktb.n_kludgey_biasings );
- VG_(printf)(" failed biasings: %lu\n\n",
- ktb.n_failed_biasings );
- }
- if (text_biasing_borked)
- barf("couldn't make sense of DWARF3 text-svma biasing; details above");
-
/* Now free all the TempVars */
n = VG_(sizeXA)( tempvars );
for (i = 0; i < n; i++) {
Modified: trunk/coregrind/m_debuginfo/readelf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readelf.c 2009-03-08 19:18:21 UTC (rev 9328)
+++ trunk/coregrind/m_debuginfo/readelf.c 2009-03-09 09:19:03 UTC (rev 9329)
@@ -1352,6 +1352,8 @@
di->text_avma = svma + rx_bias;
di->text_size = size;
di->text_bias = rx_bias;
+ di->text_debug_svma = svma;
+ di->text_debug_bias = rx_bias;
TRACE_SYMTAB("acquiring .text svma = %#lx .. %#lx\n",
di->text_svma,
di->text_svma + di->text_size - 1);
@@ -1372,6 +1374,8 @@
di->data_avma = svma + rw_bias;
di->data_size = size;
di->data_bias = rw_bias;
+ di->data_debug_svma = svma;
+ di->data_debug_bias = rw_bias;
TRACE_SYMTAB("acquiring .data svma = %#lx .. %#lx\n",
di->data_svma,
di->data_svma + di->data_size - 1);
@@ -1392,6 +1396,8 @@
di->sdata_avma = svma + rw_bias;
di->sdata_size = size;
di->sdata_bias = rw_bias;
+ di->sdata_debug_svma = svma;
+ di->sdata_debug_bias = rw_bias;
TRACE_SYMTAB("acquiring .sdata svma = %#lx .. %#lx\n",
di->sdata_svma,
di->sdata_svma + di->sdata_size - 1);
@@ -1412,6 +1418,8 @@
di->rodata_avma = svma + rx_bias;
di->rodata_size = size;
di->rodata_bias = rx_bias;
+ di->rodata_debug_svma = svma;
+ di->rodata_debug_bias = rw_bias;
TRACE_SYMTAB("acquiring .rodata svma = %#lx .. %#lx\n",
di->rodata_svma,
di->rodata_svma + di->rodata_size - 1);
@@ -1432,6 +1440,8 @@
di->bss_avma = svma + rw_bias;
di->bss_size = size;
di->bss_bias = rw_bias;
+ di->bss_debug_svma = svma;
+ di->bss_debug_bias = rw_bias;
TRACE_SYMTAB("acquiring .bss svma = %#lx .. %#lx\n",
di->bss_svma,
di->bss_svma + di->bss_size - 1);
@@ -1451,6 +1461,8 @@
di->bss_avma = 0;
di->bss_size = 0;
di->bss_bias = 0;
+ di->bss_debug_svma = 0;
+ di->bss_debug_bias = 0;
if (!VG_(clo_xml)) {
VG_(message)(Vg_UserMsg, "Warning: the following file's .bss is "
"mapped r-x only - ignoring .bss syms");
@@ -1480,6 +1492,8 @@
di->sbss_avma = svma + rw_bias;
di->sbss_size = size;
di->sbss_bias = rw_bias;
+ di->sbss_debug_svma = svma;
+ di->sbss_debug_bias = rw_bias;
TRACE_SYMTAB("acquiring .sbss svma = %#lx .. %#lx\n",
di->sbss_svma,
di->sbss_svma + di->sbss_size - 1);
@@ -1748,6 +1762,14 @@
UWord shdr_dent_szB = ehdr_dimg->e_shentsize;
UChar* shdr_strtab_dimg = NULL;
+ /* SVMAs covered by rx and rw segments and corresponding bias. */
+ Addr rx_dsvma_base = 0;
+ Addr rx_dsvma_limit = 0;
+ PtrdiffT rx_dbias = 0;
+ Addr rw_dsvma_base = 0;
+ Addr rw_dsvma_limit = 0;
+ PtrdiffT rw_dbias = 0;
+
Bool need_symtab, need_stabs, need_dwarf2, need_dwarf1;
if (phdr_dnent == 0
@@ -1797,22 +1819,63 @@
= INDEX_BIS( (void*)(dimage + ehdr_dimg->e_phoff),
i, phdr_ent_szB );
if (phdr->p_type == PT_LOAD) {
- //offset_dimage = di->text_avma - phdr->p_vaddr;
- // FIXME: update di->text_bias at this point?
- // or can we assume the SVMAs in the debuginfo
- // file (hence, the biases) are the same as
- // established from the main file?
- break;
+ if (rx_dsvma_limit == 0
+ && phdr->p_offset >= di->rx_map_foff
+ && phdr->p_offset < di->rx_map_foff + di->rx_map_size
+ && phdr->p_offset + phdr->p_filesz <= di->rx_map_foff + di->rx_map_size) {
+ rx_dsvma_base = phdr->p_vaddr;
+ rx_dsvma_limit = phdr->p_vaddr + phdr->p_memsz;
+ rx_dbias = di->rx_map_avma - di->rx_map_foff + phdr->p_offset - phdr->p_vaddr;
+ }
+ else if (rw_dsvma_limit == 0
+ && phdr->p_offset >= di->rw_map_foff
+ && phdr->p_offset < di->rw_map_foff + di->rw_map_size
+ && phdr->p_offset + phdr->p_filesz <= di->rw_map_foff + di->rw_map_size) {
+ rw_dsvma_base = phdr->p_vaddr;
+ rw_dsvma_limit = phdr->p_vaddr + phdr->p_memsz;
+ rw_dbias = di->rw_map_avma - di->rw_map_foff + phdr->p_offset - phdr->p_vaddr;
+ }
}
}
- /* Same deal as previous FIND, except only do it for those
- sections for which we didn't find anything useful in
- the main file. */
-
/* Find all interesting sections */
for (i = 0; i < ehdr_dimg->e_shnum; i++) {
+ /* Find debug svma and bias information for sections
+ we found in the main file. */
+
+# define FIND(sec, seg) \
+ do { ElfXX_Shdr* shdr \
+ = INDEX_BIS( shdr_dimg, i, shdr_dent_szB ); \
+ if (di->sec##_present \
+ && 0 == VG_(strcmp)("." #sec, \
+ shdr_strtab_dimg + shdr->sh_name)) { \
+ vg_assert(di->sec##_size == shdr->sh_size); \
+ vg_assert(di->sec##_avma + shdr->sh_addr + seg##_dbias); \
+ di->sec##_debug_svma = shdr->sh_addr; \
+ di->sec##_debug_bias = seg##_dbias; \
+ TRACE_SYMTAB("acquiring ." #sec " debug svma = %#lx .. %#lx\n", \
+ di->sec##_debug_svma, \
+ di->sec##_debug_svma + di->sec##_size - 1); \
+ TRACE_SYMTAB("acquiring ." #sec " debug bias = %#lx\n", \
+ di->sec##_debug_bias); \
+ } \
+ } while (0);
+
+ /* SECTION SEGMENT */
+ FIND(text, rx)
+ FIND(data, rw)
+ FIND(sdata, rw)
+ FIND(rodata, rw)
+ FIND(bss, rw)
+ FIND(sbss, rw)
+
+# undef FIND
+
+ /* Same deal as previous FIND, except only do it for those
+ sections for which we didn't find anything useful in
+ the main file. */
+
# define FIND(condition, sec_name, sec_size, sec_img) \
do { ElfXX_Shdr* shdr \
= INDEX_BIS( shdr_dimg, i, shdr_dent_szB ); \
Modified: trunk/coregrind/m_debuginfo/readstabs.c
===================================================================
--- trunk/coregrind/m_debuginfo/readstabs.c 2009-03-08 19:18:21 UTC (rev 9328)
+++ trunk/coregrind/m_debuginfo/readstabs.c 2009-03-09 09:19:03 UTC (rev 9329)
@@ -336,7 +336,7 @@
line.first = True;
/* line ends at start of next function */
- addr = di->text_bias + st->n_value;
+ addr = di->text_debug_bias + st->n_value;
func.start = addr;
}
|
|
From: Bart V. A. <bar...@gm...> - 2009-03-09 08:27:14
|
On Sun, Mar 8, 2009 at 11:01 PM, Nicholas Nethercote <n.n...@gm...> wrote: > Here are the steps I used: > > autogen.sh > /path/to/scan-build configure --prefix=`pwd`/inst > /path/to/scan-build -o checker-results make > > This put the results in the directory checker-results (by default they > go to /tmp, which is odd). I would have attached the results to this > email, but they are 132MB, because the output is lots of pretty HTML > files. Can you upload this output to a publicly accessible web server ? I tried the above steps, but all I get is the following: Error in tempfile() using checker-results/2009-03-09-1/clang_output_XXXXXX: Parent directory (checker-results/2009-03-09-1/) does not exist at .../llvm/tools/clang/utils/ccc-analyzer line 171 Bart. |
|
From: Bart V. A. <bar...@gm...> - 2009-03-09 07:42:22
|
Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) started at 2009-03-09 02:00:01 EDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 405 tests, 37 stderr failures, 9 stdout failures, 0 post failures == exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) |
|
From: Tom H. <th...@cy...> - 2009-03-09 03:48:32
|
Nightly build on vauxhall ( x86_64, Fedora 10 ) started at 2009-03-09 03:20:03 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 485 tests, 0 stderr failures, 1 stdout failure, 0 post failures ==
drd/tests/pth_detached (stdout)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... done
Regression test results follow
== 485 tests, 0 stderr failures, 0 stdout failures, 0 post failures ==
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Mon Mar 9 03:34:15 2009
--- new.short Mon Mar 9 03:48:15 2009
***************
*** 4,6 ****
Building valgrind ... done
! Running regression tests ... done
--- 4,6 ----
Building valgrind ... done
! Running regression tests ... failed
***************
*** 8,10 ****
! == 485 tests, 0 stderr failures, 0 stdout failures, 0 post failures ==
--- 8,11 ----
! == 485 tests, 0 stderr failures, 1 stdout failure, 0 post failures ==
! drd/tests/pth_detached (stdout)
|
|
From: Tom H. <th...@cy...> - 2009-03-09 03:45:03
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2009-03-09 03:05:07 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 == 476 tests, 5 stderr failures, 0 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <th...@cy...> - 2009-03-09 03:32:20
|
Nightly build on mg ( x86_64, Fedora 9 ) started at 2009-03-09 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 == 482 tests, 4 stderr failures, 1 stdout failure, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) none/tests/linux/mremap2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 482 tests, 5 stderr failures, 1 stdout failure, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/hg05_race2 (stderr) none/tests/linux/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Mar 9 03:21:07 2009 --- new.short Mon Mar 9 03:32:11 2009 *************** *** 8,10 **** ! == 482 tests, 5 stderr failures, 1 stdout failure, 0 post failures == exp-ptrcheck/tests/ccc (stderr) --- 8,10 ---- ! == 482 tests, 4 stderr failures, 1 stdout failure, 0 post failures == exp-ptrcheck/tests/ccc (stderr) *************** *** 13,15 **** exp-ptrcheck/tests/pth_specific (stderr) - helgrind/tests/hg05_race2 (stderr) none/tests/linux/mremap2 (stdout) --- 13,14 ---- |