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
(12) |
2
(9) |
|
3
(23) |
4
(24) |
5
(9) |
6
(7) |
7
(5) |
8
(2) |
9
(6) |
|
10
(5) |
11
(3) |
12
(11) |
13
(4) |
14
|
15
(3) |
16
(4) |
|
17
(3) |
18
(6) |
19
|
20
(1) |
21
(9) |
22
(8) |
23
(1) |
|
24
|
25
(2) |
26
(3) |
27
(16) |
28
(17) |
29
(22) |
30
(7) |
|
31
(4) |
|
|
|
|
|
|
|
From: <sv...@va...> - 2010-01-03 01:21:14
|
Author: sewardj
Date: 2010-01-03 01:20:59 +0000 (Sun, 03 Jan 2010)
New Revision: 1953
Log:
Don't force alignment for LDMxx/STMxx when presented with a misaligned
address; instead just press on regardless.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-01-02 13:23:54 UTC (rev 1952)
+++ trunk/priv/guest_arm_toIR.c 2010-01-03 01:20:59 UTC (rev 1953)
@@ -2418,7 +2418,13 @@
assign(oldRnT, getIReg(rN));
IRTemp anchorT = newTemp(Ity_I32);
- assign(anchorT, binop(Iop_And32, mkexpr(oldRnT), mkU32(~3U)));
+ /* The old (Addison-Wesley) ARM ARM seems to say that
+ LDMxx/STMxx ignore the bottom two bits of the address.
+ However, Cortex-A8 doesn't seem to care. Hence: */
+ /* No .. don't force alignment .. */
+ /* assign(anchorT, binop(Iop_And32, mkexpr(oldRnT), mkU32(~3U))); */
+ /* Instead, use the potentially misaligned address directly. */
+ assign(anchorT, mkexpr(oldRnT));
IROp opADDorSUB = bINC ? Iop_Add32 : Iop_Sub32;
// bINC == 1: xxMIA, xxMIB
|
|
From: <sv...@va...> - 2010-01-02 13:25:06
|
Author: sewardj
Date: 2010-01-02 13:24:58 +0000 (Sat, 02 Jan 2010)
New Revision: 10992
Log:
Various minor fixups to make ppc32/64-linux work again following
recent ARM-Linux merge.
Modified:
trunk/coregrind/m_debuginfo/priv_storage.h
trunk/coregrind/m_libcassert.c
trunk/coregrind/m_machine.c
trunk/coregrind/m_signals.c
trunk/coregrind/m_stacktrace.c
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
trunk/coregrind/pub_core_debuginfo.h
Modified: trunk/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_storage.h 2010-01-02 10:43:23 UTC (rev 10991)
+++ trunk/coregrind/m_debuginfo/priv_storage.h 2010-01-02 13:24:58 UTC (rev 10992)
@@ -190,7 +190,20 @@
}
DiCfSI;
#elif defined(VGA_ppc32) || defined(VGA_ppc64)
-typedef void DiCfSI;
+/* Just have a struct with the common fields in, so that code that
+ processes the common fields doesn't have to be ifdef'd against
+ VGP_/VGA_ symbols. These are not used in any way on ppc32/64-linux
+ at the moment. */
+typedef
+ struct {
+ Addr base;
+ UInt len;
+ UChar cfa_how; /* a CFIC_ value */
+ UChar ra_how; /* a CFIR_ value */
+ Int cfa_off;
+ Int ra_off;
+ }
+ DiCfSI;
#else
# error "Unknown arch"
#endif
Modified: trunk/coregrind/m_libcassert.c
===================================================================
--- trunk/coregrind/m_libcassert.c 2010-01-02 10:43:23 UTC (rev 10991)
+++ trunk/coregrind/m_libcassert.c 2010-01-02 13:24:58 UTC (rev 10992)
@@ -91,9 +91,9 @@
: /* reads none */ \
: "r0" /* trashed */ \
); \
- srP->r_pc = (ULong)cia; \
- srP->r_sp = (ULong)r1; \
- srP->misc.PPC32.lr = lr; \
+ (srP)->r_pc = (ULong)cia; \
+ (srP)->r_sp = (ULong)r1; \
+ (srP)->misc.PPC32.r_lr = lr; \
}
#elif defined(VGP_ppc64_linux) || defined(VGP_ppc64_aix5)
# define GET_STARTREGS(srP) \
@@ -110,9 +110,9 @@
: /* reads none */ \
: "r0" /* trashed */ \
); \
- srP->r_pc = cia; \
- srP->r_sp = r1; \
- srP->misc.PPC64.lr = lr; \
+ (srP)->r_pc = cia; \
+ (srP)->r_sp = r1; \
+ (srP)->misc.PPC64.r_lr = lr; \
}
#elif defined(VGP_arm_linux)
# define GET_STARTREGS(srP) \
Modified: trunk/coregrind/m_machine.c
===================================================================
--- trunk/coregrind/m_machine.c 2010-01-02 10:43:23 UTC (rev 10991)
+++ trunk/coregrind/m_machine.c 2010-01-02 13:24:58 UTC (rev 10992)
@@ -97,12 +97,12 @@
= VG_(threads)[tid].arch.vex.guest_RBP;
# elif defined(VGA_ppc32)
regs->r_pc = (ULong)VG_(threads)[tid].arch.vex.guest_CIA;
- regs->r_sp = (ULong)VG_(threads)[tid].arch.vex.guest_R1;
+ regs->r_sp = (ULong)VG_(threads)[tid].arch.vex.guest_GPR1;
regs->misc.PPC32.r_lr
= VG_(threads)[tid].arch.vex.guest_LR;
# elif defined(VGA_ppc64)
regs->r_pc = VG_(threads)[tid].arch.vex.guest_CIA;
- regs->r_sp = VG_(threads)[tid].arch.vex.guest_R1;
+ regs->r_sp = VG_(threads)[tid].arch.vex.guest_GPR1;
regs->misc.PPC64.r_lr
= VG_(threads)[tid].arch.vex.guest_LR;
# elif defined(VGA_arm)
Modified: trunk/coregrind/m_signals.c
===================================================================
--- trunk/coregrind/m_signals.c 2010-01-02 10:43:23 UTC (rev 10991)
+++ trunk/coregrind/m_signals.c 2010-01-02 13:24:58 UTC (rev 10992)
@@ -263,6 +263,7 @@
meaningless, so the caller of VG_UCONTEXT_SYSCALL_SYSRES has to be
very careful to pay attention to the results only when it is sure
that the said constraint on the program counter is indeed valid. */
+
#if defined(VGP_x86_linux)
# define VG_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.eip)
# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.esp)
@@ -332,21 +333,23 @@
uc->uc_regs->mc_gregs[PT_MSR], otherwise it clears it. That bit
will always be clear under 2.4.20. So you can use that bit to tell
whether uc->uc_regs->mc_vregs is valid. */
-# define VG_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_regs->mc_gregs[VKI_PT_NIP])
-# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_regs->mc_gregs[VKI_PT_R1])
-# define VG_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_regs->mc_gregs[VKI_PT_R1])
+# define VG_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_regs->mc_gregs[VKI_PT_NIP])
+# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_regs->mc_gregs[VKI_PT_R1])
# define VG_UCONTEXT_SYSCALL_SYSRES(uc) \
/* Convert the values in uc_mcontext r3,cr into a SysRes. */ \
VG_(mk_SysRes_ppc32_linux)( \
(uc)->uc_regs->mc_gregs[VKI_PT_R3], \
(((uc)->uc_regs->mc_gregs[VKI_PT_CCR] >> 28) & 1) \
)
-# define VG_UCONTEXT_LINK_REG(uc) ((uc)->uc_regs->mc_gregs[VKI_PT_LNK])
+# define VG_UCONTEXT_TO_UnwindStartRegs(srP, uc) \
+ { (srP)->r_pc = (ULong)((uc)->uc_regs->mc_gregs[VKI_PT_NIP]); \
+ (srP)->r_sp = (ULong)((uc)->uc_regs->mc_gregs[VKI_PT_R1]); \
+ (srP)->misc.PPC32.r_lr = (uc)->uc_regs->mc_gregs[VKI_PT_LNK]; \
+ }
#elif defined(VGP_ppc64_linux)
-# define VG_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.gp_regs[VKI_PT_NIP])
-# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.gp_regs[VKI_PT_R1])
-# define VG_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.gp_regs[VKI_PT_R1])
+# define VG_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.gp_regs[VKI_PT_NIP])
+# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.gp_regs[VKI_PT_R1])
/* Dubious hack: if there is an error, only consider the lowest 8
bits of r3. memcheck/tests/post-syscall shows a case where an
interrupted syscall should have produced a ucontext with 0x4
@@ -361,7 +364,11 @@
if (err) r3 &= 0xFF;
return VG_(mk_SysRes_ppc64_linux)( r3, err );
}
-# define VG_UCONTEXT_LINK_REG(uc) ((uc)->uc_mcontext.gp_regs[VKI_PT_LNK])
+# define VG_UCONTEXT_TO_UnwindStartRegs(srP, uc) \
+ { (srP)->r_pc = (uc)->uc_mcontext.gp_regs[VKI_PT_NIP]; \
+ (srP)->r_sp = (uc)->uc_mcontext.gp_regs[VKI_PT_R1]; \
+ (srP)->misc.PPC64.r_lr = (uc)->uc_mcontext.gp_regs[VKI_PT_LNK]; \
+ }
#elif defined(VGP_arm_linux)
# define VG_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.arm_pc)
Modified: trunk/coregrind/m_stacktrace.c
===================================================================
--- trunk/coregrind/m_stacktrace.c 2010-01-02 10:43:23 UTC (rev 10991)
+++ trunk/coregrind/m_stacktrace.c 2010-01-02 13:24:58 UTC (rev 10992)
@@ -391,8 +391,8 @@
UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
/*OUT*/Addr* ips, UInt max_n_ips,
/*OUT*/Addr* sps, /*OUT*/Addr* fps,
- Addr ip, Addr sp, Addr fp, Addr lr,
- Addr fp_min, Addr fp_max_orig )
+ UnwindStartRegs* startRegs,
+ Addr fp_max_orig )
{
Bool lr_is_first_RA = False;
# if defined(VG_PLAT_USES_PPCTOC)
@@ -408,6 +408,16 @@
vg_assert(sizeof(Addr) == sizeof(UWord));
vg_assert(sizeof(Addr) == sizeof(void*));
+ Addr ip = (Addr)startRegs->r_pc;
+ Addr sp = (Addr)startRegs->r_sp;
+ Addr fp = sp;
+# if defined(VGP_ppc32_linux) || defined(VGP_ppc32_aix5)
+ Addr lr = startRegs->misc.PPC32.r_lr;
+# elif defined(VGP_ppc64_linux) || defined(VGP_ppc64_aix5)
+ Addr lr = startRegs->misc.PPC64.r_lr;
+# endif
+ Addr fp_min = sp;
+
/* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1],
stopping when the trail goes cold, which we guess to be
when FP is not a reasonable stack location. */
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2010-01-02 10:43:23 UTC (rev 10991)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2010-01-02 13:24:58 UTC (rev 10992)
@@ -1503,7 +1503,7 @@
// arch/OS combination, eg. */* (generic), */Linux (Linux only), ?/?
// (unknown).
-const SyscallTableEntry ML_(syscall_table)[] = {
+static SyscallTableEntry syscall_table[] = {
//.. (restart_syscall) // 0
GENX_(__NR_exit, sys_exit), // 1
GENX_(__NR_fork, sys_fork), // 2
@@ -1882,9 +1882,24 @@
LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo) // 322
};
-const UInt ML_(syscall_table_size) =
- sizeof(ML_(syscall_table)) / sizeof(ML_(syscall_table)[0]);
+SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
+{
+ const UInt syscall_table_size
+ = sizeof(syscall_table) / sizeof(syscall_table[0]);
+ /* Is it in the contiguous initial section of the table? */
+ if (sysno < syscall_table_size) {
+ SyscallTableEntry* sys = &syscall_table[sysno];
+ if (sys->before == NULL)
+ return NULL; /* no entry */
+ else
+ return sys;
+ }
+
+ /* Can't find a wrapper */
+ return NULL;
+}
+
#endif // defined(VGP_ppc32_linux)
/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2010-01-02 10:43:23 UTC (rev 10991)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2010-01-02 13:24:58 UTC (rev 10992)
@@ -1151,7 +1151,7 @@
// arch/OS combination, eg. */* (generic), */Linux (Linux only), ?/?
// (unknown).
-const SyscallTableEntry ML_(syscall_table)[] = {
+static SyscallTableEntry syscall_table[] = {
// _____(__NR_restart_syscall, sys_restart_syscall), // 0
GENX_(__NR_exit, sys_exit), // 1
GENX_(__NR_fork, sys_fork), // 2
@@ -1523,9 +1523,24 @@
LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo) // 322
};
-const UInt ML_(syscall_table_size) =
- sizeof(ML_(syscall_table)) / sizeof(ML_(syscall_table)[0]);
+SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
+{
+ const UInt syscall_table_size
+ = sizeof(syscall_table) / sizeof(syscall_table[0]);
+ /* Is it in the contiguous initial section of the table? */
+ if (sysno < syscall_table_size) {
+ SyscallTableEntry* sys = &syscall_table[sysno];
+ if (sys->before == NULL)
+ return NULL; /* no entry */
+ else
+ return sys;
+ }
+
+ /* Can't find a wrapper */
+ return NULL;
+}
+
#endif // defined(VGP_ppc64_linux)
/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/pub_core_debuginfo.h
===================================================================
--- trunk/coregrind/pub_core_debuginfo.h 2010-01-02 10:43:23 UTC (rev 10991)
+++ trunk/coregrind/pub_core_debuginfo.h 2010-01-02 13:24:58 UTC (rev 10992)
@@ -121,7 +121,7 @@
D3UnwindRegs;
#elif defined(VGA_ppc32) || defined(VGA_ppc64)
typedef
- void
+ UChar /* should be void, but gcc complains at use points */
D3UnwindRegs;
#else
# error "Unsupported arch"
|
|
From: <sv...@va...> - 2010-01-02 13:24:08
|
Author: sewardj
Date: 2010-01-02 13:23:54 +0000 (Sat, 02 Jan 2010)
New Revision: 1952
Log:
gen{Spill,Reload}_PPC: track recent change in genSpill/Reload
signature.
Modified:
trunk/priv/host_ppc_defs.c
trunk/priv/host_ppc_defs.h
Modified: trunk/priv/host_ppc_defs.c
===================================================================
--- trunk/priv/host_ppc_defs.c 2010-01-01 19:19:08 UTC (rev 1951)
+++ trunk/priv/host_ppc_defs.c 2010-01-02 13:23:54 UTC (rev 1952)
@@ -2148,51 +2148,63 @@
/* Generate ppc spill/reload instructions under the direction of the
register allocator. Note it's critical these don't write the
condition codes. */
-PPCInstr* genSpill_PPC ( HReg rreg, UShort offsetB, Bool mode64 )
+
+void genSpill_PPC ( /*OUT*/HInstr** i1, /*OUT*/HInstr** i2,
+ HReg rreg, Int offsetB, Bool mode64 )
{
PPCAMode* am;
vassert(!hregIsVirtual(rreg));
+ *i1 = *i2 = NULL;
am = PPCAMode_IR( offsetB, GuestStatePtr(mode64) );
-
switch (hregClass(rreg)) {
- case HRcInt64:
- vassert(mode64);
- return PPCInstr_Store( 8, am, rreg, mode64 );
- case HRcInt32:
- vassert(!mode64);
- return PPCInstr_Store( 4, am, rreg, mode64 );
- case HRcFlt64:
- return PPCInstr_FpLdSt ( False/*store*/, 8, rreg, am );
- case HRcVec128:
- // XXX: GPR30 used as spill register to kludge AltiVec AMode_IR
- return PPCInstr_AvLdSt ( False/*store*/, 16, rreg, am );
- default:
- ppHRegClass(hregClass(rreg));
- vpanic("genSpill_PPC: unimplemented regclass");
+ case HRcInt64:
+ vassert(mode64);
+ *i1 = PPCInstr_Store( 8, am, rreg, mode64 );
+ return;
+ case HRcInt32:
+ vassert(!mode64);
+ *i1 = PPCInstr_Store( 4, am, rreg, mode64 );
+ return;
+ case HRcFlt64:
+ *i1 = PPCInstr_FpLdSt ( False/*store*/, 8, rreg, am );
+ return;
+ case HRcVec128:
+ // XXX: GPR30 used as spill register to kludge AltiVec
+ // AMode_IR
+ *i1 = PPCInstr_AvLdSt ( False/*store*/, 16, rreg, am );
+ return;
+ default:
+ ppHRegClass(hregClass(rreg));
+ vpanic("genSpill_PPC: unimplemented regclass");
}
}
-PPCInstr* genReload_PPC ( HReg rreg, UShort offsetB, Bool mode64 )
+void genReload_PPC ( /*OUT*/HInstr** i1, /*OUT*/HInstr** i2,
+ HReg rreg, Int offsetB, Bool mode64 )
{
PPCAMode* am;
vassert(!hregIsVirtual(rreg));
+ *i1 = *i2 = NULL;
am = PPCAMode_IR( offsetB, GuestStatePtr(mode64) );
-
switch (hregClass(rreg)) {
- case HRcInt64:
- vassert(mode64);
- return PPCInstr_Load( 8, rreg, am, mode64 );
- case HRcInt32:
- vassert(!mode64);
- return PPCInstr_Load( 4, rreg, am, mode64 );
- case HRcFlt64:
- return PPCInstr_FpLdSt ( True/*load*/, 8, rreg, am );
- case HRcVec128:
- // XXX: GPR30 used as spill register to kludge AltiVec AMode_IR
- return PPCInstr_AvLdSt ( True/*load*/, 16, rreg, am );
- default:
- ppHRegClass(hregClass(rreg));
- vpanic("genReload_PPC: unimplemented regclass");
+ case HRcInt64:
+ vassert(mode64);
+ *i1 = PPCInstr_Load( 8, rreg, am, mode64 );
+ return;
+ case HRcInt32:
+ vassert(!mode64);
+ *i1 = PPCInstr_Load( 4, rreg, am, mode64 );
+ return;
+ case HRcFlt64:
+ *i1 = PPCInstr_FpLdSt ( True/*load*/, 8, rreg, am );
+ return;
+ case HRcVec128:
+ // XXX: GPR30 used as spill register to kludge AltiVec AMode_IR
+ *i1 = PPCInstr_AvLdSt ( True/*load*/, 16, rreg, am );
+ return;
+ default:
+ ppHRegClass(hregClass(rreg));
+ vpanic("genReload_PPC: unimplemented regclass");
}
}
Modified: trunk/priv/host_ppc_defs.h
===================================================================
--- trunk/priv/host_ppc_defs.h 2010-01-01 19:19:08 UTC (rev 1951)
+++ trunk/priv/host_ppc_defs.h 2010-01-02 13:23:54 UTC (rev 1952)
@@ -854,8 +854,12 @@
extern Bool isMove_PPCInstr ( PPCInstr*, HReg*, HReg* );
extern Int emit_PPCInstr ( UChar* buf, Int nbuf, PPCInstr*,
Bool mode64, void* dispatch );
-extern PPCInstr* genSpill_PPC ( HReg rreg, UShort offsetB, Bool mode64 );
-extern PPCInstr* genReload_PPC ( HReg rreg, UShort offsetB, Bool mode64 );
+
+extern void genSpill_PPC ( /*OUT*/HInstr** i1, /*OUT*/HInstr** i2,
+ HReg rreg, Int offsetB, Bool mode64 );
+extern void genReload_PPC ( /*OUT*/HInstr** i1, /*OUT*/HInstr** i2,
+ HReg rreg, Int offsetB, Bool mode64 );
+
extern void getAllocableRegs_PPC ( Int*, HReg**, Bool mode64 );
extern HInstrArray* iselSB_PPC ( IRSB*, VexArch,
VexArchInfo*,
|
|
From: <sv...@va...> - 2010-01-02 10:43:36
|
Author: sewardj
Date: 2010-01-02 10:43:23 +0000 (Sat, 02 Jan 2010)
New Revision: 10991
Log:
Make regtests build on arm-linux -- all changes are to do with
assembly code for atomic memory modifications.
Modified:
trunk/helgrind/tests/Makefile.am
trunk/helgrind/tests/annotate_hbefore.c
trunk/helgrind/tests/tc07_hbl1.c
trunk/helgrind/tests/tc08_hbl2.c
trunk/helgrind/tests/tc11_XCHG.c
Modified: trunk/helgrind/tests/Makefile.am
===================================================================
--- trunk/helgrind/tests/Makefile.am 2010-01-02 10:41:46 UTC (rev 10990)
+++ trunk/helgrind/tests/Makefile.am 2010-01-02 10:43:23 UTC (rev 10991)
@@ -129,6 +129,16 @@
tc22_exit_w_lock
endif
+if VGCONF_PLATFORMS_INCLUDE_ARM_LINUX
+annotate_hbefore_CFLAGS = $(AM_CFLAGS) -mcpu=cortex-a8
+tc07_hbl1_CFLAGS = $(AM_CFLAGS) -mcpu=cortex-a8
+tc08_hbl2_CFLAGS = $(AM_CFLAGS) -mcpu=cortex-a8
+else
+annotate_hbefore_CFLAGS = $(AM_CFLAGS)
+tc07_hbl1_CFLAGS = $(AM_CFLAGS)
+tc08_hbl2_CFLAGS = $(AM_CFLAGS)
+endif
+
if HAVE_PTHREAD_BARRIER
check_PROGRAMS += bar_bad bar_trivial
endif
Modified: trunk/helgrind/tests/annotate_hbefore.c
===================================================================
--- trunk/helgrind/tests/annotate_hbefore.c 2010-01-02 10:41:46 UTC (rev 10990)
+++ trunk/helgrind/tests/annotate_hbefore.c 2010-01-02 10:43:23 UTC (rev 10991)
@@ -132,6 +132,39 @@
return block[3] & 1;
}
+#elif defined(VGA_arm)
+
+// arm
+/* return 1 if success, 0 if failure */
+UWord do_acasW ( UWord* addr, UWord expected, UWord nyu )
+{
+ UWord old, success;
+ UWord block[2] = { (UWord)addr, nyu };
+
+ /* Fetch the old value, and set the reservation */
+ __asm__ __volatile__ (
+ "ldrex %0, [%1]" "\n"
+ : /*out*/ "=r"(old)
+ : /*in*/ "r"(addr)
+ );
+
+ /* If the old value isn't as expected, we've had it */
+ if (old != expected) return 0;
+
+ /* otherwise try to stuff the new value in */
+ __asm__ __volatile__(
+ "ldr r4, [%1, #0]" "\n\t"
+ "ldr r5, [%1, #4]" "\n\t"
+ "strex r6, r5, [r4, #0]" "\n\t"
+ "eor %0, r6, #1" "\n\t"
+ : /*out*/ "=r"(success)
+ : /*in*/ "r"(&block[0])
+ : /*trash*/ "r4","r5","r6","memory"
+ );
+ assert(success == 0 || success == 1);
+ return success;
+}
+
#endif
void atomic_incW ( UWord* w )
Modified: trunk/helgrind/tests/tc07_hbl1.c
===================================================================
--- trunk/helgrind/tests/tc07_hbl1.c 2010-01-02 10:41:46 UTC (rev 10990)
+++ trunk/helgrind/tests/tc07_hbl1.c 2010-01-02 10:43:23 UTC (rev 10991)
@@ -6,25 +6,34 @@
/* Simple test program, no race. Parent and child both modify x and
use the hardware bus lock. */
+#undef PLAT_ppc64_aix5
+#undef PLAT_ppc32_aix5
+#undef PLAT_x86_darwin
+#undef PLAT_amd64_darwin
#undef PLAT_x86_linux
#undef PLAT_amd64_linux
#undef PLAT_ppc32_linux
#undef PLAT_ppc64_linux
-#undef PLAT_ppc32_aix5
-#undef PLAT_ppc64_aix5
+#undef PLAT_arm_linux
-#if !defined(_AIX) && defined(__i386__)
+#if defined(_AIX) && defined(__64BIT__)
+# define PLAT_ppc64_aix5 1
+#elif defined(_AIX) && !defined(__64BIT__)
+# define PLAT_ppc32_aix5 1
+#elif defined(__APPLE__) && defined(__i386__)
+# define PLAT_x86_darwin 1
+#elif defined(__APPLE__) && defined(__x86_64__)
+# define PLAT_amd64_darwin 1
+#elif defined(__linux__) && defined(__i386__)
# define PLAT_x86_linux 1
-#elif !defined(_AIX) && defined(__x86_64__)
+#elif defined(__linux__) && defined(__x86_64__)
# define PLAT_amd64_linux 1
-#elif !defined(_AIX) && defined(__powerpc__) && !defined(__powerpc64__)
+#elif defined(__linux__) && defined(__powerpc__) && !defined(__powerpc64__)
# define PLAT_ppc32_linux 1
-#elif !defined(_AIX) && defined(__powerpc__) && defined(__powerpc64__)
+#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__)
# define PLAT_ppc64_linux 1
-#elif defined(_AIX) && defined(__64BIT__)
-# define PLAT_ppc64_aix5 1
-#elif defined(_AIX) && !defined(__64BIT__)
-# define PLAT_ppc32_aix5 1
+#elif defined(__linux__) && defined(__arm__)
+# define PLAT_arm_linux 1
#endif
#if defined(PLAT_amd64_linux) || defined(PLAT_x86_linux)
@@ -43,6 +52,18 @@
: /*out*/ : /*in*/ "b"(&(_lval)) \
: /*trash*/ "r15", "cr0", "memory" \
)
+#elif defined(PLAT_arm_linux)
+# define INC(_lval,_lqual) \
+ __asm__ __volatile__( \
+ "L1xyzzy1" _lqual ":\n" \
+ " ldrex r8, [%0, #0]\n" \
+ " add r8, r8, #1\n" \
+ " strex r9, r8, [%0, #0]\n" \
+ " cmp r9, #0\n" \
+ " bne L1xyzzy1" _lqual \
+ : /*out*/ : /*in*/ "r"(&(_lval)) \
+ : /*trash*/ "r8", "r9", "cc", "memory" \
+ );
#else
# error "Fix Me for this platform"
#endif
Modified: trunk/helgrind/tests/tc08_hbl2.c
===================================================================
--- trunk/helgrind/tests/tc08_hbl2.c 2010-01-02 10:41:46 UTC (rev 10990)
+++ trunk/helgrind/tests/tc08_hbl2.c 2010-01-02 10:43:23 UTC (rev 10991)
@@ -22,28 +22,37 @@
child joins back to parent. Parent (writer) uses hardware bus lock;
child is only reading and so does not need to use a bus lock. */
-
+#undef PLAT_ppc64_aix5
+#undef PLAT_ppc32_aix5
+#undef PLAT_x86_darwin
+#undef PLAT_amd64_darwin
#undef PLAT_x86_linux
#undef PLAT_amd64_linux
#undef PLAT_ppc32_linux
#undef PLAT_ppc64_linux
-#undef PLAT_ppc32_aix5
-#undef PLAT_ppc64_aix5
+#undef PLAT_arm_linux
-#if !defined(_AIX) && defined(__i386__)
+#if defined(_AIX) && defined(__64BIT__)
+# define PLAT_ppc64_aix5 1
+#elif defined(_AIX) && !defined(__64BIT__)
+# define PLAT_ppc32_aix5 1
+#elif defined(__APPLE__) && defined(__i386__)
+# define PLAT_x86_darwin 1
+#elif defined(__APPLE__) && defined(__x86_64__)
+# define PLAT_amd64_darwin 1
+#elif defined(__linux__) && defined(__i386__)
# define PLAT_x86_linux 1
-#elif !defined(_AIX) && defined(__x86_64__)
+#elif defined(__linux__) && defined(__x86_64__)
# define PLAT_amd64_linux 1
-#elif !defined(_AIX) && defined(__powerpc__) && !defined(__powerpc64__)
+#elif defined(__linux__) && defined(__powerpc__) && !defined(__powerpc64__)
# define PLAT_ppc32_linux 1
-#elif !defined(_AIX) && defined(__powerpc__) && defined(__powerpc64__)
+#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__)
# define PLAT_ppc64_linux 1
-#elif defined(_AIX) && defined(__64BIT__)
-# define PLAT_ppc64_aix5 1
-#elif defined(_AIX) && !defined(__64BIT__)
-# define PLAT_ppc32_aix5 1
+#elif defined(__linux__) && defined(__arm__)
+# define PLAT_arm_linux 1
#endif
+
#if defined(PLAT_amd64_linux) || defined(PLAT_x86_linux)
# define INC(_lval,_lqual) \
__asm__ __volatile__ ( \
@@ -60,6 +69,18 @@
: /*out*/ : /*in*/ "b"(&(_lval)) \
: /*trash*/ "r15", "cr0", "memory" \
)
+#elif defined(PLAT_arm_linux)
+# define INC(_lval,_lqual) \
+ __asm__ __volatile__( \
+ "L1xyzzy1" _lqual ":\n" \
+ " ldrex r8, [%0, #0]\n" \
+ " add r8, r8, #1\n" \
+ " strex r9, r8, [%0, #0]\n" \
+ " cmp r9, #0\n" \
+ " bne L1xyzzy1" _lqual \
+ : /*out*/ : /*in*/ "r"(&(_lval)) \
+ : /*trash*/ "r8", "r9", "cc", "memory" \
+ );
#else
# error "Fix Me for this platform"
#endif
Modified: trunk/helgrind/tests/tc11_XCHG.c
===================================================================
--- trunk/helgrind/tests/tc11_XCHG.c 2010-01-02 10:41:46 UTC (rev 10990)
+++ trunk/helgrind/tests/tc11_XCHG.c 2010-01-02 10:43:23 UTC (rev 10991)
@@ -9,25 +9,34 @@
use the hardware bus lock (implicitly, since XCHG r,m on x86/amd64
does not require an explicit LOCK prefix.). */
+#undef PLAT_ppc64_aix5
+#undef PLAT_ppc32_aix5
+#undef PLAT_x86_darwin
+#undef PLAT_amd64_darwin
#undef PLAT_x86_linux
#undef PLAT_amd64_linux
#undef PLAT_ppc32_linux
#undef PLAT_ppc64_linux
-#undef PLAT_ppc32_aix5
-#undef PLAT_ppc64_aix5
+#undef PLAT_arm_linux
-#if !defined(_AIX) && defined(__i386__)
+#if defined(_AIX) && defined(__64BIT__)
+# define PLAT_ppc64_aix5 1
+#elif defined(_AIX) && !defined(__64BIT__)
+# define PLAT_ppc32_aix5 1
+#elif defined(__APPLE__) && defined(__i386__)
+# define PLAT_x86_darwin 1
+#elif defined(__APPLE__) && defined(__x86_64__)
+# define PLAT_amd64_darwin 1
+#elif defined(__linux__) && defined(__i386__)
# define PLAT_x86_linux 1
-#elif !defined(_AIX) && defined(__x86_64__)
+#elif defined(__linux__) && defined(__x86_64__)
# define PLAT_amd64_linux 1
-#elif !defined(_AIX) && defined(__powerpc__) && !defined(__powerpc64__)
+#elif defined(__linux__) && defined(__powerpc__) && !defined(__powerpc64__)
# define PLAT_ppc32_linux 1
-#elif !defined(_AIX) && defined(__powerpc__) && defined(__powerpc64__)
+#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__)
# define PLAT_ppc64_linux 1
-#elif defined(_AIX) && defined(__64BIT__)
-# define PLAT_ppc64_aix5 1
-#elif defined(_AIX) && !defined(__64BIT__)
-# define PLAT_ppc32_aix5 1
+#elif defined(__linux__) && defined(__arm__)
+# define PLAT_arm_linux 1
#endif
@@ -48,7 +57,8 @@
)
#elif defined(PLAT_ppc32_linux) || defined(PLAT_ppc64_linux) \
- || defined(PLAT_ppc32_aix5) || defined(PLAT_ppc64_aix5)
+ || defined(PLAT_ppc32_aix5) || defined(PLAT_ppc64_aix5) \
+ || defined(PLAT_arm_linux)
# if defined(HAVE_BUILTIN_ATOMIC)
# define XCHG_M_R(_addr,_lval) \
do { \
|
|
From: <sv...@va...> - 2010-01-02 10:41:53
|
Author: sewardj
Date: 2010-01-02 10:41:46 +0000 (Sat, 02 Jan 2010)
New Revision: 10990
Log:
Redo r10971 ("Made sure that C++ compilers do not complain about the
_VKI_IOC_TYPECHECK() macro") in a way which is easier to understand.
Also, add it for arm-linux.
Modified:
trunk/include/vki/vki-arm-linux.h
trunk/include/vki/vki-ppc32-linux.h
trunk/include/vki/vki-ppc64-linux.h
trunk/include/vki/vki-x86-linux.h
Modified: trunk/include/vki/vki-arm-linux.h
===================================================================
--- trunk/include/vki/vki-arm-linux.h 2010-01-02 10:37:58 UTC (rev 10989)
+++ trunk/include/vki/vki-arm-linux.h 2010-01-02 10:41:46 UTC (rev 10990)
@@ -475,11 +475,11 @@
((size) << _VKI_IOC_SIZESHIFT))
/* provoke compile error for invalid uses of size argument */
-extern unsigned int __vki_invalid_size_argument_for_IOC;
#define _VKI_IOC_TYPECHECK(t) \
((sizeof(t) == sizeof(t[1]) && \
- sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) ? \
- sizeof(t) : __vki_invalid_size_argument_for_IOC)
+ sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
+ ? sizeof(t) \
+ : /*cause gcc to complain about division by zero*/(1/0) )
/* used to create numbers */
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
Modified: trunk/include/vki/vki-ppc32-linux.h
===================================================================
--- trunk/include/vki/vki-ppc32-linux.h 2010-01-02 10:37:58 UTC (rev 10989)
+++ trunk/include/vki/vki-ppc32-linux.h 2010-01-02 10:41:46 UTC (rev 10990)
@@ -517,8 +517,10 @@
/* provoke compile error for invalid uses of size argument */
#define _VKI_IOC_TYPECHECK(t) \
- (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \
- sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
+ ((sizeof(t) == sizeof(t[1]) && \
+ sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
+ ? sizeof(t) \
+ : /*cause gcc to complain about division by zero*/(1/0) )
/* used to create numbers */
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
Modified: trunk/include/vki/vki-ppc64-linux.h
===================================================================
--- trunk/include/vki/vki-ppc64-linux.h 2010-01-02 10:37:58 UTC (rev 10989)
+++ trunk/include/vki/vki-ppc64-linux.h 2010-01-02 10:41:46 UTC (rev 10990)
@@ -560,8 +560,10 @@
/* provoke compile error for invalid uses of size argument */
#define _VKI_IOC_TYPECHECK(t) \
- (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \
- sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
+ ((sizeof(t) == sizeof(t[1]) && \
+ sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
+ ? sizeof(t) \
+ : /*cause gcc to complain about division by zero*/(1/0) )
/* used to create numbers */
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
Modified: trunk/include/vki/vki-x86-linux.h
===================================================================
--- trunk/include/vki/vki-x86-linux.h 2010-01-02 10:37:58 UTC (rev 10989)
+++ trunk/include/vki/vki-x86-linux.h 2010-01-02 10:41:46 UTC (rev 10990)
@@ -481,8 +481,10 @@
/* provoke compile error for invalid uses of size argument */
#define _VKI_IOC_TYPECHECK(t) \
- (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \
- sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
+ ((sizeof(t) == sizeof(t[1]) && \
+ sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
+ ? sizeof(t) \
+ : /*cause gcc to complain about division by zero*/(1/0) )
/* used to create numbers */
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
|
|
From: <sv...@va...> - 2010-01-02 10:38:07
|
Author: sewardj
Date: 2010-01-02 10:37:58 +0000 (Sat, 02 Jan 2010)
New Revision: 10989
Log:
Tidy up determination of the PLAT_ macros a bit.
Modified:
trunk/include/valgrind.h
Modified: trunk/include/valgrind.h
===================================================================
--- trunk/include/valgrind.h 2010-01-01 20:56:13 UTC (rev 10988)
+++ trunk/include/valgrind.h 2010-01-02 10:37:58 UTC (rev 10989)
@@ -89,13 +89,15 @@
Misc note: how to find out what's predefined in gcc by default:
gcc -Wp,-dM somefile.c
*/
+#undef PLAT_ppc64_aix5
+#undef PLAT_ppc32_aix5
+#undef PLAT_x86_darwin
+#undef PLAT_amd64_darwin
#undef PLAT_x86_linux
#undef PLAT_amd64_linux
#undef PLAT_ppc32_linux
#undef PLAT_ppc64_linux
#undef PLAT_arm_linux
-#undef PLAT_ppc32_aix5
-#undef PLAT_ppc64_aix5
#if defined(_AIX) && defined(__64BIT__)
# define PLAT_ppc64_aix5 1
|
|
From: Bart V. A. <bar...@gm...> - 2010-01-02 08:17:02
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2010-01-02 02:27:28 EST Ended at 2010-01-02 03:16:44 EST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Last 20 lines of verbose log follow echo make[3]: Entering directory `/net/home/bart/software/valgrind/nightly/valgrind-new/VEX' make[3]: Nothing to be done for `check-am'. make[3]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new/VEX' make[2]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new/VEX' Making check in coregrind make[2]: Entering directory `/net/home/bart/software/valgrind/nightly/valgrind-new/coregrind' make check-am make[3]: Entering directory `/net/home/bart/software/valgrind/nightly/valgrind-new/coregrind' gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_ppc64=1 -DVGO_linux=1 -DVGP_ppc64_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/bart/software/valgrind/nightly/valgrind-new/Inst/lib/valgrind"\" -DVG_PLATFORM="\"ppc64-linux\"" -m64 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -Wno-long-long -Wno-pointer-sign -fno-stack-protector -MT libcoregrind_ppc64_linux_a-m_libcassert.o -MD -MP -MF .deps/libcoregrind_ppc64_linux_a-m_libcassert.Tpo -c -o libcoregrind_ppc64_linux_a-m_libcassert.o `test -f 'm_libcassert.c' || echo './'`m_libcassert.c m_libcassert.c: In function âreport_and_quitâ: m_libcassert.c:191: error: invalid type argument of â->â (have âUnwindStartRegsâ) m_libcassert.c:191: error: invalid type argument of â->â (have âUnwindStartRegsâ) m_libcassert.c:191: error: invalid type argument of â->â (have âUnwindStartRegsâ) make[3]: *** [libcoregrind_ppc64_linux_a-m_libcassert.o] Error 1 make[3]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new/coregrind' make[2]: *** [check] Error 2 make[2]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new/coregrind' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 181 stderr failures, 55 stdout failures, 0 post failures == memcheck/tests/addressable (stdout) memcheck/tests/addressable (stderr) memcheck/tests/atomic_incs (stdout) memcheck/tests/atomic_incs (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/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/calloc-overflow (stderr) memcheck/tests/clientperm (stdout) memcheck/tests/clientperm (stderr) memcheck/tests/custom-overlap (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/deep_templates (stdout) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/erringfds (stdout) memcheck/tests/erringfds (stderr) memcheck/tests/error_counts (stderr) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/file_locking (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stdout) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/linux/brk (stderr) memcheck/tests/linux/capget (stderr) memcheck/tests/linux/lsframe1 (stderr) memcheck/tests/linux/lsframe2 (stderr) memcheck/tests/linux/sigqueue (stderr) memcheck/tests/linux/stack_changes (stdout) memcheck/tests/linux/stack_changes (stderr) memcheck/tests/linux/stack_switch (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/linux/timerfd-syscall (stderr) memcheck/tests/linux/with-space (stdout) memcheck/tests/linux/with-space (stderr) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/linux-syslog-syscall (stderr) memcheck/tests/long-supps (stderr) memcheck/tests/long_namespace_xml (stdout) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/mallinfo (stderr) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stdout) memcheck/tests/malloc3 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/malloc_usable (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/nanoleak2 (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stdout) memcheck/tests/new_override (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin2-not-quite (stderr) memcheck/tests/origin3-no (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stdout) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/origin6-fp (stderr) memcheck/tests/overlap (stdout) memcheck/tests/overlap (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stdout) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pdb-realloc (stderr) memcheck/tests/pdb-realloc2 (stdout) memcheck/tests/pdb-realloc2 (stderr) memcheck/tests/pipe (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/sh-mem-random (stdout) memcheck/tests/sh-mem-random (stderr) memcheck/tests/sh-mem (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/signal2 (stdout) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/strchr (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/unit_libcbase (stderr) memcheck/tests/unit_oset (stdout) memcheck/tests/unit_oset (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stdout) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stdout) memcheck/tests/varinfo6 (stderr) memcheck/tests/vcpu_bz2 (stdout) memcheck/tests/vcpu_bz2 (stderr) memcheck/tests/vcpu_fbench (stdout) memcheck/tests/vcpu_fbench (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/vcpu_fnfns (stderr) memcheck/tests/wrap1 (stdout) memcheck/tests/wrap1 (stderr) memcheck/tests/wrap2 (stdout) memcheck/tests/wrap2 (stderr) memcheck/tests/wrap3 (stdout) memcheck/tests/wrap3 (stderr) memcheck/tests/wrap4 (stdout) memcheck/tests/wrap4 (stderr) memcheck/tests/wrap5 (stdout) memcheck/tests/wrap5 (stderr) memcheck/tests/wrap6 (stdout) memcheck/tests/wrap6 (stderr) memcheck/tests/wrap7 (stdout) memcheck/tests/wrap7 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) memcheck/tests/writev (stderr) memcheck/tests/xml1 (stdout) memcheck/tests/xml1 (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/clreq (stderr) cachegrind/tests/dlclose (stdout) cachegrind/tests/dlclose (stderr) cachegrind/tests/notpower2 (stderr) cachegrind/tests/wrap5 (stdout) cachegrind/tests/wrap5 (stderr) callgrind/tests/notpower2-hwpref (stderr) callgrind/tests/notpower2-use (stderr) callgrind/tests/notpower2-wb (stderr) callgrind/tests/notpower2 (stderr) callgrind/tests/simwork1 (stdout) callgrind/tests/simwork1 (stderr) callgrind/tests/simwork2 (stdout) callgrind/tests/simwork2 (stderr) callgrind/tests/simwork3 (stdout) callgrind/tests/simwork3 (stderr) lackey/tests/true (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc32/testVMX (stdout) none/tests/ppc32/testVMX (stderr) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/bar_bad (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/bar_bad (stderr) drd/tests/circular_buffer (stderr) drd/tests/pth_cancel_locked (stderr) drd/tests/pth_cleanup_handler (stderr) drd/tests/tc23_bogus_condwait (stderr) drd/tests/unit_bitmap (stderr) drd/tests/unit_vc (stderr) exp-ptrcheck/tests/bad_percentify (stdout) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stdout) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stdout) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stdout) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Jan 2 03:05:36 2010 --- new.short Sat Jan 2 03:16:44 2010 *************** *** 6,246 **** ! Regression test results follow ! ! == 449 tests, 181 stderr failures, 55 stdout failures, 0 post failures == ! memcheck/tests/addressable (stdout) ! memcheck/tests/addressable (stderr) ! memcheck/tests/atomic_incs (stdout) ! memcheck/tests/atomic_incs (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/brk2 (stderr) ! memcheck/tests/buflen_check (stderr) ! memcheck/tests/calloc-overflow (stderr) ! memcheck/tests/clientperm (stdout) ! memcheck/tests/clientperm (stderr) ! memcheck/tests/custom-overlap (stderr) ! memcheck/tests/custom_alloc (stderr) ! memcheck/tests/deep_templates (stdout) ! memcheck/tests/describe-block (stderr) ! memcheck/tests/doublefree (stderr) ! memcheck/tests/erringfds (stdout) ! memcheck/tests/erringfds (stderr) ! memcheck/tests/error_counts (stderr) ! memcheck/tests/errs1 (stderr) ! memcheck/tests/execve (stderr) ! memcheck/tests/execve2 (stderr) ! memcheck/tests/exitprog (stderr) ! memcheck/tests/file_locking (stderr) ! memcheck/tests/fprw (stderr) ! memcheck/tests/fwrite (stderr) ! memcheck/tests/inits (stderr) ! memcheck/tests/inline (stdout) ! memcheck/tests/inline (stderr) ! memcheck/tests/leak-0 (stderr) ! memcheck/tests/leak-cases-full (stderr) ! memcheck/tests/leak-cases-summary (stderr) ! memcheck/tests/leak-cycle (stderr) ! memcheck/tests/leak-pool-0 (stderr) ! memcheck/tests/leak-pool-1 (stderr) ! memcheck/tests/leak-pool-2 (stderr) ! memcheck/tests/leak-pool-3 (stderr) ! memcheck/tests/leak-pool-4 (stderr) ! memcheck/tests/leak-pool-5 (stderr) ! memcheck/tests/leak-tree (stderr) ! memcheck/tests/linux/brk (stderr) ! memcheck/tests/linux/capget (stderr) ! memcheck/tests/linux/lsframe1 (stderr) ! memcheck/tests/linux/lsframe2 (stderr) ! memcheck/tests/linux/sigqueue (stderr) ! memcheck/tests/linux/stack_changes (stdout) ! memcheck/tests/linux/stack_changes (stderr) ! memcheck/tests/linux/stack_switch (stderr) ! memcheck/tests/linux/timerfd-syscall (stdout) ! memcheck/tests/linux/timerfd-syscall (stderr) ! memcheck/tests/linux/with-space (stdout) ! memcheck/tests/linux/with-space (stderr) ! memcheck/tests/linux-syscalls-2007 (stderr) ! memcheck/tests/linux-syslog-syscall (stderr) ! memcheck/tests/long-supps (stderr) ! memcheck/tests/long_namespace_xml (stdout) ! memcheck/tests/long_namespace_xml (stderr) ! memcheck/tests/mallinfo (stderr) ! memcheck/tests/malloc1 (stderr) ! memcheck/tests/malloc2 (stderr) ! memcheck/tests/malloc3 (stdout) ! memcheck/tests/malloc3 (stderr) ! memcheck/tests/malloc_free_fill (stderr) ! memcheck/tests/malloc_usable (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/nanoleak2 (stderr) ! memcheck/tests/nanoleak_supp (stderr) ! memcheck/tests/new_nothrow (stderr) ! memcheck/tests/new_override (stdout) ! memcheck/tests/new_override (stderr) ! memcheck/tests/noisy_child (stderr) ! memcheck/tests/null_socket (stderr) ! memcheck/tests/origin1-yes (stderr) ! memcheck/tests/origin2-not-quite (stderr) ! memcheck/tests/origin3-no (stderr) ! memcheck/tests/origin4-many (stderr) ! memcheck/tests/origin5-bz2 (stdout) ! memcheck/tests/origin5-bz2 (stderr) ! memcheck/tests/origin6-fp (stderr) ! memcheck/tests/overlap (stdout) ! memcheck/tests/overlap (stderr) ! memcheck/tests/partial_load_dflt (stderr) ! memcheck/tests/partial_load_ok (stderr) ! memcheck/tests/partiallydefinedeq (stdout) ! memcheck/tests/partiallydefinedeq (stderr) ! memcheck/tests/pdb-realloc (stderr) ! memcheck/tests/pdb-realloc2 (stdout) ! memcheck/tests/pdb-realloc2 (stderr) ! memcheck/tests/pipe (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/sh-mem-random (stdout) ! memcheck/tests/sh-mem-random (stderr) ! memcheck/tests/sh-mem (stderr) ! memcheck/tests/sigaltstack (stderr) ! memcheck/tests/sigkill (stderr) ! memcheck/tests/signal2 (stdout) ! memcheck/tests/signal2 (stderr) ! memcheck/tests/sigprocmask (stderr) ! memcheck/tests/str_tester (stderr) ! memcheck/tests/strchr (stderr) ! memcheck/tests/supp1 (stderr) ! memcheck/tests/supp2 (stderr) ! memcheck/tests/supp_unknown (stderr) ! memcheck/tests/suppfree (stderr) ! memcheck/tests/trivialleak (stderr) ! memcheck/tests/unit_libcbase (stderr) ! memcheck/tests/unit_oset (stdout) ! memcheck/tests/unit_oset (stderr) ! memcheck/tests/varinfo1 (stderr) ! memcheck/tests/varinfo2 (stderr) ! memcheck/tests/varinfo3 (stderr) ! memcheck/tests/varinfo4 (stdout) ! memcheck/tests/varinfo4 (stderr) ! memcheck/tests/varinfo5 (stderr) ! memcheck/tests/varinfo6 (stdout) ! memcheck/tests/varinfo6 (stderr) ! memcheck/tests/vcpu_bz2 (stdout) ! memcheck/tests/vcpu_bz2 (stderr) ! memcheck/tests/vcpu_fbench (stdout) ! memcheck/tests/vcpu_fbench (stderr) ! memcheck/tests/vcpu_fnfns (stdout) ! memcheck/tests/vcpu_fnfns (stderr) ! memcheck/tests/wrap1 (stdout) ! memcheck/tests/wrap1 (stderr) ! memcheck/tests/wrap2 (stdout) ! memcheck/tests/wrap2 (stderr) ! memcheck/tests/wrap3 (stdout) ! memcheck/tests/wrap3 (stderr) ! memcheck/tests/wrap4 (stdout) ! memcheck/tests/wrap4 (stderr) ! memcheck/tests/wrap5 (stdout) ! memcheck/tests/wrap5 (stderr) ! memcheck/tests/wrap6 (stdout) ! memcheck/tests/wrap6 (stderr) ! memcheck/tests/wrap7 (stdout) ! memcheck/tests/wrap7 (stderr) ! memcheck/tests/wrap8 (stdout) ! memcheck/tests/wrap8 (stderr) ! memcheck/tests/writev (stderr) ! memcheck/tests/xml1 (stdout) ! memcheck/tests/xml1 (stderr) ! cachegrind/tests/chdir (stderr) ! cachegrind/tests/clreq (stderr) ! cachegrind/tests/dlclose (stdout) ! cachegrind/tests/dlclose (stderr) ! cachegrind/tests/notpower2 (stderr) ! cachegrind/tests/wrap5 (stdout) ! cachegrind/tests/wrap5 (stderr) ! callgrind/tests/notpower2-hwpref (stderr) ! callgrind/tests/notpower2-use (stderr) ! callgrind/tests/notpower2-wb (stderr) ! callgrind/tests/notpower2 (stderr) ! callgrind/tests/simwork1 (stdout) ! callgrind/tests/simwork1 (stderr) ! callgrind/tests/simwork2 (stdout) ! callgrind/tests/simwork2 (stderr) ! callgrind/tests/simwork3 (stdout) ! callgrind/tests/simwork3 (stderr) ! lackey/tests/true (stderr) ! none/tests/empty-exe (stderr) ! none/tests/linux/mremap (stderr) ! none/tests/ppc32/jm-fp (stdout) ! none/tests/ppc32/jm-vmx (stdout) ! none/tests/ppc32/round (stdout) ! none/tests/ppc32/test_gx (stdout) ! none/tests/ppc32/testVMX (stdout) ! none/tests/ppc32/testVMX (stderr) ! none/tests/ppc64/jm-fp (stdout) ! none/tests/ppc64/jm-vmx (stdout) ! none/tests/ppc64/round (stdout) ! none/tests/shell_valid2 (stderr) ! none/tests/shell_valid3 (stderr) ! none/tests/shell_zerolength (stderr) ! helgrind/tests/bar_bad (stderr) ! helgrind/tests/hg05_race2 (stderr) ! helgrind/tests/tc06_two_races_xml (stderr) ! helgrind/tests/tc22_exit_w_lock (stderr) ! helgrind/tests/tc23_bogus_condwait (stderr) ! drd/tests/bar_bad (stderr) ! drd/tests/circular_buffer (stderr) ! drd/tests/pth_cancel_locked (stderr) ! drd/tests/pth_cleanup_handler (stderr) ! drd/tests/tc23_bogus_condwait (stderr) ! drd/tests/unit_bitmap (stderr) ! drd/tests/unit_vc (stderr) ! exp-ptrcheck/tests/bad_percentify (stdout) ! exp-ptrcheck/tests/bad_percentify (stderr) ! exp-ptrcheck/tests/base (stderr) ! exp-ptrcheck/tests/ccc (stderr) ! exp-ptrcheck/tests/fp (stderr) ! exp-ptrcheck/tests/globalerr (stderr) ! exp-ptrcheck/tests/hackedbz2 (stdout) ! exp-ptrcheck/tests/hackedbz2 (stderr) ! exp-ptrcheck/tests/hp_bounds (stderr) ! exp-ptrcheck/tests/hp_dangle (stderr) ! exp-ptrcheck/tests/hsg (stdout) ! exp-ptrcheck/tests/hsg (stderr) ! exp-ptrcheck/tests/justify (stderr) ! exp-ptrcheck/tests/partial_bad (stderr) ! exp-ptrcheck/tests/partial_good (stderr) ! exp-ptrcheck/tests/preen_invars (stdout) ! exp-ptrcheck/tests/preen_invars (stderr) ! exp-ptrcheck/tests/pth_create (stderr) ! exp-ptrcheck/tests/pth_specific (stderr) ! exp-ptrcheck/tests/realloc (stderr) ! exp-ptrcheck/tests/stackerr (stderr) ! exp-ptrcheck/tests/strcpy (stderr) ! exp-ptrcheck/tests/supp (stderr) ! exp-ptrcheck/tests/tricky (stderr) ! exp-ptrcheck/tests/unaligned (stderr) ! exp-ptrcheck/tests/zero (stderr) ! --- 6,27 ---- ! Last 20 lines of verbose log follow echo ! make[3]: Entering directory `/net/home/bart/software/valgrind/nightly/valgrind-new/VEX' ! make[3]: Nothing to be done for `check-am'. ! make[3]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new/VEX' ! make[2]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new/VEX' ! Making check in coregrind ! make[2]: Entering directory `/net/home/bart/software/valgrind/nightly/valgrind-new/coregrind' ! make check-am ! make[3]: Entering directory `/net/home/bart/software/valgrind/nightly/valgrind-new/coregrind' ! gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_ppc64=1 -DVGO_linux=1 -DVGP_ppc64_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/bart/software/valgrind/nightly/valgrind-new/Inst/lib/valgrind"\" -DVG_PLATFORM="\"ppc64-linux\"" -m64 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -Wno-long-long -Wno-pointer-sign -fno-stack-protector -MT libcoregrind_ppc64_linux_a-m_libcassert.o -MD -MP -MF .deps/libcoregrind_ppc64_linux_a-m_libcassert.Tpo -c -o libcoregrind_ppc64_linux_a-m_libcassert.o `test -f 'm_libcassert.c' || echo './'`m_libcassert.c ! m_libcassert.c: In function âreport_and_quitâ: ! m_libcassert.c:191: error: invalid type argument of â->â (have âUnwindStartRegsâ) ! m_libcassert.c:191: error: invalid type argument of â->â (have âUnwindStartRegsâ) ! m_libcassert.c:191: error: invalid type argument of â->â (have âUnwindStartRegsâ) ! make[3]: *** [libcoregrind_ppc64_linux_a-m_libcassert.o] Error 1 ! make[3]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new/coregrind' ! make[2]: *** [check] Error 2 ! make[2]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new/coregrind' ! make[1]: *** [check-recursive] Error 1 ! make[1]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-new' ! make: *** [check] Error 2 |
|
From: Vince W. <vi...@cs...> - 2010-01-02 05:19:36
|
Hello with the ARM work hitting the tree, I thought I'd see about getting some arm tests working for the exp-bbv tool. The patch below is a first attempt. The results files currently aren't correct; the only ARM machine I have access to is armv5 which doesn't seem to be supported currently. I hacked the configure script to allow arm5* and modified dispatch-arm-linux.S to not touch FPSCR but that doesn't seem to be enough; valgrind builds just fine but any programs run through it instantly give illegal instruction errrors. Vince Index: exp-bbv/tests/Makefile.am =================================================================== --- exp-bbv/tests/Makefile.am (revision 10988) +++ exp-bbv/tests/Makefile.am (working copy) @@ -16,8 +16,11 @@ if VGCONF_PLATFORMS_INCLUDE_PPC32_LINUX SUBDIRS += ppc32-linux endif +if VGCONF_PLATFORMS_INCLUDE_ARM_LINUX +SUBDIRS += arm-linux +endif -DIST_SUBDIRS = x86 x86-linux amd64-linux ppc32-linux . +DIST_SUBDIRS = x86 x86-linux amd64-linux ppc32-linux arm-linux . dist_noinst_SCRIPTS = \ filter_bb \ Index: exp-bbv/tests/arm-linux/million.stderr.exp =================================================================== --- exp-bbv/tests/arm-linux/million.stderr.exp (revision 0) +++ exp-bbv/tests/arm-linux/million.stderr.exp (revision 0) @@ -0,0 +1,6 @@ +# Thread 1 +# Total intervals: 10 (Interval Size 100000) +# Total instructions: 1000000 +# Total reps: 0 +# Unique reps: 0 +# Total fldcw instructions: 0 Index: exp-bbv/tests/arm-linux/ll.vgtest =================================================================== --- exp-bbv/tests/arm-linux/ll.vgtest (revision 0) +++ exp-bbv/tests/arm-linux/ll.vgtest (revision 0) @@ -0,0 +1,5 @@ +prog: ll +vgopts: --interval-size=1000 --bb-out-file=ll.out.bb +post: cat ll.out.bb +cleanup: rm ll.out.bb + Index: exp-bbv/tests/arm-linux/million.post.exp =================================================================== --- exp-bbv/tests/arm-linux/million.post.exp (revision 0) +++ exp-bbv/tests/arm-linux/million.post.exp (revision 0) @@ -0,0 +1,18 @@ +T:1:5 :2:99996 +T:2:100000 +T:2:100000 +T:2:100000 +T:2:100000 +T:2:100000 +T:2:100000 +T:2:100000 +T:2:100000 + + +# Thread 1 +# Total intervals: 10 (Interval Size 100000) +# Total instructions: 1000000 +# Total reps: 0 +# Unique reps: 0 +# Total fldcw instructions: 0 + Index: exp-bbv/tests/arm-linux/ll.stdout.exp =================================================================== --- exp-bbv/tests/arm-linux/ll.stdout.exp (revision 0) +++ exp-bbv/tests/arm-linux/ll.stdout.exp (revision 0) @@ -0,0 +1,16 @@ +[0;1;37;47m#################################################################[0;30;47m#####[1;37m#########[1;37;40m +[0;1;37;47m################################################################[0;30;47m#######[1;37m########[1;37;40m +[0;1;37;47m###################[31m#[37m############################################[0;30;47m##[1;37mO[0;30;47m#[1;37mO[0;30;47m##[1;37m########[1;37;40m +[0;1;37;47m##[0;30;47m######[1;37m##########[31m##[0;30;47m#[1;37m###########################################[0;30;47m#[1;33m#####[0;30;47m#[1;37m########[1;37;40m +[0;1;37;47m####[0;30;47m##[1;37m#############[0;30;47m#[1;37m##########################################[0;30;47m##[1;37m##[33m###[37m##[0;30;47m##[1;37m######[1;37;40m +[0;1;37;47m####[0;30;47m##[1;37m#########[31m###[37m###[0;30;47m###[1;37m#[0;30;47m####[1;37m###[0;30;47m###[1;37m####[0;30;47m###[1;37m##[0;30;47m#####[1;37m#[0;30;47m######[1;37m#####[0;30;47m#[1;37m##########[0;30;47m##[1;37m#####[1;37;40m +[0;1;37;47m####[0;30;47m##[1;37m########[31m#[37m##[31m#[0;30;47m#[1;37m###[0;30;47m###[1;37m####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m####[0;30;47m##[1;37m###[0;30;47m##[1;37m#######[0;30;47m#[1;37m############[0;30;47m##[1;37m####[1;37;40m +[0;1;37;47m####[0;30;47m##[1;37m#######[31m#[37m###[31m#[0;30;47m#[1;37m###[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m######[0;30;47m###[1;37m#########[0;30;47m#[1;37m############[0;30;47m###[1;37m###[1;37;40m +[0;1;37;47m####[0;30;47m##[1;37m##########[31m##[0;30;47m#[1;37m###[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m######[0;30;47m###[1;37m########[33m##[0;30;47m#[1;37m###########[0;30;47m##[1;33m#[37m###[1;37;40m +[0;1;37;47m####[0;30;47m##[1;37m#######[0;30;47m#[1;37m#[31m##[0;30;47m#[1;37m####[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m#####[0;30;47m##[1;37m#[0;30;47m##[1;37m#####[33m######[0;30;47m#[1;37m#######[30m#[33m######[37m#[1;37;40m +[0;1;37;47m####[0;30;47m##[1;37m######[0;30;47m##[1;37m#[31m##[0;30;47m#[1;37m#[0;30;47m#[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m###[1;37m###[0;30;47m###[1;37m####[0;30;47m##[1;37m###[0;30;47m##[1;37m####[33m#######[0;30;47m#[1;37m#####[0;30;47m#[1;33m#######[37m#[1;37;40m +[0;1;37;47m##[0;30;47m############[1;37m##[0;30;47m###[1;37m##[0;30;47m####[1;37m###[0;30;47m####[1;37m###[0;30;47m####[1;37m#[0;30;47m###[1;37m#[0;30;47m#####[1;37m#[0;30;47m######[1;37m###[33m#####[30m#[0;30;47m#####[1m#[33m#####[37m###[1;37;40m + +[9CLinux Version 2.6.29, Compiled #1 Wed May 13 15:51:54 UTC 2009 +[9COne 600.000000MHz PPC 745/755, 512M RAM, 49.79 Bogomips Total +[36Chenparma Index: exp-bbv/tests/arm-linux/ll.stderr.exp =================================================================== --- exp-bbv/tests/arm-linux/ll.stderr.exp (revision 0) +++ exp-bbv/tests/arm-linux/ll.stderr.exp (revision 0) @@ -0,0 +1,6 @@ +# Thread 1 +# Total intervals: 40 (Interval Size 1000) +# Total instructions: 40330 +# Total reps: 0 +# Unique reps: 0 +# Total fldcw instructions: 0 Index: exp-bbv/tests/arm-linux/million.S =================================================================== --- exp-bbv/tests/arm-linux/million.S (revision 0) +++ exp-bbv/tests/arm-linux/million.S (revision 0) @@ -0,0 +1,27 @@ + + # count for 1 million instructions + # total is 1 + 333332*3 + 2 + + +# Sycscalls +.equ SYSCALL_BASE, 0x900000 +.equ SYSCALL_EXIT, 1 + + .globl _start +_start: + + ldr r2,count @ set count + +big_loop: + add r2,r2,#-1 + cmp r2,#0 + bne big_loop @ repeat till zero + + @================================ + @ Exit + @================================ +exit: + mov r0,#0 @ result is zero + swi SYSCALL_BASE+SYSCALL_EXIT @ and exit + +count: .word 333332 Index: exp-bbv/tests/arm-linux/ll.post.exp =================================================================== --- exp-bbv/tests/arm-linux/ll.post.exp (revision 0) +++ exp-bbv/tests/arm-linux/ll.post.exp (revision 0) @@ -0,0 +1,49 @@ +T:1:16 :8:10 :6:32 :2:56 :9:48 :10:666 :4:90 :5:36 :7:2 :3:45 +T:8:5 :6:20 :2:34 :9:80 :10:775 :4:42 :5:22 :7:1 :3:21 +T:8:5 :6:16 :2:27 :9:64 :10:824 :4:30 :5:18 :7:1 :3:15 +T:8:5 :6:10 :2:18 :9:80 :10:865 :4:6 :5:12 :7:1 :3:3 +T:8:5 :6:10 :2:18 :9:96 :10:858 :5:12 :7:1 +T:8:5 :6:10 :2:18 :9:80 :10:865 :4:6 :5:12 :7:1 :3:3 +T:6:6 :2:9 :9:36 :10:943 :5:6 +T:8:5 :6:8 :2:15 :9:92 :10:869 :5:10 :7:1 +T:6:14 :2:21 :9:112 :10:839 :5:14 +T:8:5 :6:6 :2:12 :9:64 :10:902 :5:10 :7:1 +T:8:5 :6:8 :2:15 :9:80 :10:883 :5:8 :7:1 +T:6:8 :2:12 :9:64 :10:908 :5:8 +T:6:6 :2:9 :9:48 :10:931 :5:6 +T:8:5 :6:4 :2:9 :9:48 :10:927 :5:6 :7:1 +T:6:6 :2:9 :9:48 :10:931 :5:6 +T:8:5 :6:6 :2:12 :9:64 :10:904 :5:8 :7:1 +T:6:2 :2:3 :9:16 :10:977 :5:2 +T:8:5 :6:12 :2:21 :9:96 :10:842 :4:6 :5:14 :7:1 :3:3 +T:6:6 :2:9 :9:48 :10:931 :5:6 +T:6:6 :2:9 :9:48 :10:931 :5:6 +T:8:5 :6:14 :2:24 :9:112 :10:819 :4:6 :5:16 :7:1 :3:3 +T:8:5 :6:6 :2:12 :9:64 :10:904 :5:8 :7:1 +T:6:6 :2:9 :9:48 :10:931 :5:6 +T:8:5 :6:8 :2:15 :9:80 :10:881 :5:10 :7:1 +T:8:5 :6:10 :2:18 :9:96 :10:858 :5:12 :7:1 +T:6:10 :2:15 :9:80 :10:885 :5:10 +T:8:5 :6:10 :2:15 :9:64 :10:470 :4:6 :5:12 :7:1 :3:3 :11:2 :12:7 :13:405 +T:13:1000 +T:13:1000 +T:13:1000 +T:13:1000 +T:13:1000 +T:13:1000 +T:13:1000 +T:13:1000 +T:13:1000 +T:13:1000 +T:16:2 :19:2 :20:2 :21:2 :22:2 :23:1 :17:268 :18:10 :24:4 :25:6 :26:3 :30:3 :31:2 :12:28 :13:636 :14:8 :15:4 :27:12 :28:2 :29:3 +T:33:3 :34:4 :46:2 :47:4 :48:2 :49:4 :53:2 :54:4 :35:8 :37:246 :36:168 :38:8 :40:27 :39:22 :41:8 :44:51 :42:38 :43:34 :45:6 :17:116 :18:10 :32:10 :13:183 :14:4 :15:2 :27:12 :50:16 :28:2 :51:2 :52:2 +T:55:2 :56:1 :35:4 :37:381 :36:256 :38:4 :40:12 :39:10 :41:4 :44:15 :42:12 :43:10 :45:3 :17:64 :18:2 :24:4 :25:6 :26:3 :30:3 :31:2 :12:28 :13:148 :14:6 :15:3 :27:12 :28:2 :29:3 + + +# Thread 1 +# Total intervals: 40 (Interval Size 1000) +# Total instructions: 40330 +# Total reps: 0 +# Unique reps: 0 +# Total fldcw instructions: 0 + Index: exp-bbv/tests/arm-linux/filter_stderr =================================================================== --- exp-bbv/tests/arm-linux/filter_stderr (revision 0) +++ exp-bbv/tests/arm-linux/filter_stderr (revision 0) @@ -0,0 +1,5 @@ +#! /bin/sh + +../filter_stderr + + Property changes on: exp-bbv/tests/arm-linux/filter_stderr ___________________________________________________________________ Added: svn:executable + * Index: exp-bbv/tests/arm-linux/ll.S =================================================================== --- exp-bbv/tests/arm-linux/ll.S (revision 0) +++ exp-bbv/tests/arm-linux/ll.S (revision 0) @@ -0,0 +1,519 @@ +# +# linux_logo in ARM assembly language +# based on the code from ll_asm-0.41 +# +# By Vince Weaver <vince _at_ deater.net> +# +# Modified to remove non-deterministic system calls +# And to avoid reading from /proc + +.include "../logo.include" + +# offsets into the results returned by the uname syscall +.equ U_SYSNAME,0 +.equ U_NODENAME,65 +.equ U_RELEASE,65*2 +.equ U_VERSION,(65*3) +.equ U_MACHINE,(65*4) +.equ U_DOMAINNAME,65*5 + +# offset into the results returned by the sysinfo syscall +.equ S_TOTALRAM,16 + +# Sycscalls +.equ SYSCALL_BASE, 0x900000 +.equ SYSCALL_EXIT, 1 +#.equ SYSCALL_READ, 3 +.equ SYSCALL_WRITE, 4 +#.equ SYSCALL_OPEN, 5 +#.equ SYSCALL_CLOSE, 6 +#.equ SYSCALL_SYSINFO, 116 +#.equ SYSCALL_UNAME, 122 + +# +.equ STDIN,0 +.equ STDOUT,1 +.equ STDERR,2 + + .globl _start +_start: + ldr r11,data_addr + ldr r12,bss_addr + + #========================= + # PRINT LOGO + #========================= + +# LZSS decompression algorithm implementation +# by Stephan Walter 2002, based on LZSS.C by Haruhiko Okumura 1989 +# optimized some more by Vince Weaver + + ldr r1,out_addr @ buffer we are printing to + + mov r2,#(N-F) @ R + + add r3,r11,#(logo-data_begin) + @ r3 points to logo data + ldr r8,logo_end_addr + @ r8 points to logo end + ldr r9,text_addr @ r9 points to text buf + +decompression_loop: + ldrb r4,[r3],#+1 @ load a byte, increment pointer + + mov r5,#0xff @ load top as a hackish 8-bit counter + orr r5,r4,r5,LSL #8 @ shift 0xff left by 8 and or in the byte we loaded + +test_flags: + cmp r3,r8 @ have we reached the end? + bge done_logo @ if so, exit + + lsrs r5,#1 @ shift bottom bit into carry flag + bcs discrete_char @ if set, we jump to discrete char + +offset_length: + ldrb r0,[r3],#+1 @ load a byte, increment pointer + ldrb r4,[r3],#+1 @ load a byte, increment pointer + @ we can't load halfword as no unaligned loads on arm + + orr r4,r0,r4,LSL #8 @ merge back into 16 bits + @ this has match_length and match_position + + mov r7,r4 @ copy r4 to r7 + @ no need to mask r7, as we do it + @ by default in output_loop + + mov r0,#(THRESHOLD+1) + add r6,r0,r4,LSR #(P_BITS) + @ r6 = (r4 >> P_BITS) + THRESHOLD + 1 + @ (=match_length) + +output_loop: + ldr r0,pos_mask @ urgh, can't handle simple constants + and r7,r7,r0 @ mask it + ldrb r4,[r9,r7] @ load byte from text_buf[] + add r7,r7,#1 @ advance pointer in text_buf + +store_byte: + strb r4,[r1],#+1 @ store a byte, increment pointer + strb r4,[r9,r2] @ store a byte to text_buf[r] + add r2,r2,#1 @ r++ + mov r0,#(N) + sub r0,r0,#1 @ grrr no way to get this easier + and r2,r2,r0 @ mask r + + subs r6,r6,#1 @ decement count + bne output_loop @ repeat until k>j + + tst r5,#0xff00 @ are the top bits 0? + bne test_flags @ if not, re-load flags + + b decompression_loop + +discrete_char: + ldrb r4,[r3],#+1 @ load a byte, increment pointer + mov r6,#1 @ we set r6 to one so byte + @ will be output once + + b store_byte @ and store it + + +# end of LZSS code + +done_logo: + ldr r1,out_addr @ buffer we are printing to + + bl write_stdout @ print the logo + + #========================== + # PRINT VERSION + #========================== +first_line: + + mov r0,#0 +# add r0,r12,#(uname_info-data_begin) @ uname struct +# swi SYSCALL_BASE+SYSCALL_UNAME @ do syscall + + add r1,r11,#(uname_info-data_begin) + @ os-name from uname "Linux" + + ldr r10,out_addr @ point r10 to out_buffer + + bl strcat @ call strcat + + + add r1,r11,#(ver_string-data_begin) @ source is " Version " + bl strcat @ call strcat + + add r1,r11,#((uname_info-data_begin)+U_RELEASE) + @ version from uname, ie "2.6.20" + bl strcat @ call strcat + + add r1,r11,#(compiled_string-data_begin) + @ source is ", Compiled " + bl strcat @ call strcat + + add r1,r11,#((uname_info-data_begin)+U_VERSION) + @ compiled date + bl strcat @ call strcat + + mov r3,#0xa + strb r3,[r10],#+1 @ store a linefeed, increment pointer + strb r0,[r10],#+1 @ NUL terminate, increment pointer + + bl center_and_print @ center and print + + @=============================== + @ Middle-Line + @=============================== +middle_line: + @========= + @ Load /proc/cpuinfo into buffer + @========= + + ldr r10,out_addr @ point r10 to out_buffer + +# add r0,r11,#(cpuinfo-data_begin) + @ '/proc/cpuinfo' +# mov r1,#0 @ 0 = O_RDONLY <bits/fcntl.h> +# swi SYSCALL_BASE+SYSCALL_OPEN + @ syscall. return in r0? +# mov r5,r0 @ save our fd +# ldr r1,disk_addr +# mov r2,#4096 + @ 4096 is maximum size of proc file ;) +# swi SYSCALL_BASE+SYSCALL_READ + +# mov r0,r5 +# swi SYSCALL_BASE+SYSCALL_CLOSE + @ close (to be correct) + + + @============= + @ Number of CPUs + @============= +number_of_cpus: + + add r1,r11,#(one-data_begin) + # cheat. Who has an SMP arm? + bl strcat + + @========= + @ MHz + @========= +print_mhz: + + @ the arm system I have does not report MHz + + @========= + @ Chip Name + @========= +chip_name: + mov r0,#'s' + mov r1,#'o' + mov r2,#'r' + mov r3,#' ' + bl find_string + @ find 'sor\t: ' and grab up to ' ' + + add r1,r11,#(processor-data_begin) + @ print " Processor, " + bl strcat + + @======== + @ RAM + @======== + +# add r0,r12,#(sysinfo_buff-data_begin) +# swi SYSCALL_BASE+SYSCALL_SYSINFO +# @ sysinfo() syscall + + ldr r3,[r11,#((sysinfo_buff-data_begin)+S_TOTALRAM)] + @ size in bytes of RAM + movs r3,r3,lsr #20 @ divide by 1024*1024 to get M + adc r3,r3,#0 @ round + + mov r0,#1 + bl num_to_ascii + + add r1,r11,#(ram_comma-data_begin) + @ print 'M RAM, ' + bl strcat @ call strcat + + + @======== + @ Bogomips + @======== + + mov r0,#'I' + mov r1,#'P' + mov r2,#'S' + mov r3,#'\n' + bl find_string + + add r1,r11,#(bogo_total-data_begin) + bl strcat @ print bogomips total + + bl center_and_print @ center and print + + #================================= + # Print Host Name + #================================= +last_line: + ldr r10,out_addr @ point r10 to out_buffer + + add r1,r11,#((uname_info-data_begin)+U_NODENAME) + @ host name from uname() + bl strcat @ call strcat + + bl center_and_print @ center and print + + add r1,r11,#(default_colors-data_begin) + @ restore colors, print a few linefeeds + bl write_stdout + + + @================================ + @ Exit + @================================ +exit: + mov r0,#0 @ result is zero + swi SYSCALL_BASE+SYSCALL_EXIT @ and exit + + + @================================= + @ FIND_STRING + @================================= + @ r0,r1,r2 = string to find + @ r3 = char to end at + @ r5 trashed +find_string: + ldr r7,disk_addr @ look in cpuinfo buffer +find_loop: + ldrb r5,[r7],#+1 @ load a byte, increment pointer + cmp r5,r0 @ compare against first byte + ldrb r5,[r7] @ load next byte + cmpeq r5,r1 @ if first byte matched, comp this one + ldrb r5,[r7,#+1] @ load next byte + cmpeq r5,r2 @ if first two matched, comp this one + beq find_colon @ if all 3 matched, we are found + + cmp r5,#0 @ are we at EOF? + beq done @ if so, done + + b find_loop + +find_colon: + ldrb r5,[r7],#+1 @ load a byte, increment pointer + cmp r5,#':' + bne find_colon @ repeat till we find colon + + add r7,r7,#1 @ skip the space + +store_loop: + ldrb r5,[r7],#+1 @ load a byte, increment pointer + strb r5,[r10],#+1 @ store a byte, increment pointer + cmp r5,r3 + bne store_loop + +almost_done: + mov r0,#0 + strb r0,[r10],#-1 @ replace last value with NUL + +done: + blx r14 @ return + + #================================ + # strcat + #================================ + # value to cat in r1 + # output buffer in r10 + # r3 trashed +strcat: + ldrb r3,[r1],#+1 @ load a byte, increment pointer + strb r3,[r10],#+1 @ store a byte, increment pointer + cmp r3,#0 @ is it zero? + bne strcat @ if not loop + sub r10,r10,#1 @ point to one less than null + bx r14 @ return + + + #============================== + # center_and_print + #============================== + # string to center in at output_buffer + +center_and_print: + + stmfd SP!,{LR} @ store return address on stack + + add r1,r11,#(escape-data_begin) + @ we want to output ^[[ + bl write_stdout + +str_loop2: + ldr r2,out_addr @ point r2 to out_buffer + sub r2,r10,r2 @ get length by subtracting + + rsb r2,r2,#81 @ reverse subtract! r2=81-r2 + @ we use 81 to not count ending \n + + bne done_center @ if result negative, don't center + + lsrs r3,r2,#1 @ divide by 2 + adc r3,r3,#0 @ round? + + mov r0,#0 @ print to stdout + bl num_to_ascii @ print number of spaces + + add r1,r11,#(C-data_begin) + @ we want to output C + bl write_stdout + +done_center: + ldr r1,out_addr @ point r1 to out_buffer + ldmfd SP!,{LR} @ restore return address from stack + + #================================ + # WRITE_STDOUT + #================================ + # r1 has string + # r0,r2,r3 trashed +write_stdout: + mov r2,#0 @ clear count + +str_loop1: + add r2,r2,#1 + ldrb r3,[r1,r2] + cmp r3,#0 + bne str_loop1 @ repeat till zero + +write_stdout_we_know_size: + mov r0,#STDOUT @ print to stdout + swi SYSCALL_BASE+SYSCALL_WRITE @ run the syscall + bx r14 @ return + + + @############################# + @ num_to_ascii + @############################# + @ r3 = value to print + @ r0 = 0=stdout, 1=strcat + +num_to_ascii: + stmfd SP!,{r10,LR} @ store return address on stack + add r10,r12,#((ascii_buffer-bss_begin)) + add r10,r10,#10 + @ point to end of our buffer + + mov r4,#10 @ we'll be dividing by 10 +div_by_10: + bl divide @ Q=r7,$0, R=r8,$1 + add r8,r8,#0x30 @ convert to ascii + strb r8,[r10],#-1 @ store a byte, decrement pointer + adds r3,r7,#0 @ move Q in for next divide, update flags + bne div_by_10 @ if Q not zero, loop + +write_out: + add r1,r10,#1 @ adjust pointer + ldmfd SP!,{r10,LR} @ restore return address from stack + + cmp r0,#0 + bne strcat @ if 1, strcat + + b write_stdout @ else, fallthrough to stdout + + + @=================================================== + @ Divide - because ARM has no hardware int divide + @ yes this is an awful algorithm, but simple + @ and uses few registers + @================================================== + @ r3=numerator r4=denominator + @ r7=quotient r8=remainder + @ r5=trashed +divide: + + mov r7,#0 @ zero out quotient +divide_loop: + mul r5,r7,r4 @ multiply Q by denominator + add r7,r7,#1 @ increment quotient + cmp r5,r3 @ is it greater than numerator? + ble divide_loop @ if not, loop + sub r7,r7,#2 @ otherwise went too far, decrement + @ and done + + mul r5,r7,r4 @ calculate remainder + sub r8,r3,r5 @ R=N-(Q*D) + blx r14 @ return + + +bss_addr: .word bss_begin +data_addr: .word data_begin +out_addr: .word out_buffer +disk_addr: .word disk_buffer +logo_end_addr: .word logo_end +pos_mask: .word ((POSITION_MASK<<8)+0xff) +text_addr: .word text_buf + +#=========================================================================== +# section .data +#=========================================================================== +.data +data_begin: +ver_string: .ascii " Version \0" +compiled_string: .ascii ", Compiled \0" +processor: .ascii " Processor, \0" +ram_comma: .ascii "M RAM, \0" +bogo_total: .ascii " Bogomips Total\n\0" + +default_colors: .ascii "\033[0m\n\n\0" +escape: .ascii "\033[\0" +C: .ascii "C\0" + +one: .ascii "One \0" + +uname_info: +.ascii "Linux\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "lindt\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "2.6.32\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "#1 Wed May 13 15:51:54 UTC 2009\0" +.ascii "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +.ascii "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + + +disk_buffer: +.ascii "Processor : Feroceon 88FR131 rev 1 (v5l)\n" +.ascii "BogoMIPS : 1192.75\n" +.ascii "Features : swp half thumb fastmult edsp \n" +.ascii "CPU implementer : 0x56\n" +.ascii "CPU architecture: 5TE\n" +.ascii "CPU variant : 0x2\n" +.ascii "CPU part : 0x131\n" +.ascii "CPU revision : 1\n" +.ascii "\n" +.ascii "Hardware : Marvell SheevaPlug Reference Board\n" +.ascii "Revision : 0000\n" +.ascii "Serial : 0000000000000000\n\0" + + +sysinfo_buff: +.long 0,0,0,0,512*1024*1024,0,0,0 + +.include "../logo.lzss_new" + + +#============================================================================ +# section .bss +#============================================================================ +.bss +bss_begin: +.lcomm ascii_buffer,10 +.lcomm text_buf, (N+F-1) +.lcomm out_buffer,16384 Index: exp-bbv/tests/arm-linux/Makefile.am =================================================================== --- exp-bbv/tests/arm-linux/Makefile.am (revision 0) +++ exp-bbv/tests/arm-linux/Makefile.am (revision 0) @@ -0,0 +1,22 @@ +include $(top_srcdir)/Makefile.tool-tests.am + +dist_noinst_SCRIPTS = filter_stderr + +check_PROGRAMS = \ + million ll + +EXTRA_DIST = \ + ll.stderr.exp \ + ll.stdout.exp \ + ll.post.exp \ + ll.vgtest \ + million.stderr.exp \ + million.post.exp \ + million.vgtest + +AM_CCASFLAGS += -ffreestanding + +LDFLAGS += -nostartfiles -nodefaultlibs + +ll_SOURCES = ll.S +million_SOURCES = million.S Index: exp-bbv/tests/arm-linux/million.vgtest =================================================================== --- exp-bbv/tests/arm-linux/million.vgtest (revision 0) +++ exp-bbv/tests/arm-linux/million.vgtest (revision 0) @@ -0,0 +1,5 @@ +prog: million +vgopts: --interval-size=100000 --bb-out-file=million.out.bb +post: cat million.out.bb +cleanup: rm million.out.bb + Index: configure.in =================================================================== --- configure.in (revision 10988) +++ configure.in (working copy) @@ -1933,6 +1933,7 @@ exp-bbv/tests/x86-linux/Makefile exp-bbv/tests/amd64-linux/Makefile exp-bbv/tests/ppc32-linux/Makefile + exp-bbv/tests/arm-linux/Makefile ]) AC_OUTPUT |
|
From: Tom H. <th...@cy...> - 2010-01-02 03:49:46
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2010-01-02 03:05:05 GMT Ended at 2010-01-02 03:49:22 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 531 tests, 2 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2010-01-02 03:36:11
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2010-01-02 03:10:06 GMT Ended at 2010-01-02 03:35:58 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: <sv...@va...> - 2010-01-01 20:56:25
|
Author: sewardj
Date: 2010-01-01 20:56:13 +0000 (Fri, 01 Jan 2010)
New Revision: 10988
Log:
initUnwindContext: put back into the loop, some initialisations for
ARM which were originally in the loop but inadvertantly got lifted out
during recent merging. This appears to make stack unwinding work
again on ARM-Linux.
Modified:
trunk/coregrind/m_debuginfo/readdwarf.c
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2010-01-01 19:55:17 UTC (rev 10987)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2010-01-01 20:56:13 UTC (rev 10988)
@@ -2015,16 +2015,16 @@
ctx->state[j].reg[i].tag = RR_Undef;
/* ctx->state[j].reg[i].arg = 0; */
}
+# if defined(VGA_arm)
+ /* All callee-saved registers (or at least the ones we are
+ summarising for) should start out as RR_Same, on ARM. */
+ ctx->state[j].reg[11].tag = RR_Same;
+ /* ctx->state[j].reg[13].tag = RR_Same; */
+ ctx->state[j].reg[14].tag = RR_Same;
+ ctx->state[j].reg[12].tag = RR_Same;
+ /* this can't be right though: R12 (IP) isn't callee saved. */
+# endif
}
-# if defined(VGA_arm)
- /* All callee-saved registers (or at least the ones we are
- summarising for) should start out as RR_Same, on ARM. */
- ctx->state[j].reg[11].tag = RR_Same;
- /* ctx->state[j].reg[13].tag = RR_Same; */
- ctx->state[j].reg[14].tag = RR_Same;
- ctx->state[j].reg[12].tag = RR_Same;
- /* this can't be right though: R12 (IP) isn't callee saved. */
-# endif
}
|
|
From: <sv...@va...> - 2010-01-01 19:55:33
|
Author: sewardj
Date: 2010-01-01 19:55:17 +0000 (Fri, 01 Jan 2010)
New Revision: 10987
Log:
Unbreak stack unwinding on x86-linux and amd64-linux following merge
of ARM CFI unwinding in r10986.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/readdwarf.c
trunk/coregrind/m_stacktrace.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2010-01-01 18:46:41 UTC (rev 10986)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2010-01-01 19:55:17 UTC (rev 10987)
@@ -2217,8 +2217,8 @@
# if defined(VGA_x86) || defined(VGA_amd64)
COMPUTE(uregsPrev.xip, uregsHere->xip, cfsi->ra_how, cfsi->ra_off);
- COMPUTE(uregsPrev.xsp, uregsPrev->xsp, cfsi->sp_how, cfsi->sp_off);
- COMPUTE(uregsPrev.xbp, uregsPrev->xbp, cfsi->bp_how, cfsi->bp_off);
+ COMPUTE(uregsPrev.xsp, uregsHere->xsp, cfsi->sp_how, cfsi->sp_off);
+ COMPUTE(uregsPrev.xbp, uregsHere->xbp, cfsi->bp_how, cfsi->bp_off);
# elif defined(VGA_arm)
COMPUTE(uregsPrev.r15, uregsHere->r15, cfsi->ra_how, cfsi->ra_off);
COMPUTE(uregsPrev.r14, uregsHere->r14, cfsi->r14_how, cfsi->r14_off);
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2010-01-01 18:46:41 UTC (rev 10986)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2010-01-01 19:55:17 UTC (rev 10987)
@@ -2175,10 +2175,9 @@
SUMMARISE_HOW(si->ra_how, si->ra_off,
ctxs->reg[ctx->ra_reg] );
- SUMMARISE_HOW(si->fp_how, si->fp_off,
+ SUMMARISE_HOW(si->bp_how, si->bp_off,
ctxs->reg[FP_REG] );
-
/* 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 = CFIR_CFAREL;
@@ -2187,7 +2186,7 @@
/* also, gcc says "Undef" for %{e,r}bp when it is unchanged. So
.. */
if (ctxs->reg[FP_REG].tag == RR_Undef)
- si->fp_how = CFIR_SAME;
+ si->bp_how = CFIR_SAME;
/* knock out some obviously stupid cases */
if (si->ra_how == CFIR_SAME)
@@ -2319,11 +2318,11 @@
dwreg = src->Cex.DwReg.reg;
# if defined(VGA_x86) || defined(VGA_amd64)
if (dwreg == SP_REG)
- return ML_(CfiExpr_CfiReg)( dstxa, Creg_SP );
+ return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_SP );
if (dwreg == FP_REG)
- return ML_(CfiExpr_CfiReg)( dstxa, Creg_FP );
+ return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_BP );
if (dwreg == srcuc->ra_reg)
- return ML_(CfiExpr_CfiReg)( dstxa, Creg_IP ); /* correct? */
+ return ML_(CfiExpr_CfiReg)( dstxa, Creg_IA_IP ); /* correct? */
# elif defined(VGA_arm)
if (dwreg == SP_REG)
return ML_(CfiExpr_CfiReg)( dstxa, Creg_ARM_R13 );
Modified: trunk/coregrind/m_stacktrace.c
===================================================================
--- trunk/coregrind/m_stacktrace.c 2010-01-01 18:46:41 UTC (rev 10986)
+++ trunk/coregrind/m_stacktrace.c 2010-01-01 19:55:17 UTC (rev 10987)
@@ -79,10 +79,11 @@
vg_assert(sizeof(Addr) == sizeof(UWord));
vg_assert(sizeof(Addr) == sizeof(void*));
- Addr ip = (Addr)startRegs->r_pc;
- Addr sp = (Addr)startRegs->r_sp;
- Addr fp = startRegs->misc.X86.r_ebp;
- Addr fp_min = sp;
+ D3UnwindRegs uregs;
+ uregs.xip = (Addr)startRegs->r_pc;
+ uregs.xsp = (Addr)startRegs->r_sp;
+ uregs.xbp = startRegs->misc.X86.r_ebp;
+ Addr fp_min = uregs.xsp;
/* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1],
stopping when the trail goes cold, which we guess to be
@@ -98,7 +99,8 @@
if (debug)
VG_(printf)("max_n_ips=%d fp_min=0x%lx fp_max_orig=0x%lx, "
"fp_max=0x%lx ip=0x%lx fp=0x%lx\n",
- max_n_ips, fp_min, fp_max_orig, fp_max, ip, fp);
+ max_n_ips, fp_min, fp_max_orig, fp_max,
+ uregs.xip, uregs.xbp);
/* Assertion broken before main() is reached in pthreaded programs; the
* offending stack traces only have one item. --njn, 2002-aug-16 */
@@ -109,18 +111,18 @@
if (fp_min + 512 >= fp_max) {
/* If the stack limits look bogus, don't poke around ... but
don't bomb out either. */
- if (sps) sps[0] = sp;
- if (fps) fps[0] = fp;
- ips[0] = ip;
+ if (sps) sps[0] = uregs.xsp;
+ if (fps) fps[0] = uregs.xbp;
+ ips[0] = uregs.xip;
return 1;
}
# endif
/* fp is %ebp. sp is %esp. ip is %eip. */
- if (sps) sps[0] = sp;
- if (fps) fps[0] = fp;
- ips[0] = ip;
+ if (sps) sps[0] = uregs.xsp;
+ if (fps) fps[0] = uregs.xbp;
+ ips[0] = uregs.xip;
i = 1;
/* Loop unwinding the stack. Note that the IP value we get on
@@ -153,52 +155,55 @@
fails, and is expensive. */
/* Deal with frames resulting from functions which begin "pushl%
ebp ; movl %esp, %ebp" which is the ABI-mandated preamble. */
- if (fp_min <= fp &&
- fp <= fp_max - 1 * sizeof(UWord)/*see comment below*/)
+ if (fp_min <= uregs.xbp &&
+ uregs.xbp <= fp_max - 1 * sizeof(UWord)/*see comment below*/)
{
/* fp looks sane, so use it. */
- ip = (((UWord*)fp)[1]);
+ uregs.xip = (((UWord*)uregs.xbp)[1]);
// We stop if we hit a zero (the traditional end-of-stack
// marker) or a one -- these correspond to recorded IPs of 0 or -1.
// The latter because r8818 (in this file) changes the meaning of
// entries [1] and above in a stack trace, by subtracting 1 from
// them. Hence stacks that used to end with a zero value now end in
// -1 and so we must detect that too.
- if (0 == ip || 1 == ip) break;
- sp = fp + sizeof(Addr) /*saved %ebp*/
- + sizeof(Addr) /*ra*/;
- fp = (((UWord*)fp)[0]);
- if (sps) sps[i] = sp;
- if (fps) fps[i] = fp;
- ips[i++] = ip - 1; /* -1: refer to calling insn, not the RA */
+ if (0 == uregs.xip || 1 == uregs.xip) break;
+ uregs.xsp = uregs.xbp + sizeof(Addr) /*saved %ebp*/
+ + sizeof(Addr) /*ra*/;
+ uregs.xbp = (((UWord*)uregs.xbp)[0]);
+ if (sps) sps[i] = uregs.xsp;
+ if (fps) fps[i] = uregs.xbp;
+ ips[i++] = uregs.xip - 1; /* -1: refer to calling insn, not the RA */
if (debug)
VG_(printf)(" ipsF[%d]=0x%08lx\n", i-1, ips[i-1]);
- ip = ip - 1; /* as per comment at the head of this loop */
+ uregs.xip = uregs.xip - 1;
+ /* as per comment at the head of this loop */
continue;
}
/* That didn't work out, so see if there is any CF info to hand
which can be used. */
- if ( VG_(use_CF_info)( &ip, &sp, &fp, fp_min, fp_max ) ) {
- if (0 == ip || 1 == ip) break;
- if (sps) sps[i] = sp;
- if (fps) fps[i] = fp;
- ips[i++] = ip - 1; /* -1: refer to calling insn, not the RA */
+ if ( VG_(use_CF_info)( &uregs, fp_min, fp_max ) ) {
+ if (0 == uregs.xip || 1 == uregs.xip) break;
+ if (sps) sps[i] = uregs.xsp;
+ if (fps) fps[i] = uregs.xbp;
+ ips[i++] = uregs.xip - 1; /* -1: refer to calling insn, not the RA */
if (debug)
VG_(printf)(" ipsC[%d]=0x%08lx\n", i-1, ips[i-1]);
- ip = ip - 1; /* as per comment at the head of this loop */
+ uregs.xip = uregs.xip - 1;
+ /* as per comment at the head of this loop */
continue;
}
/* And, similarly, try for MSVC FPO unwind info. */
- if ( VG_(use_FPO_info)( &ip, &sp, &fp, fp_min, fp_max ) ) {
- if (0 == ip || 1 == ip) break;
- if (sps) sps[i] = sp;
- if (fps) fps[i] = fp;
- ips[i++] = ip;
+ if ( VG_(use_FPO_info)( &uregs.xip, &uregs.xsp, &uregs.xbp,
+ fp_min, fp_max ) ) {
+ if (0 == uregs.xip || 1 == uregs.xip) break;
+ if (sps) sps[i] = uregs.xsp;
+ if (fps) fps[i] = uregs.xbp;
+ ips[i++] = uregs.xip;
if (debug)
VG_(printf)(" ipsC[%d]=0x%08lx\n", i-1, ips[i-1]);
- ip = ip - 1;
+ uregs.xip = uregs.xip - 1;
continue;
}
@@ -230,10 +235,11 @@
vg_assert(sizeof(Addr) == sizeof(UWord));
vg_assert(sizeof(Addr) == sizeof(void*));
- Addr ip = startRegs->r_pc;
- Addr sp = startRegs->r_sp;
- Addr fp = startRegs->misc.AMD64.r_rbp;
- Addr fp_min = sp;
+ D3UnwindRegs uregs;
+ uregs.xip = startRegs->r_pc;
+ uregs.xsp = startRegs->r_sp;
+ uregs.xbp = startRegs->misc.AMD64.r_rbp;
+ Addr fp_min = uregs.xsp;
/* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1],
stopping when the trail goes cold, which we guess to be
@@ -249,7 +255,8 @@
if (debug)
VG_(printf)("max_n_ips=%d fp_min=0x%lx fp_max_orig=0x%lx, "
"fp_max=0x%lx ip=0x%lx fp=0x%lx\n",
- max_n_ips, fp_min, fp_max_orig, fp_max, ip, fp);
+ max_n_ips, fp_min, fp_max_orig, fp_max,
+ uregs.xip, uregs.xbp);
/* Assertion broken before main() is reached in pthreaded programs; the
* offending stack traces only have one item. --njn, 2002-aug-16 */
@@ -260,18 +267,18 @@
if (fp_min + 512 >= fp_max) {
/* If the stack limits look bogus, don't poke around ... but
don't bomb out either. */
- if (sps) sps[0] = sp;
- if (fps) fps[0] = fp;
- ips[0] = ip;
+ if (sps) sps[0] = uregs.xsp;
+ if (fps) fps[0] = uregs.xbp;
+ ips[0] = uregs.xip;
return 1;
}
# endif
/* fp is %rbp. sp is %rsp. ip is %rip. */
- ips[0] = ip;
- if (sps) sps[0] = sp;
- if (fps) fps[0] = fp;
+ ips[0] = uregs.xip;
+ if (sps) sps[0] = uregs.xsp;
+ if (fps) fps[0] = uregs.xbp;
i = 1;
/* Loop unwinding the stack. Note that the IP value we get on
@@ -298,14 +305,14 @@
/* First off, see if there is any CFI info to hand which can
be used. */
- if ( VG_(use_CF_info)( &ip, &sp, &fp, fp_min, fp_max ) ) {
- if (0 == ip || 1 == ip) break;
- if (sps) sps[i] = sp;
- if (fps) fps[i] = fp;
- ips[i++] = ip - 1; /* -1: refer to calling insn, not the RA */
+ if ( VG_(use_CF_info)( &uregs, fp_min, fp_max ) ) {
+ if (0 == uregs.xip || 1 == uregs.xip) break;
+ if (sps) sps[i] = uregs.xsp;
+ if (fps) fps[i] = uregs.xbp;
+ ips[i++] = uregs.xip - 1; /* -1: refer to calling insn, not the RA */
if (debug)
VG_(printf)(" ipsC[%d]=%#08lx\n", i-1, ips[i-1]);
- ip = ip - 1; /* as per comment at the head of this loop */
+ uregs.xip = uregs.xip - 1; /* as per comment at the head of this loop */
continue;
}
@@ -321,19 +328,19 @@
fact that we are prodding at & ((UWord*)fp)[1] and so need to
adjust the limit check accordingly. Omitting this has been
observed to cause segfaults on rare occasions. */
- if (fp_min <= fp && fp <= fp_max - 1 * sizeof(UWord)) {
+ if (fp_min <= uregs.xbp && uregs.xbp <= fp_max - 1 * sizeof(UWord)) {
/* fp looks sane, so use it. */
- ip = (((UWord*)fp)[1]);
- if (0 == ip || 1 == ip) break;
- sp = fp + sizeof(Addr) /*saved %rbp*/
- + sizeof(Addr) /*ra*/;
- fp = (((UWord*)fp)[0]);
- if (sps) sps[i] = sp;
- if (fps) fps[i] = fp;
- ips[i++] = ip - 1; /* -1: refer to calling insn, not the RA */
+ uregs.xip = (((UWord*)uregs.xbp)[1]);
+ if (0 == uregs.xip || 1 == uregs.xip) break;
+ uregs.xsp = uregs.xbp + sizeof(Addr) /*saved %rbp*/
+ + sizeof(Addr) /*ra*/;
+ uregs.xbp = (((UWord*)uregs.xbp)[0]);
+ if (sps) sps[i] = uregs.xsp;
+ if (fps) fps[i] = uregs.xbp;
+ ips[i++] = uregs.xip - 1; /* -1: refer to calling insn, not the RA */
if (debug)
VG_(printf)(" ipsF[%d]=%#08lx\n", i-1, ips[i-1]);
- ip = ip - 1; /* as per comment at the head of this loop */
+ uregs.xip = uregs.xip - 1; /* as per comment at the head of this loop */
continue;
}
@@ -349,19 +356,20 @@
address; instead scan a likely section of stack (eg sp .. sp+256)
and use suitable values found there.
*/
- if (fp_min <= sp && sp < fp_max) {
- ip = ((UWord*)sp)[0];
- if (0 == ip || 1 == ip) break;
- if (sps) sps[i] = sp;
- if (fps) fps[i] = fp;
- ips[i++] = ip == 0
+ if (fp_min <= uregs.xsp && uregs.xsp < fp_max) {
+ uregs.xip = ((UWord*)uregs.xsp)[0];
+ if (0 == uregs.xip || 1 == uregs.xip) break;
+ if (sps) sps[i] = uregs.xsp;
+ if (fps) fps[i] = uregs.xbp;
+ ips[i++] = uregs.xip == 0
? 0 /* sp[0] == 0 ==> stuck at the bottom of a
thread stack */
- : ip - 1; /* -1: refer to calling insn, not the RA */
+ : uregs.xip - 1;
+ /* -1: refer to calling insn, not the RA */
if (debug)
VG_(printf)(" ipsH[%d]=%#08lx\n", i-1, ips[i-1]);
- ip = ip - 1; /* as per comment at the head of this loop */
- sp += 8;
+ uregs.xip = uregs.xip - 1; /* as per comment at the head of this loop */
+ uregs.xsp += 8;
continue;
}
|
|
From: <sv...@va...> - 2010-01-01 19:19:17
|
Author: sewardj
Date: 2010-01-01 19:19:08 +0000 (Fri, 01 Jan 2010)
New Revision: 1951
Log:
Generate a couple more ARM specific offsets; also R1 on ppc32/64.
Modified:
trunk/auxprogs/genoffsets.c
Modified: trunk/auxprogs/genoffsets.c
===================================================================
--- trunk/auxprogs/genoffsets.c 2009-12-31 19:26:03 UTC (rev 1950)
+++ trunk/auxprogs/genoffsets.c 2010-01-01 19:19:08 UTC (rev 1951)
@@ -127,6 +127,7 @@
// ppc32
GENOFFSET(PPC32,ppc32,GPR0);
+ GENOFFSET(PPC32,ppc32,GPR1);
GENOFFSET(PPC32,ppc32,GPR2);
GENOFFSET(PPC32,ppc32,GPR3);
GENOFFSET(PPC32,ppc32,GPR4);
@@ -141,6 +142,7 @@
// ppc64
GENOFFSET(PPC64,ppc64,GPR0);
+ GENOFFSET(PPC64,ppc64,GPR1);
GENOFFSET(PPC64,ppc64,GPR2);
GENOFFSET(PPC64,ppc64,GPR3);
GENOFFSET(PPC64,ppc64,GPR4);
@@ -161,5 +163,7 @@
GENOFFSET(ARM,arm,R4);
GENOFFSET(ARM,arm,R5);
GENOFFSET(ARM,arm,R7);
+ GENOFFSET(ARM,arm,R13);
+ GENOFFSET(ARM,arm,R14);
GENOFFSET(ARM,arm,R15);
}
|
|
From: <sv...@va...> - 2010-01-01 18:46:50
|
Author: sewardj
Date: 2010-01-01 18:46:41 +0000 (Fri, 01 Jan 2010)
New Revision: 10986
Log:
Make the Dwarf3 CFI stack unwinding machinery work on arm-linux
too. This is a first step towards making not be completely
x86/amd64-linux specific, and so replaces some x86/amd64-specific
stuff with more general constructions:
* structure 'DiCfSI', into which the info is summarised, has been
made target-specific (ugh), since the sets of registers to be
unwound differ on different targets.
* enum CfiReg and the CFIC_ constants have been expanded
accordingly, to handle both arm and x86/amd64 registers.
The abbreviation "IA" (Intel Architecture) has been used in a
few places where the x86 and amd64 definitions are shared.
* the CFI reader/summariser in readdwarf.c has been expanded &
generalised appropriately.
* the DiCfSI evaluator in debuginfo.c, VG_(use_CFI_info), has
also been generalised appropriately.
The main change is that instead of passing around triples
of (IP, SP, BP) values, a new structure 'D3UnwindRegs' is
passed around instead. This is defined differently for IA and
ARM and succeeds in hiding at least some of the differences
where we don't care about them.
Note also, D3UnwindRegs duplicates, in purpose and structure,
structure 'RegSummary' in priv_d3basics.h. This will be tidied
up in due course.
This commit almost certainly breaks stack unwinding on amd64-linux.
Modified:
trunk/coregrind/m_debuginfo/d3basics.c
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/priv_storage.h
trunk/coregrind/m_debuginfo/readdwarf.c
trunk/coregrind/m_debuginfo/readelf.c
trunk/coregrind/m_debuginfo/storage.c
trunk/coregrind/m_stacktrace.c
trunk/coregrind/pub_core_debuginfo.h
Modified: trunk/coregrind/m_debuginfo/d3basics.c
===================================================================
--- trunk/coregrind/m_debuginfo/d3basics.c 2010-01-01 18:31:41 UTC (rev 10985)
+++ trunk/coregrind/m_debuginfo/d3basics.c 2010-01-01 18:46:41 UTC (rev 10986)
@@ -833,13 +833,16 @@
break;
case DW_OP_call_frame_cfa:
if (!regs)
- FAIL("evaluate_Dwarf3_Expr: DW_OP_call_frame_cfa but no reg info");
+ FAIL("evaluate_Dwarf3_Expr: "
+ "DW_OP_call_frame_cfa but no reg info");
#if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
- /* Valgrind on ppc32/ppc64 currently doesn't use unwind info. */
+ /* Valgrind on ppc32/ppc64 currently doesn't use unwind info. */
uw1 = *(Addr *)(regs->sp);
#else
uw1 = ML_(get_CFA)(regs->ip, regs->sp, regs->fp, 0, ~(UWord) 0);
#endif
+ /* we expect this to fail on arm-linux, since ML_(get_CFA)
+ always returns zero at present. */
if (!uw1)
FAIL("evaluate_Dwarf3_Expr: Could not resolve "
"DW_OP_call_frame_cfa");
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2010-01-01 18:31:41 UTC (rev 10985)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2010-01-01 18:46:41 UTC (rev 10986)
@@ -708,7 +708,7 @@
# if defined(VGA_x86) || defined(VGA_ppc32)
is_rx_map = seg->hasR && seg->hasX;
is_rw_map = seg->hasR && seg->hasW;
-# elif defined(VGA_amd64) || defined(VGA_ppc64)
+# elif defined(VGA_amd64) || defined(VGA_ppc64) || defined(VGA_arm)
is_rx_map = seg->hasR && seg->hasX && !seg->hasW;
is_rw_map = seg->hasR && seg->hasW && !seg->hasX;
# else
@@ -1395,17 +1395,17 @@
return Vg_FnNameMain;
} else if (
-#if defined(VGO_linux)
+# if defined(VGO_linux)
VG_STREQ("__libc_start_main", name) || // glibc glibness
VG_STREQ("generic_start_main", name) || // Yellow Dog doggedness
-#elif defined(VGO_aix5)
+# elif defined(VGO_aix5)
VG_STREQ("__start", name) || // AIX aches
-#elif defined(VGO_darwin)
+# elif defined(VGO_darwin)
// See readmacho.c for an explanation of this.
VG_STREQ("start_according_to_valgrind", name) || // Darwin, darling
-#else
-# error Unknown OS
-#endif
+# else
+# error "Unknown OS"
+# endif
0) {
return Vg_FnNameBelowMain;
@@ -1821,11 +1821,9 @@
a CfiExpr into one convenient struct. */
typedef
struct {
- Addr ipHere;
- Addr spHere;
- Addr fpHere;
- Addr min_accessible;
- Addr max_accessible;
+ D3UnwindRegs* uregs;
+ Addr min_accessible;
+ Addr max_accessible;
}
CfiExprEvalContext;
@@ -1838,7 +1836,9 @@
{
UWord wL, wR;
Addr a;
- CfiExpr* e = VG_(indexXA)( exprs, ix );
+ CfiExpr* e;
+ vg_assert(sizeof(Addr) == sizeof(UWord));
+ e = VG_(indexXA)( exprs, ix );
switch (e->tag) {
case Cex_Binop:
wL = evalCfiExpr( exprs, e->Cex.Binop.ixL, eec, ok );
@@ -1855,9 +1855,19 @@
/*NOTREACHED*/
case Cex_CfiReg:
switch (e->Cex.CfiReg.reg) {
- case Creg_IP: return (Addr)eec->ipHere;
- case Creg_SP: return (Addr)eec->spHere;
- case Creg_FP: return (Addr)eec->fpHere;
+# if defined(VGA_x86) || defined(VGA_amd64)
+ case Creg_IA_IP: return eec->uregs->xip;
+ case Creg_IA_SP: return eec->uregs->xsp;
+ case Creg_IA_BP: return eec->uregs->xbp;
+# elif defined(VGA_arm)
+ case Creg_ARM_R13: return eec->uregs->r13;
+ case Creg_ARM_R12: return eec->uregs->r12;
+ case Creg_ARM_R15: return eec->uregs->r15;
+ case Creg_ARM_R14: return eec->uregs->r14;
+# elif defined(VGA_ppc32) || defined(VGA_ppc64)
+# else
+# error "Unsupported arch"
+# endif
default: goto unhandled;
}
/*NOTREACHED*/
@@ -2032,7 +2042,7 @@
}
-static Addr compute_cfa ( Addr ip, Addr sp, Addr fp,
+static Addr compute_cfa ( D3UnwindRegs* uregs,
Addr min_accessible, Addr max_accessible,
DebugInfo* di, DiCfSI* cfsi )
{
@@ -2043,21 +2053,34 @@
/* Compute the CFA. */
cfa = 0;
switch (cfsi->cfa_how) {
- case CFIC_SPREL:
- cfa = sp + cfsi->cfa_off;
+# if defined(VGA_x86) || defined(VGA_amd64)
+ case CFIC_IA_SPREL:
+ cfa = cfsi->cfa_off + uregs->xsp;
break;
- case CFIC_FPREL:
- cfa = fp + cfsi->cfa_off;
+ case CFIC_IA_BPREL:
+ cfa = cfsi->cfa_off + uregs->xbp;
break;
- case CFIC_EXPR:
+# elif defined(VGA_arm)
+ case CFIC_ARM_R13REL:
+ cfa = cfsi->cfa_off + uregs->r13;
+ break;
+ case CFIC_ARM_R12REL:
+ cfa = cfsi->cfa_off + uregs->r12;
+ break;
+ case CFIC_ARM_R11REL:
+ cfa = cfsi->cfa_off + uregs->r11;
+ break;
+# elif defined(VGA_ppc32) || defined(VGA_ppc64)
+# else
+# error "Unsupported arch"
+# endif
+ case CFIC_EXPR: /* available on all archs */
if (0) {
VG_(printf)("CFIC_EXPR: ");
ML_(ppCfiExpr)(di->cfsi_exprs, cfsi->cfa_off);
VG_(printf)("\n");
}
- eec.ipHere = ip;
- eec.spHere = sp;
- eec.fpHere = fp;
+ eec.uregs = uregs;
eec.min_accessible = min_accessible;
eec.max_accessible = max_accessible;
ok = True;
@@ -2072,6 +2095,8 @@
/* Get the call frame address (CFA) given an IP/SP/FP triple. */
+/* NOTE: This function may rearrange the order of entries in the
+ DebugInfo list. */
Addr ML_(get_CFA) ( Addr ip, Addr sp, Addr fp,
Addr min_accessible, Addr max_accessible )
{
@@ -2087,30 +2112,53 @@
di = ce->di;
cfsi = &di->cfsi[ ce->ix ];
- return compute_cfa(ip, sp, fp, min_accessible, max_accessible, di, cfsi);
+ /* Temporary impedance-matching kludge so that this keeps working
+ on x86-linux and amd64-linux. */
+# if defined(VGA_x86) || defined(VGA_amd64)
+ { D3UnwindRegs uregs;
+ uregs.xip = ip;
+ uregs.xsp = sp;
+ uregs.xbp = fp;
+ return compute_cfa(&uregs,
+ min_accessible, max_accessible, di, cfsi);
+ }
+# else
+ return 0; /* indicates failure */
+# endif
}
-/* The main function for DWARF2/3 CFI-based stack unwinding.
- Given an IP/SP/FP triple, produce the IP/SP/FP values for the
- previous frame, if possible. */
-/* Returns True if OK. If not OK, *{ip,sp,fp}P are not changed. */
-/* NOTE: this function may rearrange the order of entries in the
- DebugInfo list. */
-Bool VG_(use_CF_info) ( /*MOD*/Addr* ipP,
- /*MOD*/Addr* spP,
- /*MOD*/Addr* fpP,
+/* The main function for DWARF2/3 CFI-based stack unwinding. Given a
+ set of registers in UREGS, modify it to hold the register values
+ for the previous frame, if possible. Returns True if successful.
+ If not successful, *UREGS is not changed.
+
+ For x86 and amd64, the unwound registers are: {E,R}IP,
+ {E,R}SP, {E,R}BP.
+
+ For arm, the unwound registers are: R11 R12 R13 R14 R15.
+*/
+Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregsHere,
Addr min_accessible,
Addr max_accessible )
{
Bool ok;
DebugInfo* di;
DiCfSI* cfsi = NULL;
- Addr cfa, ipHere, spHere, fpHere, ipPrev, spPrev, fpPrev;
+ Addr cfa, ipHere = 0;
CFSICacheEnt* ce;
CfiExprEvalContext eec;
+ D3UnwindRegs uregsPrev;
- ce = cfsi_cache__find(*ipP);
+# if defined(VGA_x86) || defined(VGA_amd64)
+ ipHere = uregsHere->xip;
+# elif defined(VGA_arm)
+ ipHere = uregsHere->r15;
+# elif defined(VGA_ppc32) || defined(VGA_ppc64)
+# else
+# error "Unknown arch"
+# endif
+ ce = cfsi_cache__find(ipHere);
if (UNLIKELY(ce == NULL))
return False; /* no info. Nothing we can do. */
@@ -2123,15 +2171,11 @@
ML_(ppDiCfSI)(di->cfsi_exprs, cfsi);
}
- ipPrev = spPrev = fpPrev = 0;
+ VG_(memset)(&uregsPrev, 0, sizeof(uregsPrev));
- ipHere = *ipP;
- spHere = *spP;
- fpHere = *fpP;
-
/* First compute the CFA. */
- cfa = compute_cfa(ipHere, spHere, fpHere,
- min_accessible, max_accessible, di, cfsi);
+ cfa = compute_cfa(uregsHere,
+ min_accessible, max_accessible, di, cfsi);
if (UNLIKELY(cfa == 0))
return False;
@@ -2159,9 +2203,7 @@
case CFIR_EXPR: \
if (0) \
ML_(ppCfiExpr)(di->cfsi_exprs,_off); \
- eec.ipHere = ipHere; \
- eec.spHere = spHere; \
- eec.fpHere = fpHere; \
+ eec.uregs = uregsHere; \
eec.min_accessible = min_accessible; \
eec.max_accessible = max_accessible; \
ok = True; \
@@ -2173,15 +2215,24 @@
} \
} while (0)
- COMPUTE(ipPrev, ipHere, cfsi->ra_how, cfsi->ra_off);
- COMPUTE(spPrev, spHere, cfsi->sp_how, cfsi->sp_off);
- COMPUTE(fpPrev, fpHere, cfsi->fp_how, cfsi->fp_off);
+# if defined(VGA_x86) || defined(VGA_amd64)
+ COMPUTE(uregsPrev.xip, uregsHere->xip, cfsi->ra_how, cfsi->ra_off);
+ COMPUTE(uregsPrev.xsp, uregsPrev->xsp, cfsi->sp_how, cfsi->sp_off);
+ COMPUTE(uregsPrev.xbp, uregsPrev->xbp, cfsi->bp_how, cfsi->bp_off);
+# elif defined(VGA_arm)
+ COMPUTE(uregsPrev.r15, uregsHere->r15, cfsi->ra_how, cfsi->ra_off);
+ COMPUTE(uregsPrev.r14, uregsHere->r14, cfsi->r14_how, cfsi->r14_off);
+ COMPUTE(uregsPrev.r13, uregsHere->r13, cfsi->r13_how, cfsi->r13_off);
+ COMPUTE(uregsPrev.r12, uregsHere->r12, cfsi->r12_how, cfsi->r12_off);
+ COMPUTE(uregsPrev.r11, uregsHere->r11, cfsi->r11_how, cfsi->r11_off);
+# elif defined(VGA_ppc32) || defined(VGA_ppc64)
+# else
+# error "Unknown arch"
+# endif
# undef COMPUTE
- *ipP = ipPrev;
- *spP = spPrev;
- *fpP = fpPrev;
+ *uregsHere = uregsPrev;
return True;
}
Modified: trunk/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_storage.h 2010-01-01 18:31:41 UTC (rev 10985)
+++ trunk/coregrind/m_debuginfo/priv_storage.h 2010-01-01 18:46:41 UTC (rev 10986)
@@ -97,55 +97,103 @@
/* --------------------- CF INFO --------------------- */
-/* A structure to summarise DWARF2/3 CFA info for the code address
- range [base .. base+len-1]. In short, if you know (sp,fp,ip) at
- some point and ip is in the range [base .. base+len-1], it tells
- you how to calculate (sp,fp) for the caller of the current frame
- and also ra, the return address of the current frame.
+/* DiCfSI: a structure to summarise DWARF2/3 CFA info for the code
+ address range [base .. base+len-1].
+ On x86 and amd64 ("IA"), if you know ({e,r}sp, {e,r}bp, {e,r}ip) at
+ some point and {e,r}ip is in the range [base .. base+len-1], it
+ tells you how to calculate ({e,r}sp, {e,r}bp) for the caller of the
+ current frame and also ra, the return address of the current frame.
+
First off, calculate CFA, the Canonical Frame Address, thusly:
cfa = case cfa_how of
- CFIC_SPREL -> sp + cfa_off
- CFIC_FPREL -> fp + cfa_off
- CFIR_EXPR -> expr whose index is in cfa_off
+ CFIC_IA_SPREL -> {e,r}sp + cfa_off
+ CFIC_IA_BPREL -> {e,r}bp + cfa_off
+ CFIR_IA_EXPR -> expr whose index is in cfa_off
- Once that is done, the previous frame's sp/fp values and this
- frame's ra value can be calculated like this:
+ Once that is done, the previous frame's {e,r}sp/{e,r}bp values and
+ this frame's {e,r}ra value can be calculated like this:
- old_sp/fp/ra
- = case sp/fp/ra_how of
+ old_{e,r}sp/{e,r}bp/ra
+ = case {e,r}sp/{e,r}bp/ra_how of
CFIR_UNKNOWN -> we don't know, sorry
CFIR_SAME -> same as it was before (sp/fp only)
- CFIR_CFAREL -> cfa + sp/fp/ra_off
- CFIR_MEMCFAREL -> *( cfa + sp/fp/ra_off )
- CFIR_EXPR -> expr whose index is in sp/fp/ra_off
+ CFIR_CFAREL -> cfa + sp/bp/ra_off
+ CFIR_MEMCFAREL -> *( cfa + sp/bp/ra_off )
+ CFIR_EXPR -> expr whose index is in sp/bp/ra_off
+
+ On ARM it's pretty much the same, except we have more registers to
+ keep track of:
+
+ cfa = case cfa_how of
+ CFIC_R13REL -> r13 + cfa_off
+ CFIC_R12REL -> r12 + cfa_off
+ CFIC_R11REL -> r11 + cfa_off
+ CFIR_EXPR -> expr whose index is in cfa_off
+
+ old_r14/r13/r12/r11/ra
+ = case r14/r13/r12/r11/ra_how of
+ CFIR_UNKNOWN -> we don't know, sorry
+ CFIR_SAME -> same as it was before (r14/r13/r12/r11 only)
+ CFIR_CFAREL -> cfa + r14/r13/r12/r11/ra_off
+ CFIR_MEMCFAREL -> *( cfa + r14/r13/r12/r11/ra_off )
+ CFIR_EXPR -> expr whose index is in r14/r13/r12/r11/ra_off
*/
-#define CFIC_SPREL ((UChar)1)
-#define CFIC_FPREL ((UChar)2)
-#define CFIC_EXPR ((UChar)3)
+#define CFIC_IA_SPREL ((UChar)1)
+#define CFIC_IA_BPREL ((UChar)2)
+#define CFIC_IA_EXPR ((UChar)3)
+#define CFIC_ARM_R13REL ((UChar)4)
+#define CFIC_ARM_R12REL ((UChar)5)
+#define CFIC_ARM_R11REL ((UChar)6)
+#define CFIC_EXPR ((UChar)7) /* all targets */
-#define CFIR_UNKNOWN ((UChar)4)
-#define CFIR_SAME ((UChar)5)
-#define CFIR_CFAREL ((UChar)6)
-#define CFIR_MEMCFAREL ((UChar)7)
-#define CFIR_EXPR ((UChar)8)
+#define CFIR_UNKNOWN ((UChar)64)
+#define CFIR_SAME ((UChar)65)
+#define CFIR_CFAREL ((UChar)66)
+#define CFIR_MEMCFAREL ((UChar)67)
+#define CFIR_EXPR ((UChar)68)
+#if defined(VGA_x86) || defined(VGA_amd64)
typedef
struct {
Addr base;
UInt len;
- UChar cfa_how; /* a CFIC_ value */
+ UChar cfa_how; /* a CFIC_IA value */
UChar ra_how; /* a CFIR_ value */
UChar sp_how; /* a CFIR_ value */
- UChar fp_how; /* a CFIR_ value */
+ UChar bp_how; /* a CFIR_ value */
Int cfa_off;
Int ra_off;
Int sp_off;
- Int fp_off;
+ Int bp_off;
}
DiCfSI;
+#elif defined(VGA_arm)
+typedef
+ struct {
+ Addr base;
+ UInt len;
+ UChar cfa_how; /* a CFIC_ value */
+ UChar ra_how; /* a CFIR_ value */
+ UChar r14_how; /* a CFIR_ value */
+ UChar r13_how; /* a CFIR_ value */
+ UChar r12_how; /* a CFIR_ value */
+ UChar r11_how; /* a CFIR_ value */
+ Int cfa_off;
+ Int ra_off;
+ Int r14_off;
+ Int r13_off;
+ Int r12_off;
+ Int r11_off;
+ }
+ DiCfSI;
+#elif defined(VGA_ppc32) || defined(VGA_ppc64)
+typedef void DiCfSI;
+#else
+# error "Unknown arch"
+#endif
typedef
@@ -159,9 +207,13 @@
typedef
enum {
- Creg_SP=0x213,
- Creg_FP,
- Creg_IP
+ Creg_IA_SP=0x213,
+ Creg_IA_BP,
+ Creg_IA_IP,
+ Creg_ARM_R13,
+ Creg_ARM_R12,
+ Creg_ARM_R15,
+ Creg_ARM_R14
}
CfiReg;
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2010-01-01 18:31:41 UTC (rev 10985)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2010-01-01 18:46:41 UTC (rev 10986)
@@ -1783,6 +1783,10 @@
# define FP_REG 1
# define SP_REG 1
# define RA_REG_DEFAULT 65
+#elif defined(VGP_arm_linux)
+# define FP_REG 12
+# define SP_REG 13
+# define RA_REG_DEFAULT 14 //???
#elif defined(VGP_x86_darwin)
# define FP_REG 5
# define SP_REG 4
@@ -2012,6 +2016,15 @@
/* ctx->state[j].reg[i].arg = 0; */
}
}
+# if defined(VGA_arm)
+ /* All callee-saved registers (or at least the ones we are
+ summarising for) should start out as RR_Same, on ARM. */
+ ctx->state[j].reg[11].tag = RR_Same;
+ /* ctx->state[j].reg[13].tag = RR_Same; */
+ ctx->state[j].reg[14].tag = RR_Same;
+ ctx->state[j].reg[12].tag = RR_Same;
+ /* this can't be right though: R12 (IP) isn't callee saved. */
+# endif
}
@@ -2031,16 +2044,7 @@
static void initCfiSI ( DiCfSI* si )
{
- si->base = 0;
- si->len = 0;
- si->cfa_how = 0;
- si->ra_how = 0;
- si->sp_how = 0;
- si->fp_how = 0;
- si->cfa_off = 0;
- si->ra_off = 0;
- si->sp_off = 0;
- si->fp_off = 0;
+ VG_(memset)(si, 0, sizeof(*si));
}
@@ -2072,7 +2076,7 @@
if (ctx->state_sp >= N_RR_STACK) { why = 9; goto failed; }
ctxs = &ctx->state[ctx->state_sp];
- /* How to generate the CFA */
+ /* First, summarise the method for generating the CFA */
if (!ctxs->cfa_is_regoff) {
/* it was set by DW_CFA_def_cfa_expression; try to convert */
XArray *src, *dst;
@@ -2093,15 +2097,37 @@
si->cfa_off = conv;
if (0 && debuginfo->ddump_frames)
ML_(ppCfiExpr)(dst, conv);
- } else
+ }
+ else
if (ctxs->cfa_is_regoff && ctxs->cfa_reg == SP_REG) {
- si->cfa_how = CFIC_SPREL;
si->cfa_off = ctxs->cfa_off;
- } else
+# if defined(VGA_x86) || defined(VGA_amd64)
+ si->cfa_how = CFIC_IA_SPREL;
+# elif defined(VGA_arm)
+ si->cfa_how = CFIC_ARM_R13REL;
+# else
+ si->cfa_how = 0; /* invalid */
+# endif
+ }
+ else
if (ctxs->cfa_is_regoff && ctxs->cfa_reg == FP_REG) {
- si->cfa_how = CFIC_FPREL;
si->cfa_off = ctxs->cfa_off;
- } else {
+# if defined(VGA_x86) || defined(VGA_amd64)
+ si->cfa_how = CFIC_IA_BPREL;
+# elif defined(VGA_arm)
+ si->cfa_how = CFIC_ARM_R12REL;
+# else
+ si->cfa_how = 0; /* invalid */
+# endif
+ }
+# if defined(VGA_arm)
+ else
+ if (ctxs->cfa_is_regoff && ctxs->cfa_reg == 11/*??_REG*/) {
+ si->cfa_how = CFIC_ARM_R11REL;
+ si->cfa_off = ctxs->cfa_off;
+ }
+# endif
+ else {
why = 1;
goto failed;
}
@@ -2143,12 +2169,15 @@
why = 2; goto failed; /* otherwise give up */ \
}
+# if defined(VGA_x86) || defined(VGA_amd64)
+
+ /* --- entire tail of this fn specialised for x86/amd64 --- */
+
SUMMARISE_HOW(si->ra_how, si->ra_off,
ctxs->reg[ctx->ra_reg] );
SUMMARISE_HOW(si->fp_how, si->fp_off,
ctxs->reg[FP_REG] );
-# undef SUMMARISE_HOW
/* on x86/amd64, it seems the old %{e,r}sp value before the call is
always the same as the CFA. Therefore ... */
@@ -2176,6 +2205,66 @@
return True;
+# elif defined(VGA_arm)
+
+ /* ---- entire tail of this fn specialised for arm ---- */
+
+ SUMMARISE_HOW(si->r14_how, si->r14_off,
+ ctxs->reg[14] );
+
+ //SUMMARISE_HOW(si->r13_how, si->r13_off,
+ // ctxs->reg[13] );
+
+ SUMMARISE_HOW(si->r12_how, si->r12_off,
+ ctxs->reg[FP_REG] );
+
+ SUMMARISE_HOW(si->r11_how, si->r11_off,
+ ctxs->reg[11/*FP_REG*/] );
+
+ if (ctxs->reg[14/*LR*/].tag == RR_Same
+ && ctx->ra_reg == 14/*as we expect it always to be*/) {
+ /* Generate a trivial CfiExpr, which merely says "r14". First
+ ensure this DebugInfo has a cfsi_expr array in which to park
+ it. */
+ if (!debuginfo->cfsi_exprs)
+ debuginfo->cfsi_exprs = VG_(newXA)( ML_(dinfo_zalloc),
+ "di.ccCt.2a",
+ ML_(dinfo_free),
+ sizeof(CfiExpr) );
+ si->ra_off = ML_(CfiExpr_CfiReg)( debuginfo->cfsi_exprs,
+ Creg_ARM_R14);
+ si->ra_how = CFIR_EXPR;
+ } else {
+ /* Just summarise it in the normal way */
+ SUMMARISE_HOW(si->ra_how, si->ra_off,
+ ctxs->reg[ctx->ra_reg] );
+ }
+
+ /* on arm, it seems the old r13 (SP) value before the call is
+ always the same as the CFA. Therefore ... */
+ si->r13_how = CFIR_CFAREL;
+ si->r13_off = 0;
+
+ /* bogus looking range? Note, we require that the difference is
+ representable in 32 bits. */
+ if (loc_start >= ctx->loc)
+ { why = 4; goto failed; }
+ if (ctx->loc - loc_start > 10000000 /* let's say */)
+ { why = 5; goto failed; }
+
+ si->base = loc_start + ctx->initloc;
+ si->len = (UInt)(ctx->loc - loc_start);
+
+ return True;
+
+
+# elif defined(VGA_ppc32) || defined(VGA_ppc64)
+# else
+# error "Unknown arch"
+# endif
+
+# undef SUMMARISE_HOW
+
failed:
if (VG_(clo_verbosity) > 2 || debuginfo->trace_cfi) {
VG_(message)(Vg_DebugMsg,
@@ -2228,12 +2317,24 @@
case Cex_DwReg:
/* This is the only place where the conversion can fail. */
dwreg = src->Cex.DwReg.reg;
+# if defined(VGA_x86) || defined(VGA_amd64)
if (dwreg == SP_REG)
return ML_(CfiExpr_CfiReg)( dstxa, Creg_SP );
if (dwreg == FP_REG)
return ML_(CfiExpr_CfiReg)( dstxa, Creg_FP );
if (dwreg == srcuc->ra_reg)
return ML_(CfiExpr_CfiReg)( dstxa, Creg_IP ); /* correct? */
+# elif defined(VGA_arm)
+ if (dwreg == SP_REG)
+ return ML_(CfiExpr_CfiReg)( dstxa, Creg_ARM_R13 );
+ if (dwreg == FP_REG)
+ return ML_(CfiExpr_CfiReg)( dstxa, Creg_ARM_R12 );
+ if (dwreg == srcuc->ra_reg)
+ return ML_(CfiExpr_CfiReg)( dstxa, Creg_ARM_R15 ); /* correct? */
+# elif defined(VGA_ppc32) || defined(VGA_ppc64)
+# else
+# error "Unknown arch"
+# endif
/* else we must fail - can't represent the reg */
return -1;
default:
Modified: trunk/coregrind/m_debuginfo/readelf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readelf.c 2010-01-01 18:31:41 UTC (rev 10985)
+++ trunk/coregrind/m_debuginfo/readelf.c 2010-01-01 18:46:41 UTC (rev 10986)
@@ -1642,7 +1642,8 @@
}
/* PLT is different on different platforms, it seems. */
-# if defined(VGP_x86_linux) || defined(VGP_amd64_linux)
+# if defined(VGP_x86_linux) || defined(VGP_amd64_linux) \
+ || defined(VGP_arm_linux)
/* Accept .plt where mapped as rx (code) */
if (0 == VG_(strcmp)(name, ".plt")) {
if (inrx && size > 0 && !di->plt_present) {
Modified: trunk/coregrind/m_debuginfo/storage.c
===================================================================
--- trunk/coregrind/m_debuginfo/storage.c 2010-01-01 18:31:41 UTC (rev 10985)
+++ trunk/coregrind/m_debuginfo/storage.c 2010-01-01 18:46:41 UTC (rev 10986)
@@ -126,12 +126,21 @@
VG_(printf)("[%#lx .. %#lx]: ", si->base,
si->base + (UWord)si->len - 1);
switch (si->cfa_how) {
- case CFIC_SPREL:
+ case CFIC_IA_SPREL:
VG_(printf)("let cfa=oldSP+%d", si->cfa_off);
break;
- case CFIC_FPREL:
- VG_(printf)("let cfa=oldFP+%d", si->cfa_off);
+ case CFIC_IA_BPREL:
+ VG_(printf)("let cfa=oldBP+%d", si->cfa_off);
break;
+ case CFIC_ARM_R13REL:
+ VG_(printf)("let cfa=oldR13+%d", si->cfa_off);
+ break;
+ case CFIC_ARM_R12REL:
+ VG_(printf)("let cfa=oldR12+%d", si->cfa_off);
+ break;
+ case CFIC_ARM_R11REL:
+ VG_(printf)("let cfa=oldR11+%d", si->cfa_off);
+ break;
case CFIC_EXPR:
VG_(printf)("let cfa={");
ML_(ppCfiExpr)(exprs, si->cfa_off);
@@ -143,10 +152,24 @@
VG_(printf)(" in RA=");
SHOW_HOW(si->ra_how, si->ra_off);
+# if defined(VGA_x86) || defined(VGA_amd64)
VG_(printf)(" SP=");
SHOW_HOW(si->sp_how, si->sp_off);
- VG_(printf)(" FP=");
- SHOW_HOW(si->fp_how, si->fp_off);
+ VG_(printf)(" BP=");
+ SHOW_HOW(si->bp_how, si->bp_off);
+# elif defined(VGA_arm)
+ VG_(printf)(" R14=");
+ SHOW_HOW(si->r14_how, si->r14_off);
+ VG_(printf)(" R13=");
+ SHOW_HOW(si->r13_how, si->r13_off);
+ VG_(printf)(" R12=");
+ SHOW_HOW(si->r12_how, si->r12_off);
+ VG_(printf)(" R11=");
+ SHOW_HOW(si->r11_how, si->r11_off);
+# elif defined(VGA_ppc32) || defined(VGA_ppc64)
+# else
+# error "Unknown arch"
+# endif
VG_(printf)("\n");
# undef SHOW_HOW
}
@@ -574,9 +597,13 @@
static void ppCfiReg ( CfiReg reg )
{
switch (reg) {
- case Creg_SP: VG_(printf)("SP"); break;
- case Creg_FP: VG_(printf)("FP"); break;
- case Creg_IP: VG_(printf)("IP"); break;
+ case Creg_IA_SP: VG_(printf)("xSP"); break;
+ case Creg_IA_BP: VG_(printf)("xBP"); break;
+ case Creg_IA_IP: VG_(printf)("xIP"); break;
+ case Creg_ARM_R13: VG_(printf)("R13"); break;
+ case Creg_ARM_R12: VG_(printf)("R12"); break;
+ case Creg_ARM_R15: VG_(printf)("R15"); break;
+ case Creg_ARM_R14: VG_(printf)("R14"); break;
default: vg_assert(0);
}
}
Modified: trunk/coregrind/m_stacktrace.c
===================================================================
--- trunk/coregrind/m_stacktrace.c 2010-01-01 18:31:41 UTC (rev 10985)
+++ trunk/coregrind/m_stacktrace.c 2010-01-01 18:46:41 UTC (rev 10986)
@@ -574,12 +574,13 @@
vg_assert(sizeof(Addr) == sizeof(UWord));
vg_assert(sizeof(Addr) == sizeof(void*));
- Addr r15 = startRegs->r_pc;
- Addr r13 = startRegs->r_sp;
- Addr r14 = startRegs->misc.ARM.r14;
- Addr r12 = startRegs->misc.ARM.r12;
- Addr r11 = startRegs->misc.ARM.r11;
- Addr fp_min = r13;
+ D3UnwindRegs uregs;
+ uregs.r15 = startRegs->r_pc;
+ uregs.r14 = startRegs->misc.ARM.r14;
+ uregs.r13 = startRegs->r_sp;
+ uregs.r12 = startRegs->misc.ARM.r12;
+ uregs.r11 = startRegs->misc.ARM.r11;
+ Addr fp_min = uregs.r13;
/* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1],
stopping when the trail goes cold, which we guess to be
@@ -595,7 +596,8 @@
if (debug)
VG_(printf)("max_n_ips=%d fp_min=0x%lx fp_max_orig=0x%lx, "
"fp_max=0x%lx r15=0x%lx r13=0x%lx\n",
- max_n_ips, fp_min, fp_max_orig, fp_max, r15, r13);
+ max_n_ips, fp_min, fp_max_orig, fp_max,
+ uregs.r15, uregs.r13);
/* Assertion broken before main() is reached in pthreaded programs; the
* offending stack traces only have one item. --njn, 2002-aug-16 */
@@ -605,36 +607,38 @@
if (fp_min + 512 >= fp_max) {
/* If the stack limits look bogus, don't poke around ... but
don't bomb out either. */
- if (sps) sps[0] = r13;
+ if (sps) sps[0] = uregs.r13;
if (fps) fps[0] = 0;
- ips[0] = r15;
+ ips[0] = uregs.r15;
return 1;
}
/* */
- if (sps) sps[0] = r13;
+ if (sps) sps[0] = uregs.r13;
if (fps) fps[0] = 0;
- ips[0] = r15;
+ ips[0] = uregs.r15;
i = 1;
/* Loop unwinding the stack. */
while (True) {
if (debug) {
- VG_(printf)("i: %d, r15: 0x%lx, r13: 0x%lx\n",i, r15, r13);
+ VG_(printf)("i: %d, r15: 0x%lx, r13: 0x%lx\n",
+ i, uregs.r15, uregs.r13);
}
if (i >= max_n_ips)
break;
- if (VG_(use_CF_info)( &r15, &r14, &r13, &r12, &r11, fp_min, fp_max )) {
- if (sps) sps[i] = r13;
+ if (VG_(use_CF_info)( &uregs, fp_min, fp_max )) {
+ if (sps) sps[i] = uregs.r13;
if (fps) fps[i] = 0;
- ips[i++] = r15 -1;
+ ips[i++] = uregs.r15 -1;
if (debug)
- VG_(printf)("USING CFI: r15: 0x%lx, r13: 0x%lx\n", r15, r13);
- r15 = r15 - 1;
+ VG_(printf)("USING CFI: r15: 0x%lx, r13: 0x%lx\n",
+ uregs.r15, uregs.r13);
+ uregs.r15 = uregs.r15 - 1;
continue;
}
/* No luck. We have to give up. */
Modified: trunk/coregrind/pub_core_debuginfo.h
===================================================================
--- trunk/coregrind/pub_core_debuginfo.h 2010-01-01 18:31:41 UTC (rev 10985)
+++ trunk/coregrind/pub_core_debuginfo.h 2010-01-01 18:46:41 UTC (rev 10986)
@@ -106,13 +106,32 @@
extern
Bool VG_(get_fnname_no_cxx_demangle) ( Addr a, Char* buf, Int nbuf );
-/* Use DWARF2/3 CFA information to do one step of stack unwinding. */
-extern Bool VG_(use_CF_info) ( /*MOD*/Addr* ipP,
- /*MOD*/Addr* spP,
- /*MOD*/Addr* fpP,
+
+/* Use DWARF2/3 CFA information to do one step of stack unwinding.
+ D3UnwindRegs holds the current register values, and is
+ arch-specific. Note that the x86 and amd64 definitions are shared
+ and so the regs are named 'xip' etc rather than 'eip' and 'rip'. */
+#if defined(VGA_amd64) || defined(VGA_x86)
+typedef
+ struct { Addr xip; Addr xsp; Addr xbp; }
+ D3UnwindRegs;
+#elif defined(VGA_arm)
+typedef
+ struct { Addr r15; Addr r14; Addr r13; Addr r12; Addr r11; }
+ D3UnwindRegs;
+#elif defined(VGA_ppc32) || defined(VGA_ppc64)
+typedef
+ void
+ D3UnwindRegs;
+#else
+# error "Unsupported arch"
+#endif
+
+extern Bool VG_(use_CF_info) ( /*MOD*/D3UnwindRegs* uregs,
Addr min_accessible,
Addr max_accessible );
+
/* Use MSVC FPO data to do one step of stack unwinding. */
extern Bool VG_(use_FPO_info) ( /*MOD*/Addr* ipP,
/*MOD*/Addr* spP,
|
|
From: Bart V. A. <bar...@gm...> - 2010-01-01 18:39:28
|
On Fri, Jan 1, 2010 at 7:31 PM, <sv...@va...> wrote: > Author: sewardj > Date: 2010-01-01 18:30:59 +0000 (Fri, 01 Jan 2010) > New Revision: 10984 > > Log: > Don't use -Wdeclaration-after-statement. We long since abandoned any > pretense of being buildable with gcc prior to 3.0, hence there's no > point in having this flag. Hello Julian, First of all, my best wishes for the new year 2010. Regarding r10984: ANSI C89 and C90 (but not C99) require that declarations come before statements. Giving up -Wdeclaration-after-statement also means giving up C89 and C90 conformance. Bart. |
|
From: <sv...@va...> - 2010-01-01 18:37:42
|
Author: sewardj
Date: 2010-01-01 18:31:41 +0000 (Fri, 01 Jan 2010)
New Revision: 10985
Log:
Make Callgrind, DRD and Ptrcheck build on arm-linux.
Modified:
trunk/callgrind/Makefile.am
trunk/drd/drd_bitmap.h
trunk/drd/drd_load_store.c
trunk/exp-ptrcheck/h_main.c
trunk/exp-ptrcheck/pc_main.c
Modified: trunk/callgrind/Makefile.am
===================================================================
--- trunk/callgrind/Makefile.am 2010-01-01 18:30:59 UTC (rev 10984)
+++ trunk/callgrind/Makefile.am 2010-01-01 18:31:41 UTC (rev 10985)
@@ -48,8 +48,9 @@
threads.c \
../cachegrind/cg-x86-amd64.c \
../cachegrind/cg-ppc32.c \
- ../cachegrind/cg-ppc64.c
-
+ ../cachegrind/cg-ppc64.c \
+ ../cachegrind/cg-arm.c
+
CALLGRIND_CFLAGS_COMMON = -I$(top_srcdir)/cachegrind
callgrind_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
Modified: trunk/drd/drd_bitmap.h
===================================================================
--- trunk/drd/drd_bitmap.h 2010-01-01 18:30:59 UTC (rev 10984)
+++ trunk/drd/drd_bitmap.h 2010-01-01 18:31:41 UTC (rev 10985)
@@ -134,7 +134,7 @@
#define BITS_PER_UWORD (8U * sizeof(UWord))
/** Log2 of BITS_PER_UWORD. */
-#if defined(VGA_x86) || defined(VGA_ppc32)
+#if defined(VGA_x86) || defined(VGA_ppc32) || defined(VGA_arm)
#define BITS_PER_BITS_PER_UWORD 5
#elif defined(VGA_amd64) || defined(VGA_ppc64)
#define BITS_PER_BITS_PER_UWORD 6
Modified: trunk/drd/drd_load_store.c
===================================================================
--- trunk/drd/drd_load_store.c 2010-01-01 18:30:59 UTC (rev 10984)
+++ trunk/drd/drd_load_store.c 2010-01-01 18:31:41 UTC (rev 10985)
@@ -43,9 +43,11 @@
#elif defined(VGA_amd64)
#define STACK_POINTER_OFFSET OFFSET_amd64_RSP
#elif defined(VGA_ppc32)
-#define STACK_POINTER_OFFSET ((OFFSET_ppc32_GPR0 + OFFSET_ppc32_GPR2) / 2)
+#define STACK_POINTER_OFFSET OFFSET_ppc32_GPR1
#elif defined(VGA_ppc64)
-#define STACK_POINTER_OFFSET ((OFFSET_ppc64_GPR0 + OFFSET_ppc64_GPR2) / 2)
+#define STACK_POINTER_OFFSET OFFSET_ppc64_GPR1
+#elif defined(VGA_arm)
+#define STACK_POINTER_OFFSET OFFSET_arm_R13
#else
#error Unknown architecture.
#endif
Modified: trunk/exp-ptrcheck/h_main.c
===================================================================
--- trunk/exp-ptrcheck/h_main.c 2010-01-01 18:30:59 UTC (rev 10984)
+++ trunk/exp-ptrcheck/h_main.c 2010-01-01 18:31:41 UTC (rev 10985)
@@ -559,7 +559,7 @@
}
#endif
-#if defined(VGA_x86) || defined(VGA_ppc32)
+#if defined(VGA_x86) || defined(VGA_ppc32) || defined(VGA_arm)
# define SHMEM_SECMAP_MASK 0xFFFC
# define SHMEM_SECMAP_SHIFT 2
# define SHMEM_IS_WORD_ALIGNED(_a) VG_IS_4_ALIGNED(_a)
@@ -1271,27 +1271,32 @@
#if defined(VGA_x86)
# include "libvex_guest_x86.h"
-# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestX86State)
+# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestX86State)
#endif
#if defined(VGA_amd64)
# include "libvex_guest_amd64.h"
-# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestAMD64State)
+# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestAMD64State)
# define PC_OFF_FS_ZERO offsetof(VexGuestAMD64State,guest_FS_ZERO)
# define PC_SZB_FS_ZERO sizeof( ((VexGuestAMD64State*)0)->guest_FS_ZERO)
#endif
#if defined(VGA_ppc32)
# include "libvex_guest_ppc32.h"
-# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC32State)
+# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC32State)
#endif
#if defined(VGA_ppc64)
# include "libvex_guest_ppc64.h"
-# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC64State)
+# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC64State)
#endif
+#if defined(VGA_arm)
+# include "libvex_guest_arm.h"
+# define PC_SIZEOF_GUEST_STATE sizeof(VexGuestARMState)
+#endif
+
/* See description on definition of type IntRegInfo. */
static void get_IntRegInfo ( /*OUT*/IntRegInfo* iii, Int offset, Int szB )
{
@@ -1806,7 +1811,28 @@
tl_assert(0);
# undef GOF
+ /* -------------------- arm -------------------- */
+# elif defined(VGA_arm)
+
+# define GOF(_fieldname) \
+ (offsetof(VexGuestARMState,guest_##_fieldname))
+
+ Int o = offset;
+ Int sz = szB;
+ Bool is4 = sz == 4;
+ Bool is8 = sz == 8;
+
+ tl_assert(sz > 0);
+ tl_assert(host_is_big_endian());
+
+ /* Set default state to "does not intersect any int register". */
+ VG_(memset)( iii, 0, sizeof(*iii) );
+
+ VG_(printf)("get_IntRegInfo(arm):failing on (%d,%d)\n", o, sz);
+ tl_assert(0);
+
+
# else
# error "FIXME: not implemented for this architecture"
# endif
@@ -1888,6 +1914,14 @@
VG_(printf)("\n");
tl_assert(0);
+ /* -------------------- arm -------------------- */
+# elif defined(VGA_arm)
+ /* There are no rotating register sections on ARM. */
+ VG_(printf)("is_integer_guest_reg_array(arm): unhandled: ");
+ ppIRRegArray(arr);
+ VG_(printf)("\n");
+ tl_assert(0);
+
# else
# error "FIXME: not implemented for this architecture"
# endif
@@ -1939,7 +1973,7 @@
static void init_shadow_registers ( ThreadId tid )
{
Int i, wordSzB = sizeof(UWord);
- for (i = 0; i < MC_SIZEOF_GUEST_STATE-wordSzB; i += wordSzB) {
+ for (i = 0; i < PC_SIZEOF_GUEST_STATE-wordSzB; i += wordSzB) {
put_guest_intreg( tid, 1, i, wordSzB, (UWord)UNKNOWN );
}
}
@@ -2207,9 +2241,13 @@
ADD(0, __NR_dup);
ADD(0, __NR_dup2);
ADD(0, __NR_epoll_create);
+# if defined(__NR_epoll_create1)
ADD(0, __NR_epoll_create1);
+# endif
ADD(0, __NR_epoll_ctl);
+# if defined(__NR_epoll_pwait)
ADD(0, __NR_epoll_pwait);
+# endif
ADD(0, __NR_epoll_wait);
ADD(0, __NR_execve); /* presumably we see this because the call failed? */
ADD(0, __NR_exit); /* hmm, why are we still alive? */
@@ -2684,9 +2722,18 @@
# if defined(VGA_x86) || defined(VGA_ppc32)
tl_assert(sizeof(UWord) == 4);
return (a > 0x01000000UL && a < 0xFF000000UL);
+
# elif defined(VGA_amd64) || defined(VGA_ppc64)
tl_assert(sizeof(UWord) == 8);
return (a >= 16 * 0x10000UL && a < 0xFF00000000000000UL);
+
+# elif defined(VGA_arm)
+ /* Unfortunately arm-linux seems to load the exe at very low, at
+ 0x8000, so we have to assume any value above that is a pointer,
+ which is pretty dismal. */
+ tl_assert(sizeof(UWord) == 4);
+ return (a >= 0x00008000UL && a < 0xFF000000UL);
+
# else
# error "Unsupported architecture"
# endif
@@ -5280,7 +5327,7 @@
(void*)&pce );
/* Stay sane. These two should agree! */
- tl_assert(layout->total_sizeB == MC_SIZEOF_GUEST_STATE);
+ tl_assert(layout->total_sizeB == PC_SIZEOF_GUEST_STATE);
/* Copy verbatim any IR preamble preceding the first IMark */
Modified: trunk/exp-ptrcheck/pc_main.c
===================================================================
--- trunk/exp-ptrcheck/pc_main.c 2010-01-01 18:30:59 UTC (rev 10984)
+++ trunk/exp-ptrcheck/pc_main.c 2010-01-01 18:31:41 UTC (rev 10985)
@@ -127,10 +127,10 @@
sg_post_clo_init();
# if defined(VGA_x86) || defined(VGA_amd64)
/* nothing */
-# elif defined(VGA_ppc32) || defined(VGA_ppc64)
+# elif defined(VGA_ppc32) || defined(VGA_ppc64) || defined(VGA_arm)
if (VG_(clo_verbosity) >= 1 && sg_clo_enable_sg_checks) {
VG_(message)(Vg_UserMsg,
- "WARNING: exp-ptrcheck on ppc32/ppc64 platforms: "
+ "WARNING: exp-ptrcheck on ppc32/ppc64/arm platforms: "
"stack and global array\n");
VG_(message)(Vg_UserMsg,
"WARNING: checking is not currently supported. "
|
|
From: <sv...@va...> - 2010-01-01 18:31:14
|
Author: sewardj Date: 2010-01-01 18:30:59 +0000 (Fri, 01 Jan 2010) New Revision: 10984 Log: Don't use -Wdeclaration-after-statement. We long since abandoned any pretense of being buildable with gcc prior to 3.0, hence there's no point in having this flag. Modified: trunk/configure.in Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2010-01-01 12:44:12 UTC (rev 10983) +++ trunk/configure.in 2010-01-01 18:30:59 UTC (rev 10984) @@ -1217,33 +1217,6 @@ fi -# does this compiler support -Wdeclaration-after-statement ? -AC_MSG_CHECKING([if gcc accepts -Wdeclaration-after-statement]) - -safe_CFLAGS=$CFLAGS -CFLAGS="-Wdeclaration-after-statement" - -AC_TRY_COMPILE(, [ - return 0; -], -[ -declaration_after_statement=yes -FLAG_WDECL_AFTER_STMT="-Wdeclaration-after-statement" -AC_MSG_RESULT([yes]) -], [ -declaration_after_statement=no -FLAG_WDECL_AFTER_STMT="" -AC_MSG_RESULT([no]) -]) -CFLAGS=$safe_CFLAGS - -AC_SUBST(FLAG_WDECL_AFTER_STMT) - -if test x$declaration_after_statement = xyes; then - CFLAGS="$CFLAGS -Wdeclaration-after-statement" -fi - - # does this compiler support -Wno-empty-body ? AC_MSG_CHECKING([if gcc accepts -Wno-empty-body]) |
|
From: <sv...@va...> - 2010-01-01 12:52:10
|
Author: sewardj
Date: 2010-01-01 12:44:12 +0000 (Fri, 01 Jan 2010)
New Revision: 10983
Log:
n-break build on x86-darwin following r10982.
Modified:
trunk/coregrind/m_cpuid.S
trunk/coregrind/m_signals.c
Modified: trunk/coregrind/m_cpuid.S
===================================================================
--- trunk/coregrind/m_cpuid.S 2010-01-01 11:59:33 UTC (rev 10982)
+++ trunk/coregrind/m_cpuid.S 2010-01-01 12:44:12 UTC (rev 10983)
@@ -149,7 +149,7 @@
ret
#endif
-#if defined(VGA_x86) || defined(VGA_amd64)
+#if defined(VGP_x86_linux) || defined(VGP_amd64_linux)
/* Let the linker know we don't need an executable stack */
.section .note.GNU-stack,"",@progbits
#endif
Modified: trunk/coregrind/m_signals.c
===================================================================
--- trunk/coregrind/m_signals.c 2010-01-01 11:59:33 UTC (rev 10982)
+++ trunk/coregrind/m_signals.c 2010-01-01 12:44:12 UTC (rev 10983)
@@ -54,7 +54,7 @@
a signal with kill, its expected to be synchronous: ie, the signal
will have been delivered by the time the syscall finishes.
- 4. Asyncronous, general signals. All other signals, sent by
+ 4. Asynchronous, general signals. All other signals, sent by
another process with kill. These are generally blocked, except for
two special cases: we poll for them each time we're about to run a
thread for a time quanta, and while running blocking syscalls.
@@ -490,14 +490,15 @@
return VG_(mk_SysRes_x86_darwin)( scclass, err ? True : False,
wHI, wLO );
}
- static inline Addr VG_UCONTEXT_LINK_REG( void* ucV ) {
- return 0; /* No, really. We have no LRs today. */
- }
- static inline Addr VG_UCONTEXT_FRAME_PTR( void* ucV ) {
- ucontext_t* uc = (ucontext_t*)ucV;
+ static inline
+ void VG_UCONTEXT_TO_UnwindStartRegs( UnwindStartRegs* srP,
+ void* ucV ) {
+ ucontext_t* uc = (ucontext_t*)(ucV);
struct __darwin_mcontext32* mc = uc->uc_mcontext;
struct __darwin_i386_thread_state* ss = &mc->__ss;
- return ss->__ebp;
+ srP->r_pc = (ULong)(ss->__eip);
+ srP->r_sp = (ULong)(ss->__esp);
+ srP->misc.X86.r_ebp = (UInt)(ss->__ebp);
}
#elif defined(VGP_amd64_darwin)
|
|
From: <sv...@va...> - 2010-01-01 11:59:48
|
Author: sewardj Date: 2010-01-01 11:59:33 +0000 (Fri, 01 Jan 2010) New Revision: 10982 Log: Merge from branches/ARM, all parts of the ARM-Linux port except for the changes to do with reading and using ELF and DWARF3 info. This breaks all targets except amd64-linux and x86-linux. Added: trunk/cachegrind/cg-arm.c trunk/coregrind/m_dispatch/dispatch-arm-linux.S trunk/coregrind/m_sigframe/sigframe-arm-linux.c trunk/coregrind/m_syswrap/syscall-arm-linux.S trunk/coregrind/m_syswrap/syswrap-arm-linux.c trunk/include/vki/vki-arm-linux.h trunk/include/vki/vki-posixtypes-arm-linux.h trunk/include/vki/vki-scnums-arm-linux.h trunk/none/tests/arm/ Modified: trunk/Makefile.all.am trunk/Makefile.tool.am trunk/Makefile.vex.am trunk/auxprogs/gsl16test trunk/cachegrind/Makefile.am trunk/cachegrind/cg_branchpred.c trunk/configure.in trunk/coregrind/Makefile.am trunk/coregrind/launcher-linux.c trunk/coregrind/m_aspacemgr/aspacemgr-common.c trunk/coregrind/m_aspacemgr/aspacemgr-linux.c trunk/coregrind/m_coredump/coredump-elf.c trunk/coregrind/m_cpuid.S trunk/coregrind/m_debugger.c trunk/coregrind/m_debuginfo/d3basics.c trunk/coregrind/m_debuglog.c trunk/coregrind/m_initimg/initimg-linux.c trunk/coregrind/m_libcassert.c trunk/coregrind/m_libcfile.c trunk/coregrind/m_libcproc.c trunk/coregrind/m_machine.c trunk/coregrind/m_main.c trunk/coregrind/m_redir.c trunk/coregrind/m_replacemalloc/vg_replace_malloc.c trunk/coregrind/m_scheduler/scheduler.c trunk/coregrind/m_signals.c trunk/coregrind/m_stacktrace.c trunk/coregrind/m_syscall.c trunk/coregrind/m_syswrap/priv_types_n_macros.h trunk/coregrind/m_syswrap/syswrap-amd64-linux.c trunk/coregrind/m_syswrap/syswrap-linux.c trunk/coregrind/m_syswrap/syswrap-main.c trunk/coregrind/m_syswrap/syswrap-x86-linux.c trunk/coregrind/m_trampoline.S trunk/coregrind/m_translate.c trunk/coregrind/m_transtab.c trunk/coregrind/pub_core_basics.h trunk/coregrind/pub_core_libcassert.h trunk/coregrind/pub_core_machine.h trunk/coregrind/pub_core_mallocfree.h trunk/coregrind/pub_core_stacktrace.h trunk/coregrind/pub_core_syscall.h trunk/coregrind/pub_core_threadstate.h trunk/coregrind/pub_core_trampoline.h trunk/coregrind/pub_core_transtab_asm.h trunk/docs/internals/register-uses.txt trunk/include/pub_tool_basics.h trunk/include/pub_tool_machine.h trunk/include/pub_tool_vkiscnums_asm.h trunk/include/valgrind.h trunk/include/vki/vki-linux.h trunk/memcheck/mc_machine.c trunk/memcheck/mc_translate.c trunk/memcheck/tests/atomic_incs.c trunk/tests/arch_test.c [... diff too large to include ...] |
|
From: Bart V. A. <bar...@gm...> - 2010-01-01 08:16:39
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2010-01-01 02:00:06 EST Ended at 2010-01-01 02:50:34 EST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 181 stderr failures, 55 stdout failures, 0 post failures == memcheck/tests/addressable (stdout) memcheck/tests/addressable (stderr) memcheck/tests/atomic_incs (stdout) memcheck/tests/atomic_incs (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/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/calloc-overflow (stderr) memcheck/tests/clientperm (stdout) memcheck/tests/clientperm (stderr) memcheck/tests/custom-overlap (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/deep_templates (stdout) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/erringfds (stdout) memcheck/tests/erringfds (stderr) memcheck/tests/error_counts (stderr) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/file_locking (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stdout) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/linux/brk (stderr) memcheck/tests/linux/capget (stderr) memcheck/tests/linux/lsframe1 (stderr) memcheck/tests/linux/lsframe2 (stderr) memcheck/tests/linux/sigqueue (stderr) memcheck/tests/linux/stack_changes (stdout) memcheck/tests/linux/stack_changes (stderr) memcheck/tests/linux/stack_switch (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/linux/timerfd-syscall (stderr) memcheck/tests/linux/with-space (stdout) memcheck/tests/linux/with-space (stderr) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/linux-syslog-syscall (stderr) memcheck/tests/long-supps (stderr) memcheck/tests/long_namespace_xml (stdout) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/mallinfo (stderr) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stdout) memcheck/tests/malloc3 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/malloc_usable (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/nanoleak2 (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stdout) memcheck/tests/new_override (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin2-not-quite (stderr) memcheck/tests/origin3-no (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stdout) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/origin6-fp (stderr) memcheck/tests/overlap (stdout) memcheck/tests/overlap (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stdout) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pdb-realloc (stderr) memcheck/tests/pdb-realloc2 (stdout) memcheck/tests/pdb-realloc2 (stderr) memcheck/tests/pipe (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/sh-mem-random (stdout) memcheck/tests/sh-mem-random (stderr) memcheck/tests/sh-mem (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/signal2 (stdout) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/strchr (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/unit_libcbase (stderr) memcheck/tests/unit_oset (stdout) memcheck/tests/unit_oset (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stdout) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stdout) memcheck/tests/varinfo6 (stderr) memcheck/tests/vcpu_bz2 (stdout) memcheck/tests/vcpu_bz2 (stderr) memcheck/tests/vcpu_fbench (stdout) memcheck/tests/vcpu_fbench (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/vcpu_fnfns (stderr) memcheck/tests/wrap1 (stdout) memcheck/tests/wrap1 (stderr) memcheck/tests/wrap2 (stdout) memcheck/tests/wrap2 (stderr) memcheck/tests/wrap3 (stdout) memcheck/tests/wrap3 (stderr) memcheck/tests/wrap4 (stdout) memcheck/tests/wrap4 (stderr) memcheck/tests/wrap5 (stdout) memcheck/tests/wrap5 (stderr) memcheck/tests/wrap6 (stdout) memcheck/tests/wrap6 (stderr) memcheck/tests/wrap7 (stdout) memcheck/tests/wrap7 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) memcheck/tests/writev (stderr) memcheck/tests/xml1 (stdout) memcheck/tests/xml1 (stderr) cachegrind/tests/chdir (stderr) cachegrind/tests/clreq (stderr) cachegrind/tests/dlclose (stdout) cachegrind/tests/dlclose (stderr) cachegrind/tests/notpower2 (stderr) cachegrind/tests/wrap5 (stdout) cachegrind/tests/wrap5 (stderr) callgrind/tests/notpower2-hwpref (stderr) callgrind/tests/notpower2-use (stderr) callgrind/tests/notpower2-wb (stderr) callgrind/tests/notpower2 (stderr) callgrind/tests/simwork1 (stdout) callgrind/tests/simwork1 (stderr) callgrind/tests/simwork2 (stdout) callgrind/tests/simwork2 (stderr) callgrind/tests/simwork3 (stdout) callgrind/tests/simwork3 (stderr) lackey/tests/true (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc32/testVMX (stdout) none/tests/ppc32/testVMX (stderr) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/bar_bad (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/bar_bad (stderr) drd/tests/circular_buffer (stderr) drd/tests/pth_cancel_locked (stderr) drd/tests/pth_cleanup_handler (stderr) drd/tests/tc23_bogus_condwait (stderr) drd/tests/unit_bitmap (stderr) drd/tests/unit_vc (stderr) exp-ptrcheck/tests/bad_percentify (stdout) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stdout) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stdout) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stdout) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Last 20 lines of verbose log follow echo make[4]: Entering directory `/net/home/bart/software/valgrind/nightly/valgrind-old/memcheck' gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_ppc64=1 -DVGO_linux=1 -DVGP_ppc64_linux=1 -m64 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -O2 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT memcheck_ppc64_linux-mc_translate.o -MD -MP -MF .deps/memcheck_ppc64_linux-mc_translate.Tpo -c -o memcheck_ppc64_linux-mc_translate.o `test -f 'mc_translate.c' || echo './'`mc_translate.c mc_translate.c: In function âexpr2vbits_Binopâ: mc_translate.c:2401: error: âIop_F64toI64â undeclared (first use in this function) mc_translate.c:2401: error: (Each undeclared identifier is reported only once mc_translate.c:2401: error: for each function it appears in.) mc_translate.c:2402: error: âIop_I64toF64â undeclared (first use in this function) mc_translate.c:2411: error: âIop_F64toI32â undeclared (first use in this function) mc_translate.c:2416: error: âIop_F64toI16â undeclared (first use in this function) mc_translate.c: In function âexpr2vbits_Unopâ: mc_translate.c:2669: error: âIop_I32toF64â undeclared (first use in this function) make[4]: *** [memcheck_ppc64_linux-mc_translate.o] Error 1 make[4]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-old/memcheck' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-old/memcheck' make[2]: *** [check] Error 2 make[2]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-old/memcheck' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-old' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Jan 1 02:15:15 2010 --- new.short Fri Jan 1 02:50:34 2010 *************** *** 6,27 **** ! Last 20 lines of verbose log follow echo ! make[4]: Entering directory `/net/home/bart/software/valgrind/nightly/valgrind-old/memcheck' ! gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_ppc64=1 -DVGO_linux=1 -DVGP_ppc64_linux=1 -m64 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -O2 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT memcheck_ppc64_linux-mc_translate.o -MD -MP -MF .deps/memcheck_ppc64_linux-mc_translate.Tpo -c -o memcheck_ppc64_linux-mc_translate.o `test -f 'mc_translate.c' || echo './'`mc_translate.c ! mc_translate.c: In function âexpr2vbits_Binopâ: ! mc_translate.c:2401: error: âIop_F64toI64â undeclared (first use in this function) ! mc_translate.c:2401: error: (Each undeclared identifier is reported only once ! mc_translate.c:2401: error: for each function it appears in.) ! mc_translate.c:2402: error: âIop_I64toF64â undeclared (first use in this function) ! mc_translate.c:2411: error: âIop_F64toI32â undeclared (first use in this function) ! mc_translate.c:2416: error: âIop_F64toI16â undeclared (first use in this function) ! mc_translate.c: In function âexpr2vbits_Unopâ: ! mc_translate.c:2669: error: âIop_I32toF64â undeclared (first use in this function) ! make[4]: *** [memcheck_ppc64_linux-mc_translate.o] Error 1 ! make[4]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-old/memcheck' ! make[3]: *** [check-recursive] Error 1 ! make[3]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-old/memcheck' ! make[2]: *** [check] Error 2 ! make[2]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-old/memcheck' ! make[1]: *** [check-recursive] Error 1 ! make[1]: Leaving directory `/net/home/bart/software/valgrind/nightly/valgrind-old' ! make: *** [check] Error 2 --- 6,246 ---- ! Regression test results follow ! ! == 449 tests, 181 stderr failures, 55 stdout failures, 0 post failures == ! memcheck/tests/addressable (stdout) ! memcheck/tests/addressable (stderr) ! memcheck/tests/atomic_incs (stdout) ! memcheck/tests/atomic_incs (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/brk2 (stderr) ! memcheck/tests/buflen_check (stderr) ! memcheck/tests/calloc-overflow (stderr) ! memcheck/tests/clientperm (stdout) ! memcheck/tests/clientperm (stderr) ! memcheck/tests/custom-overlap (stderr) ! memcheck/tests/custom_alloc (stderr) ! memcheck/tests/deep_templates (stdout) ! memcheck/tests/describe-block (stderr) ! memcheck/tests/doublefree (stderr) ! memcheck/tests/erringfds (stdout) ! memcheck/tests/erringfds (stderr) ! memcheck/tests/error_counts (stderr) ! memcheck/tests/errs1 (stderr) ! memcheck/tests/execve (stderr) ! memcheck/tests/execve2 (stderr) ! memcheck/tests/exitprog (stderr) ! memcheck/tests/file_locking (stderr) ! memcheck/tests/fprw (stderr) ! memcheck/tests/fwrite (stderr) ! memcheck/tests/inits (stderr) ! memcheck/tests/inline (stdout) ! memcheck/tests/inline (stderr) ! memcheck/tests/leak-0 (stderr) ! memcheck/tests/leak-cases-full (stderr) ! memcheck/tests/leak-cases-summary (stderr) ! memcheck/tests/leak-cycle (stderr) ! memcheck/tests/leak-pool-0 (stderr) ! memcheck/tests/leak-pool-1 (stderr) ! memcheck/tests/leak-pool-2 (stderr) ! memcheck/tests/leak-pool-3 (stderr) ! memcheck/tests/leak-pool-4 (stderr) ! memcheck/tests/leak-pool-5 (stderr) ! memcheck/tests/leak-tree (stderr) ! memcheck/tests/linux/brk (stderr) ! memcheck/tests/linux/capget (stderr) ! memcheck/tests/linux/lsframe1 (stderr) ! memcheck/tests/linux/lsframe2 (stderr) ! memcheck/tests/linux/sigqueue (stderr) ! memcheck/tests/linux/stack_changes (stdout) ! memcheck/tests/linux/stack_changes (stderr) ! memcheck/tests/linux/stack_switch (stderr) ! memcheck/tests/linux/timerfd-syscall (stdout) ! memcheck/tests/linux/timerfd-syscall (stderr) ! memcheck/tests/linux/with-space (stdout) ! memcheck/tests/linux/with-space (stderr) ! memcheck/tests/linux-syscalls-2007 (stderr) ! memcheck/tests/linux-syslog-syscall (stderr) ! memcheck/tests/long-supps (stderr) ! memcheck/tests/long_namespace_xml (stdout) ! memcheck/tests/long_namespace_xml (stderr) ! memcheck/tests/mallinfo (stderr) ! memcheck/tests/malloc1 (stderr) ! memcheck/tests/malloc2 (stderr) ! memcheck/tests/malloc3 (stdout) ! memcheck/tests/malloc3 (stderr) ! memcheck/tests/malloc_free_fill (stderr) ! memcheck/tests/malloc_usable (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/nanoleak2 (stderr) ! memcheck/tests/nanoleak_supp (stderr) ! memcheck/tests/new_nothrow (stderr) ! memcheck/tests/new_override (stdout) ! memcheck/tests/new_override (stderr) ! memcheck/tests/noisy_child (stderr) ! memcheck/tests/null_socket (stderr) ! memcheck/tests/origin1-yes (stderr) ! memcheck/tests/origin2-not-quite (stderr) ! memcheck/tests/origin3-no (stderr) ! memcheck/tests/origin4-many (stderr) ! memcheck/tests/origin5-bz2 (stdout) ! memcheck/tests/origin5-bz2 (stderr) ! memcheck/tests/origin6-fp (stderr) ! memcheck/tests/overlap (stdout) ! memcheck/tests/overlap (stderr) ! memcheck/tests/partial_load_dflt (stderr) ! memcheck/tests/partial_load_ok (stderr) ! memcheck/tests/partiallydefinedeq (stdout) ! memcheck/tests/partiallydefinedeq (stderr) ! memcheck/tests/pdb-realloc (stderr) ! memcheck/tests/pdb-realloc2 (stdout) ! memcheck/tests/pdb-realloc2 (stderr) ! memcheck/tests/pipe (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/sh-mem-random (stdout) ! memcheck/tests/sh-mem-random (stderr) ! memcheck/tests/sh-mem (stderr) ! memcheck/tests/sigaltstack (stderr) ! memcheck/tests/sigkill (stderr) ! memcheck/tests/signal2 (stdout) ! memcheck/tests/signal2 (stderr) ! memcheck/tests/sigprocmask (stderr) ! memcheck/tests/str_tester (stderr) ! memcheck/tests/strchr (stderr) ! memcheck/tests/supp1 (stderr) ! memcheck/tests/supp2 (stderr) ! memcheck/tests/supp_unknown (stderr) ! memcheck/tests/suppfree (stderr) ! memcheck/tests/trivialleak (stderr) ! memcheck/tests/unit_libcbase (stderr) ! memcheck/tests/unit_oset (stdout) ! memcheck/tests/unit_oset (stderr) ! memcheck/tests/varinfo1 (stderr) ! memcheck/tests/varinfo2 (stderr) ! memcheck/tests/varinfo3 (stderr) ! memcheck/tests/varinfo4 (stdout) ! memcheck/tests/varinfo4 (stderr) ! memcheck/tests/varinfo5 (stderr) ! memcheck/tests/varinfo6 (stdout) ! memcheck/tests/varinfo6 (stderr) ! memcheck/tests/vcpu_bz2 (stdout) ! memcheck/tests/vcpu_bz2 (stderr) ! memcheck/tests/vcpu_fbench (stdout) ! memcheck/tests/vcpu_fbench (stderr) ! memcheck/tests/vcpu_fnfns (stdout) ! memcheck/tests/vcpu_fnfns (stderr) ! memcheck/tests/wrap1 (stdout) ! memcheck/tests/wrap1 (stderr) ! memcheck/tests/wrap2 (stdout) ! memcheck/tests/wrap2 (stderr) ! memcheck/tests/wrap3 (stdout) ! memcheck/tests/wrap3 (stderr) ! memcheck/tests/wrap4 (stdout) ! memcheck/tests/wrap4 (stderr) ! memcheck/tests/wrap5 (stdout) ! memcheck/tests/wrap5 (stderr) ! memcheck/tests/wrap6 (stdout) ! memcheck/tests/wrap6 (stderr) ! memcheck/tests/wrap7 (stdout) ! memcheck/tests/wrap7 (stderr) ! memcheck/tests/wrap8 (stdout) ! memcheck/tests/wrap8 (stderr) ! memcheck/tests/writev (stderr) ! memcheck/tests/xml1 (stdout) ! memcheck/tests/xml1 (stderr) ! cachegrind/tests/chdir (stderr) ! cachegrind/tests/clreq (stderr) ! cachegrind/tests/dlclose (stdout) ! cachegrind/tests/dlclose (stderr) ! cachegrind/tests/notpower2 (stderr) ! cachegrind/tests/wrap5 (stdout) ! cachegrind/tests/wrap5 (stderr) ! callgrind/tests/notpower2-hwpref (stderr) ! callgrind/tests/notpower2-use (stderr) ! callgrind/tests/notpower2-wb (stderr) ! callgrind/tests/notpower2 (stderr) ! callgrind/tests/simwork1 (stdout) ! callgrind/tests/simwork1 (stderr) ! callgrind/tests/simwork2 (stdout) ! callgrind/tests/simwork2 (stderr) ! callgrind/tests/simwork3 (stdout) ! callgrind/tests/simwork3 (stderr) ! lackey/tests/true (stderr) ! none/tests/empty-exe (stderr) ! none/tests/linux/mremap (stderr) ! none/tests/ppc32/jm-fp (stdout) ! none/tests/ppc32/jm-vmx (stdout) ! none/tests/ppc32/round (stdout) ! none/tests/ppc32/test_gx (stdout) ! none/tests/ppc32/testVMX (stdout) ! none/tests/ppc32/testVMX (stderr) ! none/tests/ppc64/jm-fp (stdout) ! none/tests/ppc64/jm-vmx (stdout) ! none/tests/ppc64/round (stdout) ! none/tests/shell_valid2 (stderr) ! none/tests/shell_valid3 (stderr) ! none/tests/shell_zerolength (stderr) ! helgrind/tests/bar_bad (stderr) ! helgrind/tests/hg05_race2 (stderr) ! helgrind/tests/tc06_two_races_xml (stderr) ! helgrind/tests/tc22_exit_w_lock (stderr) ! helgrind/tests/tc23_bogus_condwait (stderr) ! drd/tests/bar_bad (stderr) ! drd/tests/circular_buffer (stderr) ! drd/tests/pth_cancel_locked (stderr) ! drd/tests/pth_cleanup_handler (stderr) ! drd/tests/tc23_bogus_condwait (stderr) ! drd/tests/unit_bitmap (stderr) ! drd/tests/unit_vc (stderr) ! exp-ptrcheck/tests/bad_percentify (stdout) ! exp-ptrcheck/tests/bad_percentify (stderr) ! exp-ptrcheck/tests/base (stderr) ! exp-ptrcheck/tests/ccc (stderr) ! exp-ptrcheck/tests/fp (stderr) ! exp-ptrcheck/tests/globalerr (stderr) ! exp-ptrcheck/tests/hackedbz2 (stdout) ! exp-ptrcheck/tests/hackedbz2 (stderr) ! exp-ptrcheck/tests/hp_bounds (stderr) ! exp-ptrcheck/tests/hp_dangle (stderr) ! exp-ptrcheck/tests/hsg (stdout) ! exp-ptrcheck/tests/hsg (stderr) ! exp-ptrcheck/tests/justify (stderr) ! exp-ptrcheck/tests/partial_bad (stderr) ! exp-ptrcheck/tests/partial_good (stderr) ! exp-ptrcheck/tests/preen_invars (stdout) ! exp-ptrcheck/tests/preen_invars (stderr) ! exp-ptrcheck/tests/pth_create (stderr) ! exp-ptrcheck/tests/pth_specific (stderr) ! exp-ptrcheck/tests/realloc (stderr) ! exp-ptrcheck/tests/stackerr (stderr) ! exp-ptrcheck/tests/strcpy (stderr) ! exp-ptrcheck/tests/supp (stderr) ! exp-ptrcheck/tests/tricky (stderr) ! exp-ptrcheck/tests/unaligned (stderr) ! exp-ptrcheck/tests/zero (stderr) ! |
|
From: Tom H. <th...@cy...> - 2010-01-01 03:31:20
|
Nightly build on lloyd ( x86_64, Fedora 7 )
Started at 2010-01-01 03:05:04 GMT
Ended at 2010-01-01 03:31:00 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 531 tests, 2 stderr failures, 0 stdout failures, 0 post failures ==
memcheck/tests/x86-linux/scalar (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... failed
Last 20 lines of verbose log follow echo
mv -f .deps/memcheck_amd64_linux-mc_main.Tpo .deps/memcheck_amd64_linux-mc_main.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -O2 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT memcheck_amd64_linux-mc_translate.o -MD -MP -MF .deps/memcheck_amd64_linux-mc_translate.Tpo -c -o memcheck_amd64_linux-mc_translate.o `test -f 'mc_translate.c' || echo './'`mc_translate.c
mc_translate.c: In function 'expr2vbits_Binop':
mc_translate.c:2401: error: 'Iop_F64toI64' undeclared (first use in this function)
mc_translate.c:2401: error: (Each undeclared identifier is reported only once
mc_translate.c:2401: error: for each function it appears in.)
mc_translate.c:2402: error: 'Iop_I64toF64' undeclared (first use in this function)
mc_translate.c:2411: error: 'Iop_F64toI32' undeclared (first use in this function)
mc_translate.c:2416: error: 'Iop_F64toI16' undeclared (first use in this function)
mc_translate.c: In function 'expr2vbits_Unop':
mc_translate.c:2669: error: 'Iop_I32toF64' undeclared (first use in this function)
make[4]: *** [memcheck_amd64_linux-mc_translate.o] Error 1
make[4]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old'
make: *** [all] Error 2
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Fri Jan 1 03:08:56 2010
--- new.short Fri Jan 1 03:31:00 2010
***************
*** 3,26 ****
Configuring valgrind ... done
! Building valgrind ... failed
- Last 20 lines of verbose log follow echo
- mv -f .deps/memcheck_amd64_linux-mc_main.Tpo .deps/memcheck_amd64_linux-mc_main.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -O2 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT memcheck_amd64_linux-mc_translate.o -MD -MP -MF .deps/memcheck_amd64_linux-mc_translate.Tpo -c -o memcheck_amd64_linux-mc_translate.o `test -f 'mc_translate.c' || echo './'`mc_translate.c
- mc_translate.c: In function 'expr2vbits_Binop':
- mc_translate.c:2401: error: 'Iop_F64toI64' undeclared (first use in this function)
- mc_translate.c:2401: error: (Each undeclared identifier is reported only once
- mc_translate.c:2401: error: for each function it appears in.)
- mc_translate.c:2402: error: 'Iop_I64toF64' undeclared (first use in this function)
- mc_translate.c:2411: error: 'Iop_F64toI32' undeclared (first use in this function)
- mc_translate.c:2416: error: 'Iop_F64toI16' undeclared (first use in this function)
- mc_translate.c: In function 'expr2vbits_Unop':
- mc_translate.c:2669: error: 'Iop_I32toF64' undeclared (first use in this function)
- make[4]: *** [memcheck_amd64_linux-mc_translate.o] Error 1
- make[4]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
- make[3]: *** [all-recursive] Error 1
- make[3]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
- make[2]: *** [all] Error 2
- make[2]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
- make[1]: *** [all-recursive] Error 1
- make[1]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old'
- make: *** [all] Error 2
--- 3,12 ----
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 531 tests, 2 stderr failures, 0 stdout failures, 0 post failures ==
! memcheck/tests/x86-linux/scalar (stderr)
! helgrind/tests/tc06_two_races_xml (stderr)
|
|
From: Tom H. <th...@cy...> - 2010-01-01 03:25:27
|
Nightly build on mg ( x86_64, Fedora 9 )
Started at 2010-01-01 03:10:05 GMT
Ended at 2010-01-01 03:25:11 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures ==
memcheck/tests/x86-linux/scalar (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... failed
Last 20 lines of verbose log follow echo
mv -f .deps/memcheck_amd64_linux-mc_main.Tpo .deps/memcheck_amd64_linux-mc_main.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -O2 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT memcheck_amd64_linux-mc_translate.o -MD -MP -MF .deps/memcheck_amd64_linux-mc_translate.Tpo -c -o memcheck_amd64_linux-mc_translate.o `test -f 'mc_translate.c' || echo './'`mc_translate.c
mc_translate.c: In function 'expr2vbits_Binop':
mc_translate.c:2401: error: 'Iop_F64toI64' undeclared (first use in this function)
mc_translate.c:2401: error: (Each undeclared identifier is reported only once
mc_translate.c:2401: error: for each function it appears in.)
mc_translate.c:2402: error: 'Iop_I64toF64' undeclared (first use in this function)
mc_translate.c:2411: error: 'Iop_F64toI32' undeclared (first use in this function)
mc_translate.c:2416: error: 'Iop_F64toI16' undeclared (first use in this function)
mc_translate.c: In function 'expr2vbits_Unop':
mc_translate.c:2669: error: 'Iop_I32toF64' undeclared (first use in this function)
make[4]: *** [memcheck_amd64_linux-mc_translate.o] Error 1
make[4]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old'
make: *** [all] Error 2
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Fri Jan 1 03:12:23 2010
--- new.short Fri Jan 1 03:25:11 2010
***************
*** 3,26 ****
Configuring valgrind ... done
! Building valgrind ... failed
- Last 20 lines of verbose log follow echo
- mv -f .deps/memcheck_amd64_linux-mc_main.Tpo .deps/memcheck_amd64_linux-mc_main.Po
- gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_amd64=1 -DVGO_linux=1 -DVGP_amd64_linux=1 -m64 -fomit-frame-pointer -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -O2 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT memcheck_amd64_linux-mc_translate.o -MD -MP -MF .deps/memcheck_amd64_linux-mc_translate.Tpo -c -o memcheck_amd64_linux-mc_translate.o `test -f 'mc_translate.c' || echo './'`mc_translate.c
- mc_translate.c: In function 'expr2vbits_Binop':
- mc_translate.c:2401: error: 'Iop_F64toI64' undeclared (first use in this function)
- mc_translate.c:2401: error: (Each undeclared identifier is reported only once
- mc_translate.c:2401: error: for each function it appears in.)
- mc_translate.c:2402: error: 'Iop_I64toF64' undeclared (first use in this function)
- mc_translate.c:2411: error: 'Iop_F64toI32' undeclared (first use in this function)
- mc_translate.c:2416: error: 'Iop_F64toI16' undeclared (first use in this function)
- mc_translate.c: In function 'expr2vbits_Unop':
- mc_translate.c:2669: error: 'Iop_I32toF64' undeclared (first use in this function)
- make[4]: *** [memcheck_amd64_linux-mc_translate.o] Error 1
- make[4]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
- make[3]: *** [all-recursive] Error 1
- make[3]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
- make[2]: *** [all] Error 2
- make[2]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old/memcheck'
- make[1]: *** [all-recursive] Error 1
- make[1]: Leaving directory `/tmp/vgtest/2010-01-01/valgrind-old'
- make: *** [all] Error 2
--- 3,12 ----
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 538 tests, 2 stderr failures, 0 stdout failures, 0 post failures ==
! memcheck/tests/x86-linux/scalar (stderr)
! helgrind/tests/tc06_two_races_xml (stderr)
|