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
(33) |
3
(25) |
4
(22) |
5
(22) |
6
(21) |
7
(19) |
|
8
(29) |
9
(34) |
10
(29) |
11
(37) |
12
(36) |
13
(28) |
14
(25) |
|
15
(28) |
16
(23) |
17
(36) |
18
(21) |
19
(12) |
20
(14) |
21
(10) |
|
22
(7) |
23
(15) |
24
(41) |
25
(15) |
26
(9) |
27
(7) |
28
(6) |
|
29
(16) |
30
(24) |
31
(22) |
|
|
|
|
|
From: <sv...@va...> - 2005-05-02 10:39:20
|
Author: sewardj
Date: 2005-05-02 11:39:16 +0100 (Mon, 02 May 2005)
New Revision: 3593
Modified:
trunk/coregrind/m_stacktrace.c
trunk/coregrind/vg_symtab2.c
Log:
rm debug printing
Modified: trunk/coregrind/m_stacktrace.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_stacktrace.c 2005-05-02 10:33:44 UTC (rev 3592)
+++ trunk/coregrind/m_stacktrace.c 2005-05-02 10:39:16 UTC (rev 3593)
@@ -145,7 +145,7 @@
Addr sp =3D STACK_PTR(tst->arch);
Addr stack_highest_word =3D tst->client_stack_highest_word;
=20
-#ifdef __x86__
+#if defined(VGP_x86_linux)
/* Nasty little hack to deal with sysinfo syscalls - if libc is
using the sysinfo page for syscalls (the TLS version does), then
ip will always appear to be in that page when doing a syscall,
Modified: trunk/coregrind/vg_symtab2.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_symtab2.c 2005-05-02 10:33:44 UTC (rev 3592)
+++ trunk/coregrind/vg_symtab2.c 2005-05-02 10:39:16 UTC (rev 3593)
@@ -844,9 +844,12 @@
if (here_max > si->cfisi_maxaddr)
si->cfisi_maxaddr =3D here_max;
}
- VG_(printf)("%d entries, %p .. %p\n", si->cfisi_used,
- si->cfisi_minaddr, si->cfisi_maxaddr);
=20
+ if (VG_(clo_trace_cfi))
+ VG_(printf)("canonicaliseCfiSI: %d entries, %p .. %p\n",=20
+ si->cfisi_used,
+ si->cfisi_minaddr, si->cfisi_maxaddr);
+
/* Sort the cfisi array by base address. */
VG_(ssort)(si->cfisi, si->cfisi_used, sizeof(*si->cfisi), compare_Cfi=
SI);
=20
|
|
From: <sv...@va...> - 2005-05-02 10:33:47
|
Author: sewardj
Date: 2005-05-02 11:33:44 +0100 (Mon, 02 May 2005)
New Revision: 3592
Modified:
trunk/coregrind/m_debuglog.c
trunk/coregrind/vg_main.c
Log:
Initial cleanups based on target-specific defines.
Modified: trunk/coregrind/m_debuglog.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_debuglog.c 2005-05-02 10:28:42 UTC (rev 3591)
+++ trunk/coregrind/m_debuglog.c 2005-05-02 10:33:44 UTC (rev 3592)
@@ -55,9 +55,7 @@
=20
/* ----- x86-linux specifics ----- */
=20
-/* Arse! Really I want to test VG_PLATFORM, but this does not
- seem to be possible. */
-#if defined(__i386__) && defined(__linux__)
+#if defined(VGP_x86_linux)
=20
static UInt local_sys_write_stderr ( HChar* buf, Int n )
{
@@ -94,7 +92,7 @@
return __res;
}
=20
-#elif defined(__x86_64__) && defined(__linux__)
+#elif defined(VGP_amd64_linux)
=20
static UInt local_sys_write_stderr ( HChar* buf, Int n )
{
@@ -128,7 +126,7 @@
}
=20
#else
-#error Unknown VG_PLATFORM
+# error Unknown platform
#endif
=20
=20
Modified: trunk/coregrind/vg_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_main.c 2005-05-02 10:28:42 UTC (rev 3591)
+++ trunk/coregrind/vg_main.c 2005-05-02 10:33:44 UTC (rev 3592)
@@ -1081,7 +1081,7 @@
=20
// XXX: what architectures is this necessary for? x86 yes, PPC no, othe=
rs ?
// Perhaps a per-arch VGA_NEEDS_TRAMPOLINE constant is necessary?
-#if defined(__i386__) || defined(__amd64__)
+#if defined(VGP_x86_linux) || defined(VGP_amd64_linux)
/* --- trampoline page --- */
VG_(memcpy)( (void *)VG_(client_trampoline_code),
&VG_(trampoline_code_start), VG_(trampoline_code_length)=
);
@@ -1629,7 +1629,7 @@
"./configure --prefix=3D... or --libdir=3D...");
=20
// XXX: what architectures is this necessary for? x86 yes, PPC no, othe=
rs ?
-#ifdef __x86__
+#if defined(VGP_x86_linux)
{
UInt* auxp;
for (auxp =3D client_auxv; auxp[0] !=3D AT_NULL; auxp +=3D 2) {
@@ -2672,7 +2672,7 @@
VG_(parse_procselfmaps) ( build_segment_map_callback ); /* everythin=
g */
sp_at_startup___global_arg =3D 0;
=20
-#if defined(__i386__) || defined(__amd64__)
+#if defined(VGP_x86_linux) || defined(VGP_amd64_linux)
//--------------------------------------------------------------
// Protect client trampoline page (which is also sysinfo stuff)
// p: segment stuff [otherwise get seg faults...]
@@ -2681,12 +2681,13 @@
Segment *seg;
VG_(mprotect)( (void *)VG_(client_trampoline_code),
VG_(trampoline_code_length), VKI_PROT_READ|VKI_PROT_EXEC );
-#endif
+
/* Make sure this segment isn't treated as stack */
seg =3D VG_(find_segment)(VG_(client_trampoline_code));
if (seg)
seg->flags &=3D ~(SF_STACK | SF_GROWDOWN);
}
+#endif
=20
//=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
// Can use VG_(map)() after segments set up
|
|
From: <sv...@va...> - 2005-05-02 10:28:48
|
Author: tom
Date: 2005-05-02 11:28:42 +0100 (Mon, 02 May 2005)
New Revision: 3591
Modified:
trunk/coregrind/amd64-linux/core_platform.c
trunk/coregrind/amd64/helpers.S
trunk/coregrind/core.h
Log:
Move the replacement code for the amd64 vsyscalls into the trampoline pag=
e
so that it is copied into the client space. This avoid warnings from memc=
heck
because it doesn't think that code inside valgrind is valid.
Modified: trunk/coregrind/amd64/helpers.S
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/amd64/helpers.S 2005-05-02 10:25:34 UTC (rev 3590)
+++ trunk/coregrind/amd64/helpers.S 2005-05-02 10:28:42 UTC (rev 3591)
@@ -46,6 +46,8 @@
.global VG_(trampoline_code_length)
.global VG_(tramp_rt_sigreturn_offset)
.global VG_(tramp_syscall_offset)
+.global VG_(tramp_gettimeofday_offset)
+.global VG_(tramp_time_offset)
=09
VG_(trampoline_code_start):
rt_sigreturn_start:
@@ -58,6 +60,18 @@
.align 16
syscall_start:
/* unused on amd64 */
+
+ .align 16
+gettimeofday_start:
+ movq $__NR_gettimeofday, %rax
+ syscall
+ ret
+
+ .align 16
+time_start:
+ movq $__NR_time, %rax
+ syscall
+ ret
tramp_code_end:
=09
.data
@@ -67,6 +81,10 @@
.long rt_sigreturn_start - VG_(trampoline_code_start)
VG_(tramp_syscall_offset):
.long syscall_start - VG_(trampoline_code_start)
+VG_(tramp_gettimeofday_offset):
+ .long gettimeofday_start - VG_(trampoline_code_start)
+VG_(tramp_time_offset):
+ .long time_start - VG_(trampoline_code_start)
.text
=20
=20
Modified: trunk/coregrind/amd64-linux/core_platform.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/amd64-linux/core_platform.c 2005-05-02 10:25:34 UTC (=
rev 3590)
+++ trunk/coregrind/amd64-linux/core_platform.c 2005-05-02 10:28:42 UTC (=
rev 3591)
@@ -1,28 +1,10 @@
#include "core.h"
=20
-/* Rerouted entry point for __NR_gettimeofday */
-static void amd64_linux_rerouted__vgettimeofday(void)
-{
-asm(
-" movq $96, %rax\n"
-" syscall\n"
-);
-}
-
-/* Rerouted entry point for __NR_time */
-static void amd64_linux_rerouted__vtime(void)
-{
-asm(
-" movq $201, %rax\n"
-" syscall\n"
-);
-}
-
void VGP_(setup_redirects)(void)
{
/* Redirect vsyscalls to local versions */
VG_(add_redirect_addr_to_addr)(0xFFFFFFFFFF600000ULL,
- (Addr)amd64_linux_rerouted__vgettimeof=
day);
+ VG_(client_trampoline_code)+VG_(tramp_=
gettimeofday_offset));
VG_(add_redirect_addr_to_addr)(0xFFFFFFFFFF600400ULL,
- (Addr)amd64_linux_rerouted__vtime);
+ VG_(client_trampoline_code)+VG_(tramp_=
time_offset));
}
Modified: trunk/coregrind/core.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/core.h 2005-05-02 10:25:34 UTC (rev 3590)
+++ trunk/coregrind/core.h 2005-05-02 10:28:42 UTC (rev 3591)
@@ -1509,6 +1509,8 @@
extern const Int VG_(tramp_sigreturn_offset);
extern const Int VG_(tramp_rt_sigreturn_offset);
extern const Int VG_(tramp_syscall_offset);
+extern const Int VG_(tramp_gettimeofday_offset);
+extern const Int VG_(tramp_time_offset);
=20
/* ---------------------------------------------------------------------
Things relating to the used tool
|
|
From: <sv...@va...> - 2005-05-02 10:26:03
|
Author: sewardj
Date: 2005-05-02 11:25:34 +0100 (Mon, 02 May 2005)
New Revision: 3590
Modified:
trunk/Makefile.core-AM_CPPFLAGS.am
trunk/coregrind/Makefile.am
trunk/include/basic_types.h
Log:
Add macro definitions that make it possible to do cpu/os/both
ifdeffery in a sane way where it's absolutely unavoidable. When
building the core, eg on amd64-linux, the following preprocessor
symbols are defined:
VGA_amd64
VGO_linux
VGP_amd64_linux
etc on other platforms.
Also, include/basic_types.h now defines VG_WORDSIZE and this is what
should be used for ifdefs that need to know the host word size.
ifdefs based on the C compilers built-ins such as __amd64__ etc
are deprecated and will be done away with.
Modified: trunk/Makefile.core-AM_CPPFLAGS.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/Makefile.core-AM_CPPFLAGS.am 2005-05-02 09:43:44 UTC (rev 3589)
+++ trunk/Makefile.core-AM_CPPFLAGS.am 2005-05-02 10:25:34 UTC (rev 3590)
@@ -8,7 +8,10 @@
-I$(top_srcdir)/include/$(VG_ARCH) \
-I$(top_srcdir)/include/$(VG_OS) \
-I$(top_srcdir)/include/$(VG_PLATFORM) \
- -I@VEX_DIR@/pub
+ -I@VEX_DIR@/pub \
+ -DVGA_$(VG_ARCH)=3D1 \
+ -DVGO_$(VG_OS)=3D1 \
+ -DVGP_$(VG_ARCH)_$(VG_OS)=3D1
=20
AM_CPPFLAGS =3D $(add_includes)
AM_CCASFLAGS =3D $(add_includes) @ARCH_CORE_AM_CCASFLAGS@ -Wa,-gstabs
Modified: trunk/coregrind/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/Makefile.am 2005-05-02 09:43:44 UTC (rev 3589)
+++ trunk/coregrind/Makefile.am 2005-05-02 10:25:34 UTC (rev 3590)
@@ -13,8 +13,8 @@
m_sigframe m_aspacemgr demangle .
=20
AM_CPPFLAGS +=3D -DVG_LIBDIR=3D"\"$(valdir)"\" -I$(srcdir)/demangle \
- -DKICKSTART_BASE=3D@KICKSTART_BASE@ \
- -DVG_PLATFORM=3D"$(VG_PLATFORM)"
+ -DKICKSTART_BASE=3D@KICKSTART_BASE@
+
AM_CFLAGS =3D $(WERROR) -Wmissing-prototypes -Winline -Wall -Wshadow -O =
-g @ARCH_CORE_AM_CFLAGS@
AM_CFLAGS +=3D -fno-omit-frame-pointer
=20
Modified: trunk/include/basic_types.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/include/basic_types.h 2005-05-02 09:43:44 UTC (rev 3589)
+++ trunk/include/basic_types.h 2005-05-02 10:25:34 UTC (rev 3590)
@@ -57,6 +57,11 @@
=20
typedef Word OffT; // 32 64
=20
+
+/* This is going to be either 4 or 8. */
+#define VG_WORDSIZE VEX_HOST_WORDSIZE
+
+
/* ---------------------------------------------------------------------
non-builtin types
------------------------------------------------------------------ */
|
|
From: <sv...@va...> - 2005-05-02 09:43:48
|
Author: sewardj
Date: 2005-05-02 10:43:44 +0100 (Mon, 02 May 2005)
New Revision: 3589
Modified:
trunk/coregrind/vg_symtab2.c
Log:
Sort the CFI summary table and do lookups in it using binary search.
Modified: trunk/coregrind/vg_symtab2.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_symtab2.c 2005-05-02 00:36:27 UTC (rev 3588)
+++ trunk/coregrind/vg_symtab2.c 2005-05-02 09:43:44 UTC (rev 3589)
@@ -805,6 +805,26 @@
}
=20
=20
+/* Sort the call-frame-info table by starting address. Mash the table
+ around so as to establish the property that addresses are in order
+ and the ranges do not overlap. This facilitates using binary
+ search to map addresses to locations when we come to query the
+ table. =20
+
+ Also, set cfisi_minaddr and cfisi_maxaddr to be the min and max of
+ any of the address ranges contained in cfisi[0 .. cfisi_used-1], so
+ as to facilitate rapidly skipping this SegInfo when looking for an
+ address which falls outside that range.
+*/
+static Int compare_CfiSI(void *va, void *vb) {
+ CfiSI *a =3D (CfiSI*)va;
+ CfiSI *b =3D (CfiSI*)vb;
+
+ if (a->base < b->base) return -1;
+ if (a->base > b->base) return 1;
+ return 0;
+}
+
static
void canonicaliseCfiSI ( SegInfo* si )
{
@@ -826,6 +846,28 @@
}
VG_(printf)("%d entries, %p .. %p\n", si->cfisi_used,
si->cfisi_minaddr, si->cfisi_maxaddr);
+
+ /* Sort the cfisi array by base address. */
+ VG_(ssort)(si->cfisi, si->cfisi_used, sizeof(*si->cfisi), compare_Cfi=
SI);
+
+ /* Ensure relevant postconditions hold. */
+ for (i =3D 0; i < si->cfisi_used; i++) {
+ /* No zero-length ranges. */
+ vg_assert(si->cfisi[i].len > 0);
+ /* Makes sense w.r.t. summary address range */
+ vg_assert(si->cfisi[i].base >=3D si->cfisi_minaddr);
+ vg_assert(si->cfisi[i].base + si->cfisi[i].len - 1
+ <=3D si->cfisi_maxaddr);
+
+ if (i < si->cfisi_used - 1) {
+ /* In order. */
+ vg_assert(si->cfisi[i].base < si->cfisi[i+1].base);
+ /* No overlaps. */
+ vg_assert(si->cfisi[i].base + si->cfisi[i].len - 1
+ < si->cfisi[i+1].base);
+ }
+ }
+
}
=20
=20
@@ -2005,6 +2047,32 @@
VGP_POPCC(VgpSearchSyms);
}
=20
+
+/* Find a CFI-table index containing the specified pointer, or -1
+ if not found. Binary search. */
+
+static Int search_one_cfitab ( SegInfo* si, Addr ptr )
+{
+ Addr a_mid_lo, a_mid_hi;
+ Int mid, size,=20
+ lo =3D 0,=20
+ hi =3D si->cfisi_used-1;
+ while (True) {
+ /* current unsearched space is from lo to hi, inclusive. */
+ if (lo > hi) return -1; /* not found */
+ mid =3D (lo + hi) / 2;
+ a_mid_lo =3D si->cfisi[mid].base;
+ size =3D si->cfisi[mid].len;
+ a_mid_hi =3D a_mid_lo + size - 1;
+ vg_assert(a_mid_hi >=3D a_mid_lo);
+ if (ptr < a_mid_lo) { hi =3D mid-1; continue; }=20
+ if (ptr > a_mid_hi) { lo =3D mid+1; continue; }
+ vg_assert(ptr >=3D a_mid_lo && ptr <=3D a_mid_hi);
+ return mid;
+ }
+}
+
+
/* The whole point of this whole big deal: map a code address to a
plausible symbol name. Returns False if no idea; otherwise True.
Caller supplies buf and nbuf. If demangle is False, don't do
@@ -2367,22 +2435,14 @@
if (*ipP < si->cfisi_minaddr || *ipP > si->cfisi_maxaddr)
continue;
=20
- for (i =3D 0; i < si->cfisi_used; i++) {
-
- if (0) {static Int searches=3D0;
- searches++;
- if (searches % 10000000 =3D=3D 0) VG_(printf)("%d searches\n", search=
es);
- }
-
- if (si->cfisi[i].base <=3D *ipP
- && *ipP < si->cfisi[i].base+si->cfisi[i].len) {
- cfisi =3D &si->cfisi[i];
- goto postloop;
- }
+ i =3D search_one_cfitab( si, *ipP );
+ if (i !=3D -1) {
+ vg_assert(i >=3D 0 && i < si->cfisi_used);
+ cfisi =3D &si->cfisi[i];
+ break;
}
}
=20
- postloop:
if (cfisi =3D=3D NULL)
return False;
=20
|
|
From: <js...@ac...> - 2005-05-02 03:04:48
|
Nightly build on phoenix ( SuSE 9.1 ) started at 2005-05-02 03:50:00 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow insn_mmx: valgrind ./insn_mmx insn_mmxext: (skipping, prereq failed: ../../../tests/cputest x86-mmxext) insn_sse: valgrind ./insn_sse insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 201 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/pth_once (stderr) memcheck/tests/scalar (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/writev (stderr) corecheck/tests/fdleak_fcntl (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <to...@co...> - 2005-05-02 02:35:48
|
Nightly build on dunsmere ( athlon, Fedora Core 3 ) started at 2005-05-02 03:30:03 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 176 tests, 168 stderr failures, 5 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_fork (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/scalar_vfork (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/writev (stderr) memcheck/tests/x86/fpeflags (stderr) memcheck/tests/x86/pushfpopf (stderr) memcheck/tests/x86/tronical (stderr) memcheck/tests/zeropage (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) corecheck/tests/as_mmap (stderr) corecheck/tests/as_shm (stderr) corecheck/tests/erringfds (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_creat (stderr) corecheck/tests/fdleak_dup (stderr) corecheck/tests/fdleak_dup2 (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_open (stderr) corecheck/tests/fdleak_pipe (stderr) corecheck/tests/fdleak_socketpair (stderr) corecheck/tests/pth_atfork1 (stderr) corecheck/tests/pth_cancel1 (stderr) corecheck/tests/pth_cancel2 (stderr) corecheck/tests/pth_cvsimple (stderr) corecheck/tests/pth_empty (stderr) corecheck/tests/pth_exit (stderr) corecheck/tests/pth_exit2 (stderr) corecheck/tests/pth_mutexspeed (stderr) corecheck/tests/pth_once (stderr) corecheck/tests/pth_rwlock (stderr) corecheck/tests/res_search (stderr) corecheck/tests/sigkill (stderr) corecheck/tests/vgprintf (stderr) massif/tests/toobig-allocs (stderr) massif/tests/true_html (stderr) massif/tests/true_text (stderr) lackey/tests/true (stderr) none/tests/args (stderr) none/tests/async-sigs (stderr) none/tests/bitfield1 (stderr) none/tests/blockfault (stderr) none/tests/closeall (stderr) none/tests/cmdline2 (stdout) none/tests/coolo_sigaction (stderr) none/tests/coolo_strlen (stderr) none/tests/discard (stderr) none/tests/exec-sigmask (stderr) none/tests/execve (stderr) none/tests/faultstatus (stderr) none/tests/fcntl_setown (stderr) none/tests/floored (stderr) none/tests/fork (stderr) none/tests/fucomip (stderr) none/tests/gxx304 (stderr) none/tests/manythreads (stderr) none/tests/map_unaligned (stderr) none/tests/map_unmap (stderr) none/tests/mq (stderr) none/tests/mremap (stderr) none/tests/munmap_exe (stderr) none/tests/pending (stderr) none/tests/pth_blockedsig (stderr) none/tests/pth_stackalign (stderr) none/tests/rcrl (stderr) none/tests/readline1 (stderr) none/tests/resolv (stderr) none/tests/rlimit_nofile (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) none/tests/sem (stderr) none/tests/semlimit (stderr) none/tests/sha1_test (stderr) none/tests/shortpush (stderr) none/tests/shorts (stderr) none/tests/sigstackgrowth (stderr) none/tests/smc1 (stderr) none/tests/stackgrowth (stderr) none/tests/syscall-restart1 (stderr) none/tests/syscall-restart2 (stderr) none/tests/system (stderr) none/tests/thread-exits (stderr) none/tests/threaded-fork (stderr) none/tests/tls (stderr) none/tests/x86/badseg (stderr) none/tests/x86/bt_everything (stderr) none/tests/x86/bt_literal (stderr) none/tests/x86/cpuid (stderr) none/tests/x86/fpu_lazy_eflags (stderr) none/tests/x86/getseg (stderr) none/tests/x86/insn_basic (stderr) none/tests/x86/insn_cmov (stderr) none/tests/x86/insn_fpu (stderr) none/tests/x86/insn_mmx (stderr) none/tests/x86/insn_mmxext (stderr) none/tests/x86/insn_sse (stderr) none/tests/x86/int (stderr) none/tests/x86/pushpopseg (stderr) none/tests/x86/seg_override (stderr) none/tests/x86/sigcontext (stdout) none/tests/x86/sigcontext (stderr) none/tests/yield (stderr) |
|
From: Tom H. <th...@cy...> - 2005-05-02 02:30:58
|
Nightly build on audi ( i686, Red Hat 9 ) started at 2005-05-02 03:25:02 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 175 tests, 167 stderr failures, 4 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_fork (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/scalar_vfork (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/writev (stderr) memcheck/tests/x86/fpeflags (stderr) memcheck/tests/x86/pushfpopf (stderr) memcheck/tests/x86/tronical (stderr) memcheck/tests/zeropage (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) corecheck/tests/as_mmap (stderr) corecheck/tests/as_shm (stderr) corecheck/tests/erringfds (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_creat (stderr) corecheck/tests/fdleak_dup (stderr) corecheck/tests/fdleak_dup2 (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_open (stderr) corecheck/tests/fdleak_pipe (stderr) corecheck/tests/fdleak_socketpair (stderr) corecheck/tests/pth_atfork1 (stderr) corecheck/tests/pth_cancel1 (stderr) corecheck/tests/pth_cancel2 (stderr) corecheck/tests/pth_cvsimple (stderr) corecheck/tests/pth_empty (stderr) corecheck/tests/pth_exit (stderr) corecheck/tests/pth_exit2 (stderr) corecheck/tests/pth_mutexspeed (stderr) corecheck/tests/pth_once (stderr) corecheck/tests/pth_rwlock (stderr) corecheck/tests/res_search (stderr) corecheck/tests/sigkill (stderr) corecheck/tests/vgprintf (stderr) massif/tests/toobig-allocs (stderr) massif/tests/true_html (stderr) massif/tests/true_text (stderr) lackey/tests/true (stderr) none/tests/args (stderr) none/tests/async-sigs (stderr) none/tests/bitfield1 (stderr) none/tests/blockfault (stderr) none/tests/closeall (stderr) none/tests/cmdline2 (stdout) none/tests/coolo_sigaction (stderr) none/tests/coolo_strlen (stderr) none/tests/discard (stderr) none/tests/exec-sigmask (stderr) none/tests/execve (stderr) none/tests/faultstatus (stderr) none/tests/fcntl_setown (stderr) none/tests/floored (stderr) none/tests/fork (stderr) none/tests/fucomip (stderr) none/tests/gxx304 (stderr) none/tests/manythreads (stderr) none/tests/map_unaligned (stderr) none/tests/map_unmap (stderr) none/tests/mq (stderr) none/tests/mremap (stderr) none/tests/munmap_exe (stderr) none/tests/pending (stderr) none/tests/pth_blockedsig (stderr) none/tests/pth_stackalign (stderr) none/tests/rcrl (stderr) none/tests/readline1 (stderr) none/tests/resolv (stderr) none/tests/rlimit_nofile (stderr) none/tests/sem (stderr) none/tests/semlimit (stderr) none/tests/sha1_test (stderr) none/tests/shortpush (stderr) none/tests/shorts (stderr) none/tests/sigstackgrowth (stderr) none/tests/smc1 (stderr) none/tests/stackgrowth (stderr) none/tests/syscall-restart1 (stderr) none/tests/syscall-restart2 (stderr) none/tests/system (stderr) none/tests/thread-exits (stderr) none/tests/threaded-fork (stderr) none/tests/tls (stderr) none/tests/x86/badseg (stderr) none/tests/x86/bt_everything (stderr) none/tests/x86/bt_literal (stderr) none/tests/x86/cpuid (stderr) none/tests/x86/fpu_lazy_eflags (stderr) none/tests/x86/getseg (stderr) none/tests/x86/insn_basic (stderr) none/tests/x86/insn_cmov (stderr) none/tests/x86/insn_fpu (stderr) none/tests/x86/insn_mmx (stderr) none/tests/x86/insn_mmxext (stderr) none/tests/x86/insn_sse (stderr) none/tests/x86/int (stderr) none/tests/x86/pushpopseg (stderr) none/tests/x86/seg_override (stderr) none/tests/x86/sigcontext (stdout) none/tests/x86/sigcontext (stderr) none/tests/yield (stdout) none/tests/yield (stderr) |
|
From: Tom H. <to...@co...> - 2005-05-02 02:26:22
|
Nightly build on dunsmere ( Fedora Core 3 ) started at 2005-05-02 03:20:04 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow insn_mmx: valgrind ./insn_mmx insn_mmxext: valgrind ./insn_mmxext insn_sse: valgrind ./insn_sse insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int sh: line 1: 19099 Segmentation fault VALGRINDLIB=/tmp/valgrind.25841/valgrind/.in_place /tmp/valgrind.25841/valgrind/./coregrind/valgrind --command-line-only=yes --memcheck:leak-check=no --addrcheck:leak-check=no --tool=none ./int >int.stdout.out 2>int.stderr.out pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 207 tests, 4 stderr failures, 0 stdout failures ================= memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_supp (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-05-02 02:22:31
|
Nightly build on audi ( Red Hat 9 ) started at 2005-05-02 03:15:03 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow fpu_lazy_eflags: valgrind ./fpu_lazy_eflags insn_basic: valgrind ./insn_basic insn_cmov: valgrind ./insn_cmov insn_fpu: valgrind ./insn_fpu insn_mmx: valgrind ./insn_mmx insn_mmxext: valgrind ./insn_mmxext insn_sse: valgrind ./insn_sse insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 206 tests, 1 stderr failure, 0 stdout failures ================= memcheck/tests/scalar (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-05-02 02:21:14
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-05-02 03:15:02 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 174 tests, 166 stderr failures, 3 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_fork (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/scalar_vfork (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/writev (stderr) memcheck/tests/x86/fpeflags (stderr) memcheck/tests/x86/pushfpopf (stderr) memcheck/tests/x86/tronical (stderr) memcheck/tests/zeropage (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) corecheck/tests/as_mmap (stderr) corecheck/tests/as_shm (stderr) corecheck/tests/erringfds (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_creat (stderr) corecheck/tests/fdleak_dup (stderr) corecheck/tests/fdleak_dup2 (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_open (stderr) corecheck/tests/fdleak_pipe (stderr) corecheck/tests/fdleak_socketpair (stderr) corecheck/tests/pth_atfork1 (stderr) corecheck/tests/pth_cancel1 (stderr) corecheck/tests/pth_cancel2 (stderr) corecheck/tests/pth_cvsimple (stderr) corecheck/tests/pth_empty (stderr) corecheck/tests/pth_exit (stderr) corecheck/tests/pth_exit2 (stderr) corecheck/tests/pth_mutexspeed (stderr) corecheck/tests/pth_once (stderr) corecheck/tests/pth_rwlock (stderr) corecheck/tests/res_search (stderr) corecheck/tests/sigkill (stderr) corecheck/tests/vgprintf (stderr) massif/tests/toobig-allocs (stderr) massif/tests/true_html (stderr) massif/tests/true_text (stderr) lackey/tests/true (stderr) none/tests/args (stderr) none/tests/async-sigs (stderr) none/tests/bitfield1 (stderr) none/tests/blockfault (stderr) none/tests/closeall (stderr) none/tests/cmdline2 (stdout) none/tests/coolo_sigaction (stderr) none/tests/coolo_strlen (stderr) none/tests/discard (stderr) none/tests/exec-sigmask (stderr) none/tests/execve (stderr) none/tests/faultstatus (stderr) none/tests/fcntl_setown (stderr) none/tests/floored (stderr) none/tests/fork (stderr) none/tests/fucomip (stderr) none/tests/gxx304 (stderr) none/tests/manythreads (stderr) none/tests/map_unaligned (stderr) none/tests/map_unmap (stderr) none/tests/mq (stderr) none/tests/mremap (stderr) none/tests/munmap_exe (stderr) none/tests/pending (stderr) none/tests/pth_blockedsig (stderr) none/tests/pth_stackalign (stderr) none/tests/rcrl (stderr) none/tests/readline1 (stderr) none/tests/resolv (stderr) none/tests/rlimit_nofile (stderr) none/tests/sem (stderr) none/tests/semlimit (stderr) none/tests/sha1_test (stderr) none/tests/shortpush (stderr) none/tests/shorts (stderr) none/tests/sigstackgrowth (stderr) none/tests/smc1 (stderr) none/tests/stackgrowth (stderr) none/tests/syscall-restart1 (stderr) none/tests/syscall-restart2 (stderr) none/tests/system (stderr) none/tests/thread-exits (stderr) none/tests/threaded-fork (stderr) none/tests/x86/badseg (stderr) none/tests/x86/bt_everything (stderr) none/tests/x86/bt_literal (stderr) none/tests/x86/cpuid (stderr) none/tests/x86/fpu_lazy_eflags (stderr) none/tests/x86/getseg (stderr) none/tests/x86/insn_basic (stderr) none/tests/x86/insn_cmov (stderr) none/tests/x86/insn_fpu (stderr) none/tests/x86/insn_mmx (stderr) none/tests/x86/insn_mmxext (stderr) none/tests/x86/insn_sse (stderr) none/tests/x86/int (stderr) none/tests/x86/pushpopseg (stderr) none/tests/x86/seg_override (stderr) none/tests/x86/sigcontext (stdout) none/tests/x86/sigcontext (stderr) none/tests/yield (stderr) |
|
From: Tom H. <th...@cy...> - 2005-05-02 02:11:42
|
Nightly build on alvis ( Red Hat 7.3 ) started at 2005-05-02 03:05:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow == 205 tests, 17 stderr failures, 0 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/distinguished-writes (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/pth_once (stderr) memcheck/tests/scalar (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/vgtest_ume (stderr) addrcheck/tests/leak-0 (stderr) addrcheck/tests/leak-cycle (stderr) addrcheck/tests/leak-regroot (stderr) addrcheck/tests/leak-tree (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-05-02 02:04:58
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-05-02 03:00:04 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 156 tests, 148 stderr failures, 5 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_fork (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/scalar_vfork (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/writev (stderr) memcheck/tests/zeropage (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/dlclose (stderr) corecheck/tests/as_mmap (stderr) corecheck/tests/as_shm (stderr) corecheck/tests/erringfds (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_creat (stderr) corecheck/tests/fdleak_dup (stderr) corecheck/tests/fdleak_dup2 (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_open (stderr) corecheck/tests/fdleak_pipe (stderr) corecheck/tests/fdleak_socketpair (stderr) corecheck/tests/pth_atfork1 (stderr) corecheck/tests/pth_cancel1 (stderr) corecheck/tests/pth_cancel2 (stderr) corecheck/tests/pth_cvsimple (stderr) corecheck/tests/pth_empty (stderr) corecheck/tests/pth_exit (stderr) corecheck/tests/pth_exit2 (stderr) corecheck/tests/pth_mutexspeed (stderr) corecheck/tests/pth_once (stderr) corecheck/tests/pth_rwlock (stderr) corecheck/tests/res_search (stderr) corecheck/tests/sigkill (stderr) corecheck/tests/vgprintf (stderr) massif/tests/toobig-allocs (stderr) massif/tests/true_html (stderr) massif/tests/true_text (stderr) lackey/tests/true (stderr) none/tests/args (stderr) none/tests/async-sigs (stderr) none/tests/bitfield1 (stderr) none/tests/blockfault (stderr) none/tests/closeall (stderr) none/tests/cmdline2 (stdout) none/tests/coolo_sigaction (stderr) none/tests/coolo_strlen (stderr) none/tests/discard (stderr) none/tests/exec-sigmask (stderr) none/tests/execve (stderr) none/tests/faultstatus (stderr) none/tests/fcntl_setown (stderr) none/tests/floored (stderr) none/tests/fork (stderr) none/tests/fucomip (stderr) none/tests/gxx304 (stderr) none/tests/manythreads (stderr) none/tests/map_unaligned (stderr) none/tests/map_unmap (stderr) none/tests/mq (stderr) none/tests/mremap (stderr) none/tests/munmap_exe (stderr) none/tests/pending (stderr) none/tests/pth_blockedsig (stderr) none/tests/pth_stackalign (stderr) none/tests/rcrl (stderr) none/tests/readline1 (stderr) none/tests/resolv (stderr) none/tests/rlimit_nofile (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) none/tests/sem (stderr) none/tests/semlimit (stderr) none/tests/sha1_test (stderr) none/tests/shortpush (stderr) none/tests/shorts (stderr) none/tests/sigstackgrowth (stderr) none/tests/smc1 (stderr) none/tests/stackgrowth (stderr) none/tests/syscall-restart1 (stderr) none/tests/syscall-restart2 (stderr) none/tests/system (stderr) none/tests/thread-exits (stderr) none/tests/threaded-fork (stderr) none/tests/tls (stderr) none/tests/yield (stderr) |
|
From: <sv...@va...> - 2005-05-02 00:36:33
|
Author: sewardj
Date: 2005-05-02 01:36:27 +0100 (Mon, 02 May 2005)
New Revision: 3588
Modified:
trunk/coregrind/vg_symtab2.c
trunk/coregrind/vg_symtab2.h
Log:
Create and use summary address range limits for the CFI records in
each SegInfo. This reduces by about a factor of 8 the amount of work
needed to find each such record.
Modified: trunk/coregrind/vg_symtab2.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_symtab2.c 2005-05-02 00:34:19 UTC (rev 3587)
+++ trunk/coregrind/vg_symtab2.c 2005-05-02 00:36:27 UTC (rev 3588)
@@ -381,6 +381,8 @@
VG_(ppCfiSI)(cfisi);
}
=20
+ vg_assert(cfisi->len > 0 && cfisi->len < 1000000);
+
UInt new_sz, i;
CfiSI* new_tab;
=20
@@ -803,6 +805,30 @@
}
=20
=20
+static
+void canonicaliseCfiSI ( SegInfo* si )
+{
+ Int i;
+ const Addr minAddr =3D 0;
+ const Addr maxAddr =3D ~minAddr;
+
+ /* Set cfisi_minaddr and cfisi_maxaddr to summarise the entire
+ address range contained in cfisi[0 .. cfisi_used-1]. */
+ si->cfisi_minaddr =3D maxAddr;=20
+ si->cfisi_maxaddr =3D minAddr;
+ for (i =3D 0; i < si->cfisi_used; i++) {
+ Addr here_min =3D si->cfisi[i].base;
+ Addr here_max =3D si->cfisi[i].base + si->cfisi[i].len - 1;
+ if (here_min < si->cfisi_minaddr)
+ si->cfisi_minaddr =3D here_min;
+ if (here_max > si->cfisi_maxaddr)
+ si->cfisi_maxaddr =3D here_max;
+ }
+ VG_(printf)("%d entries, %p .. %p\n", si->cfisi_used,
+ si->cfisi_minaddr, si->cfisi_maxaddr);
+}
+
+
/*------------------------------------------------------------*/
/*--- Read info from a .so/exe file. ---*/
/*------------------------------------------------------------*/
@@ -1697,6 +1723,7 @@
si->scopetab_size =3D si->scopetab_used =3D 0;
si->cfisi =3D NULL;
si->cfisi_size =3D si->cfisi_used =3D 0;
+ si->cfisi_minaddr =3D si->cfisi_maxaddr =3D 0;
=20
si->seg =3D seg;
=20
@@ -1724,6 +1751,7 @@
canonicaliseSymtab ( si );
canonicaliseLoctab ( si );
canonicaliseScopetab ( si );
+ canonicaliseCfiSI ( si );
=20
/* do redirects */
VG_(resolve_seg_redirs)( si );
@@ -2328,10 +2356,24 @@
CfiSI* cfisi =3D NULL;
Addr cfa, ipHere, spHere, fpHere, ipPrev, spPrev, fpPrev;
=20
+
if (0) VG_(printf)("search for %p\n", *ipP);
=20
for (si =3D segInfo; si !=3D NULL; si =3D si->next) {
+ /* Use the per-SegInfo summary address ranges to skip
+ inapplicable SegInfos quickly. */
+ if (si->cfisi_used =3D=3D 0)
+ continue;
+ if (*ipP < si->cfisi_minaddr || *ipP > si->cfisi_maxaddr)
+ continue;
+
for (i =3D 0; i < si->cfisi_used; i++) {
+
+ if (0) {static Int searches=3D0;
+ searches++;
+ if (searches % 10000000 =3D=3D 0) VG_(printf)("%d searches\n", search=
es);
+ }
+
if (si->cfisi[i].base <=3D *ipP
&& *ipP < si->cfisi[i].base+si->cfisi[i].len) {
cfisi =3D &si->cfisi[i];
Modified: trunk/coregrind/vg_symtab2.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_symtab2.h 2005-05-02 00:34:19 UTC (rev 3587)
+++ trunk/coregrind/vg_symtab2.h 2005-05-02 00:36:27 UTC (rev 3588)
@@ -189,10 +189,14 @@
ScopeRange *scopetab;
UInt scopetab_used;
UInt scopetab_size;
- /* An expandable array of CFI summary info records. */
+ /* An expandable array of CFI summary info records. Also includes
+ summary address bounds, showing the min and max address covered
+ by any of the records, as an aid to fast searching. */
CfiSI* cfisi;
UInt cfisi_used;
UInt cfisi_size;
+ Addr cfisi_minaddr;
+ Addr cfisi_maxaddr;
=20
/* Expandable arrays of characters -- the string table.
Pointers into this are stable (the arrays are not reallocated)
|
|
From: <sv...@va...> - 2005-05-02 00:34:36
|
Author: sewardj
Date: 2005-05-02 01:34:19 +0100 (Mon, 02 May 2005)
New Revision: 3587
Modified:
trunk/coregrind/vg_dwarf.c
Log:
CFI: if summarisation fails, don't add the result to our collection of
CfiSI records.
Modified: trunk/coregrind/vg_dwarf.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_dwarf.c 2005-05-01 23:50:08 UTC (rev 3586)
+++ trunk/coregrind/vg_dwarf.c 2005-05-02 00:34:19 UTC (rev 3587)
@@ -1217,11 +1217,11 @@
=20
static Addr read_Addr ( UChar* data )
{
- if (sizeof(Addr) =3D=3D 4)
- return read_UInt(data);
- else if (sizeof(Addr) =3D=3D 8)
- return read_ULong(data);
- vg_assert(0);
+ if (sizeof(Addr) =3D=3D 4)
+ return read_UInt(data);
+ else if (sizeof(Addr) =3D=3D 8)
+ return read_ULong(data);
+ vg_assert(0);
}
=20
static UChar read_UChar ( UChar* data )
@@ -1550,8 +1550,8 @@
UWord fde_arange,
UnwindContext* restore_ctx )
{
- CfiSI cfisi;
-
+ CfiSI cfisi;
+ Bool summ_ok;
Int j, i =3D 0;
Addr loc_prev;
if (0) ppUnwindContext(ctx);
@@ -1566,16 +1566,24 @@
i +=3D j;
if (0) ppUnwindContext(ctx);
if (loc_prev !=3D ctx->loc && si) {
- summarise_context ( &cfisi, loc_prev, ctx );
- VG_(addCfiSI)(si, &cfisi);
+ summ_ok =3D summarise_context ( &cfisi, loc_prev, ctx );
+ if (summ_ok) {
+ VG_(addCfiSI)(si, &cfisi);
+ if (VG_(clo_trace_cfi))
+ VG_(ppCfiSI)(&cfisi);
+ }
}
}
if (ctx->loc < fde_arange) {
loc_prev =3D ctx->loc;
ctx->loc =3D fde_arange;
if (si) {
- summarise_context ( &cfisi, loc_prev, ctx );
- VG_(addCfiSI)(si, &cfisi);
+ summ_ok =3D summarise_context ( &cfisi, loc_prev, ctx );
+ if (summ_ok) {
+ VG_(addCfiSI)(si, &cfisi);
+ if (VG_(clo_trace_cfi))
+ VG_(ppCfiSI)(&cfisi);
+ }
}
}
return True;
|
|
From: <sv...@va...> - 2005-05-01 23:50:12
|
Author: sewardj
Date: 2005-05-02 00:50:08 +0100 (Mon, 02 May 2005)
New Revision: 3586
Modified:
trunk/coregrind/vg_dwarf.c
Log:
Fix various other CFI-frame-unwind bits and pieces.
Modified: trunk/coregrind/vg_dwarf.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_dwarf.c 2005-05-01 20:24:06 UTC (rev 3585)
+++ trunk/coregrind/vg_dwarf.c 2005-05-01 23:50:08 UTC (rev 3586)
@@ -1047,12 +1047,14 @@
=20
/* Summarise ctx into si, if possible. Returns True if successful.
This is taken to be just after ctx's loc advances; hence the
- summary is up to but not including the current loc.
+ summary is up to but not including the current loc. This works
+ on both x86 and amd64.
*/
static Bool summarise_context( /*OUT*/CfiSI* si,
Addr loc_start,
UnwindContext* ctx )
{
+ Int why =3D 0;
initCfiSI(si);
=20
/* How to generate the CFA */
@@ -1064,6 +1066,7 @@
si->cfa_sprel =3D False;
si->cfa_off =3D ctx->cfa_offset;
} else {
+ why =3D 1;
goto failed;
}
=20
@@ -1072,7 +1075,7 @@
case RR_Undef: _how =3D CFIR_UNKNOWN; _off =3D 0; break; =
\
case RR_Same: _how =3D CFIR_SAME; _off =3D 0; break; =
\
case RR_CFAoff: _how =3D CFIR_MEMCFAREL; _off =3D _ctxreg.coff; br=
eak; \
- default: goto failed; /* otherwise give up */ =
\
+ default: { why =3D 2; goto failed; } /* otherwise give up *=
/ \
}
=20
SUMMARISE_HOW(si->ra_how, si->ra_off, ctx->reg[RA_COL] );
@@ -1080,23 +1083,26 @@
=20
# undef SUMMARISE_HOW
=20
- /* on x86, it seems the old %esp value before the call is always
- the same as the CFA. Therefore ... */
+ /* on x86/amd64, it seems the old %{e,r}sp value before the call is
+ always the same as the CFA. Therefore ... */
si->sp_how =3D CFIR_CFAREL;
si->sp_off =3D 0;
=20
- /* also, gcc says "Undef" for %ebp when it is unchanged. So .. */
+ /* also, gcc says "Undef" for %{e,r}bp when it is unchanged. So
+ .. */
if (ctx->reg[FP_COL].tag =3D=3D RR_Undef)
si->fp_how =3D CFIR_SAME;
=20
/* knock out some obviously stupid cases */
- if (si->ra_how =3D=3D CFIR_SAME) goto failed;
+ if (si->ra_how =3D=3D CFIR_SAME)=20
+ { why =3D 3; goto failed; }
=20
/* bogus looking range? Note, we require that the difference is
representable in 32 bits. */
- if (loc_start >=3D ctx->loc) goto failed;
+ if (loc_start >=3D ctx->loc)=20
+ { why =3D 4; goto failed; }
if (ctx->loc - loc_start > 10000000 /* let's say */)
- goto failed;
+ { why =3D 5; goto failed; }
=20
si->base =3D loc_start + ctx->initloc;
si->len =3D (UInt)(ctx->loc - loc_start);
@@ -1105,7 +1111,7 @@
=20
failed:
VG_(printf)("summarise_context(loc_start =3D %p)"
- ": cannot summarise:\n ", loc_start);
+ ": cannot summarise(why=3D%d):\n ", loc_start, why);
ppUnwindContext(ctx);
return False;
}
@@ -1223,7 +1229,7 @@
return data[0];
}
=20
-static UChar default_address_encoding ()
+static UChar default_Addr_encoding ()
{
switch (sizeof(Addr)) {
case 4: return DW_EH_PE_udata4;
@@ -1232,7 +1238,7 @@
}
}
=20
-static UInt size_of_encoded_address ( UChar encoding )
+static UInt size_of_encoded_Addr ( UChar encoding )
{
if (encoding =3D=3D DW_EH_PE_omit)
return 0;
@@ -1246,8 +1252,8 @@
}
}
=20
-static Addr read_encoded_address ( UChar* data, UChar encoding, Int *nby=
tes,
- UChar* ehframe, Addr ehframe_addr )
+static Addr read_encoded_Addr ( UChar* data, UChar encoding, Int *nbytes=
,
+ UChar* ehframe, Addr ehframe_addr )
{
Addr base;
Int offset;
@@ -1287,7 +1293,7 @@
}
=20
if ((encoding & 0x07) =3D=3D 0x00)
- encoding |=3D default_address_encoding();
+ encoding |=3D default_Addr_encoding();
=20
switch (encoding & 0x0f) {
case DW_EH_PE_udata2:
@@ -1318,7 +1324,8 @@
Returns 0 if the instruction could not be executed.=20
*/
static Int run_CF_instruction ( /*MOD*/UnwindContext* ctx,=20
- UChar* instr )
+ UChar* instr,
+ UnwindContext* restore_ctx )
{
Int off, reg, nleb;
UInt delta;
@@ -1346,8 +1353,12 @@
}
=20
if (hi2 =3D=3D DW_CFA_restore) {
- vg_assert(0);
- VG_(printf)("DW_CFA_restore(%d)\n", (Int)lo6);
+ reg =3D (Int)lo6;
+ if (reg < 0 || reg >=3D N_CFI_REGS)=20
+ return 0; /* fail */
+ if (restore_ctx =3D=3D NULL)
+ return 0; /* fail */
+ ctx->reg[reg] =3D restore_ctx->reg[reg];
return i;
}
=20
@@ -1536,7 +1547,8 @@
static=20
Bool run_CF_instructions ( SegInfo* si,
UnwindContext* ctx, UChar* instrs, Int ilen,
- UWord fde_arange )
+ UWord fde_arange,
+ UnwindContext* restore_ctx )
{
CfiSI cfisi;
=20
@@ -1548,7 +1560,7 @@
loc_prev =3D ctx->loc;
if (i >=3D ilen) break;
if (0) (void)show_CF_instruction( &instrs[i] );
- j =3D run_CF_instruction( ctx, &instrs[i] );
+ j =3D run_CF_instruction( ctx, &instrs[i], restore_ctx );
if (j =3D=3D 0)
return False; /* execution failed */
i +=3D j;
@@ -1573,7 +1585,7 @@
void VG_(read_callframe_info_dwarf2)=20
( /*OUT*/SegInfo* si, UChar* ehframe, Int ehframe_sz, Addr ehfra=
me_addr )
{
- UnwindContext ctx;
+ UnwindContext ctx, restore_ctx;
Int nbytes;
HChar* how =3D NULL;
Int cie_codeaf =3D 0;
@@ -1586,7 +1598,7 @@
UChar* cie_instrs =3D NULL;
Int cie_ilen =3D 0;
Bool saw_z_augmentation =3D False;
- UChar address_encoding =3D default_address_encoding();
+ UChar address_encoding =3D default_Addr_encoding();
=20
if (VG_(clo_trace_cfi)) {
VG_(printf)("\n-----------------------------------------------\n")=
;
@@ -1698,7 +1710,8 @@
cie_augmentation++;
break;
case 'P':
- data +=3D size_of_encoded_address(address_encoding);
+ data +=3D size_of_encoded_Addr( read_UChar(data) );
+ data++;
cie_augmentation++;
break;
default:
@@ -1749,15 +1762,15 @@
}
=20
Addr fde_initloc=20
- =3D read_encoded_address(data, address_encoding,
- &nbytes, ehframe, ehframe_addr);
+ =3D read_encoded_Addr(data, address_encoding,
+ &nbytes, ehframe, ehframe_addr);
data +=3D nbytes;
if (VG_(clo_trace_cfi))=20
VG_(printf)("fde.initloc =3D %p\n", (void*)fde_initloc);
=20
UWord fde_arange=20
- =3D read_encoded_address(data, address_encoding & 0xf,
- &nbytes, ehframe, ehframe_addr);
+ =3D read_encoded_Addr(data, address_encoding & 0xf,
+ &nbytes, ehframe, ehframe_addr);
data +=3D nbytes;
if (VG_(clo_trace_cfi))=20
VG_(printf)("fde.arangec =3D %p\n", (void*)fde_arange);
@@ -1769,8 +1782,10 @@
=20
UChar* fde_instrs =3D data;
Int fde_ilen =3D ciefde_start + ciefde_len + sizeof(UInt) =
- data;
- if (VG_(clo_trace_cfi)) VG_(printf)("fde.instrs =3D %p\n",=
fde_instrs);
- if (VG_(clo_trace_cfi)) VG_(printf)("fde.ilen =3D %d\n",=
(Int)fde_ilen);
+ if (VG_(clo_trace_cfi)) {
+ VG_(printf)("fde.instrs =3D %p\n", fde_instrs);
+ VG_(printf)("fde.ilen =3D %d\n", (Int)fde_ilen);
+ }
=20
if (fde_ilen < 0 || fde_ilen > ehframe_sz) {
how =3D "implausible # fde insns";
@@ -1786,9 +1801,17 @@
ctx.code_a_f =3D cie_codeaf;
ctx.data_a_f =3D cie_dataaf;
ctx.initloc =3D fde_initloc;
- ok =3D run_CF_instructions(NULL, &ctx, cie_instrs, cie_ilen, 0);
- if (ok)
- ok =3D run_CF_instructions(si, &ctx, fde_instrs, fde_ilen, fde_aran=
ge);
+
+ initUnwindContext(&restore_ctx);
+
+ ok =3D run_CF_instructions(
+ NULL, &ctx, cie_instrs, cie_ilen, 0, NULL);
+ if (ok) {
+ restore_ctx =3D ctx;
+ ok =3D run_CF_instructions(
+ si, &ctx, fde_instrs, fde_ilen, fde_arange,=20
+ &restore_ctx);
+ }
}
}
=20
|
|
From: <sv...@va...> - 2005-05-01 20:24:12
|
Author: sewardj
Date: 2005-05-01 21:24:06 +0100 (Sun, 01 May 2005)
New Revision: 3585
Modified:
trunk/coregrind/vg_dwarf.c
Log:
* handle DW_CFA_offset_extended_sf
* make --trace-cfi=3Dyes work, to assist in debugging this
Modified: trunk/coregrind/vg_dwarf.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_dwarf.c 2005-05-01 15:14:01 UTC (rev 3584)
+++ trunk/coregrind/vg_dwarf.c 2005-05-01 20:24:06 UTC (rev 3585)
@@ -933,24 +933,25 @@
=20
enum dwarf_cfa_secondary_ops
{
- DW_CFA_nop =3D 0x00,
- DW_CFA_set_loc =3D 0x01,
- DW_CFA_advance_loc1 =3D 0x02,
- DW_CFA_advance_loc2 =3D 0x03,
- DW_CFA_advance_loc4 =3D 0x04,
- DW_CFA_offset_extended =3D 0x05,
- DW_CFA_restore_extended =3D 0x06,
- DW_CFA_undefined =3D 0x07,
- DW_CFA_same_value =3D 0x08,
- DW_CFA_register =3D 0x09,
- DW_CFA_remember_state =3D 0x0a,
- DW_CFA_restore_state =3D 0x0b,
- DW_CFA_def_cfa =3D 0x0c,
- DW_CFA_def_cfa_register =3D 0x0d,
- DW_CFA_def_cfa_offset =3D 0x0e,
- DW_CFA_lo_user =3D 0x1c,
- DW_CFA_GNU_args_size =3D 0x2e,
- DW_CFA_hi_user =3D 0x3f
+ DW_CFA_nop =3D 0x00,
+ DW_CFA_set_loc =3D 0x01,
+ DW_CFA_advance_loc1 =3D 0x02,
+ DW_CFA_advance_loc2 =3D 0x03,
+ DW_CFA_advance_loc4 =3D 0x04,
+ DW_CFA_offset_extended =3D 0x05,
+ DW_CFA_restore_extended =3D 0x06,
+ DW_CFA_undefined =3D 0x07,
+ DW_CFA_same_value =3D 0x08,
+ DW_CFA_register =3D 0x09,
+ DW_CFA_remember_state =3D 0x0a,
+ DW_CFA_restore_state =3D 0x0b,
+ DW_CFA_def_cfa =3D 0x0c,
+ DW_CFA_def_cfa_register =3D 0x0d,
+ DW_CFA_def_cfa_offset =3D 0x0e,
+ DW_CFA_offset_extended_sf =3D 0x11, /* DWARF3 only */
+ DW_CFA_lo_user =3D 0x1c,
+ DW_CFA_GNU_args_size =3D 0x2e,
+ DW_CFA_hi_user =3D 0x3f
};
=20
#define DW_EH_PE_absptr 0x00
@@ -1285,7 +1286,7 @@
vg_assert(0);
}
=20
- if ((encoding & 0x0f) =3D=3D 0x00)
+ if ((encoding & 0x07) =3D=3D 0x00)
encoding |=3D default_address_encoding();
=20
switch (encoding & 0x0f) {
@@ -1308,7 +1309,7 @@
*nbytes +=3D sizeof(Long);
return base + read_Long(data);
default:
- vg_assert(0);
+ vg_assert2(0, "read encoded address %d\n", encoding & 0x0f);
}
}
=20
@@ -1382,27 +1383,38 @@
ctx->cfa_offset =3D off;
break;
=20
- case DW_CFA_def_cfa_register: {
+ case DW_CFA_offset_extended_sf:
+ reg =3D read_leb128( &instr[i], &nleb, 0 );
+ i +=3D nleb;
+ off =3D read_leb128( &instr[i], &nleb, 1 );
+ i +=3D nleb;
+ if (reg < 0 || reg >=3D N_CFI_REGS)=20
+ return 0; /* fail */
+ ctx->reg[reg].tag =3D RR_CFAoff;
+ ctx->reg[reg].coff =3D off * ctx->data_a_f;
+ break; =20
+
+ case DW_CFA_def_cfa_register:
reg =3D read_leb128( &instr[i], &nleb, 0);
i +=3D nleb;
if (reg < 0 || reg >=3D N_CFI_REGS)=20
return 0; /* fail */
ctx->cfa_reg =3D reg;
break;
- }
- case DW_CFA_def_cfa_offset: {
+
+ case DW_CFA_def_cfa_offset:
off =3D read_leb128( &instr[i], &nleb, 0);
i +=3D nleb;
ctx->cfa_offset =3D off;
break;
- }
- case DW_CFA_GNU_args_size: {
+
+ case DW_CFA_GNU_args_size:
/* No idea what is supposed to happen. gdb-6.3 simply
ignores these. */
off =3D read_leb128( &instr[i], &nleb, 0 );
i +=3D nleb;
break;
- }
+
default:=20
VG_(printf)("Unhandled CFI instruction 0:%d\n", (Int)lo6);=20
i =3D 0;
@@ -1569,10 +1581,6 @@
Bool ok;
=20
UChar* current_cie =3D NULL;
-
- if (0&& ehframe_sz !=3D 240) return;
- if (0) VG_(printf)("\n\n\neh_frame %p %d\n", ehframe, ehframe_sz);
-
UChar* data =3D ehframe;
=20
UChar* cie_instrs =3D NULL;
@@ -1580,28 +1588,38 @@
Bool saw_z_augmentation =3D False;
UChar address_encoding =3D default_address_encoding();
=20
+ if (VG_(clo_trace_cfi)) {
+ VG_(printf)("\n-----------------------------------------------\n")=
;
+ VG_(printf)("CFI info: ehframe %p, ehframe_sz %d\n",
+ ehframe, ehframe_sz );
+ VG_(printf)("CFI info: name %s\n",
+ si->filename );
+ }
+
/* Loop over CIEs/FDEs */
=20
while (True) {
=20
- /* Are we done? */
- if (data =3D=3D ehframe + ehframe_sz)
- return;
+ /* Are we done? */
+ if (data =3D=3D ehframe + ehframe_sz)
+ return;
=20
- /* Overshot the end? Means something is wrong */
- if (data > ehframe + ehframe_sz) {
- how =3D "overran the end of .eh_frame";
- goto bad;
- }
+ /* Overshot the end? Means something is wrong */
+ if (data > ehframe + ehframe_sz) {
+ how =3D "overran the end of .eh_frame";
+ goto bad;
+ }
=20
- /* Ok, we must be looking at the start of a new CIE or FDE.
- Figure out which it is. */
+ /* Ok, we must be looking at the start of a new CIE or FDE.
+ Figure out which it is. */
=20
UChar* ciefde_start =3D data;
- if (0) VG_(printf)("\ncie/fde.start =3D %p\n", ciefde_start);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("\ncie/fde.start =3D %p\n", ciefde_start);
=20
UInt ciefde_len =3D read_UInt(data); data +=3D sizeof(UInt);
- if (0) VG_(printf)("cie/fde.length =3D %d\n", ciefde_len);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("cie/fde.length =3D %d\n", ciefde_len);
=20
/* Apparently, if the .length field is zero, we are at the end
of the sequence. ?? Neither the DWARF2 spec not the AMD64
@@ -1614,7 +1632,8 @@
}
=20
UInt cie_pointer =3D read_UInt(data); data +=3D sizeof(UInt);
- if (0) VG_(printf)("cie.pointer =3D %d\n", cie_pointer);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("cie.pointer =3D %d\n", cie_pointer);
=20
/* If cie_pointer is zero, we've got a CIE; else it's an FDE. */
if (cie_pointer =3D=3D 0) {
@@ -1623,12 +1642,21 @@
current_cie =3D ciefde_start + sizeof(UInt);
=20
/* --------- CIE --------- */
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("------ new CIE ------\n");
+
UChar cie_version =3D read_UChar(data); data +=3D sizeof(UChar)=
;
- if (0) VG_(printf)("cie.version =3D %d\n", (Int)cie_version=
);
+ if (VG_(clo_trace_cfi))
+ VG_(printf)("cie.version =3D %d\n", (Int)cie_version);
+ if (cie_version !=3D 1) {
+ how =3D "unexpected CIE version (not 1)";
+ goto bad;
+ }
=20
UChar* cie_augmentation =3D data;
data +=3D 1 + VG_(strlen)(cie_augmentation);
- if (0) VG_(printf)("cie.augment =3D \"%s\"\n", cie_augmenta=
tion);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("cie.augment =3D \"%s\"\n", cie_augmentation=
);
=20
if (cie_augmentation[0] =3D=3D 'e' && cie_augmentation[1] =3D=3D=
'h') {
data +=3D sizeof(Addr);
@@ -1637,14 +1665,17 @@
=20
cie_codeaf =3D read_leb128( data, &nbytes, 0);
data +=3D nbytes;
- if (0) VG_(printf)("cie.code_af =3D %d\n", cie_codeaf);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("cie.code_af =3D %d\n", cie_codeaf);
=20
cie_dataaf =3D read_leb128( data, &nbytes, 1);
data +=3D nbytes;
- if (0) VG_(printf)("cie.data_af =3D %d\n", cie_dataaf);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("cie.data_af =3D %d\n", cie_dataaf);
=20
UChar cie_rareg =3D read_UChar(data); data +=3D sizeof(UChar);
- if (0) VG_(printf)("cie.ra_reg =3D %d\n", (Int)cie_rareg);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("cie.ra_reg =3D %d\n", (Int)cie_rareg);
=20
saw_z_augmentation =3D *cie_augmentation =3D=3D 'z';
if (saw_z_augmentation) {
@@ -1682,12 +1713,15 @@
=20
done_augmentation:
=20
- if (0) VG_(printf)("cie.encoding =3D 0x%x\n", address_encodi=
ng);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("cie.encoding =3D 0x%x\n", address_encoding);
=20
cie_instrs =3D data;
cie_ilen =3D ciefde_start + ciefde_len + sizeof(UInt) - data;
- if (0) VG_(printf)("cie.instrs =3D %p\n", cie_instrs);
- if (0) VG_(printf)("cie.ilen =3D %d\n", (Int)cie_ilen);
+ if (VG_(clo_trace_cfi)) {
+ VG_(printf)("cie.instrs =3D %p\n", cie_instrs);
+ VG_(printf)("cie.ilen =3D %d\n", (Int)cie_ilen);
+ }
=20
if (cie_ilen < 0 || cie_ilen > ehframe_sz) {
how =3D "implausible # cie initial insns";
@@ -1696,7 +1730,8 @@
=20
data +=3D cie_ilen;
=20
- if (0) show_CF_instructions(cie_instrs, cie_ilen);
+ if (VG_(clo_trace_cfi))=20
+ show_CF_instructions(cie_instrs, cie_ilen);
=20
} else {
=20
@@ -1713,15 +1748,19 @@
goto bad;
}
=20
- Addr fde_initloc =3D read_encoded_address(data, address_encodin=
g,
- &nbytes, ehframe, ehfra=
me_addr);
+ Addr fde_initloc=20
+ =3D read_encoded_address(data, address_encoding,
+ &nbytes, ehframe, ehframe_addr);
data +=3D nbytes;
- if (0) VG_(printf)("fde.initloc =3D %p\n", (void*)fde_initl=
oc);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("fde.initloc =3D %p\n", (void*)fde_initloc);
=20
- UWord fde_arange =3D read_encoded_address(data, address_encodin=
g & 0xf,
- &nbytes, ehframe, ehfra=
me_addr);
+ UWord fde_arange=20
+ =3D read_encoded_address(data, address_encoding & 0xf,
+ &nbytes, ehframe, ehframe_addr);
data +=3D nbytes;
- if (0) VG_(printf)("fde.arangec =3D %p\n", (void*)fde_arang=
e);
+ if (VG_(clo_trace_cfi))=20
+ VG_(printf)("fde.arangec =3D %p\n", (void*)fde_arange);
=20
if (saw_z_augmentation) {
data +=3D read_leb128( data, &nbytes, 0);
@@ -1730,16 +1769,19 @@
=20
UChar* fde_instrs =3D data;
Int fde_ilen =3D ciefde_start + ciefde_len + sizeof(UInt) =
- data;
- if (0) VG_(printf)("fde.instrs =3D %p\n", fde_instrs);
- if (0) VG_(printf)("fde.ilen =3D %d\n", (Int)fde_ilen);
+ if (VG_(clo_trace_cfi)) VG_(printf)("fde.instrs =3D %p\n",=
fde_instrs);
+ if (VG_(clo_trace_cfi)) VG_(printf)("fde.ilen =3D %d\n",=
(Int)fde_ilen);
=20
if (fde_ilen < 0 || fde_ilen > ehframe_sz) {
- how =3D "implausible # fde initial insns";
+ how =3D "implausible # fde insns";
goto bad;
}
=20
data +=3D fde_ilen;
=20
+ if (VG_(clo_trace_cfi))=20
+ show_CF_instructions(fde_instrs, fde_ilen);
+
initUnwindContext(&ctx);
ctx.code_a_f =3D cie_codeaf;
ctx.data_a_f =3D cie_dataaf;
|
|
From: <sv...@va...> - 2005-05-01 15:14:08
|
Author: tom
Date: 2005-05-01 16:14:01 +0100 (Sun, 01 May 2005)
New Revision: 3584
Modified:
trunk/coregrind/vg_dwarf.c
trunk/coregrind/vg_symtab2.c
trunk/coregrind/vg_symtab2.h
Log:
Get DWARF CFI handling going on amd64 systems. This also required getting
handling of augmentation strings right.
Modified: trunk/coregrind/vg_dwarf.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_dwarf.c 2005-05-01 08:55:38 UTC (rev 3583)
+++ trunk/coregrind/vg_dwarf.c 2005-05-01 15:14:01 UTC (rev 3584)
@@ -909,6 +909,15 @@
=20
8 is the return address (EIP) */
=20
+#if defined(__x86__)
+#define FP_COL 5
+#define SP_COL 4
+#define RA_COL 8
+#elif defined(__amd64__)
+#define FP_COL 6
+#define SP_COL 7
+#define RA_COL 16
+#endif
=20
/* the number of regs we are prepared to unwind */
#define N_CFI_REGS 20
@@ -944,7 +953,28 @@
DW_CFA_hi_user =3D 0x3f
};
=20
+#define DW_EH_PE_absptr 0x00
+#define DW_EH_PE_omit 0xff
=20
+#define DW_EH_PE_uleb128 0x01
+#define DW_EH_PE_udata2 0x02
+#define DW_EH_PE_udata4 0x03
+#define DW_EH_PE_udata8 0x04
+#define DW_EH_PE_sleb128 0x09
+#define DW_EH_PE_sdata2 0x0A
+#define DW_EH_PE_sdata4 0x0B
+#define DW_EH_PE_sdata8 0x0C
+#define DW_EH_PE_signed 0x08
+
+#define DW_EH_PE_pcrel 0x10
+#define DW_EH_PE_textrel 0x20
+#define DW_EH_PE_datarel 0x30
+#define DW_EH_PE_funcrel 0x40
+#define DW_EH_PE_aligned 0x50
+
+#define DW_EH_PE_indirect 0x80
+
+
typedef
struct {
enum { RR_Undef, RR_Same, RR_CFAoff, RR_Reg, RR_Arch } tag;
@@ -1018,18 +1048,18 @@
This is taken to be just after ctx's loc advances; hence the
summary is up to but not including the current loc.
*/
-static Bool summarise_context_x86 ( /*OUT*/CfiSI* si,
- Addr loc_start,
- UnwindContext* ctx )
+static Bool summarise_context( /*OUT*/CfiSI* si,
+ Addr loc_start,
+ UnwindContext* ctx )
{
initCfiSI(si);
=20
/* How to generate the CFA */
- if (ctx->cfa_reg =3D=3D 4 /* ESP */) {
+ if (ctx->cfa_reg =3D=3D SP_COL) {
si->cfa_sprel =3D True;
si->cfa_off =3D ctx->cfa_offset;
} else
- if (ctx->cfa_reg =3D=3D 5 /* EBP */) {
+ if (ctx->cfa_reg =3D=3D FP_COL) {
si->cfa_sprel =3D False;
si->cfa_off =3D ctx->cfa_offset;
} else {
@@ -1044,8 +1074,8 @@
default: goto failed; /* otherwise give up */ =
\
}
=20
- SUMMARISE_HOW(si->ra_how, si->ra_off, ctx->reg[8 /* Return address */=
] );
- SUMMARISE_HOW(si->fp_how, si->fp_off, ctx->reg[5 /* EBP */] );
+ SUMMARISE_HOW(si->ra_how, si->ra_off, ctx->reg[RA_COL] );
+ SUMMARISE_HOW(si->fp_how, si->fp_off, ctx->reg[FP_COL] );
=20
# undef SUMMARISE_HOW
=20
@@ -1055,7 +1085,7 @@
si->sp_off =3D 0;
=20
/* also, gcc says "Undef" for %ebp when it is unchanged. So .. */
- if (ctx->reg[5 /* EBP */].tag =3D=3D RR_Undef)
+ if (ctx->reg[FP_COL].tag =3D=3D RR_Undef)
si->fp_how =3D CFIR_SAME;
=20
/* knock out some obviously stupid cases */
@@ -1073,30 +1103,30 @@
return True;
=20
failed:
- VG_(printf)("summarise_context_x86(loc_start =3D %p)"
+ VG_(printf)("summarise_context(loc_start =3D %p)"
": cannot summarise:\n ", loc_start);
ppUnwindContext(ctx);
return False;
}
=20
-static void ppUnwindContext_x86_summary ( UnwindContext* ctx )
+static void ppUnwindContext_summary ( UnwindContext* ctx )
{
VG_(printf)("0x%llx-1: ", (ULong)ctx->loc);
=20
- if (ctx->cfa_reg =3D=3D 4 /* ESP */) {
- VG_(printf)("SP/CFA=3D%d+%%esp ", ctx->cfa_offset);
+ if (ctx->cfa_reg =3D=3D SP_COL) {
+ VG_(printf)("SP/CFA=3D%d+SP ", ctx->cfa_offset);
} else
- if (ctx->cfa_reg =3D=3D 5 /* EBP */) {
- VG_(printf)("SP/CFA=3D%d+%%ebp ", ctx->cfa_offset);
+ if (ctx->cfa_reg =3D=3D FP_COL) {
+ VG_(printf)("SP/CFA=3D%d+FP ", ctx->cfa_offset);
} else {
VG_(printf)("SP/CFA=3Dunknown ", ctx->cfa_offset);
}
=20
VG_(printf)("RA=3D");
- ppRegRule( &ctx->reg[8 /* Return address */] );
+ ppRegRule( &ctx->reg[RA_COL] );
=20
VG_(printf)("FP=3D");
- ppRegRule( &ctx->reg[5 /* EBP */] );
+ ppRegRule( &ctx->reg[FP_COL] );
VG_(printf)("\n");
}
=20
@@ -1108,6 +1138,41 @@
}
=20
=20
+static Short read_Short ( UChar* data )
+{
+ vg_assert(host_is_little_endian());
+ Short r =3D 0;
+ r =3D data[0]=20
+ | ( ((UInt)data[1]) << 8 );
+ return r;
+}
+
+static Int read_Int ( UChar* data )
+{
+ vg_assert(host_is_little_endian());
+ Int r =3D 0;
+ r =3D data[0]=20
+ | ( ((UInt)data[1]) << 8 )=20
+ | ( ((UInt)data[2]) << 16 )=20
+ | ( ((UInt)data[3]) << 24 );
+ return r;
+}
+
+static Long read_Long ( UChar* data )
+{
+ vg_assert(host_is_little_endian());
+ Long r =3D 0;
+ r =3D data[0]=20
+ | ( ((ULong)data[1]) << 8 )=20
+ | ( ((ULong)data[2]) << 16 )=20
+ | ( ((ULong)data[3]) << 24 )
+ | ( ((ULong)data[4]) << 32 )=20
+ | ( ((ULong)data[5]) << 40 )=20
+ | ( ((ULong)data[6]) << 48 )=20
+ | ( ((ULong)data[7]) << 56 );
+ return r;
+}
+
static UShort read_UShort ( UChar* data )
{
vg_assert(host_is_little_endian());
@@ -1128,10 +1193,27 @@
return r;
}
=20
+static ULong read_ULong ( UChar* data )
+{
+ vg_assert(host_is_little_endian());
+ ULong r =3D 0;
+ r =3D data[0]=20
+ | ( ((ULong)data[1]) << 8 )=20
+ | ( ((ULong)data[2]) << 16 )=20
+ | ( ((ULong)data[3]) << 24 )
+ | ( ((ULong)data[4]) << 32 )=20
+ | ( ((ULong)data[5]) << 40 )=20
+ | ( ((ULong)data[6]) << 48 )=20
+ | ( ((ULong)data[7]) << 56 );
+ return r;
+}
+
static Addr read_Addr ( UChar* data )
{
if (sizeof(Addr) =3D=3D 4)
return read_UInt(data);
+ else if (sizeof(Addr) =3D=3D 8)
+ return read_ULong(data);
vg_assert(0);
}
=20
@@ -1140,7 +1222,97 @@
return data[0];
}
=20
+static UChar default_address_encoding ()
+{
+ switch (sizeof(Addr)) {
+ case 4: return DW_EH_PE_udata4;
+ case 8: return DW_EH_PE_udata8;
+ default: vg_assert(0);
+ }
+}
=20
+static UInt size_of_encoded_address ( UChar encoding )
+{
+ if (encoding =3D=3D DW_EH_PE_omit)
+ return 0;
+
+ switch (encoding & 0x07) {
+ case DW_EH_PE_absptr: return sizeof(Addr);
+ case DW_EH_PE_udata2: return sizeof(UShort);
+ case DW_EH_PE_udata4: return sizeof(UInt);
+ case DW_EH_PE_udata8: return sizeof(ULong);
+ default: vg_assert(0);
+ }
+}
+
+static Addr read_encoded_address ( UChar* data, UChar encoding, Int *nby=
tes,
+ UChar* ehframe, Addr ehframe_addr )
+{
+ Addr base;
+ Int offset;
+
+ vg_assert((encoding & DW_EH_PE_indirect) =3D=3D 0);
+
+ *nbytes =3D 0;
+
+ switch (encoding & 0x70) {
+ case DW_EH_PE_absptr:
+ base =3D 0;
+ break;
+ case DW_EH_PE_pcrel:
+ base =3D ehframe_addr + ( data - ehframe );
+ break;
+ case DW_EH_PE_datarel:
+ vg_assert(0);
+ base =3D /* data base address */ 0;
+ break;
+ case DW_EH_PE_textrel:
+ vg_assert(0);
+ base =3D /* text base address */ 0;
+ break;
+ case DW_EH_PE_funcrel:
+ base =3D 0;
+ break;
+ case DW_EH_PE_aligned:
+ base =3D 0;
+ offset =3D data - ehframe;
+ if ((offset % sizeof(Addr)) !=3D 0) {
+ *nbytes =3D sizeof(Addr) - (offset % sizeof(Addr));
+ data +=3D *nbytes;
+ }
+ break;
+ default:
+ vg_assert(0);
+ }
+
+ if ((encoding & 0x0f) =3D=3D 0x00)
+ encoding |=3D default_address_encoding();
+
+ switch (encoding & 0x0f) {
+ case DW_EH_PE_udata2:
+ *nbytes +=3D sizeof(UShort);
+ return base + read_UShort(data);
+ case DW_EH_PE_udata4:
+ *nbytes +=3D sizeof(UInt);
+ return base + read_UInt(data);
+ case DW_EH_PE_udata8:
+ *nbytes +=3D sizeof(ULong);
+ return base + read_ULong(data);
+ case DW_EH_PE_sdata2:
+ *nbytes +=3D sizeof(Short);
+ return base + read_Short(data);
+ case DW_EH_PE_sdata4:
+ *nbytes +=3D sizeof(Int);
+ return base + read_Int(data);
+ case DW_EH_PE_sdata8:
+ *nbytes +=3D sizeof(Long);
+ return base + read_Long(data);
+ default:
+ vg_assert(0);
+ }
+}
+
+
/* Run a CFI instruction, and also return its length.
Returns 0 if the instruction could not be executed.=20
*/
@@ -1183,11 +1355,21 @@
switch (lo6) {
case DW_CFA_nop:=20
break;
+ case DW_CFA_set_loc:
+ ctx->loc =3D read_Addr(&instr[i]) - ctx->initloc; i+=3D sizeof(=
Addr);
+ break;
case DW_CFA_advance_loc1:
- vg_assert(0);
delta =3D (UInt)read_UChar(&instr[i]); i+=3D sizeof(UChar);
- VG_(printf)("DW_CFA_advance_loc1(%d)\n", delta);=20
+ ctx->loc +=3D delta;
break;
+ case DW_CFA_advance_loc2:
+ delta =3D (UInt)read_UShort(&instr[i]); i+=3D sizeof(UShort);
+ ctx->loc +=3D delta;
+ break;
+ case DW_CFA_advance_loc4:
+ delta =3D (UInt)read_UInt(&instr[i]); i+=3D sizeof(UInt);
+ ctx->loc +=3D delta;
+ break;
=20
case DW_CFA_def_cfa:
reg =3D read_leb128( &instr[i], &nleb, 0 );
@@ -1222,8 +1404,8 @@
break;
}
default:=20
- vg_assert(0);
- VG_(printf)("0:%d\n", (Int)lo6);=20
+ VG_(printf)("Unhandled CFI instruction 0:%d\n", (Int)lo6);=20
+ i =3D 0;
break;
}
=20
@@ -1236,11 +1418,17 @@
{
UInt delta;
Int off, reg, nleb;
+ Addr loc;
Int i =3D 0;
UChar hi2 =3D (instr[i] >> 6) & 3;
UChar lo6 =3D instr[i] & 0x3F;
i++;
=20
+ if (0) VG_(printf)("raw:%x/%x:%x:%x:%x:%x:%x:%x:%x:%x\n",
+ hi2, lo6,
+ instr[i+0], instr[i+1], instr[i+2], instr[i+3],
+ instr[i+4], instr[i+5], instr[i+6], instr[i+7] );
+ =20
if (hi2 =3D=3D DW_CFA_advance_loc) {
VG_(printf)("DW_CFA_advance_loc(%d)\n", (Int)lo6);
return i;
@@ -1266,11 +1454,26 @@
VG_(printf)("DW_CFA_nop\n");=20
break;
=20
+ case DW_CFA_set_loc:
+ loc =3D read_Addr(&instr[i]); i+=3D sizeof(Addr);
+ VG_(printf)("DW_CFA_set_loc(%p)\n", loc);=20
+ break;
+
case DW_CFA_advance_loc1:
delta =3D (UInt)read_UChar(&instr[i]); i+=3D sizeof(UChar);
VG_(printf)("DW_CFA_advance_loc1(%d)\n", delta);=20
break;
=20
+ case DW_CFA_advance_loc2:
+ delta =3D (UInt)read_UShort(&instr[i]); i+=3D sizeof(UShort);
+ VG_(printf)("DW_CFA_advance_loc2(%d)\n", delta);=20
+ break;
+
+ case DW_CFA_advance_loc4:
+ delta =3D (UInt)read_UInt(&instr[i]); i+=3D sizeof(UInt);
+ VG_(printf)("DW_CFA_advance_loc4(%d)\n", delta);=20
+ break;
+
case DW_CFA_def_cfa:
reg =3D read_leb128( &instr[i], &nleb, 0 );
i +=3D nleb;
@@ -1328,7 +1531,7 @@
Int j, i =3D 0;
Addr loc_prev;
if (0) ppUnwindContext(ctx);
- if (0) ppUnwindContext_x86_summary(ctx);
+ if (0) ppUnwindContext_summary(ctx);
while (True) {
loc_prev =3D ctx->loc;
if (i >=3D ilen) break;
@@ -1339,7 +1542,7 @@
i +=3D j;
if (0) ppUnwindContext(ctx);
if (loc_prev !=3D ctx->loc && si) {
- summarise_context_x86 ( &cfisi, loc_prev, ctx );
+ summarise_context ( &cfisi, loc_prev, ctx );
VG_(addCfiSI)(si, &cfisi);
}
}
@@ -1347,7 +1550,7 @@
loc_prev =3D ctx->loc;
ctx->loc =3D fde_arange;
if (si) {
- summarise_context_x86 ( &cfisi, loc_prev, ctx );
+ summarise_context ( &cfisi, loc_prev, ctx );
VG_(addCfiSI)(si, &cfisi);
}
}
@@ -1356,7 +1559,7 @@
=20
=20
void VG_(read_callframe_info_dwarf2)=20
- ( /*OUT*/SegInfo* si, UChar* ehframe, Int ehframe_sz )
+ ( /*OUT*/SegInfo* si, UChar* ehframe, Int ehframe_sz, Addr ehfra=
me_addr )
{
UnwindContext ctx;
Int nbytes;
@@ -1374,6 +1577,8 @@
=20
UChar* cie_instrs =3D NULL;
Int cie_ilen =3D 0;
+ Bool saw_z_augmentation =3D False;
+ UChar address_encoding =3D default_address_encoding();
=20
/* Loop over CIEs/FDEs */
=20
@@ -1425,9 +1630,9 @@
data +=3D 1 + VG_(strlen)(cie_augmentation);
if (0) VG_(printf)("cie.augment =3D \"%s\"\n", cie_augmenta=
tion);
=20
- if (0 !=3D VG_(strcmp)(cie_augmentation, "")) {
- how =3D "non-NULL cie.augmentation";
- goto bad;
+ if (cie_augmentation[0] =3D=3D 'e' && cie_augmentation[1] =3D=3D=
'h') {
+ data +=3D sizeof(Addr);
+ cie_augmentation +=3D 2;
}
=20
cie_codeaf =3D read_leb128( data, &nbytes, 0);
@@ -1441,9 +1646,47 @@
UChar cie_rareg =3D read_UChar(data); data +=3D sizeof(UChar);
if (0) VG_(printf)("cie.ra_reg =3D %d\n", (Int)cie_rareg);
=20
+ saw_z_augmentation =3D *cie_augmentation =3D=3D 'z';
+ if (saw_z_augmentation) {
+ UInt length =3D read_leb128( data, &nbytes, 0);
+ data +=3D nbytes;
+ cie_instrs =3D data + length;
+ cie_augmentation++;
+ } else {
+ cie_instrs =3D NULL;
+ }
+
+ while (*cie_augmentation) {
+ switch (*cie_augmentation) {
+ case 'L':
+ data++;
+ cie_augmentation++;
+ break;
+ case 'R':
+ address_encoding =3D read_UChar(data); data +=3D sizeo=
f(UChar);
+ cie_augmentation++;
+ break;
+ case 'P':
+ data +=3D size_of_encoded_address(address_encoding);
+ cie_augmentation++;
+ break;
+ default:
+ if (cie_instrs =3D=3D NULL) {
+ how =3D "unhandled cie.augmentation";
+ goto bad;
+ }
+ data =3D cie_instrs;
+ goto done_augmentation;
+ }
+ }
+
+ done_augmentation:
+
+ if (0) VG_(printf)("cie.encoding =3D 0x%x\n", address_encodi=
ng);
+
cie_instrs =3D data;
cie_ilen =3D ciefde_start + ciefde_len + sizeof(UInt) - data;
- if (0) VG_(printf)("cie.instrs =3D %p\n", (Int)cie_instrs)=
;
+ if (0) VG_(printf)("cie.instrs =3D %p\n", cie_instrs);
if (0) VG_(printf)("cie.ilen =3D %d\n", (Int)cie_ilen);
=20
if (cie_ilen < 0 || cie_ilen > ehframe_sz) {
@@ -1470,15 +1713,24 @@
goto bad;
}
=20
- Addr fde_initloc =3D read_Addr(data); data +=3D sizeof(Addr);
+ Addr fde_initloc =3D read_encoded_address(data, address_encodin=
g,
+ &nbytes, ehframe, ehfra=
me_addr);
+ data +=3D nbytes;
if (0) VG_(printf)("fde.initloc =3D %p\n", (void*)fde_initl=
oc);
=20
- UWord fde_arange =3D read_Addr(data); data +=3D sizeof(Addr);
+ UWord fde_arange =3D read_encoded_address(data, address_encodin=
g & 0xf,
+ &nbytes, ehframe, ehfra=
me_addr);
+ data +=3D nbytes;
if (0) VG_(printf)("fde.arangec =3D %p\n", (void*)fde_arang=
e);
=20
+ if (saw_z_augmentation) {
+ data +=3D read_leb128( data, &nbytes, 0);
+ data +=3D nbytes;
+ }
+
UChar* fde_instrs =3D data;
Int fde_ilen =3D ciefde_start + ciefde_len + sizeof(UInt) =
- data;
- if (0) VG_(printf)("fde.instrs =3D %p\n", (Int)fde_instrs)=
;
+ if (0) VG_(printf)("fde.instrs =3D %p\n", fde_instrs);
if (0) VG_(printf)("fde.ilen =3D %d\n", (Int)fde_ilen);
=20
if (fde_ilen < 0 || fde_ilen > ehframe_sz) {
Modified: trunk/coregrind/vg_symtab2.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_symtab2.c 2005-05-01 08:55:38 UTC (rev 3583)
+++ trunk/coregrind/vg_symtab2.c 2005-05-01 15:14:01 UTC (rev 3584)
@@ -1505,11 +1505,15 @@
UInt dwarf1l_sz =3D 0;
UInt ehframe_sz =3D 0;
=20
+ /* Section virtual addresses */
+ Addr dummy_addr =3D 0;
+ Addr ehframe_addr =3D 0;
+
Bool has_debuginfo =3D False;
=20
/* Find all interesting sections */
for (i =3D 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, sec_addr, in_exec, ty=
pe) \
if (0 =3D=3D VG_(strcmp)(sec_name, sh_strtab + shdr[i].sh_name)=
) { \
if (0 !=3D sec_data) \
VG_(core_panic)("repeated section!\n"); \
@@ -1518,6 +1522,7 @@
else \
sec_data =3D (type)(oimage + shdr[i].sh_offset); \
sec_size =3D shdr[i].sh_size; \
+ sec_addr =3D si->offset + shdr[i].sh_addr; \
TRACE_SYMTAB( "%18s: %p .. %p\n", \
sec_name, sec_data, sec_data + sec_size - 1); =
\
if ( shdr[i].sh_offset + sec_size > n_oimage ) { \
@@ -1528,22 +1533,22 @@
=20
/* Nb: must find where .got and .plt sections will be in the
* executable image, not in the object image transiently loaded=
. */
- FIND(".dynsym", o_dynsym, o_dynsym_sz, 0, ElfX=
X_Sym*)
- else FIND(".dynstr", o_dynstr, o_dynstr_sz, 0, UCha=
r*)
- else FIND(".symtab", o_symtab, o_symtab_sz, 0, ElfX=
X_Sym*)
- else FIND(".strtab", o_strtab, o_strtab_sz, 0, UCha=
r*)
+ FIND(".dynsym", o_dynsym, o_dynsym_sz, dummy_a=
ddr, 0, ElfXX_Sym*)
+ else FIND(".dynstr", o_dynstr, o_dynstr_sz, dummy_a=
ddr, 0, UChar*)
+ else FIND(".symtab", o_symtab, o_symtab_sz, dummy_a=
ddr, 0, ElfXX_Sym*)
+ else FIND(".strtab", o_strtab, o_strtab_sz, dummy_a=
ddr, 0, UChar*)
=20
- else FIND(".gnu_debuglink", debuglink, debuglink_sz, 0, Char=
*)
+ else FIND(".gnu_debuglink", debuglink, debuglink_sz, dummy_a=
ddr, 0, Char*)
=20
- else FIND(".stab", stab, stab_sz, 0, UCha=
r*)
- else FIND(".stabstr", stabstr, stabstr_sz, 0, UCha=
r*)
- else FIND(".debug_line", debug_line, debug_line_sz, 0, UCha=
r*)
- else FIND(".debug", dwarf1d, dwarf1d_sz, 0, UCha=
r*)
- else FIND(".line", dwarf1l, dwarf1l_sz, 0, UCha=
r*)
- else FIND(".eh_frame", ehframe, ehframe_sz, 0, UCha=
r*)
+ else FIND(".stab", stab, stab_sz, dummy_a=
ddr, 0, UChar*)
+ else FIND(".stabstr", stabstr, stabstr_sz, dummy_a=
ddr, 0, UChar*)
+ else FIND(".debug_line", debug_line, debug_line_sz, dummy_a=
ddr, 0, UChar*)
+ else FIND(".debug", dwarf1d, dwarf1d_sz, dummy_a=
ddr, 0, UChar*)
+ else FIND(".line", dwarf1l, dwarf1l_sz, dummy_a=
ddr, 0, UChar*)
+ else FIND(".eh_frame", ehframe, ehframe_sz, ehframe=
_addr, 0, UChar*)
=20
- else FIND(".got", si->got_start, si->got_size, 1, Addr=
)
- else FIND(".plt", si->plt_start, si->plt_size, 1, Addr=
)
+ else FIND(".got", si->got_start, si->got_size, dummy_a=
ddr, 1, Addr)
+ else FIND(".plt", si->plt_start, si->plt_size, dummy_a=
ddr, 1, Addr)
=20
# undef FIND
=20
@@ -1615,7 +1620,7 @@
=20
/* Read .eh_frame (call-frame-info) if any */
if (ehframe && ehframe_sz > 4) {
- VG_(read_callframe_info_dwarf2) ( si, ehframe, ehframe_sz );
+ VG_(read_callframe_info_dwarf2) ( si, ehframe, ehframe_sz, ehfr=
ame_addr );
}
=20
/* Read the stabs and/or dwarf2 debug information, if any. */
Modified: trunk/coregrind/vg_symtab2.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_symtab2.h 2005-05-01 08:55:38 UTC (rev 3583)
+++ trunk/coregrind/vg_symtab2.h 2005-05-01 15:14:01 UTC (rev 3584)
@@ -255,7 +255,7 @@
CFI reader
-------------------- */
void VG_(read_callframe_info_dwarf2)=20
- ( /*OUT*/SegInfo* si, UChar* ehframe, Int ehframe_sz );
+ ( /*OUT*/SegInfo* si, UChar* ehframe, Int ehframe_sz, Addr ehframe_a=
ddr );
=20
=20
#endif /* _VG_SYMTYPE_H */
|
|
From: <sv...@va...> - 2005-05-01 08:55:45
|
Author: sewardj
Date: 2005-05-01 09:55:38 +0100 (Sun, 01 May 2005)
New Revision: 3583
Modified:
trunk/coregrind/core.h
trunk/coregrind/vg_main.c
trunk/docs/xml/manual-core.xml
Log:
New flag --trace-cfi=3Dyes|no [no], which is for debugging the CFI reader=
.
Modified: trunk/coregrind/core.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/core.h 2005-04-30 18:47:48 UTC (rev 3582)
+++ trunk/coregrind/core.h 2005-05-01 08:55:38 UTC (rev 3583)
@@ -231,6 +231,8 @@
extern Bool VG_(clo_trace_signals);
/* DEBUG: print symtab details? default: NO */
extern Bool VG_(clo_trace_symtab);
+/* DEBUG: print call-frame-info details? default: NO */
+extern Bool VG_(clo_trace_cfi);
/* DEBUG: print redirection details? default: NO */
extern Bool VG_(clo_trace_redir);
/* DEBUG: print thread scheduling events? default: NO */
Modified: trunk/coregrind/vg_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_main.c 2005-04-30 18:47:48 UTC (rev 3582)
+++ trunk/coregrind/vg_main.c 2005-05-01 08:55:38 UTC (rev 3583)
@@ -1435,6 +1435,7 @@
Bool VG_(clo_trace_syscalls) =3D False;
Bool VG_(clo_trace_signals) =3D False;
Bool VG_(clo_trace_symtab) =3D False;
+Bool VG_(clo_trace_cfi) =3D False;
Bool VG_(clo_trace_redir) =3D False;
Bool VG_(clo_trace_sched) =3D False;
Bool VG_(clo_trace_pthreads) =3D False;
@@ -1509,6 +1510,7 @@
" --trace-syscalls=3Dno|yes show all system calls? [no]\n"
" --trace-signals=3Dno|yes show signal handling details? [no]\n"
" --trace-symtab=3Dno|yes show symbol table details? [no]\n"
+" --trace-cfi=3Dno|yes show call-frame-info details? [no]\n"
" --trace-sched=3Dno|yes show thread scheduler details? [no]\n"
" --wait-for-gdb=3Dyes|no pause on startup to wait for gdb attach=
\n"
#if 0
@@ -1704,6 +1706,7 @@
else VG_BOOL_CLO(arg, "--trace-sched", VG_(clo_trace_sched))
else VG_BOOL_CLO(arg, "--trace-signals", VG_(clo_trace_signals)=
)
else VG_BOOL_CLO(arg, "--trace-symtab", VG_(clo_trace_symtab))
+ else VG_BOOL_CLO(arg, "--trace-cfi", VG_(clo_trace_cfi))
else VG_BOOL_CLO(arg, "--trace-redir", VG_(clo_trace_redir))
else VG_BOOL_CLO(arg, "--trace-syscalls", VG_(clo_trace_syscalls=
))
else VG_BOOL_CLO(arg, "--trace-pthreads", VG_(clo_trace_pthreads=
))
Modified: trunk/docs/xml/manual-core.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/xml/manual-core.xml 2005-04-30 18:47:48 UTC (rev 3582)
+++ trunk/docs/xml/manual-core.xml 2005-05-01 08:55:38 UTC (rev 3583)
@@ -1076,10 +1076,23 @@
<para><computeroutput>--trace-symtab=3Dno</computeroutput>
[default]</para>
<para><computeroutput>--trace-symtab=3Dyes</computeroutput></para>
- <para>Enable/disable tracing of symbol table reading.</para>
+ <para>Enable/disable tracing of symbol table reading and line
+ number info reading.</para>
</listitem>
=20
<listitem>
+ <para><computeroutput>--trace-cfi=3Dno</computeroutput>
+ [default]</para>
+ <para><computeroutput>--trace-cfi=3Dyes</computeroutput></para>
+ <para>Enable/disable tracing of call-frame-info reading.
+ Call-frame-info (CFI) is information inserted by compilers=20
+ which describes the relationship between adjacent call frames.
+ On architectures which by default do not use a frame pointer,=20
+ such as AMD64, this information is essential for creating stack=20
+ snapshots.</para>
+ </listitem>
+
+ <listitem>
<para><computeroutput>--trace-malloc=3Dno</computeroutput>
[default]</para>
<para><computeroutput>--trace-malloc=3Dyes</computeroutput></para>
|
|
From: <js...@ac...> - 2005-05-01 03:05:16
|
Nightly build on phoenix ( SuSE 9.1 ) started at 2005-05-01 03:50:01 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow insn_mmx: valgrind ./insn_mmx insn_mmxext: (skipping, prereq failed: ../../../tests/cputest x86-mmxext) insn_sse: valgrind ./insn_sse insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 201 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/pth_once (stderr) memcheck/tests/scalar (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/writev (stderr) corecheck/tests/fdleak_fcntl (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <to...@co...> - 2005-05-01 02:35:53
|
Nightly build on dunsmere ( athlon, Fedora Core 3 ) started at 2005-05-01 03:30:04 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 176 tests, 168 stderr failures, 4 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_fork (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/scalar_vfork (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/writev (stderr) memcheck/tests/x86/fpeflags (stderr) memcheck/tests/x86/pushfpopf (stderr) memcheck/tests/x86/tronical (stderr) memcheck/tests/zeropage (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) corecheck/tests/as_mmap (stderr) corecheck/tests/as_shm (stderr) corecheck/tests/erringfds (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_creat (stderr) corecheck/tests/fdleak_dup (stderr) corecheck/tests/fdleak_dup2 (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_open (stderr) corecheck/tests/fdleak_pipe (stderr) corecheck/tests/fdleak_socketpair (stderr) corecheck/tests/pth_atfork1 (stderr) corecheck/tests/pth_cancel1 (stderr) corecheck/tests/pth_cancel2 (stderr) corecheck/tests/pth_cvsimple (stderr) corecheck/tests/pth_empty (stderr) corecheck/tests/pth_exit (stderr) corecheck/tests/pth_exit2 (stderr) corecheck/tests/pth_mutexspeed (stderr) corecheck/tests/pth_once (stderr) corecheck/tests/pth_rwlock (stderr) corecheck/tests/res_search (stderr) corecheck/tests/sigkill (stderr) corecheck/tests/vgprintf (stderr) massif/tests/toobig-allocs (stderr) massif/tests/true_html (stderr) massif/tests/true_text (stderr) lackey/tests/true (stderr) none/tests/args (stderr) none/tests/async-sigs (stderr) none/tests/bitfield1 (stderr) none/tests/blockfault (stderr) none/tests/closeall (stderr) none/tests/coolo_sigaction (stderr) none/tests/coolo_strlen (stderr) none/tests/discard (stderr) none/tests/exec-sigmask (stderr) none/tests/execve (stderr) none/tests/faultstatus (stderr) none/tests/fcntl_setown (stderr) none/tests/floored (stderr) none/tests/fork (stderr) none/tests/fucomip (stderr) none/tests/gxx304 (stderr) none/tests/manythreads (stderr) none/tests/map_unaligned (stderr) none/tests/map_unmap (stderr) none/tests/mq (stderr) none/tests/mremap (stderr) none/tests/munmap_exe (stderr) none/tests/pending (stderr) none/tests/pth_blockedsig (stderr) none/tests/pth_stackalign (stderr) none/tests/rcrl (stderr) none/tests/readline1 (stderr) none/tests/resolv (stderr) none/tests/rlimit_nofile (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) none/tests/sem (stderr) none/tests/semlimit (stderr) none/tests/sha1_test (stderr) none/tests/shortpush (stderr) none/tests/shorts (stderr) none/tests/sigstackgrowth (stderr) none/tests/smc1 (stderr) none/tests/stackgrowth (stderr) none/tests/syscall-restart1 (stderr) none/tests/syscall-restart2 (stderr) none/tests/system (stderr) none/tests/thread-exits (stderr) none/tests/threaded-fork (stderr) none/tests/tls (stderr) none/tests/x86/badseg (stderr) none/tests/x86/bt_everything (stderr) none/tests/x86/bt_literal (stderr) none/tests/x86/cpuid (stderr) none/tests/x86/fpu_lazy_eflags (stderr) none/tests/x86/getseg (stderr) none/tests/x86/insn_basic (stderr) none/tests/x86/insn_cmov (stderr) none/tests/x86/insn_fpu (stderr) none/tests/x86/insn_mmx (stderr) none/tests/x86/insn_mmxext (stderr) none/tests/x86/insn_sse (stderr) none/tests/x86/int (stderr) none/tests/x86/pushpopseg (stderr) none/tests/x86/seg_override (stderr) none/tests/x86/sigcontext (stdout) none/tests/x86/sigcontext (stderr) none/tests/yield (stderr) |
|
From: Tom H. <th...@cy...> - 2005-05-01 02:30:58
|
Nightly build on audi ( i686, Red Hat 9 ) started at 2005-05-01 03:25:02 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 175 tests, 167 stderr failures, 3 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_fork (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/scalar_vfork (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/writev (stderr) memcheck/tests/x86/fpeflags (stderr) memcheck/tests/x86/pushfpopf (stderr) memcheck/tests/x86/tronical (stderr) memcheck/tests/zeropage (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) corecheck/tests/as_mmap (stderr) corecheck/tests/as_shm (stderr) corecheck/tests/erringfds (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_creat (stderr) corecheck/tests/fdleak_dup (stderr) corecheck/tests/fdleak_dup2 (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_open (stderr) corecheck/tests/fdleak_pipe (stderr) corecheck/tests/fdleak_socketpair (stderr) corecheck/tests/pth_atfork1 (stderr) corecheck/tests/pth_cancel1 (stderr) corecheck/tests/pth_cancel2 (stderr) corecheck/tests/pth_cvsimple (stderr) corecheck/tests/pth_empty (stderr) corecheck/tests/pth_exit (stderr) corecheck/tests/pth_exit2 (stderr) corecheck/tests/pth_mutexspeed (stderr) corecheck/tests/pth_once (stderr) corecheck/tests/pth_rwlock (stderr) corecheck/tests/res_search (stderr) corecheck/tests/sigkill (stderr) corecheck/tests/vgprintf (stderr) massif/tests/toobig-allocs (stderr) massif/tests/true_html (stderr) massif/tests/true_text (stderr) lackey/tests/true (stderr) none/tests/args (stderr) none/tests/async-sigs (stderr) none/tests/bitfield1 (stderr) none/tests/blockfault (stderr) none/tests/closeall (stderr) none/tests/coolo_sigaction (stderr) none/tests/coolo_strlen (stderr) none/tests/discard (stderr) none/tests/exec-sigmask (stderr) none/tests/execve (stderr) none/tests/faultstatus (stderr) none/tests/fcntl_setown (stderr) none/tests/floored (stderr) none/tests/fork (stderr) none/tests/fucomip (stderr) none/tests/gxx304 (stderr) none/tests/manythreads (stderr) none/tests/map_unaligned (stderr) none/tests/map_unmap (stderr) none/tests/mq (stderr) none/tests/mremap (stderr) none/tests/munmap_exe (stderr) none/tests/pending (stderr) none/tests/pth_blockedsig (stderr) none/tests/pth_stackalign (stderr) none/tests/rcrl (stderr) none/tests/readline1 (stderr) none/tests/resolv (stderr) none/tests/rlimit_nofile (stderr) none/tests/sem (stderr) none/tests/semlimit (stderr) none/tests/sha1_test (stderr) none/tests/shortpush (stderr) none/tests/shorts (stderr) none/tests/sigstackgrowth (stderr) none/tests/smc1 (stderr) none/tests/stackgrowth (stderr) none/tests/syscall-restart1 (stderr) none/tests/syscall-restart2 (stderr) none/tests/system (stderr) none/tests/thread-exits (stderr) none/tests/threaded-fork (stderr) none/tests/tls (stderr) none/tests/x86/badseg (stderr) none/tests/x86/bt_everything (stderr) none/tests/x86/bt_literal (stderr) none/tests/x86/cpuid (stderr) none/tests/x86/fpu_lazy_eflags (stderr) none/tests/x86/getseg (stderr) none/tests/x86/insn_basic (stderr) none/tests/x86/insn_cmov (stderr) none/tests/x86/insn_fpu (stderr) none/tests/x86/insn_mmx (stderr) none/tests/x86/insn_mmxext (stderr) none/tests/x86/insn_sse (stderr) none/tests/x86/int (stderr) none/tests/x86/pushpopseg (stderr) none/tests/x86/seg_override (stderr) none/tests/x86/sigcontext (stdout) none/tests/x86/sigcontext (stderr) none/tests/yield (stdout) none/tests/yield (stderr) |
|
From: Tom H. <to...@co...> - 2005-05-01 02:26:21
|
Nightly build on dunsmere ( Fedora Core 3 ) started at 2005-05-01 03:20:03 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow insn_mmx: valgrind ./insn_mmx insn_mmxext: valgrind ./insn_mmxext insn_sse: valgrind ./insn_sse insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int sh: line 1: 15332 Segmentation fault VALGRINDLIB=/tmp/valgrind.22075/valgrind/.in_place /tmp/valgrind.22075/valgrind/./coregrind/valgrind --command-line-only=yes --memcheck:leak-check=no --addrcheck:leak-check=no --tool=none ./int >int.stdout.out 2>int.stderr.out pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 207 tests, 4 stderr failures, 0 stdout failures ================= memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_supp (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-05-01 02:22:25
|
Nightly build on audi ( Red Hat 9 ) started at 2005-05-01 03:15:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow fpu_lazy_eflags: valgrind ./fpu_lazy_eflags insn_basic: valgrind ./insn_basic insn_cmov: valgrind ./insn_cmov insn_fpu: valgrind ./insn_fpu insn_mmx: valgrind ./insn_mmx insn_mmxext: valgrind ./insn_mmxext insn_sse: valgrind ./insn_sse insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 206 tests, 1 stderr failure, 0 stdout failures ================= memcheck/tests/scalar (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-05-01 02:18:33
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-05-01 03:15:01 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 174 tests, 166 stderr failures, 66 stdout failures ================= memcheck/tests/addressable (stdout) memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stdout) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stdout) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stdout) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stdout) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stdout) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stdout) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stdout) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stdout) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stdout) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stdout) memcheck/tests/overlap (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stdout) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_fork (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/scalar_vfork (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/signal2 (stdout) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/threadederrno (stdout) memcheck/tests/threadederrno (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stdout) memcheck/tests/weirdioctl (stderr) memcheck/tests/writev (stderr) memcheck/tests/x86/fpeflags (stderr) memcheck/tests/x86/pushfpopf (stdout) memcheck/tests/x86/pushfpopf (stderr) memcheck/tests/x86/tronical (stderr) memcheck/tests/zeropage (stdout) memcheck/tests/zeropage (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/dlclose (stdout) cachegrind/tests/dlclose (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) corecheck/tests/as_mmap (stderr) corecheck/tests/as_shm (stdout) corecheck/tests/as_shm (stderr) corecheck/tests/erringfds (stdout) corecheck/tests/erringfds (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_creat (stderr) corecheck/tests/fdleak_dup (stderr) corecheck/tests/fdleak_dup2 (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stdout) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_open (stderr) corecheck/tests/fdleak_pipe (stderr) corecheck/tests/fdleak_socketpair (stderr) corecheck/tests/pth_atfork1 (stdout) corecheck/tests/pth_atfork1 (stderr) corecheck/tests/pth_cancel1 (stdout) corecheck/tests/pth_cancel1 (stderr) corecheck/tests/pth_cancel2 (stderr) corecheck/tests/pth_cvsimple (stdout) corecheck/tests/pth_cvsimple (stderr) corecheck/tests/pth_empty (stderr) corecheck/tests/pth_exit (stderr) corecheck/tests/pth_exit2 (stderr) corecheck/tests/pth_mutexspeed (stdout) corecheck/tests/pth_mutexspeed (stderr) corecheck/tests/pth_once (stdout) corecheck/tests/pth_once (stderr) corecheck/tests/pth_rwlock (stderr) corecheck/tests/res_search (stdout) corecheck/tests/res_search (stderr) corecheck/tests/sigkill (stderr) corecheck/tests/vgprintf (stdout) corecheck/tests/vgprintf (stderr) massif/tests/toobig-allocs (stderr) massif/tests/true_html (stderr) massif/tests/true_text (stderr) lackey/tests/true (stderr) none/tests/args (stdout) none/tests/args (stderr) none/tests/async-sigs (stdout) none/tests/async-sigs (stderr) none/tests/bitfield1 (stderr) none/tests/blockfault (stderr) none/tests/closeall (stderr) none/tests/coolo_sigaction (stdout) none/tests/coolo_sigaction (stderr) none/tests/coolo_strlen (stderr) none/tests/discard (stdout) none/tests/discard (stderr) none/tests/exec-sigmask (stderr) none/tests/execve (stderr) none/tests/faultstatus (stderr) none/tests/fcntl_setown (stderr) none/tests/floored (stdout) none/tests/floored (stderr) none/tests/fork (stdout) none/tests/fork (stderr) none/tests/fucomip (stderr) none/tests/gxx304 (stderr) none/tests/manythreads (stdout) none/tests/manythreads (stderr) none/tests/map_unaligned (stderr) none/tests/map_unmap (stdout) none/tests/map_unmap (stderr) none/tests/mq (stderr) none/tests/mremap (stderr) none/tests/munmap_exe (stderr) none/tests/pending (stdout) none/tests/pending (stderr) none/tests/pth_blockedsig (stdout) none/tests/pth_blockedsig (stderr) none/tests/pth_stackalign (stdout) none/tests/pth_stackalign (stderr) none/tests/rcrl (stdout) none/tests/rcrl (stderr) none/tests/readline1 (stdout) none/tests/readline1 (stderr) none/tests/resolv (stdout) none/tests/resolv (stderr) none/tests/rlimit_nofile (stderr) none/tests/sem (stderr) none/tests/semlimit (stderr) none/tests/sha1_test (stderr) none/tests/shortpush (stderr) none/tests/shorts (stderr) none/tests/sigstackgrowth (stdout) none/tests/sigstackgrowth (stderr) none/tests/smc1 (stdout) none/tests/smc1 (stderr) none/tests/stackgrowth (stdout) none/tests/stackgrowth (stderr) none/tests/syscall-restart1 (stderr) none/tests/syscall-restart2 (stderr) none/tests/system (stderr) none/tests/thread-exits (stdout) none/tests/thread-exits (stderr) none/tests/threaded-fork (stdout) none/tests/threaded-fork (stderr) none/tests/x86/badseg (stdout) none/tests/x86/badseg (stderr) none/tests/x86/bt_everything (stdout) none/tests/x86/bt_everything (stderr) none/tests/x86/bt_literal (stdout) none/tests/x86/bt_literal (stderr) none/tests/x86/cpuid (stdout) none/tests/x86/cpuid (stderr) none/tests/x86/fpu_lazy_eflags (stdout) none/tests/x86/fpu_lazy_eflags (stderr) none/tests/x86/getseg (stdout) none/tests/x86/getseg (stderr) none/tests/x86/insn_basic (stdout) none/tests/x86/insn_basic (stderr) none/tests/x86/insn_cmov (stdout) none/tests/x86/insn_cmov (stderr) none/tests/x86/insn_fpu (stdout) none/tests/x86/insn_fpu (stderr) none/tests/x86/insn_mmx (stdout) none/tests/x86/insn_mmx (stderr) none/tests/x86/insn_mmxext (stdout) none/tests/x86/insn_mmxext (stderr) none/tests/x86/insn_sse (stdout) none/tests/x86/insn_sse (stderr) none/tests/x86/int (stderr) none/tests/x86/pushpopseg (stdout) none/tests/x86/pushpopseg (stderr) none/tests/x86/seg_override (stdout) none/tests/x86/seg_override (stderr) none/tests/x86/sigcontext (stdout) none/tests/x86/sigcontext (stderr) none/tests/yield (stdout) none/tests/yield (stderr) |