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
(14) |
2
(16) |
3
(7) |
|
4
(7) |
5
(9) |
6
(8) |
7
(10) |
8
(16) |
9
(15) |
10
(9) |
|
11
(11) |
12
(13) |
13
(8) |
14
(8) |
15
(10) |
16
(25) |
17
(7) |
|
18
(7) |
19
(13) |
20
(10) |
21
(14) |
22
(11) |
23
(12) |
24
(8) |
|
25
(19) |
26
(10) |
27
(16) |
28
(13) |
|
|
|
|
From: <sv...@va...> - 2007-02-28 23:31:50
|
Author: sewardj
Date: 2007-02-28 23:31:42 +0000 (Wed, 28 Feb 2007)
New Revision: 1736
Log:
Support 'INT $3' instruction.
Modified:
trunk/priv/guest-x86/toIR.c
trunk/priv/host-x86/hdefs.c
Modified: trunk/priv/guest-x86/toIR.c
===================================================================
--- trunk/priv/guest-x86/toIR.c 2007-02-23 08:48:22 UTC (rev 1735)
+++ trunk/priv/guest-x86/toIR.c 2007-02-28 23:31:42 UTC (rev 1736)
@@ -11208,6 +11208,12 @@
/* ------------------------ INT ------------------------ */
+ case 0xCC: /* INT 3 */
+ jmp_lit(Ijk_Trap,((Addr32)guest_EIP_bbstart)+delta);
+ dres.whatNext = Dis_StopHere;
+ DIP("int $0x3\n");
+ break;
+
case 0xCD: /* INT imm8 */
d32 = getIByte(delta); delta++;
if (d32 != 0x80) goto decode_failure;
Modified: trunk/priv/host-x86/hdefs.c
===================================================================
--- trunk/priv/host-x86/hdefs.c 2007-02-23 08:48:22 UTC (rev 1735)
+++ trunk/priv/host-x86/hdefs.c 2007-02-28 23:31:42 UTC (rev 1736)
@@ -2184,6 +2184,9 @@
case Ijk_Sys_sysenter:
*p++ = 0xBD;
p = emit32(p, VEX_TRC_JMP_SYS_SYSENTER); break;
+ case Ijk_Trap:
+ *p++ = 0xBD;
+ p = emit32(p, VEX_TRC_JMP_TRAP); break;
case Ijk_Ret:
case Ijk_Call:
case Ijk_Boring:
|
|
From: <sv...@va...> - 2007-02-28 14:10:46
|
Author: sewardj
Date: 2007-02-28 14:10:43 +0000 (Wed, 28 Feb 2007)
New Revision: 6629
Log:
Update.
Modified:
trunk/docs/internals/3_2_BUGSTATUS.txt
Modified: trunk/docs/internals/3_2_BUGSTATUS.txt
===================================================================
--- trunk/docs/internals/3_2_BUGSTATUS.txt 2007-02-28 13:27:37 UTC (rev 6628)
+++ trunk/docs/internals/3_2_BUGSTATUS.txt 2007-02-28 14:10:43 UTC (rev 6629)
@@ -39,15 +39,23 @@
r6601 pending 32 n-i-bz callgrind: Fix threads display
of "callgrind_control -s"
+r6622 pending 32 n-i-bz .eh_frame crud for m_trampoline.S fns
+
Ashley logfile qualifiers in coredumps patch
+
RedHat8 needs suppressions (r6612) (definitely merge)
+- see 142228 complaint of elf_dynamic_do_rela in trivial usage
+- also 142229 unexpected "write(buf) points to uninitialised byte(s)"
+
64 bit DWARF in unwind (r6610) (definitely merge)
Correctly handle DW_CFA_def_cfa_sf (r6599) (definitely merge)
get rid of kludge_then_addDiCfSI (r6611; do not merge)
-sym reading problems?
+[Bug 142279] New: long indirect jmp unhandled: unhandled Grp5(M) case 5
+int3 (133984) ?
+
------- Bugs reported and fixed in 3.2.3 ------
TRUNK 32BRANCH PRI BUG# WHAT
|
|
From: <sv...@va...> - 2007-02-28 13:27:40
|
Author: sewardj
Date: 2007-02-28 13:27:37 +0000 (Wed, 28 Feb 2007)
New Revision: 6628
Log:
Add a regression test for unwind handling of DW_CFA_def_cfa_expression.
Added:
trunk/memcheck/tests/amd64/defcfaexpr.S
trunk/memcheck/tests/amd64/defcfaexpr.stderr.exp
trunk/memcheck/tests/amd64/defcfaexpr.vgtest
Modified:
trunk/memcheck/tests/amd64/Makefile.am
Modified: trunk/memcheck/tests/amd64/Makefile.am
===================================================================
--- trunk/memcheck/tests/amd64/Makefile.am 2007-02-28 13:03:27 UTC (rev 6627)
+++ trunk/memcheck/tests/amd64/Makefile.am 2007-02-28 13:27:37 UTC (rev 6628)
@@ -11,13 +11,14 @@
bt_everything.stderr.exp bt_everything.stdout.exp \
bt_everything.vgtest \
bug132146.vgtest bug132146.stderr.exp bug132146.stdout.exp \
+ defcfaexpr.vgtest defcfaexpr.stderr.exp \
fxsave-amd64.vgtest fxsave-amd64.stdout.exp fxsave-amd64.stderr.exp \
more_x87_fp.stderr.exp more_x87_fp.stdout.exp more_x87_fp.vgtest \
sse_memory.stderr.exp sse_memory.stdout.exp sse_memory.vgtest \
xor-undef-amd64.stderr.exp xor-undef-amd64.stdout.exp \
xor-undef-amd64.vgtest
-check_PROGRAMS = bt_everything bug132146 fxsave-amd64 \
+check_PROGRAMS = bt_everything bug132146 defcfaexpr fxsave-amd64 \
more_x87_fp sse_memory xor-undef-amd64
AM_CPPFLAGS = -I$(top_srcdir)/include
@@ -28,3 +29,5 @@
more_x87_fp_CFLAGS = $(AM_CFLAGS) -O -ffast-math -mfpmath=387 \
-mfancy-math-387
more_x87_fp_LDADD = -lm
+
+defcfaexpr_SOURCES = defcfaexpr.S
Added: trunk/memcheck/tests/amd64/defcfaexpr.S
===================================================================
--- trunk/memcheck/tests/amd64/defcfaexpr.S (rev 0)
+++ trunk/memcheck/tests/amd64/defcfaexpr.S 2007-02-28 13:27:37 UTC (rev 6628)
@@ -0,0 +1,186 @@
+
+/* This is really horrible. It checks that the
+ stack unwinder understands DW_CFA_def_cfa_expression. It is
+ the result of compiling this:
+
+void bbb ( long x )
+{
+ __asm__ __volatile__(
+ "cmp %0,%0\n\t"
+ "jz .Lxyzzy\n"
+ ".Lxyzzy:\n\t"
+ : : "r"(x) : "cc"
+ );
+}
+
+void aaa ( long x ) {
+ bbb(x);
+}
+
+int main ( void )
+{
+ long *p = malloc(8);
+ aaa( *p );
+ return 0;
+}
+
+and bracketing the cmp/jz insns with a move down/up by 256 of %rsp.
+The .jz causes memcheck to complain, hence unwind the stack, but
+that cannot be successfully done unless the return address can
+be found. Hence the handwritten CFI below uses
+DW_CFA_def_cfa_expression to make that possible.
+
+The CFI below isn't really right in that aaa appears twice
+in the backtrace
+
+==12868== Conditional jump or move depends on uninitialised value(s)
+==12868== at 0x400512: bbb (in /home/sewardj/VgTRUNK/trunk/mad0)
+==12868== by 0x400520: aaa (in /home/sewardj/VgTRUNK/trunk/mad0)
+==12868== by 0x400520: aaa (in /home/sewardj/VgTRUNK/trunk/mad0)
+==12868== by 0x400538: main (in /home/sewardj/VgTRUNK/trunk/mad0)
+
+but GDB behaves the same, so I'm not too concerned - indicates
+the problem is with the handwritten CFI and not with
+V's interpretation of it.
+*/
+
+
+ .file "bad0.c"
+ .text
+
+
+.globl bbb
+ .type bbb, @function
+bbb:
+.LFB2:
+.Lbbb1:
+ subq $256,%rsp
+.Lbbb2:
+ cmp %rdi,%rdi
+ jz .Lxyzzy
+.Lxyzzy:
+ addq $256,%rsp
+.Lbbb3:
+ ret
+.Lbbb4:
+.LFE2:
+ .size bbb, .-bbb
+
+
+
+.globl aaa
+ .type aaa, @function
+aaa:
+.LFB3:
+ call bbb
+ rep ; ret
+.LFE3:
+ .size aaa, .-aaa
+.globl main
+ .type main, @function
+main:
+.LFB4:
+ subq $8, %rsp
+.LCFI0:
+ movl $8, %edi
+ call malloc
+ movq (%rax), %rdi
+ call aaa
+ movl $0, %eax
+ addq $8, %rsp
+ ret
+.LFE4:
+ .size main, .-main
+ .section .eh_frame,"a",@progbits
+.Lframe1:
+ .long .LECIE1-.LSCIE1
+.LSCIE1:
+ .long 0x0
+ .byte 0x1
+ .string "zR"
+ .uleb128 0x1
+ .sleb128 -8
+ .byte 0x10
+ .uleb128 0x1
+ .byte 0x3
+ .byte 0xc
+ .uleb128 0x7
+ .uleb128 0x8
+ .byte 0x90
+ .uleb128 0x1
+ .align 8
+.LECIE1:
+
+/* start of the FDE for bbb */
+.LSFDE1:
+ .long .LEFDE1-.LASFDE1 /* length of FDE */
+.LASFDE1:
+ .long .LASFDE1-.Lframe1 /* CIE pointer */
+ .long .LFB2 /* & bbb */
+ .long .LFE2-.LFB2 /* sizeof(bbb) */
+ .uleb128 0 /* augmentation length */
+ .byte 0x40 + .Lbbb2 - .Lbbb1 /* _advance_loc to .Lbbb2 */
+
+ /* For the section in between .Lbbb2 and .Lbbb3, set the
+ CFA to be %rsp+256, and set the return address (dwarf r16)
+ to be *(CFA+0). */
+ .byte 0x0f /* _def_cfa_expression */
+ .uleb128 .Lexpr1e-.Lexpr1s /* length of expression */
+.Lexpr1s:
+ .byte 0x77 /* DW_OP_breg7 == %rsp + sleb128(0) */
+ .sleb128 0
+ .byte 0x40 /* DW_OP_lit16 */
+ .byte 0x40 /* DW_OP_lit16 */
+ .byte 0x1e /* DW_OP_mul */
+ .byte 0x22 /* DW_OP_plus */
+.Lexpr1e:
+ .byte 0x90 /* _cfa_offset: r16 = *(cfa+0) */
+ .uleb128 0
+
+ .byte 0x40 + .Lbbb3 - .Lbbb2 /* _advance_loc to .Lbbb3 */
+
+ /* For the section .Lbbb3 to .Lbbb4, should set CFA back to
+ something sensible. This tries to do it but still causes
+ GDB to show an extraneous aaa frame on the stack. Oh well. */
+ /* Now set CFA back to %rsp+0 */
+ .byte 0x0f /* _def_cfa_expression */
+ .uleb128 .Lexpr2e-.Lexpr2s /* length of expression */
+.Lexpr2s:
+ .byte 0x77 /* DW_OP_breg7 == %rsp + sleb128(0) */
+ .sleb128 0
+ .byte 0x30 /* DW_OP_lit0 */
+ .byte 0x1c /* DW_OP_minus */
+.Lexpr2e:
+ .byte 0x90 /* _cfa_offset: r16 = *(cfa+0) */
+ .uleb128 0
+
+ .byte 0x40 + .Lbbb4 - .Lbbb3 /* _advance_loc to .Lbbb4 */
+ .uleb128 0x0 /* ??? */
+ .align 8
+.LEFDE1:
+/* end of the FDE for bbb */
+
+.LSFDE3:
+ .long .LEFDE3-.LASFDE3
+.LASFDE3:
+ .long .LASFDE3-.Lframe1
+ .long .LFB3
+ .long .LFE3-.LFB3
+ .uleb128 0x0
+ .align 8
+.LEFDE3:
+.LSFDE5:
+ .long .LEFDE5-.LASFDE5
+.LASFDE5:
+ .long .LASFDE5-.Lframe1
+ .long .LFB4
+ .long .LFE4-.LFB4
+ .uleb128 0x0
+ .byte 0x4
+ .long .LCFI0-.LFB4
+ .byte 0xe
+ .uleb128 0x10
+ .align 8
+.LEFDE5:
+ .ident "GCC: (GNU) 4.1.2 20061115 (prerelease) (SUSE Linux)"
+ .section .note.GNU-stack,"",@progbits
Added: trunk/memcheck/tests/amd64/defcfaexpr.stderr.exp
===================================================================
--- trunk/memcheck/tests/amd64/defcfaexpr.stderr.exp (rev 0)
+++ trunk/memcheck/tests/amd64/defcfaexpr.stderr.exp 2007-02-28 13:27:37 UTC (rev 6628)
@@ -0,0 +1,5 @@
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: bbb (in ...)
+ by 0x........: aaa (in ...)
+ by 0x........: aaa (in ...)
+ by 0x........: main (in ...)
Added: trunk/memcheck/tests/amd64/defcfaexpr.vgtest
===================================================================
--- trunk/memcheck/tests/amd64/defcfaexpr.vgtest (rev 0)
+++ trunk/memcheck/tests/amd64/defcfaexpr.vgtest 2007-02-28 13:27:37 UTC (rev 6628)
@@ -0,0 +1,2 @@
+prog: defcfaexpr
+vgopts: -q
|
|
From: <sv...@va...> - 2007-02-28 13:03:30
|
Author: sewardj
Date: 2007-02-28 13:03:27 +0000 (Wed, 28 Feb 2007)
New Revision: 6627
Log:
Handle DW_CFA_def_cfa_expression; also DW_OP_mul.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/priv_storage.h
trunk/coregrind/m_debuginfo/readdwarf.c
trunk/coregrind/m_debuginfo/storage.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2007-02-28 01:46:30 UTC (rev 6626)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2007-02-28 13:03:27 UTC (rev 6627)
@@ -1010,6 +1010,7 @@
case Cop_Add: return wL + wR;
case Cop_Sub: return wL - wR;
case Cop_And: return wL & wR;
+ case Cop_Mul: return wL * wR;
default: goto unhandled;
}
/*NOTREACHED*/
@@ -1149,7 +1150,19 @@
cfa = cfsi->cfa_off + fpHere;
break;
case CFIC_EXPR:
- vg_assert(0);
+ if (0) {
+ VG_(printf)("CFIC_EXPR: ");
+ ML_(ppCfiExpr)(si->cfsi_exprs, cfsi->cfa_off);
+ VG_(printf)("\n");
+ }
+ eec.ipHere = ipHere;
+ eec.spHere = spHere;
+ eec.fpHere = fpHere;
+ eec.min_accessible = min_accessible;
+ eec.max_accessible = max_accessible;
+ ok = True;
+ cfa = evalCfiExpr(si->cfsi_exprs, cfsi->cfa_off, &eec, &ok );
+ if (!ok) return False;
break;
default:
vg_assert(0);
Modified: trunk/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_storage.h 2007-02-28 01:46:30 UTC (rev 6626)
+++ trunk/coregrind/m_debuginfo/priv_storage.h 2007-02-28 13:03:27 UTC (rev 6627)
@@ -146,7 +146,8 @@
enum {
Cop_Add=0x321,
Cop_Sub,
- Cop_And
+ Cop_And,
+ Cop_Mul
}
CfiOp;
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2007-02-28 01:46:30 UTC (rev 6626)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2007-02-28 13:03:27 UTC (rev 6627)
@@ -1992,10 +1992,25 @@
/* How to generate the CFA */
if (!ctx->cfa_is_regoff) {
- /* it was set by DW_CFA_def_cfa_expression; we don't know what
- it really is */
- why = 6;
- goto failed;
+ /* it was set by DW_CFA_def_cfa_expression; try to convert */
+ XArray *src, *dst;
+ Int conv;
+ src = ctx->exprs;
+ dst = seginfo->cfsi_exprs;
+ if (src && (VG_(sizeXA)(src) > 0) && (!dst)) {
+ dst = VG_(newXA)( symtab_alloc, symtab_free,
+ sizeof(CfiExpr) );
+ vg_assert(dst);
+ seginfo->cfsi_exprs = dst;
+ }
+ conv = copy_convert_CfiExpr_tree
+ ( dst, ctx, ctx->cfa_expr_ix );
+ vg_assert(conv >= -1);
+ if (conv == -1) { why = 6; goto failed; }
+ si->cfa_how = CFIC_EXPR;
+ si->cfa_off = conv;
+ if (0 && seginfo->ddump_frames)
+ ML_(ppCfiExpr)(dst, conv);
} else
if (ctx->cfa_is_regoff && ctx->cfa_reg == SP_REG) {
si->cfa_how = CFIC_SPREL;
@@ -2556,7 +2571,8 @@
/* Convert the DWARF3 expression in expr[0 .. exprlen-1] into a dag
(of CfiExprs) stored in ctx->exprs, and return the index in
ctx->exprs of the root node. Or fail in which case return -1. */
-
+/* IMPORTANT: when adding expression forms here, also remember to
+ add suitable evaluation code in evalCfiExpr in debuginfo.c. */
static Int dwarfexpr_to_dag ( UnwindContext* ctx,
UChar* expr, Int exprlen,
Bool push_cfa_at_start,
@@ -2674,6 +2690,8 @@
op = Cop_Add; opname = "plus"; goto binop;
case DW_OP_and:
op = Cop_And; opname = "and"; goto binop;
+ case DW_OP_mul:
+ op = Cop_Mul; opname = "mul"; goto binop;
binop:
POP( ix );
POP( ix2 );
@@ -2683,8 +2701,10 @@
break;
default:
- VG_(message)(Vg_DebugMsg, "DWARF2 CFI reader: unhandled DW_OP_ "
- "opcode 0x%x", (Int)opcode);
+ if (!VG_(clo_xml))
+ VG_(message)(Vg_DebugMsg,
+ "DWARF2 CFI reader: unhandled DW_OP_ "
+ "opcode 0x%x", (Int)opcode);
return -1;
}
@@ -3050,18 +3070,22 @@
break;
case DW_CFA_def_cfa_expression:
- if (si->trace_cfi)
- VG_(printf)("DWARF2 CFI reader: "
- "ignoring DW_CFA_def_cfa_expression\n");
len = read_leb128( &instr[i], &nleb, 0 );
i += nleb;
+ expr = &instr[i];
i += len;
+ if (si->ddump_frames)
+ VG_(printf)(" DW_CFA_def_cfa_expression (");
+ /* Convert the expression into a dag rooted at ctx->exprs index j,
+ or fail. */
+ j = dwarfexpr_to_dag ( ctx, expr, len, True/*push CFA at start*/,
+ si->ddump_frames);
+ if (si->ddump_frames)
+ VG_(printf)(")\n");
ctx->cfa_is_regoff = False;
ctx->cfa_reg = 0;
ctx->cfa_off = 0;
- ctx->cfa_expr_ix = -1; /* invalid - should handle properly */
- if (si->ddump_frames)
- VG_(printf)(" rci:DW_CFA_def_cfa_expression (ignored)\n");
+ ctx->cfa_expr_ix = j;
break;
case DW_CFA_GNU_window_save:
Modified: trunk/coregrind/m_debuginfo/storage.c
===================================================================
--- trunk/coregrind/m_debuginfo/storage.c 2007-02-28 01:46:30 UTC (rev 6626)
+++ trunk/coregrind/m_debuginfo/storage.c 2007-02-28 13:03:27 UTC (rev 6627)
@@ -438,6 +438,7 @@
case Cop_Add: VG_(printf)("+"); break;
case Cop_Sub: VG_(printf)("-"); break;
case Cop_And: VG_(printf)("&"); break;
+ case Cop_Mul: VG_(printf)("*"); break;
default: vg_assert(0);
}
}
|
|
From: Tom H. <th...@cy...> - 2007-02-28 11:03:05
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2007-02-28 10:49:32 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 == 288 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) |
|
From: <js...@ac...> - 2007-02-28 10:12:37
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2007-02-28 09:00:01 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 == 219 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) none/tests/ppc32/round (stdout) none/tests/ppc32/round (stderr) none/tests/ppc32/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: <js...@ac...> - 2007-02-28 05:36:02
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2007-02-28 04:55:01 GMT Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 254 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2007-02-28 03:23:44
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2007-02-28 03:10:07 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 == 288 tests, 4 stderr failures, 3 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) none/tests/pth_detached (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 288 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Feb 28 03:17:00 2007 --- new.short Wed Feb 28 03:23:36 2007 *************** *** 8,10 **** ! == 288 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 288 tests, 4 stderr failures, 3 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) *************** *** 14,15 **** --- 14,16 ---- none/tests/mremap2 (stdout) + none/tests/pth_cvsimple (stdout) none/tests/pth_detached (stdout) |
|
From: Tom H. <th...@cy...> - 2007-02-28 03:22:57
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-02-28 03:15:02 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/cceh3SLs.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cceh3SLs.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cceh3SLs.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cceh3SLs.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cceh3SLs.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cceh3SLs.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cceh3SLs.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/cceh3SLs.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/valgrind.13105/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.13105/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.13105/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.13105/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.13105/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo /tmp/ccFECdAb.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccFECdAb.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccFECdAb.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccFECdAb.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccFECdAb.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccFECdAb.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccFECdAb.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccFECdAb.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 rm insn_mmx.c insn_sse2.c insn_fpu.c insn_mmxext.c insn_sse.c insn_sse3.c insn_cmov.c insn_basic.c make[5]: Leaving directory `/tmp/valgrind.13105/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.13105/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.13105/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.13105/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.13105/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Feb 28 03:19:02 2007 --- new.short Wed Feb 28 03:22:50 2007 *************** *** 7,16 **** Last 20 lines of verbose log follow echo ! /tmp/ccFECdAb.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccFECdAb.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccFECdAb.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccFECdAb.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccFECdAb.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccFECdAb.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccFECdAb.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccFECdAb.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 --- 7,16 ---- Last 20 lines of verbose log follow echo ! /tmp/cceh3SLs.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cceh3SLs.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cceh3SLs.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cceh3SLs.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cceh3SLs.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cceh3SLs.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cceh3SLs.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/cceh3SLs.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2007-02-28 03:18:52
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-02-28 03:05:05 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 == 288 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2007-02-28 03:14:37
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-02-28 03:00:02 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 == 290 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: <sv...@va...> - 2007-02-28 01:46:32
|
Author: sewardj
Date: 2007-02-28 01:46:30 +0000 (Wed, 28 Feb 2007)
New Revision: 6626
Log:
Fill in a few more DWARF3 'expression' related cases.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/readdwarf.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2007-02-27 22:36:14 UTC (rev 6625)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2007-02-28 01:46:30 UTC (rev 6626)
@@ -998,6 +998,7 @@
CfiExprEvalContext* eec, Bool* ok )
{
UWord wL, wR;
+ Addr a;
CfiExpr* e = VG_(indexXA)( exprs, ix );
switch (e->tag) {
case Cex_Binop:
@@ -1008,6 +1009,7 @@
switch (e->Cex.Binop.op) {
case Cop_Add: return wL + wR;
case Cop_Sub: return wL - wR;
+ case Cop_And: return wL & wR;
default: goto unhandled;
}
/*NOTREACHED*/
@@ -1021,6 +1023,16 @@
/*NOTREACHED*/
case Cex_Const:
return e->Cex.Const.con;
+ case Cex_Deref:
+ a = evalCfiExpr( exprs, e->Cex.Deref.ixAddr, eec, ok );
+ if (!(*ok)) return 0;
+ if (a < eec->min_accessible
+ || (a + sizeof(UWord) - 1) > eec->max_accessible) {
+ *ok = False;
+ return 0;
+ }
+ /* let's hope it doesn't trap! */
+ return * ((UWord*)a);
default:
goto unhandled;
}
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2007-02-27 22:36:14 UTC (rev 6625)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2007-02-28 01:46:30 UTC (rev 6626)
@@ -1524,15 +1524,7 @@
8 is the return address (EIP) */
-/* Note that we don't support DWARF3 expressions (DW_CFA_expression,
- DW_CFA_def_cfa_expression, DW_CFA_val_expression). The code just
- reads over them and ignores them.
- Note also, does not support the 64-bit DWARF format (only known
- compiler that generates it so far is IBM's xlc/xlC/xlf suite).
- Only handles 32-bit DWARF.
-*/
-
/* Comments re DW_CFA_set_loc, 16 Nov 06.
JRS:
@@ -1842,6 +1834,10 @@
| RR_ValExpr arg -- is [[ arg ]]
| RR_Arch -- dunno
+ Note that RR_Expr is redundant since the same can be represented
+ using RR_ValExpr with an explicit dereference (CfiExpr_Deref) at
+ the outermost level.
+
All expressions are stored in exprs in the containing
UnwindContext. Since the UnwindContext gets reinitialised for each
new FDE, summarise_context needs to copy out any expressions it
@@ -1850,7 +1846,7 @@
typedef
struct {
enum { RR_Undef, RR_Same, RR_CFAOff, RR_CFAValOff,
- RR_Reg, RR_Expr, RR_ValExpr, RR_Arch } tag;
+ RR_Reg, /*RR_Expr,*/ RR_ValExpr, RR_Arch } tag;
/* meaning: int offset for CFAoff/CFAValOff
reg # for Reg
expr index for Expr/ValExpr */
@@ -1867,10 +1863,6 @@
case RR_CFAOff: VG_(printf)("c%d ", rrule->arg); break;
case RR_CFAValOff: VG_(printf)("v%d ", rrule->arg); break;
case RR_Reg: VG_(printf)("r%d ", rrule->arg); break;
- case RR_Expr: VG_(printf)("e{");
- ML_(ppCfiExpr)( exprs, rrule->arg );
- VG_(printf)("} ");
- break;
case RR_ValExpr: VG_(printf)("ve{");
ML_(ppCfiExpr)( exprs, rrule->arg );
VG_(printf)("} ");
@@ -2590,9 +2582,11 @@
sp--; \
} while (0)
- Int ix, ix2, reg;
- UChar opcode;
- Word sw;
+ Int ix, ix2, reg;
+ UChar opcode;
+ Word sw;
+ CfiOp op;
+ HChar* opname;
Int sp; /* # of top element: valid is -1 .. N_EXPR_STACK-1 */
Int stack[N_EXPR_STACK]; /* indices into ctx->exprs */
@@ -2636,9 +2630,20 @@
break;
}
+ op = 0; opname = NULL; /* excessively conservative */
+
opcode = *expr++;
switch (opcode) {
+ case DW_OP_lit0 ... DW_OP_lit31:
+ /* push: literal 0 .. 31 */
+ sw = (Word)opcode - (Word)DW_OP_lit0;
+ vg_assert(sw >= 0 && sw <= 31);
+ PUSH( ML_(CfiExpr_Const)( dst, (UWord)sw ) );
+ if (ddump_frames)
+ VG_(printf)("DW_OP_lit%ld", sw);
+ break;
+
case DW_OP_breg0 ... DW_OP_breg31:
/* push: reg + sleb128 */
reg = (Int)opcode - (Int)DW_OP_breg0;
@@ -2664,19 +2669,17 @@
break;
case DW_OP_minus:
- POP( ix );
- POP( ix2 );
- PUSH( ML_(CfiExpr_Binop)( dst, Cop_Sub, ix2, ix ) );
- if (ddump_frames)
- VG_(printf)("DW_OP_minus");
- break;
-
+ op = Cop_Sub; opname = "minus"; goto binop;
case DW_OP_plus:
+ op = Cop_Add; opname = "plus"; goto binop;
+ case DW_OP_and:
+ op = Cop_And; opname = "and"; goto binop;
+ binop:
POP( ix );
POP( ix2 );
- PUSH( ML_(CfiExpr_Binop)( dst, Cop_Add, ix2, ix ) );
+ PUSH( ML_(CfiExpr_Binop)( dst, op, ix2, ix ) );
if (ddump_frames)
- VG_(printf)("DW_OP_plus");
+ VG_(printf)("DW_OP_%s", opname);
break;
default:
@@ -2984,21 +2987,37 @@
break;
case DW_CFA_expression:
- /* Too difficult to really handle; just skip over it and say
- that we don't know what do to with the register. */
- if (si->trace_cfi)
- VG_(printf)("DWARF2 CFI reader: "
- "ignoring DW_CFA_expression\n");
+ /* Identical to DW_CFA_val_expression except that the value
+ computed is an address and so needs one final
+ dereference. */
reg = read_leb128( &instr[i], &nleb, 0 );
i += nleb;
len = read_leb128( &instr[i], &nleb, 0 );
i += nleb;
+ expr = &instr[i];
i += len;
- if (reg < 0 || reg >= N_CFI_REGS)
+ if (reg < 0 || reg >= N_CFI_REGS)
return 0; /* fail */
- ctx->reg[reg].tag = RR_Expr;
if (si->ddump_frames)
- VG_(printf)(" rci:DW_CFA_expression (ignored)\n");
+ VG_(printf)(" DW_CFA_expression: r%d (",
+ (Int)reg);
+ /* Convert the expression into a dag rooted at ctx->exprs index j,
+ or fail. */
+ j = dwarfexpr_to_dag ( ctx, expr, len, True/*push CFA at start*/,
+ si->ddump_frames);
+ if (si->ddump_frames)
+ VG_(printf)(")\n");
+ vg_assert(j >= -1);
+ if (j >= 0) {
+ vg_assert(ctx->exprs);
+ vg_assert( j < VG_(sizeXA)(ctx->exprs) );
+ }
+ if (j == -1)
+ return 0; /* fail */
+ /* Add an extra dereference */
+ j = ML_(CfiExpr_Deref)( ctx->exprs, j );
+ ctx->reg[reg].tag = RR_ValExpr;
+ ctx->reg[reg].arg = j;
break;
case DW_CFA_val_expression:
|
|
From: <js...@ac...> - 2007-02-28 01:17:14
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-02-28 02:00:01 CET 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 == 225 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |