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
(9) |
2
(2) |
3
(9) |
4
(19) |
5
(4) |
6
(1) |
7
(6) |
|
8
(11) |
9
(30) |
10
(12) |
11
(25) |
12
(7) |
13
(5) |
14
|
|
15
(17) |
16
(15) |
17
(20) |
18
(17) |
19
(5) |
20
(4) |
21
|
|
22
|
23
|
24
|
25
|
26
|
27
(4) |
28
(15) |
|
29
(10) |
30
(9) |
31
(11) |
|
|
|
|
|
From: <sv...@va...> - 2011-05-08 22:05:19
|
Author: sewardj
Date: 2011-05-08 23:05:10 +0100 (Sun, 08 May 2011)
New Revision: 2148
Log:
Handle Iop_I64UtoF32 in the ppc32/ppc64 insn selector. Fixes #270851.
(Maynard Johnson, may...@us...)
Modified:
trunk/priv/host_ppc_defs.c
trunk/priv/host_ppc_defs.h
trunk/priv/host_ppc_isel.c
Modified: trunk/priv/host_ppc_defs.c
===================================================================
--- trunk/priv/host_ppc_defs.c 2011-05-08 10:16:45 UTC (rev 2147)
+++ trunk/priv/host_ppc_defs.c 2011-05-08 22:05:10 UTC (rev 2148)
@@ -969,17 +969,65 @@
i->Pin.FpRSP.src = src;
return i;
}
+
+/*
+Valid combo | fromI | int32 | syned | flt64 |
+--------------------------------------------
+ | n n n n |
+--------------------------------------------
+ F64->I64U | n n n y |
+--------------------------------------------
+ | n n y n |
+--------------------------------------------
+ F64->I64S | n n y y |
+--------------------------------------------
+ | n y n n |
+--------------------------------------------
+ F64->I32U | n y n y |
+--------------------------------------------
+ | n y y n |
+--------------------------------------------
+ F64->I32S | n y y y |
+--------------------------------------------
+ I64U->F32 | y n n n |
+--------------------------------------------
+ I64U->F64 | y n n y |
+--------------------------------------------
+ | y n y n |
+--------------------------------------------
+ I64S->F64 | y n y y |
+--------------------------------------------
+ | y y n n |
+--------------------------------------------
+ | y y n y |
+--------------------------------------------
+ | y y y n |
+--------------------------------------------
+ | y y y y |
+--------------------------------------------
+*/
PPCInstr* PPCInstr_FpCftI ( Bool fromI, Bool int32, Bool syned,
- Bool dst64, HReg dst, HReg src ) {
+ Bool flt64, HReg dst, HReg src ) {
+ Bool tmp = fromI | int32 | syned | flt64;
+ vassert(tmp == True || tmp == False); // iow, no high bits set
+ UShort conversion = 0;
+ conversion = (fromI << 3) | (int32 << 2) | (syned << 1) | flt64;
+ switch (conversion) {
+ // Supported conversion operations
+ case 1: case 3: case 5: case 7:
+ case 8: case 9: case 11:
+ break;
+ default:
+ vpanic("PPCInstr_FpCftI(ppc_host)");
+ }
PPCInstr* i = LibVEX_Alloc(sizeof(PPCInstr));
i->tag = Pin_FpCftI;
i->Pin.FpCftI.fromI = fromI;
i->Pin.FpCftI.int32 = int32;
i->Pin.FpCftI.syned = syned;
- i->Pin.FpCftI.dst64 = dst64;
+ i->Pin.FpCftI.flt64 = flt64;
i->Pin.FpCftI.dst = dst;
i->Pin.FpCftI.src = src;
- vassert(!(int32 && fromI)); /* no such insn ("fcfiw"). */
return i;
}
PPCInstr* PPCInstr_FpCMov ( PPCCondCode cond, HReg dst, HReg src ) {
@@ -1452,7 +1500,7 @@
if (i->Pin.FpCftI.fromI == True && i->Pin.FpCftI.int32 == False) {
if (i->Pin.FpCftI.syned == True)
str = "fcfid";
- else if (i->Pin.FpCftI.dst64 == True)
+ else if (i->Pin.FpCftI.flt64 == True)
str = "fcfidu";
else
str = "fcfidus";
@@ -3405,7 +3453,7 @@
// fcfid (conv i64 to f64), PPC64 p434
p = mkFormX(p, 63, fr_dst, 0, fr_src, 846, 0);
goto done;
- } else if (i->Pin.FpCftI.dst64 == True) {
+ } else if (i->Pin.FpCftI.flt64 == True) {
// fcfidu (conv u64 to f64)
p = mkFormX(p, 63, fr_dst, 0, fr_src, 974, 0);
goto done;
Modified: trunk/priv/host_ppc_defs.h
===================================================================
--- trunk/priv/host_ppc_defs.h 2011-05-08 10:16:45 UTC (rev 2147)
+++ trunk/priv/host_ppc_defs.h 2011-05-08 22:05:10 UTC (rev 2148)
@@ -462,7 +462,7 @@
Pin_FpLdSt, /* FP load/store */
Pin_FpSTFIW, /* stfiwx */
Pin_FpRSP, /* FP round IEEE754 double to IEEE754 single */
- Pin_FpCftI, /* fcfid/fctid/fctiw */
+ Pin_FpCftI, /* fcfid[u,s,us]/fctid[u]/fctiw[u] */
Pin_FpCMov, /* FP floating point conditional move */
Pin_FpLdFPSCR, /* mtfsf */
Pin_FpCmp, /* FP compare, generating value into int reg */
@@ -663,13 +663,15 @@
HReg src;
HReg dst;
} FpRSP;
- /* fcfid/fctid/fctiw. Note there's no fcfiw so fromI==True
- && int32==True is not allowed. */
+ /* fcfid[u,s,us]/fctid[u]/fctiw[u]. Only some combinations
+ of the various fields are allowed. This is asserted for
+ and documented in the code for the constructor,
+ PPCInstr_FpCftI, in host_ppc_defs.c. */
struct {
- Bool fromI; /* False==F->I, True==I->F */
- Bool int32; /* True== I is 32, False==I is 64 */
+ Bool fromI; /* True== I->F, False== F->I */
+ Bool int32; /* True== I is 32, False== I is 64 */
Bool syned;
- Bool dst64; /* True==dest is 64bit; False==dest is 32bit */
+ Bool flt64; /* True== F is 64, False== F is 32 */
HReg src;
HReg dst;
} FpCftI;
Modified: trunk/priv/host_ppc_isel.c
===================================================================
--- trunk/priv/host_ppc_isel.c 2011-05-08 10:16:45 UTC (rev 2147)
+++ trunk/priv/host_ppc_isel.c 2011-05-08 22:05:10 UTC (rev 2148)
@@ -1471,8 +1471,9 @@
set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
sub_from_sp( env, 16 );
- addInstr(env, PPCInstr_FpCftI(False/*F->I*/, True/*int32*/, True,
- False, ftmp, fsrc));
+ addInstr(env, PPCInstr_FpCftI(False/*F->I*/, True/*int32*/,
+ True/*syned*/, True/*flt64*/,
+ ftmp, fsrc));
addInstr(env, PPCInstr_FpSTFIW(r1, ftmp));
addInstr(env, PPCInstr_Load(4, idst, zero_r1, mode64));
@@ -2959,6 +2960,8 @@
/* DO NOT CALL THIS DIRECTLY */
static HReg iselFltExpr_wrk ( ISelEnv* env, IRExpr* e )
{
+ Bool mode64 = env->mode64;
+
IRType ty = typeOfIRExpr(env->type_env,e);
vassert(ty == Ity_F32);
@@ -3027,6 +3030,60 @@
return fdst;
}
+ if (e->tag == Iex_Binop && e->Iex.Binop.op == Iop_I64UtoF32) {
+ if (mode64) {
+ HReg fdst = newVRegF(env);
+ HReg isrc = iselWordExpr_R(env, e->Iex.Binop.arg2);
+ HReg r1 = StackFramePtr(env->mode64);
+ PPCAMode* zero_r1 = PPCAMode_IR( 0, r1 );
+
+ /* Set host rounding mode */
+ set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
+
+ sub_from_sp( env, 16 );
+
+ addInstr(env, PPCInstr_Store(8, zero_r1, isrc, True/*mode64*/));
+ addInstr(env, PPCInstr_FpLdSt(True/*load*/, 8, fdst, zero_r1));
+ addInstr(env, PPCInstr_FpCftI(True/*I->F*/, False/*int64*/,
+ False, False,
+ fdst, fdst));
+
+ add_to_sp( env, 16 );
+
+ ///* Restore default FPU rounding. */
+ //set_FPU_rounding_default( env );
+ return fdst;
+ } else {
+ /* 32-bit mode */
+ HReg fdst = newVRegF(env);
+ HReg isrcHi, isrcLo;
+ HReg r1 = StackFramePtr(env->mode64);
+ PPCAMode* zero_r1 = PPCAMode_IR( 0, r1 );
+ PPCAMode* four_r1 = PPCAMode_IR( 4, r1 );
+
+ iselInt64Expr(&isrcHi, &isrcLo, env, e->Iex.Binop.arg2);
+
+ /* Set host rounding mode */
+ set_FPU_rounding_mode( env, e->Iex.Binop.arg1 );
+
+ sub_from_sp( env, 16 );
+
+ addInstr(env, PPCInstr_Store(4, zero_r1, isrcHi, False/*mode32*/));
+ addInstr(env, PPCInstr_Store(4, four_r1, isrcLo, False/*mode32*/));
+ addInstr(env, PPCInstr_FpLdSt(True/*load*/, 8, fdst, zero_r1));
+ addInstr(env, PPCInstr_FpCftI(True/*I->F*/, False/*int64*/,
+ False, False,
+ fdst, fdst));
+
+ add_to_sp( env, 16 );
+
+ ///* Restore default FPU rounding. */
+ //set_FPU_rounding_default( env );
+ return fdst;
+ }
+
+ }
+
vex_printf("iselFltExpr(ppc): No such tag(%u)\n", e->tag);
ppIRExpr(e);
vpanic("iselFltExpr_wrk(ppc)");
|
|
From: Christian B. <bor...@de...> - 2011-05-08 20:12:37
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-05-08 22:10:01 CEST Ended at 2011-05-08 22:11:51 CEST Results differ 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/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Tpo .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Po gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_s390x=1 -DVGO_linux=1 -DVGP_s390x_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/cborntra/valgrind-nightly/valgrind-new/Inst/lib/valgrind"\" -DVG_PLATFORM="\"s390x-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 vgdb-vgdb.o -MD -MP -MF .deps/vgdb-vgdb.Tpo -c -o vgdb-vgdb.o `test -f 'vgdb.c' || echo './'`vgdb.c vgdb.c: In function 'getregs': vgdb.c:637:30: error: 'PT_ENDREGS' undeclared (first use in this function) vgdb.c:637:30: note: each undeclared identifier is reported only once for each function it appears in vgdb.c: In function 'setregs': vgdb.c:669:30: error: 'PT_ENDREGS' undeclared (first use in this function) vgdb.c: At top level: vgdb.c:298:5: warning: 'ptrace_write_memory' defined but not used make[3]: *** [vgdb-vgdb.o] Error 1 make[3]: *** Waiting for unfinished jobs.... mv -f .deps/valgrind-m_debuglog.Tpo .deps/valgrind-m_debuglog.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-generic.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-generic.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-linux.Po make[3]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-new/coregrind' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-new/coregrind' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-new' make: *** [all] Error 2 ================================================= == 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/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Tpo .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Po gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_s390x=1 -DVGO_linux=1 -DVGP_s390x_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/cborntra/valgrind-nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"s390x-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 vgdb-vgdb.o -MD -MP -MF .deps/vgdb-vgdb.Tpo -c -o vgdb-vgdb.o `test -f 'vgdb.c' || echo './'`vgdb.c vgdb.c: In function 'getregs': vgdb.c:637:30: error: 'PT_ENDREGS' undeclared (first use in this function) vgdb.c:637:30: note: each undeclared identifier is reported only once for each function it appears in vgdb.c: In function 'setregs': vgdb.c:669:30: error: 'PT_ENDREGS' undeclared (first use in this function) vgdb.c: At top level: vgdb.c:298:5: warning: 'ptrace_write_memory' defined but not used make[3]: *** [vgdb-vgdb.o] Error 1 make[3]: *** Waiting for unfinished jobs.... mv -f .deps/valgrind-m_debuglog.Tpo .deps/valgrind-m_debuglog.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-generic.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-generic.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-linux.Po make[3]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-old/coregrind' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-old/coregrind' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-old' make: *** [all] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun May 8 22:10:59 2011 --- new.short Sun May 8 22:11:51 2011 *************** *** 7,9 **** mv -f .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Tpo .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Po ! gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_s390x=1 -DVGO_linux=1 -DVGP_s390x_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/cborntra/valgrind-nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"s390x-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 vgdb-vgdb.o -MD -MP -MF .deps/vgdb-vgdb.Tpo -c -o vgdb-vgdb.o `test -f 'vgdb.c' || echo './'`vgdb.c vgdb.c: In function 'getregs': --- 7,9 ---- mv -f .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Tpo .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Po ! gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_s390x=1 -DVGO_linux=1 -DVGP_s390x_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/cborntra/valgrind-nightly/valgrind-new/Inst/lib/valgrind"\" -DVG_PLATFORM="\"s390x-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 vgdb-vgdb.o -MD -MP -MF .deps/vgdb-vgdb.Tpo -c -o vgdb-vgdb.o `test -f 'vgdb.c' || echo './'`vgdb.c vgdb.c: In function 'getregs': *************** *** 20,26 **** mv -f .deps/libcoregrind_s390x_linux_a-syswrap-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-linux.Po ! make[3]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-old/coregrind' make[2]: *** [all] Error 2 ! make[2]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-old/coregrind' make[1]: *** [all-recursive] Error 1 ! make[1]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-old' make: *** [all] Error 2 --- 20,26 ---- mv -f .deps/libcoregrind_s390x_linux_a-syswrap-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-linux.Po ! make[3]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-new/coregrind' make[2]: *** [all] Error 2 ! make[2]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-new/coregrind' make[1]: *** [all-recursive] Error 1 ! make[1]: Leaving directory `/home/cborntra/valgrind-nightly/valgrind-new' make: *** [all] Error 2 |
|
From: Christian B. <bor...@de...> - 2011-05-08 20:11:42
|
Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2011-05-08 22:10:01 CEST Ended at 2011-05-08 22:11:34 CEST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... failed Last 20 lines of verbose log follow echo vgdb.c:637: error: for each function it appears in.) vgdb.c: In function 'setregs': vgdb.c:669: error: 'PT_ENDREGS' undeclared (first use in this function) mv -f .deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Tpo .deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Po gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_s390x=1 -DVGO_linux=1 -DVGP_s390x_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/cborntra/valgrind-nightly/valgrind-new/Inst/lib/valgrind"\" -DVG_PLATFORM="\"s390x-linux\"" -m64 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -Wno-pointer-sign -fno-stack-protector -MT vgpreload_core_s390x_linux_so-vg_preloaded.o -MD -MP -MF .deps/vgpreload_core_s390x_linux_so-vg_preloaded.Tpo -c -o vgpreload_core_s390x_linux_so-vg_preloaded.o `test -f 'vg_preloaded.c' || echo './'`vg_preloaded.c make[3]: *** [vgdb-vgdb.o] Error 1 make[3]: *** Waiting for unfinished jobs.... mv -f .deps/vgpreload_core_s390x_linux_so-vg_preloaded.Tpo .deps/vgpreload_core_s390x_linux_so-vg_preloaded.Po mv -f .deps/valgrind-launcher-linux.Tpo .deps/valgrind-launcher-linux.Po mv -f .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Tpo .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Po mv -f .deps/valgrind-m_debuglog.Tpo .deps/valgrind-m_debuglog.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-s390x-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-s390x-linux.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-generic.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-generic.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-linux.Po make[3]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-new/coregrind' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-new/coregrind' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-new' make: *** [all] Error 2 ================================================= == 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 vgdb.c:637: error: for each function it appears in.) vgdb.c: In function 'setregs': vgdb.c:669: error: 'PT_ENDREGS' undeclared (first use in this function) mv -f .deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Tpo .deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Po gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_s390x=1 -DVGO_linux=1 -DVGP_s390x_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/cborntra/valgrind-nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"s390x-linux\"" -m64 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -Wno-pointer-sign -fno-stack-protector -MT vgpreload_core_s390x_linux_so-vg_preloaded.o -MD -MP -MF .deps/vgpreload_core_s390x_linux_so-vg_preloaded.Tpo -c -o vgpreload_core_s390x_linux_so-vg_preloaded.o `test -f 'vg_preloaded.c' || echo './'`vg_preloaded.c make[3]: *** [vgdb-vgdb.o] Error 1 make[3]: *** Waiting for unfinished jobs.... mv -f .deps/vgpreload_core_s390x_linux_so-vg_preloaded.Tpo .deps/vgpreload_core_s390x_linux_so-vg_preloaded.Po mv -f .deps/valgrind-launcher-linux.Tpo .deps/valgrind-launcher-linux.Po mv -f .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Tpo .deps/libreplacemalloc_toolpreload_s390x_linux_a-vg_replace_malloc.Po mv -f .deps/valgrind-m_debuglog.Tpo .deps/valgrind-m_debuglog.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-s390x-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-s390x-linux.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-generic.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-generic.Po mv -f .deps/libcoregrind_s390x_linux_a-syswrap-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-linux.Po make[3]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-old/coregrind' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-old/coregrind' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-old' make: *** [all] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun May 8 22:10:48 2011 --- new.short Sun May 8 22:11:34 2011 *************** *** 10,12 **** mv -f .deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Tpo .deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Po ! gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_s390x=1 -DVGO_linux=1 -DVGP_s390x_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/cborntra/valgrind-nightly/valgrind-old/Inst/lib/valgrind"\" -DVG_PLATFORM="\"s390x-linux\"" -m64 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -Wno-pointer-sign -fno-stack-protector -MT vgpreload_core_s390x_linux_so-vg_preloaded.o -MD -MP -MF .deps/vgpreload_core_s390x_linux_so-vg_preloaded.Tpo -c -o vgpreload_core_s390x_linux_so-vg_preloaded.o `test -f 'vg_preloaded.c' || echo './'`vg_preloaded.c make[3]: *** [vgdb-vgdb.o] Error 1 --- 10,12 ---- mv -f .deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Tpo .deps/no_op_client_for_valgrind-no_op_client_for_valgrind.Po ! gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../VEX/pub -DVGA_s390x=1 -DVGO_linux=1 -DVGP_s390x_linux=1 -I../coregrind -DVG_LIBDIR="\"/home/cborntra/valgrind-nightly/valgrind-new/Inst/lib/valgrind"\" -DVG_PLATFORM="\"s390x-linux\"" -m64 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -Wno-pointer-sign -fno-stack-protector -MT vgpreload_core_s390x_linux_so-vg_preloaded.o -MD -MP -MF .deps/vgpreload_core_s390x_linux_so-vg_preloaded.Tpo -c -o vgpreload_core_s390x_linux_so-vg_preloaded.o `test -f 'vg_preloaded.c' || echo './'`vg_preloaded.c make[3]: *** [vgdb-vgdb.o] Error 1 *************** *** 20,26 **** mv -f .deps/libcoregrind_s390x_linux_a-syswrap-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-linux.Po ! make[3]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-old/coregrind' make[2]: *** [all] Error 2 ! make[2]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-old/coregrind' make[1]: *** [all-recursive] Error 1 ! make[1]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-old' make: *** [all] Error 2 --- 20,26 ---- mv -f .deps/libcoregrind_s390x_linux_a-syswrap-linux.Tpo .deps/libcoregrind_s390x_linux_a-syswrap-linux.Po ! make[3]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-new/coregrind' make[2]: *** [all] Error 2 ! make[2]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-new/coregrind' make[1]: *** [all-recursive] Error 1 ! make[1]: Leaving directory `/home0/cborntra/valgrind-nightly/valgrind-new' make: *** [all] Error 2 |
|
From: Christian B. <bor...@de...> - 2011-05-08 20:09:49
|
On 08/05/11 09:47, Philippe Waroquiers wrote: > Christian/Florian, With reference to the below build failure I have seen: >> vgdb.c: In function 'getregs': >> vgdb.c:637:30: error: 'PT_ENDREGS' undeclared (first use in this function) >> vgdb.c: In function 'setregs': >> vgdb.c:669:30: error: 'PT_ENDREGS' undeclared (first use in this function) > > vgdb.c does not compile on > Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) > SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) > On Linux 2.6.9-42.EL s390x RH EL AS release 4 (Nahant Update 4), > it is defined with the following chain of include: > vgdb.c:#include <sys/user.h> > sys/user.h:#include <asm/user.h> > asm/user.h:# include <asm-s390x/user.h> > asm-s390x/user.h:#include <linux/ptrace.h> > linux/ptrace.h:#include <asm/ptrace.h> > asm/ptrace.h:# include <asm-s390x/ptrace.h> > asm-s390x/ptrace.h:#define PT_ENDREGS 0x1B0-1 Can you include linux/ptrace.h in vgdb.c? That should work on the old RHEL4 as well as on newer systems. Index: coregrind/vgdb.c =================================================================== --- coregrind/vgdb.c (revision 11727) +++ coregrind/vgdb.c (working copy) @@ -51,6 +51,7 @@ # if defined(VGO_linux) #include <sys/prctl.h> +#include <linux/ptrace.h> # endif /* vgdb has two usages: |
|
From: <sv...@va...> - 2011-05-08 10:16:52
|
Author: sewardj
Date: 2011-05-08 11:16:45 +0100 (Sun, 08 May 2011)
New Revision: 2147
Log:
Fix jump kind for indirect BLX for Thumb insns. Bug 266035 comment
14. (Evgeniy Stepanov, eug...@gm...)
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2011-05-08 09:09:12 UTC (rev 2146)
+++ trunk/priv/guest_arm_toIR.c 2011-05-08 10:16:45 UTC (rev 2147)
@@ -14863,7 +14863,7 @@
putIRegT( 14, mkU32( (guest_R15_curr_instr_notENC + 2) | 1 ),
IRTemp_INVALID );
irsb->next = mkexpr(dst);
- irsb->jumpkind = Ijk_Boring;
+ irsb->jumpkind = Ijk_Call;
dres.whatNext = Dis_StopHere;
DIP("blx r%u (possibly switch to ARM mode)\n", rM);
goto decode_success;
|
|
From: <sv...@va...> - 2011-05-08 10:10:54
|
Author: bart Date: 2011-05-08 11:10:46 +0100 (Sun, 08 May 2011) New Revision: 11731 Log: Updated Subversion ignore list. Modified: trunk/coregrind/ Property changes on: trunk/coregrind ___________________________________________________________________ Name: svn:ignore - *.a *.dSYM *.so .deps link_tool_exe_aix5 link_tool_exe_darwin link_tool_exe_linux Makefile Makefile.in no_op_client_for_valgrind stage2 stage2.lds valgrind vgpreload_core-x86-darwin.so.dSYM vg_intercept.c vg_replace_malloc.c vg_toolint.c vg_toolint.h fixup_macho_loadcmds + *.a *.dSYM *.so .deps fixup_macho_loadcmds link_tool_exe_aix5 link_tool_exe_darwin link_tool_exe_linux Makefile Makefile.in no_op_client_for_valgrind stage2 stage2.lds valgrind vgdb vgpreload_core-x86-darwin.so.dSYM vg_intercept.c vg_replace_malloc.c vg_toolint.c vg_toolint.h |
|
From: <sv...@va...> - 2011-05-08 10:10:12
|
Author: bart
Date: 2011-05-08 11:10:04 +0100 (Sun, 08 May 2011)
New Revision: 11730
Log:
Follow-up for r11729: make the gdbserver regression tests pass again.
Modified:
trunk/gdbserver_tests/clean_after_fork.c
trunk/gdbserver_tests/mssnapshot.stdoutB.exp
trunk/gdbserver_tests/sleepers.c
Modified: trunk/gdbserver_tests/clean_after_fork.c
===================================================================
--- trunk/gdbserver_tests/clean_after_fork.c 2011-05-08 09:29:06 UTC (rev 11729)
+++ trunk/gdbserver_tests/clean_after_fork.c 2011-05-08 10:10:04 UTC (rev 11730)
@@ -3,12 +3,9 @@
#include <errno.h>
#include <unistd.h>
#include <sys/wait.h>
-
int main()
{
- int mem = 0;
- int pid;
-
+ int mem = 0, pid;
pid = fork();
if (pid == -1) {
mem = 1;
Modified: trunk/gdbserver_tests/mssnapshot.stdoutB.exp
===================================================================
--- trunk/gdbserver_tests/mssnapshot.stdoutB.exp 2011-05-08 09:29:06 UTC (rev 11729)
+++ trunk/gdbserver_tests/mssnapshot.stdoutB.exp 2011-05-08 10:10:04 UTC (rev 11730)
@@ -3,4 +3,4 @@
Breakpoint 1 at 0x........: file t.c, line 105.
Continuing.
Breakpoint 1, main (argc=1, argv=0x........) at t.c:105
-105 char *main_name = "main name";
+105 char *main_name __attribute__((unused)) = "main name";
Modified: trunk/gdbserver_tests/sleepers.c
===================================================================
--- trunk/gdbserver_tests/sleepers.c 2011-05-08 09:29:06 UTC (rev 11729)
+++ trunk/gdbserver_tests/sleepers.c 2011-05-08 10:10:04 UTC (rev 11730)
@@ -22,7 +22,6 @@
return getpid();
#endif
}
-
// will be invoked from gdb.
static void whoami(char *msg) __attribute__((unused));
static void whoami(char *msg)
|
|
From: <sv...@va...> - 2011-05-08 09:29:14
|
Author: bart
Date: 2011-05-08 10:29:06 +0100 (Sun, 08 May 2011)
New Revision: 11729
Log:
Fixed one bug in gdbserver_tests/t.c and several compiler warnings triggered by the gdbserver test programs.
Modified:
trunk/gdbserver_tests/clean_after_fork.c
trunk/gdbserver_tests/sleepers.c
trunk/gdbserver_tests/t.c
Modified: trunk/gdbserver_tests/clean_after_fork.c
===================================================================
--- trunk/gdbserver_tests/clean_after_fork.c 2011-05-08 09:10:33 UTC (rev 11728)
+++ trunk/gdbserver_tests/clean_after_fork.c 2011-05-08 09:29:06 UTC (rev 11729)
@@ -1,7 +1,10 @@
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
-main()
+#include <unistd.h>
+#include <sys/wait.h>
+
+int main()
{
int mem = 0;
int pid;
@@ -31,4 +34,6 @@
}
if (mem == 0)
printf("mem is zero\n");
+
+ return 0;
}
Modified: trunk/gdbserver_tests/sleepers.c
===================================================================
--- trunk/gdbserver_tests/sleepers.c 2011-05-08 09:10:33 UTC (rev 11728)
+++ trunk/gdbserver_tests/sleepers.c 2011-05-08 09:29:06 UTC (rev 11729)
@@ -24,6 +24,7 @@
}
// will be invoked from gdb.
+static void whoami(char *msg) __attribute__((unused));
static void whoami(char *msg)
{
fprintf(stderr, "pid %d Thread %d %s\n", getpid(), gettid(), msg);
@@ -131,7 +132,7 @@
char *threads_spec;
pthread_t ebbr, egll, zzzz;
struct spec b, l, p, m;
- char *some_mem = malloc(100);
+ char *some_mem __attribute__((unused)) = malloc(100);
setaffinity();
if (argc > 1)
Modified: trunk/gdbserver_tests/t.c
===================================================================
--- trunk/gdbserver_tests/t.c 2011-05-08 09:10:33 UTC (rev 11728)
+++ trunk/gdbserver_tests/t.c 2011-05-08 09:29:06 UTC (rev 11729)
@@ -33,9 +33,9 @@
static int sleeps = 15;
static void make_error (char *s)
{
- char *make_error_name = "make_error name";
- char c;
- double pi2 = 2.0 * pi;
+ char *make_error_name __attribute__((unused)) = "make_error name";
+ char c __attribute__((unused));
+ double pi2 __attribute__((unused)) = 2.0 * pi;
whoami(s);
if (int_und == 0)
printf ("%s int_und is zero %d\n", s, int_und);
@@ -46,7 +46,7 @@
static void level ()
{
- char *level_name = "level name";
+ char *level_name __attribute__((unused)) = "level name";
make_error ("called from level");
}
@@ -55,12 +55,12 @@
int i, j;
for (i = 0; i < LOOPS; i++)
for (j = 0; i < LOOPS; i++)
- *loopnr++;
+ (*loopnr)++;
}
static void *brussels_fn(void *v)
{
- char *brussels_name = "Brussels";
+ char *brussels_name __attribute__((unused)) = "Brussels";
make_error ("called from Brussels");
loopt1 = 1;
while (! (loopt1 && loopt2 && loopmain))
@@ -70,7 +70,7 @@
}
static void *london_fn(void *v)
{
- char *london_name = "London";
+ char *london_name __attribute__((unused)) = "London";
make_error ("called from London");
loopt2 = 1;
while (! (loopt1 && loopt2 && loopmain))
@@ -81,7 +81,7 @@
}
static void *petaouchnok_fn(void *v)
{
- char *petaouchnok_name = "Petaouchnok";
+ char *petaouchnok_name __attribute__((unused)) = "Petaouchnok";
struct timeval t;
int i;
for (i = 1; i <= sleeps; i++) {
@@ -102,11 +102,11 @@
}
int main (int argc, char *argv[])
{
- char *main_name = "main name";
+ char *main_name __attribute__((unused)) = "main name";
pthread_t ebbr, egll, zzzz;
int i = 1234;
char undef = '?';
- char *some_mem = malloc(100);
+ char *some_mem __attribute__((unused)) = malloc(100);
VALGRIND_MAKE_MEM_UNDEFINED(&undef, 1);
int len = strlen(undefined);
breakme(__LINE__); //break1
|
|
From: <sv...@va...> - 2011-05-08 09:10:45
|
Author: bart Date: 2011-05-08 10:10:33 +0100 (Sun, 08 May 2011) New Revision: 11728 Log: Added Subversion ignore list for directory gdbserver_tests. Modified: trunk/gdbserver_tests/ Property changes on: trunk/gdbserver_tests ___________________________________________________________________ Name: svn:ignore + .deps clean_after_fork detailed garbage.filtered.out gdb gdb.eval Makefile Makefile.in massif.vgdb.out progB.done sleepers t vgdb vgdb.ptraceinvoker watchpoints |
|
From: <sv...@va...> - 2011-05-08 09:09:21
|
Author: sewardj
Date: 2011-05-08 10:09:12 +0100 (Sun, 08 May 2011)
New Revision: 2146
Log:
Support DMB and DSB variants on Thumb. Bug 266035 comment 6.
(Jeff Brown, jef...@go...)
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2011-05-05 07:46:28 UTC (rev 2145)
+++ trunk/priv/guest_arm_toIR.c 2011-05-08 09:09:12 UTC (rev 2146)
@@ -17740,21 +17740,35 @@
}
/* -------------- v7 barrier insns -------------- */
- if (INSN0(15,0) == 0xF3BF && (INSN1(15,0) & 0xFF0F) == 0x8F0F) {
+ if (INSN0(15,0) == 0xF3BF && (INSN1(15,0) & 0xFF00) == 0x8F00) {
/* XXX this isn't really right, is it? The generated IR does
them unconditionally. I guess it doesn't matter since it
doesn't do any harm to do them even when the guarding
condition is false -- it's just a performance loss. */
- switch (INSN1(7,4)) {
- case 0x4: /* DSB */
+ switch (INSN1(7,0)) {
+ case 0x4F: /* DSB sy */
+ case 0x4E: /* DSB st */
+ case 0x4B: /* DSB ish */
+ case 0x4A: /* DSB ishst */
+ case 0x47: /* DSB nsh */
+ case 0x46: /* DSB nshst */
+ case 0x43: /* DSB osh */
+ case 0x42: /* DSB oshst */
stmt( IRStmt_MBE(Imbe_Fence) );
DIP("DSB\n");
goto decode_success;
- case 0x5: /* DMB */
+ case 0x5F: /* DMB sy */
+ case 0x5E: /* DMB st */
+ case 0x5B: /* DMB ish */
+ case 0x5A: /* DMB ishst */
+ case 0x57: /* DMB nsh */
+ case 0x56: /* DMB nshst */
+ case 0x53: /* DMB osh */
+ case 0x52: /* DMB oshst */
stmt( IRStmt_MBE(Imbe_Fence) );
DIP("DMB\n");
goto decode_success;
- case 0x6: /* ISB */
+ case 0x6F: /* ISB */
stmt( IRStmt_MBE(Imbe_Fence) );
DIP("ISB\n");
goto decode_success;
|
|
From: Philippe W. <phi...@sk...> - 2011-05-08 07:47:13
|
Christian/Florian,
With reference to the below build failure I have seen:
> vgdb.c: In function 'getregs':
> vgdb.c:637:30: error: 'PT_ENDREGS' undeclared (first use in this function)
> vgdb.c: In function 'setregs':
> vgdb.c:669:30: error: 'PT_ENDREGS' undeclared (first use in this function)
vgdb.c does not compile on
Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x)
SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x)
On Linux 2.6.9-42.EL s390x RH EL AS release 4 (Nahant Update 4),
it is defined with the following chain of include:
vgdb.c:#include <sys/user.h>
sys/user.h:#include <asm/user.h>
asm/user.h:# include <asm-s390x/user.h>
asm-s390x/user.h:#include <linux/ptrace.h>
linux/ptrace.h:#include <asm/ptrace.h>
asm/ptrace.h:# include <asm-s390x/ptrace.h>
asm-s390x/ptrace.h:#define PT_ENDREGS 0x1B0-1
Here are some extracts of asm-s390x/ptrace.h
...
/*
* Offsets in the user_regs_struct. They are used for the ptrace
* system call and in entry.S
*/
#define PT_PSWMASK 0x00
#define PT_PSWADDR 0x08
#define PT_GPR0 0x10
#define PT_GPR1 0x18
....
#define PT_IEEE_IP 0x1A8
#define PT_LASTOFF PT_IEEE_IP
#define PT_ENDREGS 0x1B0-1
...
/*
* The user_regs_struct defines the way the user registers are
* store on the stack for signal handling.
*/
struct user_regs_struct
{
psw_t psw;
unsigned long gprs[NUM_GPRS];
unsigned int acrs[NUM_ACRS];
unsigned long orig_gpr2;
s390_fp_regs fp_regs;
/*
* These per registers are in here so that gdb can modify them
* itself as there is no "official" ptrace interface for hardware
* watchpoints. This is the way intel does it.
*/
per_struct per_info;
unsigned long ieee_instruction_pointer;
/* Used to give failing instruction back to user for ieee exceptions */
};
The objective of the piece of code in vgdb.c using PT_ENDREGS is to
get or set the general registers of the process to allow vgdb.c
to force the invokation of gdbserver if the valgrind process is blocked
in a syscall.
On the s390x system I have access to (the CDSL, RH4), The value of PT_ENDREGS
is 431 while the sizeof(struct user_regs_struct) is 432.
To allow vgdb.c to compile on s390x fedora and suse, maybe I could replace
PT_ENDREGS by sizeof(struct user_regs_struct)-1 ?
Do you think this is ok ?
Note that there are regression tests in valgrind/gdbserver_tests which
are testing this aspect of vgdb.c.
|