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
(10) |
3
(13) |
4
(10) |
|
5
(8) |
6
(7) |
7
(8) |
8
(8) |
9
(7) |
10
(8) |
11
(8) |
|
12
(9) |
13
(8) |
14
(17) |
15
(13) |
16
(13) |
17
(11) |
18
(11) |
|
19
(14) |
20
(11) |
21
(8) |
22
(17) |
23
(10) |
24
(9) |
25
(10) |
|
26
(12) |
27
(11) |
28
(10) |
29
(8) |
30
(7) |
|
|
|
From: <sv...@va...> - 2006-11-16 12:21:55
|
Author: sewardj
Date: 2006-11-16 12:21:52 +0000 (Thu, 16 Nov 2006)
New Revision: 6356
Log:
CFI reader: when decoding the single (address) argument to
DW_CFA_set_loc, take into account any encoding info conveyed by the
augmentation string. See big comment in the code.
Modified:
trunk/coregrind/m_debuginfo/readdwarf.c
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_debuginfo/readdwarf.c 2006-11-16 11:01:48 UTC (rev =
6355)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2006-11-16 12:21:52 UTC (rev =
6356)
@@ -1357,6 +1357,69 @@
Only handles 32-bit DWARF.
*/
=20
+/* Comments re DW_CFA_set_loc, 16 Nov 06.
+
+ JRS:
+ Someone recently sent me a libcrypto.so.0.9.8 as distributed with
+ Ubuntu of some flavour, compiled with gcc 4.1.2 on amd64. It
+ causes V's CF reader to complain a lot:
+
+ >> --19976-- DWARF2 CFI reader: unhandled CFI instruction 0:24
+ >> --19976-- DWARF2 CFI reader: unhandled CFI instruction 0:24
+ >> --19976-- DWARF2 CFI reader: unhandled CFI instruction 0:24
+ >> --19976-- DWARF2 CFI reader: unhandled CFI instruction 0:24
+ >> --19976-- DWARF2 CFI reader: unhandled CFI instruction 0:48
+ >> --19976-- DWARF2 CFI reader: unhandled CFI instruction 0:24
+
+ After chasing this around a bit it seems that the CF bytecode
+ parser lost sync at a DW_CFA_set_loc, which has a single argument
+ denoting an address.
+
+ As it stands that address is extracted by read_Addr(). On amd64
+ that just fetches 8 bytes regardless of anything else.
+
+ read_encoded_Addr() is more sophisticated. This appears to take
+ into account some kind of encoding flag. When I replace the uses
+ of read_Addr by read_encoded_Addr for DW_CFA_set_loc, the
+ complaints go away, there is no loss of sync, and the parsed CF
+ instructions are the same as shown by readelf --debug-dump=3Dframes.
+
+ So it seems a plausible fix. The problem is I looked in the DWARF3
+ spec and completely failed to figure out whether or not the arg to
+ DW_CFA_set_loc is supposed to be encoded in a way suitable for
+ read_encoded_Addr, nor for that matter any description of what it
+ is that read_encoded_Addr is really decoding.
+
+ TomH:
+ The problem is that the encoding is not standard - the eh_frame
+ section uses the same encoding as the dwarf_frame section except
+ for a few small changes, and this is one of them. So this is not
+ something the DWARF standard covers.
+
+ There is an augmentation string to indicate what is going on though
+ so that programs can recognise it.
+
+ What we are doing seems to match what gdb 6.5 and libdwarf 20060614
+ do though. I'm not sure about readelf though.
+
+ (later): Well dwarfdump barfs on it:
+
+ dwarfdump ERROR: dwarf_get_fde_info_for_reg: =20
+ DW_DLE_DF_FRAME_DECODING_ERROR(193) (193)
+
+ I've looked at binutils as well now, and the code in readelf agrees
+ with your patch - ie it treats set_loc as having an encoded address
+ if there is a zR augmentation indicating an encoding.
+
+ Quite why gdb and libdwarf don't understand this is an interesting
+ question...
+
+ Final outcome: all uses of read_Addr were replaced by
+ read_encoded_Addr. A new type AddressDecodingInfo was added to
+ make it relatively clean to plumb through the extra info needed by
+ read_encoded_Addr.
+*/
+
/* --------------- Decls --------------- */
=20
#if defined(VGP_x86_linux)
@@ -1529,6 +1592,19 @@
}
=20
=20
+/* A structure which holds information needed by read_encoded_Addr().
+ Not sure what these address-like fields are -- really ought to
+ distinguish properly svma/avma/image addresses.=20
+*/
+typedef
+ struct {
+ UChar encoding;
+ UChar* ehframe;
+ Addr ehframe_addr;
+ }
+ AddressDecodingInfo;
+
+
/* ------------ Deal with summary-info records ------------ */
=20
static void initCfiSI ( DiCfSI* si )
@@ -1730,15 +1806,6 @@
return r;
}
=20
-static Addr read_Addr ( UChar* data )
-{
-# if VG_WORDSIZE =3D=3D 4
- return read_UInt(data);
-# else
- return read_ULong(data);
-# endif
-}
-
static UChar read_UChar ( UChar* data )
{
return data[0];
@@ -1767,11 +1834,15 @@
}
}
=20
-static Addr read_encoded_Addr ( UChar* data, UChar encoding, Int *nbytes=
,
- UChar* ehframe, Addr ehframe_addr )
+static Addr read_encoded_Addr ( /*OUT*/Int* nbytes,
+ AddressDecodingInfo* adi,
+ UChar* data )
{
- Addr base;
- Int offset;
+ Addr base;
+ Int offset;
+ UChar encoding =3D adi->encoding;
+ UChar* ehframe =3D adi->ehframe;
+ Addr ehframe_addr =3D adi->ehframe_addr;
=20
vg_assert((encoding & DW_EH_PE_indirect) =3D=3D 0);
=20
@@ -1842,7 +1913,8 @@
*/
static Int run_CF_instruction ( /*MOD*/UnwindContext* ctx,=20
UChar* instr,
- UnwindContext* restore_ctx )
+ UnwindContext* restore_ctx,
+ AddressDecodingInfo* adi )
{
Int off, reg, reg2, nleb, len;
UInt delta;
@@ -1885,7 +1957,11 @@
case DW_CFA_nop:=20
break;
case DW_CFA_set_loc:
- ctx->loc =3D read_Addr(&instr[i]) - ctx->initloc; i+=3D sizeof(=
Addr);
+ /* WAS:=20
+ ctx->loc =3D read_Addr(&instr[i]) - ctx->initloc; i+=3D size=
of(Addr);
+ Was this ever right? */
+ ctx->loc =3D read_encoded_Addr(&len, adi, &instr[i]);
+ i +=3D len;
break;
case DW_CFA_advance_loc1:
delta =3D (UInt)read_UChar(&instr[i]); i+=3D sizeof(UChar);
@@ -2087,7 +2163,8 @@
=20
/* Show a CFI instruction, and also return its length. */
=20
-static Int show_CF_instruction ( UChar* instr )
+static Int show_CF_instruction ( UChar* instr,
+ AddressDecodingInfo* adi )
{
UInt delta;
Int off, reg, reg2, nleb, len;
@@ -2128,7 +2205,9 @@
break;
=20
case DW_CFA_set_loc:
- loc =3D read_Addr(&instr[i]); i+=3D sizeof(Addr);
+ /* WAS: loc =3D read_Addr(&instr[i]); i+=3D sizeof(Addr); */
+ loc =3D read_encoded_Addr(&len, adi, &instr[i]);
+ i +=3D len;
VG_(printf)("DW_CFA_set_loc(%p)\n", loc);=20
break;
=20
@@ -2299,12 +2378,13 @@
}
=20
=20
-static void show_CF_instructions ( UChar* instrs, Int ilen )
+static void show_CF_instructions ( UChar* instrs, Int ilen,
+ AddressDecodingInfo* adi )
{
Int i =3D 0;
while (True) {
if (i >=3D ilen) break;
- i +=3D show_CF_instruction( &instrs[i] );
+ i +=3D show_CF_instruction( &instrs[i], adi );
}
}
=20
@@ -2315,7 +2395,8 @@
Bool run_CF_instructions ( struct _SegInfo* si,
UnwindContext* ctx, UChar* instrs, Int ilen,
UWord fde_arange,
- UnwindContext* restore_ctx )
+ UnwindContext* restore_ctx,
+ AddressDecodingInfo* adi )
{
DiCfSI cfsi;
Bool summ_ok;
@@ -2326,8 +2407,8 @@
while (True) {
loc_prev =3D ctx->loc;
if (i >=3D ilen) break;
- if (0) (void)show_CF_instruction( &instrs[i] );
- j =3D run_CF_instruction( ctx, &instrs[i], restore_ctx );
+ if (0) (void)show_CF_instruction( &instrs[i], adi );
+ j =3D run_CF_instruction( ctx, &instrs[i], restore_ctx, adi );
if (j =3D=3D 0)
return False; /* execution failed */
i +=3D j;
@@ -2403,10 +2484,10 @@
Int n_CIEs =3D 0;
UChar* data =3D ehframe;
=20
-#if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
- // CAB: tmp hack for ppc - no stacktraces for now...
+# if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
+ /* These targets don't use CFI-based stack unwinding. */
return;
-#endif
+# endif
=20
if (VG_(clo_trace_cfi)) {
VG_(printf)("\n-----------------------------------------------\n")=
;
@@ -2611,12 +2692,18 @@
=20
data +=3D the_CIEs[this_CIE].ilen;
=20
- if (VG_(clo_trace_cfi))=20
+ if (VG_(clo_trace_cfi)) {
+ AddressDecodingInfo adi;
+ adi.encoding =3D the_CIEs[this_CIE].address_encoding;
+ adi.ehframe =3D ehframe;
+ adi.ehframe_addr =3D ehframe_addr;
show_CF_instructions(the_CIEs[this_CIE].instrs,=20
- the_CIEs[this_CIE].ilen);
+ the_CIEs[this_CIE].ilen, &adi );
+ }
=20
} else {
=20
+ AddressDecodingInfo adi;
UnwindContext ctx, restore_ctx;
Int cie;
UInt look_for;
@@ -2647,16 +2734,18 @@
goto bad;
}
=20
- fde_initloc=20
- =3D read_encoded_Addr(data, the_CIEs[cie].address_encoding,
- &nbytes, ehframe, ehframe_addr);
+ adi.encoding =3D the_CIEs[cie].address_encoding;
+ adi.ehframe =3D ehframe;
+ adi.ehframe_addr =3D ehframe_addr;
+ fde_initloc =3D read_encoded_Addr(&nbytes, &adi, data);
data +=3D nbytes;
if (VG_(clo_trace_cfi))=20
VG_(printf)("fde.initloc =3D %p\n", (void*)fde_initloc);
=20
- fde_arange=20
- =3D read_encoded_Addr(data, the_CIEs[cie].address_encoding &=
0xf,
- &nbytes, ehframe, ehframe_addr);
+ adi.encoding =3D the_CIEs[cie].address_encoding & 0xf;
+ adi.ehframe =3D ehframe;
+ adi.ehframe_addr =3D ehframe_addr;
+ fde_arange =3D read_encoded_Addr(&nbytes, &adi, data);
data +=3D nbytes;
if (VG_(clo_trace_cfi))=20
VG_(printf)("fde.arangec =3D %p\n", (void*)fde_arange);
@@ -2680,9 +2769,13 @@
=20
data +=3D fde_ilen;
=20
- if (VG_(clo_trace_cfi))=20
- show_CF_instructions(fde_instrs, fde_ilen);
+ adi.encoding =3D the_CIEs[cie].address_encoding;
+ adi.ehframe =3D ehframe;
+ adi.ehframe_addr =3D ehframe_addr;
=20
+ if (VG_(clo_trace_cfi))
+ show_CF_instructions(fde_instrs, fde_ilen, &adi);
+
initUnwindContext(&ctx);
ctx.code_a_f =3D the_CIEs[cie].code_a_f;
ctx.data_a_f =3D the_CIEs[cie].data_a_f;
@@ -2693,12 +2786,14 @@
=20
ok =3D run_CF_instructions(
NULL, &ctx, the_CIEs[cie].instrs,=20
- the_CIEs[cie].ilen, 0, NULL);
+ the_CIEs[cie].ilen, 0, NULL, &adi
+ );
if (ok) {
restore_ctx =3D ctx;
ok =3D run_CF_instructions(
si, &ctx, fde_instrs, fde_ilen, fde_arange,=20
- &restore_ctx);
+ &restore_ctx, &adi
+ );
}
}
}
|
|
From: <sv...@va...> - 2006-11-16 11:01:50
|
Author: sewardj
Date: 2006-11-16 11:01:48 +0000 (Thu, 16 Nov 2006)
New Revision: 6355
Log:
A test for JECXZ and JCXZ.
Added:
trunk/none/tests/x86/jcxz.c
trunk/none/tests/x86/jcxz.stderr.exp
trunk/none/tests/x86/jcxz.stdout.exp
trunk/none/tests/x86/jcxz.vgtest
Modified:
trunk/none/tests/x86/Makefile.am
Modified: trunk/none/tests/x86/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/Makefile.am 2006-11-14 18:36:02 UTC (rev 6354)
+++ trunk/none/tests/x86/Makefile.am 2006-11-16 11:01:48 UTC (rev 6355)
@@ -24,6 +24,7 @@
$(addsuffix .stderr.exp,$(INSN_TESTS)) \
$(addsuffix .stdout.exp,$(INSN_TESTS)) \
$(addsuffix .vgtest,$(INSN_TESTS)) \
+ jcxz.stdout.exp jcxz.stderr.exp jcxz.vgtest \
lahf.stdout.exp lahf.stderr.exp lahf.vgtest \
looper.stderr.exp looper.stdout.exp looper.vgtest \
movx.stderr.exp movx.stdout.exp movx.vgtest \
@@ -42,6 +43,7 @@
cmpxchg8b cpuid \
faultstatus fcmovnu fpu_lazy_eflags fxtract \
getseg incdec_alt $(INSN_TESTS) \
+ jcxz \
lahf looper movx int pushpopseg sbbmisc \
seg_override sigcontext smc1 yield
=20
Added: trunk/none/tests/x86/jcxz.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/jcxz.c (rev 0)
+++ trunk/none/tests/x86/jcxz.c 2006-11-16 11:01:48 UTC (rev 6355)
@@ -0,0 +1,54 @@
+
+#include <stdio.h>
+
+typedef unsigned int UInt;
+
+UInt test_jcxz ( UInt arg )
+{
+ UInt block[2];
+ block[0] =3D arg;
+ block[1] =3D 0xdeadbeef;
+ __asm__ __volatile__(
+ "movl %0,%%ecx\n\t"
+ "movl $0,%%eax\n"
+ ".Lxyzzy1:\n\t"
+ "jcxz .Lfoobar1\n\t"
+ "addl $1, %%eax\n\t"
+ "subl $1, %%ecx\n\t"
+ "jmp .Lxyzzy1\n"
+ ".Lfoobar1:\n\t"
+ "movl %%eax, %1"
+ : /*out*/ : /*in*/ "m"(block[0]),
+ "m"(block[1]) : /*trash*/ "eax","ecx","cc","mem=
ory"
+ );
+ return block[1];
+}
+
+UInt test_jecxz ( UInt arg )
+{
+ UInt block[2];
+ block[0] =3D arg;
+ block[1] =3D 0xdeadbeef;
+ __asm__ __volatile__(
+ "movl %0,%%ecx\n\t"
+ "movl $0,%%eax\n"
+ ".Lxyzzy2:\n\t"
+ "jecxz .Lfoobar2\n\t"
+ "addl $1, %%eax\n\t"
+ "subl $1, %%ecx\n\t"
+ "jmp .Lxyzzy2\n"
+ ".Lfoobar2:\n\t"
+ "movl %%eax, %1"
+ : /*out*/ : /*in*/ "m"(block[0]),
+ "m"(block[1]) : /*trash*/ "eax","ecx","cc","mem=
ory"
+ );
+ return block[1];
+}
+
+int main ( void )
+{
+ UInt arg =3D 0x01028374;
+ printf("test_jcxz(0x%x) =3D 0x%x\n", arg, test_jcxz(arg));
+ printf("test_jecxz(0x%x) =3D 0x%x\n", arg, test_jecxz(arg));
+ return 0;
+}
Added: trunk/none/tests/x86/jcxz.stderr.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Added: trunk/none/tests/x86/jcxz.stdout.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/jcxz.stdout.exp (rev 0)
+++ trunk/none/tests/x86/jcxz.stdout.exp 2006-11-16 11:01:48 UTC (rev 635=
5)
@@ -0,0 +1,2 @@
+test_jcxz(0x1028374) =3D 0x8374
+test_jecxz(0x1028374) =3D 0x1028374
Added: trunk/none/tests/x86/jcxz.vgtest
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/jcxz.vgtest (rev 0)
+++ trunk/none/tests/x86/jcxz.vgtest 2006-11-16 11:01:48 UTC (rev 6355)
@@ -0,0 +1,2 @@
+prog: jcxz
+vgopts: -q
|
|
From: <sv...@va...> - 2006-11-16 10:42:10
|
Author: sewardj
Date: 2006-11-16 10:42:02 +0000 (Thu, 16 Nov 2006)
New Revision: 1678
Log:
Handle JCXZ.
Modified:
trunk/priv/guest-x86/toIR.c
Modified: trunk/priv/guest-x86/toIR.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/guest-x86/toIR.c 2006-11-15 02:57:05 UTC (rev 1677)
+++ trunk/priv/guest-x86/toIR.c 2006-11-16 10:42:02 UTC (rev 1678)
@@ -10827,6 +10827,28 @@
=20
after_sse_decoders:
=20
+ /* ---------------------------------------------------- */
+ /* --- deal with misc 0x67 pfxs (addr size override) -- */
+ /* ---------------------------------------------------- */
+
+ /* 67 E3 =3D JCXZ (for JECXZ see below) */
+ if (insn[0] =3D=3D 0x67 && insn[1] =3D=3D 0xE3 && sz =3D=3D 4) {
+ delta +=3D 2;
+ d32 =3D (((Addr32)guest_EIP_bbstart)+delta+1) + getSDisp8(delta);
+ delta ++;
+ stmt( IRStmt_Exit(
+ binop(Iop_CmpEQ16, getIReg(2,R_ECX), mkU16(0)),
+ Ijk_Boring,
+ IRConst_U32(d32)
+ ));
+ DIP("jcxz 0x%x\n", d32);
+ goto decode_success;
+ }
+
+ /* ---------------------------------------------------- */
+ /* --- start of the baseline insn decoder -- */
+ /* ---------------------------------------------------- */
+
/* Get the primary opcode. */
opc =3D getIByte(delta); delta++;
=20
@@ -11157,21 +11179,16 @@
DIP("j%s-8 0x%x\n", name_X86Condcode(opc - 0x70), d32);
break;
=20
- case 0xE3: /* JECXZ or perhaps JCXZ, depending on OSO ? Intel
- manual says it depends on address size override. */
+ case 0xE3: /* JECXZ (for JCXZ see above) */
if (sz !=3D 4) goto decode_failure;
d32 =3D (((Addr32)guest_EIP_bbstart)+delta+1) + getSDisp8(delta);
- delta++;
- ty =3D szToITy(sz);
+ delta ++;
stmt( IRStmt_Exit(
- binop(mkSizedOp(ty,Iop_CmpEQ8),
- getIReg(sz,R_ECX),
- mkU(ty,0)),
+ binop(Iop_CmpEQ32, getIReg(4,R_ECX), mkU32(0)),
Ijk_Boring,
- IRConst_U32(d32))=20
- );
-
- DIP("j%sz 0x%x\n", nameIReg(sz, R_ECX), d32);
+ IRConst_U32(d32)
+ ));
+ DIP("jecxz 0x%x\n", d32);
break;
=20
case 0xE0: /* LOOPNE disp8: decrement count, jump if count !=3D 0 && =
ZF=3D=3D0 */
|
|
From: <js...@ac...> - 2006-11-16 05:04:27
|
Nightly build on phoenix ( SuSE 10.0 ) started at 2006-11-16 04:30: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 == 247 tests, 8 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/blockfault (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <to...@co...> - 2006-11-16 03:47:58
|
Nightly build on dunsmere ( athlon, Fedora Core 6 ) started at 2006-11-16 03:30:06 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 == 249 tests, 7 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/xml1 (stderr) none/tests/blockfault (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2006-11-16 03:47:34
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2006-11-16 03:00:02 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 == 279 tests, 15 stderr failures, 1 stdout failure, 0 posttest failures == 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/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (stderr) none/tests/fdleak_cmsg (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 279 tests, 15 stderr failures, 2 stdout failures, 0 posttest failures == 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/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (stderr) none/tests/fdleak_cmsg (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/tls (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Nov 16 03:37:59 2006 --- new.short Thu Nov 16 03:47:23 2006 *************** *** 8,10 **** ! == 279 tests, 15 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/leak-pool-0 (stderr) --- 8,10 ---- ! == 279 tests, 15 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/leak-pool-0 (stderr) *************** *** 25,27 **** none/tests/mremap2 (stdout) - none/tests/tls (stdout) --- 25,26 ---- |
|
From: Tom H. <th...@cy...> - 2006-11-16 03:27:23
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2006-11-16 03:10:03 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 == 277 tests, 13 stderr failures, 1 stdout failure, 0 posttest failures == 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/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2006-11-16 03:26:02
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2006-11-16 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/ccxXNXyy.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccxXNXyy.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccxXNXyy.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccxXNXyy.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccxXNXyy.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccxXNXyy.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccxXNXyy.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccxXNXyy.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.10597/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.10597/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.10597/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.10597/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.10597/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/ccnrCt7e.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccnrCt7e.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccnrCt7e.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccnrCt7e.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccnrCt7e.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccnrCt7e.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccnrCt7e.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' /tmp/ccnrCt7e.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.10597/valgrind/none/tests/x86' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/valgrind.10597/valgrind/none/tests/x86' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.10597/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/valgrind.10597/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.10597/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Nov 16 03:20:15 2006 --- new.short Thu Nov 16 03:25:53 2006 *************** *** 7,16 **** Last 20 lines of verbose log follow echo ! /tmp/ccnrCt7e.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccnrCt7e.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccnrCt7e.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccnrCt7e.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccnrCt7e.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccnrCt7e.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccnrCt7e.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccnrCt7e.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/ccxXNXyy.s:4393: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccxXNXyy.s:4513: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccxXNXyy.s:4633: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccxXNXyy.s:4753: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccxXNXyy.s:4873: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccxXNXyy.s:4993: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccxXNXyy.s:5113: Error: no such instruction: `fisttpq -56(%ebp)' ! /tmp/ccxXNXyy.s:5233: Error: no such instruction: `fisttpq -56(%ebp)' make[5]: *** [insn_sse3.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2006-11-16 03:20:52
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2006-11-16 03:05:07 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 277 tests, 14 stderr failures, 1 stdout failure, 0 posttest failures == 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/mempool (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: <js...@ac...> - 2006-11-16 02:57:40
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2006-11-16 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 == 214 tests, 12 stderr failures, 7 stdout failures, 0 posttest failures == memcheck/tests/leak-cycle (stderr) 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/blockfault (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/jm-int (stdout) 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...> - 2006-11-16 01:16:45
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2006-11-16 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 == 220 tests, 14 stderr failures, 4 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) 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/mempool (stderr) memcheck/tests/pointer-trace (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/ppc32/jm-int (stdout) none/tests/ppc64/jm-int (stdout) |
|
From: Tom H. <to...@co...> - 2006-11-16 00:32:07
|
In message <200...@ac...>
Julian Seward <js...@ac...> wrote:
>
> > Well dwarfdump barfs on it:
> >
> > dwarfdump ERROR: dwarf_get_fde_info_for_reg:
> > DW_DLE_DF_FRAME_DECODING_ERROR(193) (193)
> >
> > I've looked at binutils as well now, and the code in readelf agrees
> > with your patch - ie it treats set_loc as having an encoded address if
> > there is a zR augmentation indicating an encoding.
>
> So you think I should just clean up the patch and commit it?
I think so, yes.
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Julian S. <js...@ac...> - 2006-11-16 00:20:16
|
> Well dwarfdump barfs on it: > > dwarfdump ERROR: dwarf_get_fde_info_for_reg: > DW_DLE_DF_FRAME_DECODING_ERROR(193) (193) > > I've looked at binutils as well now, and the code in readelf agrees > with your patch - ie it treats set_loc as having an encoded address if > there is a zR augmentation indicating an encoding. So you think I should just clean up the patch and commit it? J |