You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
(13) |
2
(16) |
3
(10) |
4
(5) |
5
(1) |
6
|
|
7
(4) |
8
(3) |
9
(1) |
10
(1) |
11
(1) |
12
(3) |
13
(2) |
|
14
(8) |
15
(4) |
16
(17) |
17
(6) |
18
(20) |
19
(12) |
20
(1) |
|
21
(3) |
22
(17) |
23
(10) |
24
(9) |
25
|
26
|
27
(4) |
|
28
(4) |
29
(2) |
30
|
31
(5) |
|
|
|
|
From: Jeremy F. <je...@go...> - 2003-12-16 08:16:47
|
On Mon, 2003-12-15 at 22:02, Robert Walsh wrote: > > I've updated all the standard tools, and they all seem to mostly work. > > Cachegrind is having trouble with dlclose(), which I haven't > > investigated yet. > > I'm seeing corecheck/tests/as_shm failing, too: > > *** as_shm.stdout.exp 2003-12-15 21:35:38.000000000 -0800 > --- as_shm.stdout.out 2003-12-15 21:49:44.000000000 -0800 > *************** > *** 1 **** > ! shmat 0: addr=0x81156000 > --- 1 ---- > ! shmat 0: addr=0x8101c000 Yeah, that address depends on how big your libc and other libraries are, so it isn't the greatest test. J |
|
From: Robert W. <rj...@du...> - 2003-12-16 06:02:25
|
> I've updated all the standard tools, and they all seem to mostly work.=20 > Cachegrind is having trouble with dlclose(), which I haven't > investigated yet. I'm seeing corecheck/tests/as_shm failing, too: *** as_shm.stdout.exp 2003-12-15 21:35:38.000000000 -0800 --- as_shm.stdout.out 2003-12-15 21:49:44.000000000 -0800 *************** *** 1 **** ! shmat 0: addr=3D0x81156000 --- 1 ---- ! shmat 0: addr=3D0x8101c000 Regards, Robert. --=20 Robert Walsh Amalgamated Durables, Inc. - "We don't make the things you buy." Email: rj...@du... |
|
From: Jeremy F. <je...@go...> - 2003-12-16 02:24:01
|
CVS commit by fitzhardinge: Remove coregrind/vg_valgrinq_dummy.c R vg_valgrinq_dummy.c 1.5 |
|
From: John C. <joh...@ta...> - 2003-12-16 02:22:03
|
On Mon, 15 Dec 2003, Jeremy Fitzhardinge wrote: > * It relies on the dynamic linker, so it doesn't work for static > binaries Ooh! I love you! This means we will be able to use it on eCos synth target. (If you don't know eCos is an RTOS for embedded computers, it also has a version "synthetic" that allows you to develop, test and debug your embedded Application on your linux desktop.) Thus, by proxy, you have given the power of Valgrind to the many developers for many kinds of Arcane CPU's. Yahoooooooooooooooooooooo! John Carter Phone : (64)(3) 358 6639 Tait Electronics Fax : (64)(3) 359 4632 PO Box 1645 Christchurch Email : joh...@ta... New Zealand A Million Monkeys can inflict worse things than just Shakespeare on your system. |
|
From: Jeremy F. <je...@go...> - 2003-12-16 02:16:37
|
CVS commit by fitzhardinge: Back out unintended change M +2 -2 autogen.sh 1.3 --- valgrind/autogen.sh #1.2:1.3 @@ -12,6 +12,6 @@ } -run aclocal-1.6 +run aclocal run autoheader -run automake-1.6 -a +run automake -a run autoconf |
|
From: Jeremy F. <je...@go...> - 2003-12-16 02:15:11
|
CVS commit by fitzhardinge: Add and delete all the files which need adding and deleting. A corecheck/tests/as_mmap.c 1.1 [no copyright] A corecheck/tests/as_mmap.stderr.exp 1.1 A corecheck/tests/as_mmap.vgtest 1.1 A corecheck/tests/as_shm.c 1.1 [POSSIBLY UNSAFE: printf] [no copyright] A corecheck/tests/as_shm.stderr.exp 1.1 A corecheck/tests/as_shm.stdout.exp 1.1 A corecheck/tests/as_shm.vgtest 1.1 A coregrind/gen_toolint.pl 1.1 A coregrind/stage1.c 1.1 [POSSIBLY UNSAFE: printf] [no copyright] A coregrind/stage2.c 1.1 [POSSIBLY UNSAFE: printf] [no copyright] A coregrind/toolfuncs.def 1.1 A coregrind/ume.c 1.1 [POSSIBLY UNSAFE: printf,scanf] [no copyright] A coregrind/ume.h 1.1 [no copyright] A coregrind/ume_arch.h 1.1 [no copyright] A coregrind/vg_skiplist.c 1.1 [no copyright] A coregrind/x86/Makefile.am 1.1 A coregrind/x86/stage2.lds 1.1 A coregrind/x86/ume_archdefs.c 1.1 [no copyright] A coregrind/x86/ume_archdefs.h 1.1 [no copyright] A coregrind/x86/ume_entry.S 1.1 A coregrind/x86/ume_go.c 1.1 [no copyright] A include/vg_skin.h.base 1.1 R coregrind/valgrind.in 1.41 R include/vg_skin.h 1.102 |
|
From: Jeremy F. <je...@go...> - 2003-12-16 02:05:54
|
CVS commit by fitzhardinge: This jumbo-checkin is the Full Virtualization checkin. This eliminates Valgrind's dependency on the dynamic linker for getting started, and instead takes things into its own hands. This checkin doesn't add much in the way of new functionality, but it is the basis for all future work on Valgrind. It allows us much more flexibility in implementation, and well as increasing the reliability of Valgrind by protecting it more from its clients. This patch requires some changes to tools to update them to the changes in the tool API, but they are straightforward. See the posting "Heads up: Full Virtualization" on valgrind-developers for a more complete description of this change and its effects on you. M +7 -3 Makefile.am 1.60 M +2 -2 autogen.sh 1.2 M +1 -1 configure.in 1.102 M +2 -0 valgrind.spec.in 1.11 M +12 -3 addrcheck/Makefile.am 1.47 M +33 -31 addrcheck/ac_main.c 1.56 M +6 -0 cachegrind/Makefile.am 1.41 M +2 -2 cachegrind/cg_main.c 1.58 M +6 -0 corecheck/Makefile.am 1.41 M +2 -2 corecheck/cc_main.c 1.18 M +8 -3 corecheck/tests/Makefile.am 1.18 M +92 -48 coregrind/Makefile.am 1.61 M +2 -1 coregrind/valgrind.vs 1.3 M +26 -0 coregrind/vg_constants.h 1.13 M +2 -87 coregrind/vg_default.c 1.19 M +18 -1 coregrind/vg_dispatch.S 1.12 M +92 -25 coregrind/vg_from_ucode.c 1.67 M +9 -10 coregrind/vg_helpers.S 1.25 M +203 -135 coregrind/vg_include.h 1.158 M +54 -122 coregrind/vg_intercept.c 1.26 M +53 -43 coregrind/vg_libpthread.c 1.141 M +194 -18 coregrind/vg_libpthread.vs 1.7 M +235 -479 coregrind/vg_main.c 1.128 M +84 -15 coregrind/vg_malloc2.c 1.16 M +685 -146 coregrind/vg_memory.c 1.45 M +143 -13 coregrind/vg_mylibc.c 1.60 M +29 -134 coregrind/vg_needs.c 1.13 M +41 -5 coregrind/vg_procselfmaps.c 1.10 M +3 -4 coregrind/vg_proxylwp.c 1.9 M +176 -170 coregrind/vg_replace_malloc.c 1.16 M +88 -15 coregrind/vg_scheduler.c 1.133 M +124 -9 coregrind/vg_signals.c 1.53 M +1 -1 coregrind/vg_stabs.c 1.2 M +0 -130 coregrind/vg_startup.S 1.20 M +369 -150 coregrind/vg_symtab2.c 1.65 M +7 -1 coregrind/vg_symtab2.h 1.4 M +326 -87 coregrind/vg_syscalls.c 1.67 M +2 -1 coregrind/vg_to_ucode.c 1.115 M +41 -30 coregrind/vg_translate.c 1.63 M +14 -0 coregrind/vg_transtab.c 1.26 M +4 -3 example/ex_main.c 1.14 M +12 -1 helgrind/Makefile.am 1.44 M +25 -23 helgrind/hg_main.c 1.69 M +12 -1 include/Makefile.am 1.5 M +7 -0 include/vg_constants_skin.h 1.6 M +5 -0 include/vg_kerneliface.h 1.9 M +667 -243 include/vg_skin.h 1.102 M +6 -0 lackey/Makefile.am 1.42 M +3 -2 lackey/lk_main.c 1.22 M +13 -4 memcheck/Makefile.am 1.47 M +1 -4 memcheck/mac_leakcheck.c 1.12 M +22 -2 memcheck/mac_replace_strmem.c 1.8 M +4 -0 memcheck/mc_clientreqs.c 1.17 M +3 -3 memcheck/mc_from_ucode.c 1.13 M +39 -39 memcheck/mc_main.c 1.43 M +4 -1 memcheck/memcheck.h 1.16 M +1 -1 memcheck/tests/badjump.stderr.exp 1.7 M +1 -1 memcheck/tests/fprw.vgtest 1.4 M +0 -1 memcheck/tests/nanoleak.supp 1.2 M +1 -0 memcheck/tests/sigaltstack.c 1.6 M +0 -3 memcheck/tests/sigaltstack.stderr.exp 1.8 M +4 -7 memcheck/tests/threadederrno.c 1.2 [POSSIBLY UNSAFE: printf] M +0 -3 memcheck/tests/threadederrno.stderr.exp 1.2 M +3 -3 memcheck/tests/threadederrno.stdout.exp 1.2 M +3 -0 memcheck/tests/zeropage.stderr.exp 1.2 M +6 -1 none/Makefile.am 1.42 M +20 -13 none/nl_main.c 1.17 M +1 -1 none/tests/Makefile.am 1.16 M +5 -1 none/tests/smc1.c 1.3 M +5 -5 none/tests/smc1.stdout.exp 1.3 M +4 -0 tests/filter_stderr_basic 1.12 M +1 -3 tests/vg_regtest.in 1.17 |
|
From: Jeremy F. <je...@go...> - 2003-12-16 02:04:13
|
Hi all,
You may have seen some references to "full virtualization" (or FV). This
is the work I've been doing to restructure the way that Valgrind relates
to its client.
Currently, Valgrind relies on using LD_PRELOAD to hook itself into the
client early in its execution. This has several problems:
* It doesn't get in early enough, so some unknown amount of code
has run before Valgrind starts
* It relies on the dynamic linker, so it doesn't work for static
binaries
* Valgrind and the client share a dynamic linker, which means that
Valgrind can't use any standard libraries
* Client state and Valgrind state are intermingled in memory, so a
stray client memory write can cause Valgrind to crash or
misbehave
The FV changes remove all these limitations. Valgrind no longer relies
on the dynamic linker - it actually loads the client's ELF executable
itself, and starts it from the very first instruction under Valgrind
control.
It also means that there's a much stricter barrier between Valgrind and
the client, akin to the barrier between the kernel and user-space.
Valgrind's use of the dynamic linker, libraries, etc is completely
independent of the client's. In addition, the client address space is
self-contained, with Valgrind's memory near the top of the address
space. Valgrind takes advantage of that by generating bounds checks on
client memory accesses, so they are prohibited from going outside the
client address space (this is done with x86 segmentation, and so adds
little or no extra overhead).
All the client's address-space manipulation syscalls (mmap, shmat, brk,
etc) are vetted to make sure that they are constrained within the client
address space. Some special ioctls which can create mappings (like the
DRI ioctls) can create mappings outside the client address space, which
can cause problems (at the very least it will cause the client to take
an exception with --pointercheck=yes).
For users, there shouldn't be much in the way visible changes. Apart
from static executables working, the main visible difference is in the
valgrind command, which is now an executable rather than a script. It
supports all the same options, as well as the VALGRIND_OPTS environment
variable.
The changes are bigger for Valgrind developers. Over time, we can start
dissolving vg_mylibc.c, and use standard library functions instead. We
can also consider using new libraries and languages. There are now
fewer restrictions on programming within Valgrind; the main one is that
direct use of mmap/munmap/mprotect() is discouraged, because we need
still need to be careful about where things are placed in the address
space, and track where things are. VG_(mmap) does its own memory
placement algorithm so that Valgrind's mmaps don't accidentally appear
in the client address space. There are also a few extra VKI_MAP_* flags
to control various Valgrind-specific mmap behaviours.
For tool (aka skin) authors, there have been a few changes in the tool
interface. Within the core, the tool interface functions are all
defined in coregrind/toolfuncs.def, which is used to generate vg_skin.h
and other files. This cuts down on a lot of tedious typing whenever a
new tool interface is added or changed; the cost is that perl is now
required for building (as opposed to just running the regression tests).
The tool interface itself has been changed a bit:
The VG_DETERMINE_INTERFACE_VERSION macro now takes two
arguments: a pointer to the tools pre_clo_init function (which
need not have any particular name, and may be static; and the
tools requirements for shadow memory, expressed as a floating
point number which is the shadow:client memory ratio (so
addrcheck uses 1/8th the client memory in shadow memory, since
it uses one bit per byte; memcheck uses 9/8ths the client
memory, because it has 8 V bits and 1 A bit per byte).
All the SK_(track_*) functions have been renamed to
SK_(init_*). This is because all tool entrypoints can be
explicitly set with a corresponding SK_(init_*) function, rather
than relying on functions with special names (though the special
names still work). The intention of this is to move away from
special filenames, since it can be a bit fragile if the names
change (if you rename the function in the core without updating
the tool, then the tool may silently fail to work, rather than
alerting you to the rename at compile time).
There's a special area of memory for shadow data. As I
mentioned above, the tool's init now has to tell the core how
much shadow memory it wants to use. There are now two ways of
using shadow memory:
1. You can allocate page-sized chunks of the shadow memory
with VG_(shadow_alloc)(size). This just returns a
pointer to the next piece of free shadow memory. If it
runs out (ie, you ask for more shadow memory than you
said you would), it panics.
2. You can also treat all shadow memory as a big array.
This array is incrementally initialized as you touch
it. The first time you touch a particular shadow page,
it calls your SK_(init_shadow_page) function to
initialize that page. This is basically called from a
signal handler, so you have to be careful to keep this
function as simple as possible.
Shadow memory is from VG_(shadow_base)() to VG_(shadow_end)().
The tools are running in a very different context from the
client code. This means that if you want to override some
client functions, you can't just declare them and expect your
code to be run by the client. You need to create a separate .so
file for your tool, called vgpreload_TOOLNAME.so. If the core
sees this when it loads your tool, it also sets the client
environment up to LD_PRELOAD this into the client address
space. If you want to replace the malloc calls, you can also
link coregrind/vg_replace_malloc.o into your vgpreload_*.so
file.
Similarly, if you want to allocate something in the client
address space, you need to use VG_(cli_malloc/free). If you
pass a pointer to the client which is in the Valgrind address
space, it won't be able to dereference it. Similarly, you
cannot call code which is in the Valgrind core or tool from the
client - you must arrange for the code to be in the client
address space.
You can look at the changes to memcheck and addrcheck to see all of
these being put to use (well, not shadow memory as a virtual array). In
general it only takes a few minutes to update a tool to the new
interface.
I've updated all the standard tools, and they all seem to mostly work.
Cachegrind is having trouble with dlclose(), which I haven't
investigated yet.
Oh, and the --in-place=<path> command-line option has gone. Its
replacement is the VALGRINDLIB environment variable. The build process
creates a $topdir/.in_place directory which is populated with symlinks
to the newly built core and tools, so you can use 'VALGRINDLIB=.in_place
coregrind/valgrind ...' to run it in place.
I've been testing this pretty solidly for a while, so I think it should
work OK. No doubt you'll find some problems, but that's why I'm
checking it in (and why we did the 2.1.0 release *before* checking it in
- so that there's something semi-stable for people to play with).
J
|
|
From: Jeremy F. <je...@go...> - 2003-12-16 01:49:27
|
CVS commit by fitzhardinge:
Change the --track-fds code to use VG_AR_CORE rather than
VG_(malloc)/(strdup), which puts things into VG_AR_SKIN.
M +9 -2 vg_mylibc.c 1.59
M +7 -7 vg_syscalls.c 1.66
--- valgrind/coregrind/vg_mylibc.c #1.58:1.59
@@ -969,6 +969,13 @@ __inline__ Char* VG_(arena_strdup) ( Are
{
Int i;
- Int len = VG_(strlen)(s) + 1;
- Char* res = VG_(arena_malloc) (aid, len);
+ Int len;
+ Char* res;
+
+ if (s == NULL)
+ return NULL;
+
+ len = VG_(strlen)(s) + 1;
+ res = VG_(arena_malloc) (aid, len);
+
for (i = 0; i < len; i++)
res[i] = s[i];
--- valgrind/coregrind/vg_syscalls.c #1.65:1.66
@@ -292,5 +292,5 @@ Char *resolve_fname(Int fd)
return NULL;
- return ((buf[0] == '/') ? VG_(strdup)(buf) : NULL);
+ return ((buf[0] == '/') ? VG_(arena_strdup)(VG_AR_CORE, buf) : NULL);
}
@@ -312,6 +312,6 @@ void record_fd_close(Int tid, Int fd)
i->next->prev = i->prev;
if(i->pathname)
- VG_(free) (i->pathname);
- VG_(free) (i);
+ VG_(arena_free) (VG_AR_CORE, i->pathname);
+ VG_(arena_free) (VG_AR_CORE, i);
fd_count--;
break;
@@ -340,5 +340,5 @@ void record_fd_open(Int tid, Int fd, cha
while (i) {
if (i->fd == fd) {
- if (i->pathname) VG_(free)(i->pathname);
+ if (i->pathname) VG_(arena_free)(VG_AR_CORE, i->pathname);
break;
}
@@ -348,5 +348,5 @@ void record_fd_open(Int tid, Int fd, cha
/* Not already one: allocate an OpenFd */
if (i == NULL) {
- i = VG_(malloc)(sizeof(OpenFd));
+ i = VG_(arena_malloc)(VG_AR_CORE, sizeof(OpenFd));
i->prev = NULL;
@@ -3351,5 +3351,5 @@ POST(open)
} else {
if(VG_(clo_track_fds))
- record_fd_open(tid, res, VG_(strdup)((Char*)arg1));
+ record_fd_open(tid, res, VG_(arena_strdup)(VG_AR_CORE, (Char*)arg1));
}
MAYBE_PRINTF("%d\n",res);
@@ -3395,5 +3395,5 @@ POST(creat)
} else {
if(VG_(clo_track_fds))
- record_fd_open(tid, res, VG_(strdup)((Char*)arg1));
+ record_fd_open(tid, res, VG_(arena_strdup)(VG_AR_CORE, (Char*)arg1));
}
MAYBE_PRINTF("%d\n",res);
|
|
From: Jeremy F. <je...@go...> - 2003-12-15 23:32:51
|
CVS commit by fitzhardinge:
Make symbol prefix matching table driver, and be a bit more careful
about overrunning the ends of names.
M +34 -15 vg_symtab2.c 1.64
--- valgrind/coregrind/vg_symtab2.c #1.63:1.64
@@ -408,28 +408,47 @@ static RiSym *prefersym(RiSym *a, RiSym
{
Int pfx;
+ Int lena, lenb;
+ Int i;
+ static const struct {
+ const Char *prefix;
+ Int len;
+ } prefixes[] = {
+#define PFX(x) { x, sizeof(x)-1 }
+ /* order from longest to shortest */
+ PFX("__GI___libc_"),
+ PFX("__GI___"),
+ PFX("__libc_"),
+ PFX("__GI__"),
+ PFX("__GI_"),
+ PFX("__"),
+#undef PFX
+ };
+
+ lena = VG_(strlen)(a->name);
+ lenb = VG_(strlen)(b->name);
/* rearrange so that a is the long one */
- if (VG_(strlen)(a->name) < VG_(strlen)(b->name)) {
+ if (lena < lenb) {
RiSym *t;
+ Int lt;
t = a;
a = b;
b = t;
+
+ lt = lena;
+ lena = lenb;
+ lenb = lt;
}
- pfx = 0;
+ for(i = pfx = 0; i < sizeof(prefixes)/sizeof(*prefixes); i++) {
+ Int pfxlen = prefixes[i].len;
- if (VG_(memcmp)(a->name, "__GI___libc_", 12) == 0)
- pfx = 12;
- else if (VG_(memcmp)(a->name, "__libc_", 7) == 0)
- pfx = 7;
- else if (VG_(memcmp)(a->name, "__GI___", 7) == 0)
- pfx = 7;
- else if (VG_(memcmp)(a->name, "__GI__", 6) == 0)
- pfx = 6;
- else if (VG_(memcmp)(a->name, "__GI_", 5) == 0)
- pfx = 5;
- else if (VG_(memcmp)(a->name, "__", 2) == 0)
- pfx = 2;
+ if (pfxlen < lena &&
+ VG_(memcmp)(a->name, prefixes[i].prefix, pfxlen) == 0) {
+ pfx = pfxlen;
+ break;
+ }
+ }
if (pfx != 0 && VG_(strcmp)(a->name + pfx, b->name) == 0)
|
|
From: Julian S. <js...@ac...> - 2003-12-15 21:08:46
|
CVS commit by jseward: Update list of distros on which 2.1.0 is known to work. M +5 -0 downloads.html 1.8 --- devel-home/valgrind/downloads.html #1.7:1.8 @@ -41,4 +41,9 @@ HREF="http://developer.kde.org/~sewardj/docs-2.1.0/NEWS.txt">NEWS</a> file in the distro for more details. +<p> +2.1.0 is known to compile and work on: SuSE 9, SuSE 8.2, RedHat 8, +RedHat 7.3, Debian Sid. Probably works on RedHat 9, although we +haven't had explicit confirmation of that yet. + <h3>Interesting Variants</h3> |
|
From: Dirk M. <mu...@kd...> - 2003-12-15 15:24:12
|
CVS commit by mueller:
patch by Jim Meyering: redirect error output to stderr, and exit with nonzero
exit code upon failure.
M +18 -18 valgrind.in 1.41
--- valgrind/coregrind/valgrind.in #1.40:1.41
@@ -80,10 +80,10 @@
tool_so="vgskin_${tool}.so"
if [ ! -r "$tooldir/$tool_so" ] ; then
- echo
- echo "Tool error:"
- echo " The shared library \`$tool_so' for the chosen"
- echo " tool \`$tool' could not be found in"
- echo " $tooldir"
- echo
+ echo >&2
+ echo "Tool error:" >&2
+ echo " The shared library \`$tool_so' for the chosen" >&2
+ echo " tool \`$tool' could not be found in" >&2
+ echo " $tooldir" >&2
+ echo >&2
exit 1
fi
@@ -115,6 +115,6 @@
if [ z$which_prog = z ]; then
- echo "$0: '$1' not found in \$PATH, aborting."
- exit
+ echo "$0: '$1' not found in \$PATH, aborting." >&2
+ exit 1
fi
@@ -123,17 +123,17 @@
# Ensure the program isn't statically linked.
*"statically linked"*)
- echo "\`$which_prog' is statically linked"
- echo "Valgrind only works on dynamically linked executables; your"
- echo "program must rely on at least one shared object for Valgrind"
- echo "to work with it. Read FAQ #5 for more information."
+ echo "\`$which_prog' is statically linked" >&2
+ echo "Valgrind only works on dynamically linked executables; your" >&2
+ echo "program must rely on at least one shared object for Valgrind" >&2
+ echo "to work with it. Read FAQ #5 for more information." >&2
exit 1 ;;
# Ensure that there are no setuid or gid flags
*:\ set?id\ ELF*)
- echo "\`$which_prog' is suid/sgid."
- echo "Valgrind can't handle these executables, as it"
- echo "requires the LD_PRELOAD feature in order to work."
- echo ""
- echo "Remove those flags and try again."
- echo ""
+ echo "\`$which_prog' is suid/sgid." >&2
+ echo "Valgrind can't handle these executables, as it" >&2
+ echo "requires the LD_PRELOAD feature in order to work." >&2
+ echo "" >&2
+ echo "Remove those flags and try again." >&2
+ echo "" >&2
exit 1
;;
|
|
From: Jeremy F. <je...@go...> - 2003-12-15 09:01:02
|
CVS commit by fitzhardinge:
When merging multiple symbols with the same address, rather than always
choosing the longest symbol, choose the longest ignoring any of the libc
junk prefixes like __libc_, __, __GI_*, etc. This makes the symbol
presented to the user in messages and used in *.supp files more consistent
and comprehensible.
M +9 -9 glibc-2.1.supp 1.10
M +14 -14 glibc-2.2.supp 1.21
M +31 -8 glibc-2.3.supp 1.8
M +7 -7 corecheck/tests/fdleak_cmsg.stderr.exp 1.3
M +1 -1 corecheck/tests/fdleak_creat.stderr.exp 1.3
M +2 -2 corecheck/tests/fdleak_dup.stderr.exp 1.3
M +3 -3 corecheck/tests/fdleak_dup2.stderr.exp 1.3
M +2 -2 corecheck/tests/fdleak_fcntl.stderr.exp 1.3
M +3 -3 corecheck/tests/fdleak_ipv4.stderr.exp 1.3
M +1 -1 corecheck/tests/fdleak_open.stderr.exp 1.3
M +2 -2 corecheck/tests/fdleak_pipe.stderr.exp 1.3
M +2 -2 corecheck/tests/fdleak_socketpair.stderr.exp 1.3
M +41 -6 coregrind/vg_symtab2.c 1.63
M +2 -2 helgrind/tests/deadlock.stderr.exp 1.5
M +1 -1 memcheck/tests/fwrite.stderr.exp 1.9
M +1 -1 memcheck/tests/weirdioctl.stderr.exp 1.8
M +3 -3 memcheck/tests/writev.stderr.exp 1.5
--- valgrind/glibc-2.1.supp #1.9:1.10
@@ -38,15 +38,15 @@
{
- __pthread_mutex_unlock/__register_frame_info_bases
+ pthread_mutex_unlock/__register_frame_info_bases
core:PThread
- fun:__pthread_mutex_unlock
+ fun:pthread_mutex_unlock
fun:__register_frame_info_bases
}
{
- socketcall.connect(serv_addr)/__libc_connect/*(Param)
+ socketcall.connect(serv_addr)/connect/*(Param)
Addrcheck,Memcheck:Param
socketcall.connect(serv_addr)
- fun:__libc_connect
+ fun:connect
fun:*
}
@@ -69,8 +69,8 @@
{
- llseek(result)/__libc_lseek64/_IO_file_seek(Param)
+ llseek(result)/lseek64/_IO_file_seek(Param)
Addrcheck,Memcheck:Param
llseek(result)
- fun:__libc_lseek64
+ fun:lseek64
fun:_IO_file_seek
}
@@ -165,5 +165,5 @@
{
- socketcall.connect(serv_addr)/__libc_connect/*(Param)
+ socketcall.connect(serv_addr)/connect/*(Param)
Addrcheck,Memcheck:Param
socketcall.connect(serv_addr)
@@ -175,9 +175,9 @@
## For a leak in Valgrind's own libpthread.so :(
{
- my_malloc/get_or_allocate_specifics_ptr/__pthread_key_create(Leak)
+ my_malloc/get_or_allocate_specifics_ptr/pthread_key_create(Leak)
Memcheck:Leak
fun:my_malloc
fun:get_or_allocate_specifics_ptr
- fun:__pthread_key_create
+ fun:pthread_key_create
}
--- valgrind/glibc-2.2.supp #1.20:1.21
@@ -174,23 +174,23 @@
# glibc 'knows' that destroying a locked mutex will unlock it
{
- pthread_error/__pthread_mutex_destroy/__closedir
+ pthread_error/pthread_mutex_destroy/__closedir
core:PThread
fun:pthread_error
- fun:__pthread_mutex_destroy
+ fun:pthread_mutex_destroy
fun:__closedir
}
{
- pthread_error/__pthread_mutex_destroy/_IO_default_finish
+ pthread_error/pthread_mutex_destroy/_IO_default_finish
core:PThread
fun:pthread_error
- fun:__pthread_mutex_destroy
+ fun:pthread_mutex_destroy
fun:_IO_default_finish*
}
{
- __pthread_mutex_unlock/_IO_funlockfile
+ pthread_mutex_unlock/_IO_funlockfile
core:PThread
- fun:__pthread_mutex_unlock
+ fun:pthread_mutex_unlock
fun:_IO_funlockfile
}
@@ -346,8 +346,8 @@
#-------------------
{
- socketcall.connect(serv_addr)/__libc_connect/*
+ socketcall.connect(serv_addr)/connect/*
Addrcheck,Memcheck:Param
socketcall.connect(serv_addr)
- fun:__libc_connect
+ fun:connect
fun:*
}
@@ -362,8 +362,8 @@
#----------------------
{
- write(buf)/__libc_write/libX11.so.6.2/libX11.so.6.2(Param)
+ write(buf)/write/libX11.so.6.2/libX11.so.6.2(Param)
Addrcheck,Memcheck:Param
write(buf)
- fun:__libc_write
+ fun:write
obj:/usr/X11R6/lib/libX11.so.6.2
obj:/usr/X11R6/lib/libX11.so.6.2
@@ -379,8 +379,8 @@
#{
-# llseek(result)/__libc_lseek64/_IO_file_seek(Param)
+# llseek(result)/lseek64/_IO_file_seek(Param)
# Param
# llseek(result)
-# fun:__libc_lseek64
+# fun:lseek64
# fun:_IO_file_seek
#}
@@ -414,9 +414,9 @@
## For a leak in Valgrind's own libpthread.so :(
{
- my_malloc/get_or_allocate_specifics_ptr/__pthread_key_create(Leak)
+ my_malloc/get_or_allocate_specifics_ptr/pthread_key_create(Leak)
Memcheck:Leak
fun:my_malloc
fun:get_or_allocate_specifics_ptr
- fun:__pthread_key_create
+ fun:pthread_key_create
}
--- valgrind/glibc-2.3.supp #1.7:1.8
@@ -107,27 +107,50 @@
}
+#-------- glibc 2.3.2/ Fedora Core 1
+{
+ dl_relocate/dl_main
+ Memcheck:Cond
+ fun:_dl_relocate_object_internal
+ fun:dl_main
+}
+
+#-------- Data races
+{
+ _dl_lookup_symbol_internal/fixup/_dl_runtime_resolve
+ Helgrind:Eraser
+ fun:_dl_lookup_symbol_internal
+ fun:fixup
+ fun:_dl_runtime_resolve
+}
+{
+ _dl_lookup_versioned_symbol_internal/fixup/_dl_runtime_resolve
+ Helgrind:Eraser
+ fun:_dl_lookup_versioned_symbol_internal
+ fun:fixup
+ fun:_dl_runtime_resolve
+}
#-------- Threading bugs?
# glibc 'knows' that destroying a locked mutex will unlock it
{
- pthread_error/__pthread_mutex_destroy/__closedir
+ pthread_error/pthread_mutex_destroy/__closedir
core:PThread
fun:pthread_error
- fun:__pthread_mutex_destroy
+ fun:pthread_mutex_destroy
fun:__closedir
}
{
- pthread_error/__pthread_mutex_destroy/_IO_default_finish
+ pthread_error/pthread_mutex_destroy/_IO_default_finish
core:PThread
fun:pthread_error
- fun:__pthread_mutex_destroy
+ fun:pthread_mutex_destroy
fun:_IO_default_finish*
}
{
- __pthread_mutex_unlock/_IO_funlockfile
+ pthread_mutex_unlock/_IO_funlockfile
core:PThread
- fun:__pthread_mutex_unlock
+ fun:pthread_mutex_unlock
fun:_IO_funlockfile
}
@@ -136,9 +159,9 @@
## For a leak in Valgrind's own libpthread.so :(
{
- my_malloc/get_or_allocate_specifics_ptr/__pthread_key_create(Leak)
+ my_malloc/get_or_allocate_specifics_ptr/pthread_key_create(Leak)
Memcheck:Leak
fun:my_malloc
fun:get_or_allocate_specifics_ptr
- fun:__pthread_key_create
+ fun:pthread_key_create
}
--- valgrind/corecheck/tests/fdleak_cmsg.stderr.exp #1.2:1.3
@@ -3,17 +3,17 @@
FILE DESCRIPTORS: 7 open at exit.
Open AF_UNIX socket .: /tmp/sock
- at 0x........: __libc_accept (...libc...)
+ at 0x........: accept (in /...libc...)
by 0x........: main (fdleak_cmsg.c:170)
Open AF_UNIX socket .: /tmp/sock
- at 0x........: __socket (in /...libc...)
+ at 0x........: socket (in /...libc...)
by 0x........: main (fdleak_cmsg.c:170)
Open file descriptor .: /tmp/data2
- at 0x........: __libc_open (...libc...)
+ at 0x........: open (in /...libc...)
by 0x........: main (fdleak_cmsg.c:170)
Open file descriptor .: /tmp/data1
- at 0x........: __libc_open (...libc...)
+ at 0x........: open (in /...libc...)
by 0x........: main (fdleak_cmsg.c:170)
@@ -32,13 +32,13 @@
FILE DESCRIPTORS: 6 open at exit.
Open file descriptor .: /tmp/data2
- at 0x........: __libc_recvmsg (...libc...)
+ at 0x........: recvmsg (in /...libc...)
by 0x........: main (fdleak_cmsg.c:174)
Open file descriptor .: /tmp/data1
- at 0x........: __libc_recvmsg (...libc...)
+ at 0x........: recvmsg (in /...libc...)
by 0x........: main (fdleak_cmsg.c:174)
Open AF_UNIX socket .: <unknown>
- at 0x........: __socket (in /...libc...)
+ at 0x........: socket (in /...libc...)
by 0x........: main (fdleak_cmsg.c:174)
--- valgrind/corecheck/tests/fdleak_creat.stderr.exp #1.2:1.3
@@ -4,5 +4,5 @@
Open file descriptor .: /tmp/file
- at 0x........: __libc_creat (...libc...)
+ at 0x........: creat (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
--- valgrind/corecheck/tests/fdleak_dup.stderr.exp #1.2:1.3
@@ -3,10 +3,10 @@
FILE DESCRIPTORS: 5 open at exit.
Open file descriptor .: /dev/null
- at 0x........: __dup (in /...libc...)
+ at 0x........: dup (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
Open file descriptor .: /dev/null
- at 0x........: __libc_open (...libc...)
+ at 0x........: open (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
--- valgrind/corecheck/tests/fdleak_dup2.stderr.exp #1.2:1.3
@@ -3,15 +3,15 @@
FILE DESCRIPTORS: 6 open at exit.
Open file descriptor .: /dev/null
- at 0x........: __dup2 (in /...libc...)
+ at 0x........: dup2 (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
Open file descriptor .: /dev/null
- at 0x........: __dup2 (in /...libc...)
+ at 0x........: dup2 (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
Open file descriptor .: /dev/null
- at 0x........: __libc_open (...libc...)
+ at 0x........: open (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
--- valgrind/corecheck/tests/fdleak_fcntl.stderr.exp #1.2:1.3
@@ -3,9 +3,9 @@
FILE DESCRIPTORS: 5 open at exit.
Open file descriptor .: /dev/null
- at 0x........: __libc_fcntl (...libc...)
+ at 0x........: fcntl (in /...libc...)
by 0x........: main (fdleak_fcntl.c:18)
Open file descriptor .: /dev/null
- at 0x........: __libc_open (...libc...)
+ at 0x........: open (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
--- valgrind/corecheck/tests/fdleak_ipv4.stderr.exp #1.2:1.3
@@ -3,9 +3,9 @@
FILE DESCRIPTORS: 5 open at exit.
Open AF_INET socket 4: 127.0.0.1:... <-> 127.0.0.1:...
- at 0x........: __libc_accept (...libc...)
+ at 0x........: accept (in /...libc...)
by 0x........: main (fdleak_ipv4.c:100)
Open AF_INET socket 3: 127.0.0.1:... <-> unbound
- at 0x........: __socket (in /...libc...)
+ at 0x........: socket (in /...libc...)
by 0x........: main (fdleak_ipv4.c:100)
@@ -24,5 +24,5 @@
FILE DESCRIPTORS: 4 open at exit.
Open AF_INET socket 3: 127.0.0.1:... <-> 127.0.0.1:...
- at 0x........: __socket (in /...libc...)
+ at 0x........: socket (in /...libc...)
by 0x........: main (fdleak_ipv4.c:104)
--- valgrind/corecheck/tests/fdleak_open.stderr.exp #1.2:1.3
@@ -3,5 +3,5 @@
FILE DESCRIPTORS: 4 open at exit.
Open file descriptor .: /dev/null
- at 0x........: __libc_open (...libc...)
+ at 0x........: open (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
--- valgrind/corecheck/tests/fdleak_pipe.stderr.exp #1.2:1.3
@@ -3,10 +3,10 @@
FILE DESCRIPTORS: 5 open at exit.
Open file descriptor .:
- at 0x........: __pipe (in /...libc...)
+ at 0x........: pipe (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
Open file descriptor .:
- at 0x........: __pipe (in /...libc...)
+ at 0x........: pipe (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
--- valgrind/corecheck/tests/fdleak_socketpair.stderr.exp #1.2:1.3
@@ -3,10 +3,10 @@
FILE DESCRIPTORS: 5 open at exit.
Open AF_UNIX socket .: <unknown>
- at 0x........: __socketpair (in /...libc...)
+ at 0x........: socketpair (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
Open AF_UNIX socket .: <unknown>
- at 0x........: __socketpair (in /...libc...)
+ at 0x........: socketpair (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
--- valgrind/coregrind/vg_symtab2.c #1.62:1.63
@@ -399,4 +399,44 @@ static Int compare_RiSym(void *va, void
}
+/* Two symbols have the same address. Which name do we prefer?
+
+ In general we prefer the longer name, but if the choice is between
+ __libc_X and X, then choose X (similarly with __GI__ and __
+ prefixes).
+ */
+static RiSym *prefersym(RiSym *a, RiSym *b)
+{
+ Int pfx;
+
+ /* rearrange so that a is the long one */
+ if (VG_(strlen)(a->name) < VG_(strlen)(b->name)) {
+ RiSym *t;
+
+ t = a;
+ a = b;
+ b = t;
+ }
+
+ pfx = 0;
+
+ if (VG_(memcmp)(a->name, "__GI___libc_", 12) == 0)
+ pfx = 12;
+ else if (VG_(memcmp)(a->name, "__libc_", 7) == 0)
+ pfx = 7;
+ else if (VG_(memcmp)(a->name, "__GI___", 7) == 0)
+ pfx = 7;
+ else if (VG_(memcmp)(a->name, "__GI__", 6) == 0)
+ pfx = 6;
+ else if (VG_(memcmp)(a->name, "__GI_", 5) == 0)
+ pfx = 5;
+ else if (VG_(memcmp)(a->name, "__", 2) == 0)
+ pfx = 2;
+
+ if (pfx != 0 && VG_(strcmp)(a->name + pfx, b->name) == 0)
+ return b;
+
+ return a;
+}
+
static
void canonicaliseSymtab ( SegInfo* si )
@@ -428,10 +468,5 @@ void canonicaliseSymtab ( SegInfo* si )
n_merged++;
/* merge the two into one */
- if (VG_(strlen)(si->symtab[i].name)
- > VG_(strlen)(si->symtab[i+1].name)) {
- si->symtab[si->symtab_used++] = si->symtab[i];
- } else {
- si->symtab[si->symtab_used++] = si->symtab[i+1];
- }
+ si->symtab[si->symtab_used++] = *prefersym(&si->symtab[i], &si->symtab[i+1]);
i++;
} else {
--- valgrind/helgrind/tests/deadlock.stderr.exp #1.4:1.5
@@ -2,5 +2,5 @@
Thread 3:
Mutex 0x........(m1) locked in inconsistent order
- at 0x........: __pthread_mutex_lock (vg_libpthread.c:...)
+ at 0x........: pthread_mutex_lock (vg_libpthread.c:...)
by 0x........: t2 (deadlock.c:20)
by 0x........: thread_wrapper (vg_libpthread.c:...)
@@ -8,5 +8,5 @@
while holding locks 0x........(m2)
0x........(m2) last locked at
- at 0x........: __pthread_mutex_lock (vg_libpthread.c:...)
+ at 0x........: pthread_mutex_lock (vg_libpthread.c:...)
by 0x........: t2 (deadlock.c:19)
by 0x........: thread_wrapper (vg_libpthread.c:...)
--- valgrind/memcheck/tests/fwrite.stderr.exp #1.8:1.9
@@ -1,4 +1,4 @@
Syscall param write(buf) contains uninitialised or unaddressable byte(s)
- at 0x........: __libc_write (...libc...)
+ at 0x........: write (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
--- valgrind/memcheck/tests/weirdioctl.stderr.exp #1.7:1.8
@@ -1,4 +1,4 @@
Syscall param ioctl(TCSET{A,AW,AF}) contains uninitialised or unaddressable byte(s)
- at 0x........: __ioctl (in /...libc...)
+ at 0x........: ioctl (in /...libc...)
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
--- valgrind/memcheck/tests/writev.stderr.exp #1.4:1.5
@@ -2,5 +2,5 @@
Test file created.
Syscall param writev(vector[...]) contains uninitialised or unaddressable byte(s)
- at 0x........: __libc_writev (...libc...)
+ at 0x........: writev (in /...libc...)
by 0x........: main (writev.c:56)
Address 0x........ is not stack'd, malloc'd or free'd
@@ -8,5 +8,5 @@
Syscall param writev(vector) contains uninitialised or unaddressable byte(s)
- at 0x........: __libc_writev (...libc...)
+ at 0x........: writev (in /...libc...)
by 0x........: main (writev.c:68)
Address 0x........ is not stack'd, malloc'd or free'd
@@ -14,5 +14,5 @@
Syscall param readv(vector) contains uninitialised or unaddressable byte(s)
- at 0x........: __libc_readv (...libc...)
+ at 0x........: readv (in /...libc...)
by 0x........: main (writev.c:76)
Address 0x........ is not stack'd, malloc'd or free'd
|
|
From: Julian S. <js...@ac...> - 2003-12-14 18:20:28
|
CVS commit by jseward: Announce valgrind-2.1.0. M +11 -1 downloads.html 1.7 M +4 -0 index.html 1.12 --- devel-home/valgrind/downloads.html #1.6:1.7 @@ -30,5 +30,15 @@ <h3>Development Releases</h3> -None at present. +<b>2.1.0 (of 14 December 2003)</b> + <a HREF="http://developer.kde.org/~sewardj/valgrind-2.1.0.tar.bz2">(bzip2'd source, 762KB)</a> + (MD5=3e4056dd45163a5f555a23ced2f95191) + +<p> +2.1.0 brings an overhaul of syscall and signal handling, giving much +better behaviour, especially in threaded code. 2.1.0 can also check +for file descriptor leakage. A few more SSE/SSE2 instructions are +implemented, and various reported bugs have been fixed. See the <a +HREF="http://developer.kde.org/~sewardj/docs-2.1.0/NEWS.txt">NEWS</a> +file in the distro for more details. <h3>Interesting Variants</h3> --- devel-home/valgrind/index.html #1.11:1.12 @@ -5,4 +5,8 @@ ?> +<center>December 14, 2003: A new unstable release, +<a href="/downloads.html">valgrind 2.1.0</a>, is available.</center> +<p> + <center>November 11, 2003: A new stable release, <a href="/downloads.html">valgrind 2.0.0</a>, is available.</center> |
|
From: <ism...@bo...> - 2003-12-14 17:39:40
|
CVS commit by cartman: CVS_SILENT NPTL is Native Posix blah blah M +1 -1 coregrind_intro.html 1.7 --- valgrind/coregrind/docs/coregrind_intro.html #1.6:1.7 @@ -120,5 +120,5 @@ and glibc 2.1.X, 2.2.X or 2.3.1. This should cover the vast majority of modern Linux installations. Note that glibc-2.3.2+, with the -NPTL (next generation posix threads?) package won't work. We hope to +NPTL (Native Posix Threads Library) package won't work. We hope to be able to fix this, but it won't be easy. |
|
From: Julian S. <js...@ac...> - 2003-12-14 14:35:57
|
CVS commit by jseward:
Comment re tc size increase.
M +5 -0 NEWS 1.15
--- valgrind/NEWS #1.14:1.15
@@ -47,4 +47,9 @@
EraserErr suppressions
+- Increase the max size of the translation cache from 200k average bbs
+ to 300k average bbs. Programs on the size of OOo (680m17) are
+ thrashing the cache at the smaller size, creating large numbers of
+ retranslations and wasting significant time as a result.
+
|
|
From: Julian S. <js...@ac...> - 2003-12-14 14:25:54
|
CVS commit by jseward:
Increase the max size of the translation cache from 200k average bbs to
300k average bbs. Programs on the size of OOo (680m17) are thrashing the
cache at the smaller size, creating large numbers of retranslations and
wasting significant time as a result.
M +2 -2 vg_transtab.c 1.25
--- valgrind/coregrind/vg_transtab.c #1.24:1.25
@@ -50,5 +50,5 @@ static /* const */ Int vg_tc_sector_szB
/* Number of entries in the translation table. This must be a prime
number in order to make the hashing work properly. */
-#define VG_TT_SIZE /*5281*/ /*100129*/ 200191 /*250829*/
+#define VG_TT_SIZE /*5281*/ /*100129*/ /*200191*/ /*250829*/ 300007
/* Do an LRU pass when the translation table becomes this full. */
@@ -652,5 +652,5 @@ void VG_(init_tt_tc) ( void )
/* Ensure the calculated value is not way crazy. */
vg_assert(vg_tc_sector_szB >= 200000);
- vg_assert(vg_tc_sector_szB <= 6000000);
+ vg_assert(vg_tc_sector_szB <= 8000000);
for (s = 0; s < VG_TC_N_SECTORS; s++) {
|
|
From: Jeremy F. <je...@go...> - 2003-12-14 06:51:09
|
CVS commit by fitzhardinge: Update regtest to match new error message M +1 -1 erringfds.stderr.exp 1.4 --- valgrind/corecheck/tests/erringfds.stderr.exp #1.3:1.4 @@ -1,4 +1,4 @@ -Warning: bad use of file descriptor -1 in syscall read() +Warning: invalid file descriptor -1 in syscall read() ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) |
|
From: Julian S. <js...@ac...> - 2003-12-14 00:27:54
|
CVS commit by jseward: Change date. M +1 -1 manual.html 1.46 --- valgrind/docs/manual.html #1.45:1.46 @@ -27,5 +27,5 @@ <a name="title"> </a> <h1 align=center>Valgrind, version 2.1.0</h1> -<center>This manual was last updated on 3 April 2003</center> +<center>This manual was last updated on 14 December 2003</center> <p> |
|
From: Julian S. <js...@ac...> - 2003-12-14 00:16:05
|
CVS commit by jseward: ---> 2.1.0 M +1 -1 configure.in 1.101 M +1 -1 docs/manual.html 1.45 --- valgrind/configure.in #1.100:1.101 @@ -2,5 +2,5 @@ AC_INIT(coregrind/vg_main.c) # give me a source file, any source file... AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(valgrind, HEAD) +AM_INIT_AUTOMAKE(valgrind, 2.1.0) AM_MAINTAINER_MODE --- valgrind/docs/manual.html #1.44:1.45 @@ -26,5 +26,5 @@ <a name="title"> </a> -<h1 align=center>Valgrind, version 2.0.0</h1> +<h1 align=center>Valgrind, version 2.1.0</h1> <center>This manual was last updated on 3 April 2003</center> <p> |
|
From: Julian S. <js...@ac...> - 2003-12-14 00:15:24
|
CVS commit by jseward:
Update for 2.1.0.
M +143 -2 NEWS 1.14
--- valgrind/NEWS #1.13:1.14
@@ -1,3 +1,143 @@
-Snapshot 2003XXXX (XX XXXX 2003)
+
+Unstable (cvs head) release 2.1.0 (15 December 2003)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
+(Julian). It looks eminently usable, and given that it fixes some
+significant bugs, may well be worth using on a day-to-day basis.
+2.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
+8.2, RedHat 8.
+
+2.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
+handling of system calls and signals, and their interaction with
+threads. In general, the accuracy of the system call, thread and
+signal simulations is much improved. Specifically:
+
+- Blocking system calls behave exactly as they do when running
+ natively (not on valgrind). That is, if a syscall blocks only the
+ calling thread when running natively, than it behaves the same on
+ valgrind. No more mysterious hangs because V doesn't know that some
+ syscall or other, should block only the calling thread.
+
+- Interrupted syscalls should now give more faithful results.
+
+- Finally, signal contexts in signal handlers are supported. As a
+ result, konqueror on SuSE 9 no longer segfaults when notified of
+ file changes in directories it is watching.
+
+Other changes:
+
+- Robert Walsh's file descriptor leakage checks. When enabled,
+ Valgrind will print out a list of open file descriptors on
+ exit. Along with each file descriptor, Valgrind prints out a stack
+ backtrace of where the file was opened and any details relating to the
+ file descriptor such as the file name or socket details.
+ To use, give: --track-fds=yes
+
+- Implemented a few more SSE/SSE2 instructions.
+
+- Less crud on the stack when you do 'where' inside a GDB attach.
+
+- Fixed the following bugs:
+ 68360: Valgrind does not compile against 2.6.0-testX kernels
+ 68525: CVS head doesn't compile on C90 compilers
+ 68566: pkgconfig support (wishlist)
+ 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
+ 69140: valgrind not able to explicitly specify a path to a binary.
+ 69432: helgrind asserts encountering a MutexErr when there are
+ EraserErr suppressions
+
+
+
+Stable release 2.0.0 (5 Nov 2003)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+2.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
+improves support for SuSE 9 and the Red Hat "Severn" beta.
+
+- Further improvements to SSE/SSE2 support. The entire test suite of
+ the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
+ 20030307Z '-g -O -xW' now works. I think this gives pretty good
+ coverage of SSE/SSE2 floating point instructions, or at least the
+ subset emitted by Icc.
+
+- Also added support for the following instructions:
+ MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
+ PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
+
+- CFI support for GDB version 6. Needed to enable newer GDBs
+ to figure out where they are when using --gdb-attach=yes.
+
+- Fix this:
+ mc_translate.c:1091 (memcheck_instrument): Assertion
+ `u_in->size == 4 || u_in->size == 16' failed.
+
+- Return an error rather than panicing when given a bad socketcall.
+
+- Fix checking of syscall rt_sigtimedwait().
+
+- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
+
+- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
+ bytes long, when it could be shorter, which could cause false
+ positives.
+
+- Support use of select() for very large numbers of file descriptors.
+
+- Don't fail silently if the executable is statically linked, or is
+ setuid/setgid. Print an error message instead.
+
+- Support for old DWARF-1 format line number info.
+
+
+
+Snapshot 20031012 (12 October 2003)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Three months worth of bug fixes, roughly. Most significant single
+change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
+
+20031012 builds on Red Hat Fedora ("Severn") but doesn't really work
+(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
+get a working version out soon. It may or may not work ok on the
+forthcoming SuSE 9; I hear positive noises about it but haven't been
+able to verify this myself (not until I get hold of a copy of 9).
+
+A detailed list of changes, in no particular order:
+
+- Describe --gen-suppressions in the FAQ.
+
+- Syscall __NR_waitpid supported.
+
+- Minor MMX bug fix.
+
+- -v prints program's argv[] at startup.
+
+- More glibc-2.3 suppressions.
+
+- Suppressions for stack underrun bug(s) in the c++ support library
+ distributed with Intel Icc 7.0.
+
+- Fix problems reading /proc/self/maps.
+
+- Fix a couple of messages that should have been suppressed by -q,
+ but weren't.
+
+- Make Addrcheck understand "Overlap" suppressions.
+
+- At startup, check if program is statically linked and bail out if so.
+
+- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
+
+- Memcheck/addrcheck: minor speed optimisations
+
+- Handle syscall __NR_brk more correctly than before.
+
+- Fixed incorrect allocate/free mismatch errors when using
+ operator new(unsigned, std::nothrow_t const&)
+ operator new[](unsigned, std::nothrow_t const&)
+
+- Support POSIX pthread spinlocks.
+
+- Fixups for clean compilation with gcc-3.3.1.
- Implemented more opcodes:
@@ -15,6 +155,7 @@
- all "in" and "out" opcodes
- inc/dec %esp
+ - A whole bunch of SSE/SSE2 instructions
-- Memcheck: Implemented handling of more SSE(2) constructs
+- Memcheck: don't bomb on SSE/SSE2 code.
|
|
From: Julian S. <js...@ac...> - 2003-12-13 23:16:58
|
CVS commit by jseward:
Patch in a DWARF1 (obsolete) line number reader, from the stable (2.0)
branch. Apparently the Lahey Fortran compiler emits DWARF1 line
number info.
M +299 -2 vg_dwarf.c 1.2
M +23 -7 vg_symtab2.c 1.62
M +10 -1 vg_symtab2.h 1.3
--- valgrind/coregrind/vg_dwarf.c #1.1:1.2
@@ -1,4 +1,4 @@
/*--------------------------------------------------------------------*/
-/*--- Read DWARF2 debug info. vg_symtab_dwarf.c ---*/
+/*--- Read DWARF2 debug info. vg_dwarf.c ---*/
/*--------------------------------------------------------------------*/
@@ -532,5 +532,302 @@ void VG_(read_debuginfo_dwarf2) ( SegInf
}
+
+/*------------------------------------------------------------*/
+/*--- Read DWARF1 format line number info. ---*/
+/*------------------------------------------------------------*/
+
+/* DWARF1 appears to be redundant, but nevertheless the Lahey Fortran
+ compiler generates it.
+*/
+
+/* The following three enums (dwarf_tag, dwarf_form, dwarf_attribute)
+ are taken from the file include/elf/dwarf.h in the GNU gdb-6.0
+ sources, which are Copyright 1992, 1993, 1995, 1999 Free Software
+ Foundation, Inc and naturally licensed under the GNU General Public
+ License version 2 or later.
+*/
+
+/* Tag names and codes. */
+
+enum dwarf_tag {
+ TAG_padding = 0x0000,
+ TAG_array_type = 0x0001,
+ TAG_class_type = 0x0002,
+ TAG_entry_point = 0x0003,
+ TAG_enumeration_type = 0x0004,
+ TAG_formal_parameter = 0x0005,
+ TAG_global_subroutine = 0x0006,
+ TAG_global_variable = 0x0007,
+ /* 0x0008 -- reserved */
+ /* 0x0009 -- reserved */
+ TAG_label = 0x000a,
+ TAG_lexical_block = 0x000b,
+ TAG_local_variable = 0x000c,
+ TAG_member = 0x000d,
+ /* 0x000e -- reserved */
+ TAG_pointer_type = 0x000f,
+ TAG_reference_type = 0x0010,
+ TAG_compile_unit = 0x0011,
+ TAG_string_type = 0x0012,
+ TAG_structure_type = 0x0013,
+ TAG_subroutine = 0x0014,
+ TAG_subroutine_type = 0x0015,
+ TAG_typedef = 0x0016,
+ TAG_union_type = 0x0017,
+ TAG_unspecified_parameters = 0x0018,
+ TAG_variant = 0x0019,
+ TAG_common_block = 0x001a,
+ TAG_common_inclusion = 0x001b,
+ TAG_inheritance = 0x001c,
+ TAG_inlined_subroutine = 0x001d,
+ TAG_module = 0x001e,
+ TAG_ptr_to_member_type = 0x001f,
+ TAG_set_type = 0x0020,
+ TAG_subrange_type = 0x0021,
+ TAG_with_stmt = 0x0022,
+
+ /* GNU extensions */
+
+ TAG_format_label = 0x8000, /* for FORTRAN 77 and Fortran 90 */
+ TAG_namelist = 0x8001, /* For Fortran 90 */
+ TAG_function_template = 0x8002, /* for C++ */
+ TAG_class_template = 0x8003 /* for C++ */
+};
+
+/* Form names and codes. */
+
+enum dwarf_form {
+ FORM_ADDR = 0x1,
+ FORM_REF = 0x2,
+ FORM_BLOCK2 = 0x3,
+ FORM_BLOCK4 = 0x4,
+ FORM_DATA2 = 0x5,
+ FORM_DATA4 = 0x6,
+ FORM_DATA8 = 0x7,
+ FORM_STRING = 0x8
+};
+
+/* Attribute names and codes. */
+
+enum dwarf_attribute {
+ AT_sibling = (0x0010|FORM_REF),
+ AT_location = (0x0020|FORM_BLOCK2),
+ AT_name = (0x0030|FORM_STRING),
+ AT_fund_type = (0x0050|FORM_DATA2),
+ AT_mod_fund_type = (0x0060|FORM_BLOCK2),
+ AT_user_def_type = (0x0070|FORM_REF),
+ AT_mod_u_d_type = (0x0080|FORM_BLOCK2),
+ AT_ordering = (0x0090|FORM_DATA2),
+ AT_subscr_data = (0x00a0|FORM_BLOCK2),
+ AT_byte_size = (0x00b0|FORM_DATA4),
+ AT_bit_offset = (0x00c0|FORM_DATA2),
+ AT_bit_size = (0x00d0|FORM_DATA4),
+ /* (0x00e0|FORM_xxxx) -- reserved */
+ AT_element_list = (0x00f0|FORM_BLOCK4),
+ AT_stmt_list = (0x0100|FORM_DATA4),
+ AT_low_pc = (0x0110|FORM_ADDR),
+ AT_high_pc = (0x0120|FORM_ADDR),
+ AT_language = (0x0130|FORM_DATA4),
+ AT_member = (0x0140|FORM_REF),
+ AT_discr = (0x0150|FORM_REF),
+ AT_discr_value = (0x0160|FORM_BLOCK2),
+ /* (0x0170|FORM_xxxx) -- reserved */
+ /* (0x0180|FORM_xxxx) -- reserved */
+ AT_string_length = (0x0190|FORM_BLOCK2),
+ AT_common_reference = (0x01a0|FORM_REF),
+ AT_comp_dir = (0x01b0|FORM_STRING),
+ AT_const_value_string = (0x01c0|FORM_STRING),
+ AT_const_value_data2 = (0x01c0|FORM_DATA2),
+ AT_const_value_data4 = (0x01c0|FORM_DATA4),
+ AT_const_value_data8 = (0x01c0|FORM_DATA8),
+ AT_const_value_block2 = (0x01c0|FORM_BLOCK2),
+ AT_const_value_block4 = (0x01c0|FORM_BLOCK4),
+ AT_containing_type = (0x01d0|FORM_REF),
+ AT_default_value_addr = (0x01e0|FORM_ADDR),
+ AT_default_value_data2 = (0x01e0|FORM_DATA2),
+ AT_default_value_data4 = (0x01e0|FORM_DATA4),
+ AT_default_value_data8 = (0x01e0|FORM_DATA8),
+ AT_default_value_string = (0x01e0|FORM_STRING),
+ AT_friends = (0x01f0|FORM_BLOCK2),
+ AT_inline = (0x0200|FORM_STRING),
+ AT_is_optional = (0x0210|FORM_STRING),
+ AT_lower_bound_ref = (0x0220|FORM_REF),
+ AT_lower_bound_data2 = (0x0220|FORM_DATA2),
+ AT_lower_bound_data4 = (0x0220|FORM_DATA4),
+ AT_lower_bound_data8 = (0x0220|FORM_DATA8),
+ AT_private = (0x0240|FORM_STRING),
+ AT_producer = (0x0250|FORM_STRING),
+ AT_program = (0x0230|FORM_STRING),
+ AT_protected = (0x0260|FORM_STRING),
+ AT_prototyped = (0x0270|FORM_STRING),
+ AT_public = (0x0280|FORM_STRING),
+ AT_pure_virtual = (0x0290|FORM_STRING),
+ AT_return_addr = (0x02a0|FORM_BLOCK2),
+ AT_abstract_origin = (0x02b0|FORM_REF),
+ AT_start_scope = (0x02c0|FORM_DATA4),
+ AT_stride_size = (0x02e0|FORM_DATA4),
+ AT_upper_bound_ref = (0x02f0|FORM_REF),
+ AT_upper_bound_data2 = (0x02f0|FORM_DATA2),
+ AT_upper_bound_data4 = (0x02f0|FORM_DATA4),
+ AT_upper_bound_data8 = (0x02f0|FORM_DATA8),
+ AT_virtual = (0x0300|FORM_STRING),
+
+ /* GNU extensions. */
+
+ AT_sf_names = (0x8000|FORM_DATA4),
+ AT_src_info = (0x8010|FORM_DATA4),
+ AT_mac_info = (0x8020|FORM_DATA4),
+ AT_src_coords = (0x8030|FORM_DATA4),
+ AT_body_begin = (0x8040|FORM_ADDR),
+ AT_body_end = (0x8050|FORM_ADDR)
+};
+
+/* end of enums taken from gdb-6.0 sources */
+
+void VG_(read_debuginfo_dwarf1) (
+ SegInfo* si,
+ UChar* dwarf1d, Int dwarf1d_sz,
+ UChar* dwarf1l, Int dwarf1l_sz )
+{
+ UInt stmt_list;
+ Bool stmt_list_found;
+ Int die_offset, die_szb, at_offset;
+ UShort die_kind, at_kind;
+ UChar* at_base;
+ UChar* src_filename;
+
+ if (0)
+ VG_(printf)("read_debuginfo_dwarf1 ( %p, %d, %p, %d )\n",
+ dwarf1d, dwarf1d_sz, dwarf1l, dwarf1l_sz );
+
+ /* This loop scans the DIEs. */
+ die_offset = 0;
+ while (True) {
+ if (die_offset >= dwarf1d_sz) break;
+
+ die_szb = *(Int*)(dwarf1d + die_offset);
+ die_kind = *(UShort*)(dwarf1d + die_offset + 4);
+
+ /* We're only interested in compile_unit DIEs; ignore others. */
+ if (die_kind != TAG_compile_unit) {
+ die_offset += die_szb;
+ continue;
+ }
+
+ if (0)
+ VG_(printf)("compile-unit DIE: offset %d, tag 0x%x, size %d\n",
+ die_offset, (Int)die_kind, die_szb );
+
+ /* We've got a compile_unit DIE starting at (dwarf1d +
+ die_offset+6). Try and find the AT_name and AT_stmt_list
+ attributes. Then, finally, we can read the line number info
+ for this source file. */
+
+ /* The next 3 are set as we find the relevant attrs. */
+ src_filename = NULL;
+ stmt_list_found = False;
+ stmt_list = 0;
+
+ /* This loop scans the Attrs inside compile_unit DIEs. */
+ at_base = dwarf1d + die_offset + 6;
+ at_offset = 0;
+ while (True) {
+ if (at_offset >= die_szb-6) break;
+
+ at_kind = *(UShort*)(at_base + at_offset);
+ if (0) VG_(printf)("atoffset %d, attag 0x%x\n",
+ at_offset, (Int)at_kind );
+ at_offset += 2; /* step over the attribute itself */
+ /* We have to examine the attribute to figure out its
+ length. */
+ switch (at_kind) {
+ case AT_stmt_list:
+ case AT_language:
+ case AT_sibling:
+ if (at_kind == AT_stmt_list) {
+ stmt_list_found = True;
+ stmt_list = *(Int*)(at_base+at_offset);
+ }
+ at_offset += 4; break;
+ case AT_high_pc:
+ case AT_low_pc:
+ at_offset += sizeof(void*); break;
+ case AT_name:
+ case AT_producer:
+ case AT_comp_dir:
+ /* Zero terminated string, step over it. */
+ if (at_kind == AT_name)
+ src_filename = at_base + at_offset;
+ while (at_offset < die_szb-6 && at_base[at_offset] != 0)
+ at_offset++;
+ at_offset++;
+ break;
+ default:
+ VG_(printf)("Unhandled DWARF-1 attribute 0x%x\n",
+ (Int)at_kind );
+ VG_(core_panic)("Unhandled DWARF-1 attribute");
+ } /* switch (at_kind) */
+ } /* looping over attributes */
+
+ /* So, did we find the required stuff for a line number table in
+ this DIE? If yes, read it. */
+ if (stmt_list_found /* there is a line number table */
+ && src_filename != NULL /* we know the source filename */
+ ) {
+ /* Table starts:
+ Length:
+ 4 bytes, includes the entire table
+ Base address:
+ unclear (4? 8?), assuming native pointer size here.
+ Then a sequence of triples
+ (source line number -- 32 bits
+ source line column -- 16 bits
+ address delta -- 32 bits)
+ */
+ Addr base;
+ Int len;
+ Char* curr_filenm;
+ UChar* ptr;
+ UInt prev_line, prev_delta;
+
+ curr_filenm = VG_(addStr) ( si, src_filename, -1 );
+ prev_line = prev_delta = 0;
+
+ ptr = dwarf1l + stmt_list;
+ len = *(Int*)ptr; ptr += sizeof(Int);
+ base = (Addr)(*(void**)ptr); ptr += sizeof(void*);
+ len -= (sizeof(Int) + sizeof(void*));
+ while (len > 0) {
+ UInt line;
+ UShort col;
+ UInt delta;
+ line = *(UInt*)ptr; ptr += sizeof(UInt);
+ col = *(UShort*)ptr; ptr += sizeof(UShort);
+ delta = *(UShort*)ptr; ptr += sizeof(UInt);
+ if (0) VG_(printf)("line %d, col %d, delta %d\n",
+ line, (Int)col, delta );
+ len -= (sizeof(UInt) + sizeof(UShort) + sizeof(UInt));
+
+ if (delta > 0 && prev_line > 0) {
+ if (0) VG_(printf) (" %d %d-%d\n",
+ prev_line, prev_delta, delta-1);
+ VG_(addLineInfo) ( si, curr_filenm,
+ base + prev_delta, base + delta,
+ prev_line, 0 );
+ }
+ prev_line = line;
+ prev_delta = delta;
+ }
+ }
+
+ /* Move on the the next DIE. */
+ die_offset += die_szb;
+
+ } /* Looping over DIEs */
+
+}
+
+
/*--------------------------------------------------------------------*/
-/*--- end vg_symtab_dwarf.c ---*/
+/*--- end vg_dwarf.c ---*/
/*--------------------------------------------------------------------*/
--- valgrind/coregrind/vg_symtab2.c #1.61:1.62
@@ -969,4 +969,6 @@ Bool vg_read_lib_symbols ( SegInfo* si )
UChar* stabstr = NULL; /* .stabstr (stabs) */
UChar* debug_line = NULL; /* .debug_line (dwarf2) */
+ UChar* dwarf1d = NULL; /* .debug (dwarf1) */
+ UChar* dwarf1l = NULL; /* .line (dwarf1) */
/* Section sizes, in bytes */
@@ -978,8 +980,12 @@ Bool vg_read_lib_symbols ( SegInfo* si )
UInt stabstr_sz = 0;
UInt debug_line_sz = 0;
+ UInt dwarf1d_sz = 0;
+ UInt dwarf1l_sz = 0;
+
+ Bool has_debuginfo = False;
/* Find all interesting sections */
for (i = 0; i < ehdr->e_shnum; i++) {
- #define FIND(sec_name, sec_data, sec_size, in_exec, type) \
+# define FIND(sec_name, sec_data, sec_size, in_exec, type) \
if (0 == VG_(strcmp)(sec_name, sh_strtab + shdr[i].sh_name)) { \
if (0 != sec_data) \
@@ -1008,9 +1014,11 @@ Bool vg_read_lib_symbols ( SegInfo* si )
else FIND(".stabstr", stabstr, stabstr_sz, 0, UChar*)
else FIND(".debug_line", debug_line, debug_line_sz, 0, UChar*)
+ else FIND(".debug", dwarf1d, dwarf1d_sz, 0, UChar*)
+ else FIND(".line", dwarf1l, dwarf1l_sz, 0, UChar*)
else FIND(".got", si->got_start, si->got_size, 1, Addr)
else FIND(".plt", si->plt_start, si->plt_size, 1, Addr)
- #undef FIND
+# undef FIND
/* Check some sizes */
@@ -1029,10 +1037,18 @@ Bool vg_read_lib_symbols ( SegInfo* si )
/* Read the stabs and/or dwarf2 debug information, if any. */
if (stab != NULL && stabstr != NULL) {
- VG_(read_debuginfo_stabs) ( si, stab, stab_sz, stabstr, stabstr_sz );
-
- } else if (debug_line) {
+ has_debuginfo = True;
+ VG_(read_debuginfo_stabs) ( si, stab, stab_sz,
+ stabstr, stabstr_sz );
+ }
+ if (debug_line) {
+ has_debuginfo = True;
VG_(read_debuginfo_dwarf2) ( si, debug_line, debug_line_sz );
-
- } else {
+ }
+ if (dwarf1d && dwarf1l) {
+ has_debuginfo = True;
+ VG_(read_debuginfo_dwarf1) ( si, dwarf1d, dwarf1d_sz,
+ dwarf1l, dwarf1l_sz );
+ }
+ if (!has_debuginfo) {
VG_(symerr)(" object doesn't have any debug info");
goto out;
--- valgrind/coregrind/vg_symtab2.h #1.2:1.3
@@ -186,5 +186,14 @@ void VG_(read_debuginfo_stabs) ( SegInfo
DWARF2 reader
-------------------- */
-void VG_(read_debuginfo_dwarf2) ( SegInfo* si, UChar* dwarf2, Int dwarf2_sz );
+void VG_(read_debuginfo_dwarf2) ( SegInfo* si,
+ UChar* dwarf2, Int dwarf2_sz );
+
+/* --------------------
+ DWARF1 reader
+ -------------------- */
+void VG_(read_debuginfo_dwarf1) ( SegInfo* si,
+ UChar* dwarf1d, Int dwarf1d_sz,
+ UChar* dwarf1l, Int dwarf1l_sz );
+
#endif /* _VG_SYMTYPE_H */
|
|
From: Julian S. <js...@ac...> - 2003-12-13 03:08:14
|
CVS commit by jseward:
Un-break 'make distcheck' yet again. I guess someone somewhere understands
how autoconf/automake really work, but not me :-) What's the difference
between $(srcdir) and $(top_srcdir) (eg in coregrind/Makefile.am) ?
M +1 -1 corecheck/tests/Makefile.am 1.17
M +1 -1 corecheck/tests/vgprintf.c 1.2
M +1 -1 coregrind/Makefile.am 1.60
M +1 -1 coregrind/vg_startup.S 1.19
--- valgrind/corecheck/tests/Makefile.am #1.16:1.17
@@ -38,5 +38,5 @@
vgprintf
-AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -O0
+AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g -O0 -I$(top_srcdir)/include
AM_CXXFLAGS = $(AM_CFLAGS)
--- valgrind/corecheck/tests/vgprintf.c #1.1:1.2
@@ -1,3 +1,3 @@
-#include <include/valgrind.h>
+#include "valgrind.h"
#include <stdio.h>
--- valgrind/coregrind/Makefile.am #1.59:1.60
@@ -7,5 +7,5 @@
AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -O -fno-omit-frame-pointer \
@PREFERRED_STACK_BOUNDARY@ -g -fpic
-AM_CCASFLAGS = $(add_includes)
+AM_CCASFLAGS = $(add_includes) -I..
valdir = $(libdir)/valgrind
--- valgrind/coregrind/vg_startup.S #1.18:1.19
@@ -31,5 +31,5 @@
#include "vg_constants.h"
-#include "../config.h"
+#include "config.h"
|
|
From: Jeremy F. <je...@go...> - 2003-12-12 07:47:29
|
CVS commit by fitzhardinge:
Fix bug 69836: make record_fd_open ignore fds > VG_MAX_FD.
CCMAIL: 698...@bu...
M +2 -8 corecheck/tests/fdleak_cmsg.stderr.exp 1.2
M +1 -4 corecheck/tests/fdleak_creat.stderr.exp 1.2
M +1 -4 corecheck/tests/fdleak_dup.stderr.exp 1.2
M +1 -4 corecheck/tests/fdleak_dup2.stderr.exp 1.2
M +1 -4 corecheck/tests/fdleak_fcntl.stderr.exp 1.2
M +2 -8 corecheck/tests/fdleak_ipv4.stderr.exp 1.2
M +1 -4 corecheck/tests/fdleak_open.stderr.exp 1.2
M +1 -4 corecheck/tests/fdleak_pipe.stderr.exp 1.2
M +1 -4 corecheck/tests/fdleak_socketpair.stderr.exp 1.2
M +3 -0 coregrind/vg_syscalls.c 1.65
--- valgrind/corecheck/tests/fdleak_cmsg.stderr.exp #1.1:1.2
@@ -1,5 +1,5 @@
-FILE DESCRIPTORS: 8 open at exit.
+FILE DESCRIPTORS: 7 open at exit.
Open AF_UNIX socket .: /tmp/sock
at 0x........: __libc_accept (...libc...)
@@ -27,11 +27,8 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
-FILE DESCRIPTORS: 7 open at exit.
+FILE DESCRIPTORS: 6 open at exit.
Open file descriptor .: /tmp/data2
at 0x........: __libc_recvmsg (...libc...)
@@ -55,7 +52,4 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- valgrind/corecheck/tests/fdleak_creat.stderr.exp #1.1:1.2
@@ -1,5 +1,5 @@
-FILE DESCRIPTORS: 5 open at exit.
+FILE DESCRIPTORS: 4 open at exit.
Open file descriptor .: /tmp/file
@@ -17,7 +17,4 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- valgrind/corecheck/tests/fdleak_dup.stderr.exp #1.1:1.2
@@ -1,5 +1,5 @@
-FILE DESCRIPTORS: 6 open at exit.
+FILE DESCRIPTORS: 5 open at exit.
Open file descriptor .: /dev/null
at 0x........: __dup (in /...libc...)
@@ -21,7 +21,4 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- valgrind/corecheck/tests/fdleak_dup2.stderr.exp #1.1:1.2
@@ -1,5 +1,5 @@
-FILE DESCRIPTORS: 7 open at exit.
+FILE DESCRIPTORS: 6 open at exit.
Open file descriptor .: /dev/null
at 0x........: __dup2 (in /...libc...)
@@ -26,7 +26,4 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- valgrind/corecheck/tests/fdleak_fcntl.stderr.exp #1.1:1.2
@@ -1,5 +1,5 @@
-FILE DESCRIPTORS: 6 open at exit.
+FILE DESCRIPTORS: 5 open at exit.
Open file descriptor .: /dev/null
at 0x........: __libc_fcntl (...libc...)
@@ -20,7 +20,4 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- valgrind/corecheck/tests/fdleak_ipv4.stderr.exp #1.1:1.2
@@ -1,5 +1,5 @@
-FILE DESCRIPTORS: 6 open at exit.
+FILE DESCRIPTORS: 5 open at exit.
Open AF_INET socket 4: 127.0.0.1:... <-> 127.0.0.1:...
at 0x........: __libc_accept (...libc...)
@@ -19,11 +19,8 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
-FILE DESCRIPTORS: 5 open at exit.
+FILE DESCRIPTORS: 4 open at exit.
Open AF_INET socket 3: 127.0.0.1:... <-> 127.0.0.1:...
at 0x........: __socket (in /...libc...)
@@ -39,7 +36,4 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- valgrind/corecheck/tests/fdleak_open.stderr.exp #1.1:1.2
@@ -1,5 +1,5 @@
-FILE DESCRIPTORS: 5 open at exit.
+FILE DESCRIPTORS: 4 open at exit.
Open file descriptor .: /dev/null
at 0x........: __libc_open (...libc...)
@@ -16,7 +16,4 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- valgrind/corecheck/tests/fdleak_pipe.stderr.exp #1.1:1.2
@@ -1,5 +1,5 @@
-FILE DESCRIPTORS: 6 open at exit.
+FILE DESCRIPTORS: 5 open at exit.
Open file descriptor .:
at 0x........: __pipe (in /...libc...)
@@ -21,7 +21,4 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- valgrind/corecheck/tests/fdleak_socketpair.stderr.exp #1.1:1.2
@@ -1,5 +1,5 @@
-FILE DESCRIPTORS: 6 open at exit.
+FILE DESCRIPTORS: 5 open at exit.
Open AF_UNIX socket .: <unknown>
at 0x........: __socketpair (in /...libc...)
@@ -21,7 +21,4 @@
<inherited from parent>
-Open file descriptor .: .
- <inherited from parent>
-
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
--- valgrind/coregrind/vg_syscalls.c #1.64:1.65
@@ -333,4 +333,7 @@ void record_fd_open(Int tid, Int fd, cha
OpenFd *i;
+ if (fd > VG_MAX_FD)
+ return; /* Valgrind internal */
+
/* Check to see if this fd is already open. */
i = allocated_fds;
|
|
From: Julian S. <js...@ac...> - 2003-12-12 06:40:35
|
CVS commit by jseward:
Reword warning message emitted by fd_allowed() to make it a little clearer.
M +6 -4 vg_syscalls.c 1.64
--- valgrind/coregrind/vg_syscalls.c #1.63:1.64
@@ -784,8 +784,10 @@ static Bool fd_allowed(Int fd, const Cha
{
if (fd < 0 || fd > VG_MAX_FD || fd == VG_(clo_logfile_fd)) {
- VG_(message)(Vg_UserMsg, "Warning: bad use of file descriptor %d in syscall %s()",
+ VG_(message)(Vg_UserMsg,
+ "Warning: invalid file descriptor %d in syscall %s()",
fd, syscall);
if (fd == VG_(clo_logfile_fd))
- VG_(message)(Vg_UserMsg, " Use --logfile-fd=<number> to select an alternative "
+ VG_(message)(Vg_UserMsg,
+ " Use --logfile-fd=<number> to select an alternative "
"logfile fd.");
if (VG_(clo_verbosity) > 1) {
|