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
(4) |
2
(2) |
|
3
|
4
(3) |
5
(3) |
6
(5) |
7
(7) |
8
(1) |
9
(7) |
|
10
(7) |
11
(1) |
12
(13) |
13
(4) |
14
|
15
(5) |
16
|
|
17
(1) |
18
(2) |
19
(3) |
20
|
21
|
22
|
23
(1) |
|
24
|
25
|
26
|
27
(1) |
28
(3) |
29
|
30
|
|
31
|
|
|
|
|
|
|
|
From: Andreas A. <ar...@so...> - 2021-10-28 13:11:44
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=b77dbefe72e4a5c7bcf1576a02c909010bd56991 commit b77dbefe72e4a5c7bcf1576a02c909010bd56991 Author: Andreas Arnez <ar...@li...> Date: Fri Oct 22 19:55:12 2021 +0200 Bug 444242 - s390x: Sign-extend "relative long" offset in EXRL In s390_irgen_EXRL, the offset is zero-extended instead of sign-extended, typically causing Valgrind to crash when a negative offset occurs. Fix this with a new helper function that calculates a "relative long" address from a 32-bit offset. Replace other calculations of "relative long" addresses by invocations of this function as well. And for consistency, do the same with "relative" (short) addresses. Diff: --- NEWS | 1 + VEX/priv/guest_s390_toIR.c | 144 ++++++++++++++++++--------------------- none/tests/s390x/exrl.c | 11 +++ none/tests/s390x/exrl.stdout.exp | 2 + 4 files changed, 82 insertions(+), 76 deletions(-) diff --git a/NEWS b/NEWS index 3f9439acf2..908361039e 100644 --- a/NEWS +++ b/NEWS @@ -41,6 +41,7 @@ bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather than mailing the developers (or mailing lists) directly -- bugs that are not entered into bugzilla tend to get forgotten about or ignored. +444242 s390x: Valgrind crashes on EXRL with negative offset 444495 dhat/tests/copy fails on s390x To see details of a given bug, visit diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c index 72222ab045..fffc563d46 100644 --- a/VEX/priv/guest_s390_toIR.c +++ b/VEX/priv/guest_s390_toIR.c @@ -399,6 +399,22 @@ mkF64i(ULong value) return IRExpr_Const(IRConst_F64i(value)); } +/* Return the 64-bit address with the given 32-bit "relative long" offset from + the current guest instruction being translated. */ +static __inline__ Addr64 +addr_rel_long(UInt offset) +{ + return guest_IA_curr_instr + ((Addr64)(Long)(Int)offset << 1); +} + +/* Return the 64-bit address with the given 16-bit "relative" offset from the + current guest instruction being translated. */ +static __inline__ Addr64 +addr_relative(UShort offset) +{ + return guest_IA_curr_instr + ((Addr64)(Long)(Short)offset << 1); +} + /* Little helper function for my sanity. ITE = if-then-else */ static IRExpr * mkite(IRExpr *condition, IRExpr *iftrue, IRExpr *iffalse) @@ -5516,7 +5532,7 @@ static const HChar * s390_irgen_BRAS(UChar r1, UShort i2) { put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + 4ULL)); - call_function_and_chase(guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + call_function_and_chase(addr_relative(i2)); return "bras"; } @@ -5525,7 +5541,7 @@ static const HChar * s390_irgen_BRASL(UChar r1, UInt i2) { put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + 6ULL)); - call_function_and_chase(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)); + call_function_and_chase(addr_rel_long(i2)); return "brasl"; } @@ -5538,12 +5554,11 @@ s390_irgen_BRC(UChar r1, UShort i2) if (r1 == 0) { } else { if (r1 == 15) { - always_goto_and_chase( - guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + always_goto_and_chase(addr_relative(i2)); } else { assign(cond, s390_call_calculate_cond(r1)); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + addr_relative(i2)); } } @@ -5561,11 +5576,11 @@ s390_irgen_BRCL(UChar r1, UInt i2) if (r1 == 0) { } else { if (r1 == 15) { - always_goto_and_chase(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)); + always_goto_and_chase(addr_rel_long(i2)); } else { assign(cond, s390_call_calculate_cond(r1)); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)); + addr_rel_long(i2)); } } if (UNLIKELY(vex_traceflags & VEX_TRACE_FE)) @@ -5579,7 +5594,7 @@ s390_irgen_BRCT(UChar r1, UShort i2) { put_gpr_w1(r1, binop(Iop_Sub32, get_gpr_w1(r1), mkU32(1))); if_condition_goto(binop(Iop_CmpNE32, get_gpr_w1(r1), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + addr_relative(i2)); return "brct"; } @@ -5589,7 +5604,7 @@ s390_irgen_BRCTH(UChar r1, UInt i2) { put_gpr_w0(r1, binop(Iop_Sub32, get_gpr_w0(r1), mkU32(1))); if_condition_goto(binop(Iop_CmpNE32, get_gpr_w0(r1), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + addr_relative(i2)); return "brcth"; } @@ -5599,7 +5614,7 @@ s390_irgen_BRCTG(UChar r1, UShort i2) { put_gpr_dw0(r1, binop(Iop_Sub64, get_gpr_dw0(r1), mkU64(1))); if_condition_goto(binop(Iop_CmpNE64, get_gpr_dw0(r1), mkU64(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + addr_relative(i2)); return "brctg"; } @@ -5612,7 +5627,7 @@ s390_irgen_BRXH(UChar r1, UChar r3, UShort i2) assign(value, get_gpr_w1(r3 | 1)); put_gpr_w1(r1, binop(Iop_Add32, get_gpr_w1(r1), get_gpr_w1(r3))); if_condition_goto(binop(Iop_CmpLT32S, mkexpr(value), get_gpr_w1(r1)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + addr_relative(i2)); return "brxh"; } @@ -5625,7 +5640,7 @@ s390_irgen_BRXHG(UChar r1, UChar r3, UShort i2) assign(value, get_gpr_dw0(r3 | 1)); put_gpr_dw0(r1, binop(Iop_Add64, get_gpr_dw0(r1), get_gpr_dw0(r3))); if_condition_goto(binop(Iop_CmpLT64S, mkexpr(value), get_gpr_dw0(r1)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + addr_relative(i2)); return "brxhg"; } @@ -5638,7 +5653,7 @@ s390_irgen_BRXLE(UChar r1, UChar r3, UShort i2) assign(value, get_gpr_w1(r3 | 1)); put_gpr_w1(r1, binop(Iop_Add32, get_gpr_w1(r1), get_gpr_w1(r3))); if_condition_goto(binop(Iop_CmpLE32S, get_gpr_w1(r1), mkexpr(value)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + addr_relative(i2)); return "brxle"; } @@ -5651,7 +5666,7 @@ s390_irgen_BRXLG(UChar r1, UChar r3, UShort i2) assign(value, get_gpr_dw0(r3 | 1)); put_gpr_dw0(r1, binop(Iop_Add64, get_gpr_dw0(r1), get_gpr_dw0(r3))); if_condition_goto(binop(Iop_CmpLE64S, get_gpr_dw0(r1), mkexpr(value)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i2 << 1)); + addr_relative(i2)); return "brxlg"; } @@ -5782,8 +5797,7 @@ s390_irgen_CRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I32); assign(op1, get_gpr_w1(r1)); - assign(op2, load(Ity_I32, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int) - i2 << 1)))); + assign(op2, load(Ity_I32, mkU64(addr_rel_long(i2)))); s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2); return "crl"; @@ -5796,8 +5810,7 @@ s390_irgen_CGRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I64); assign(op1, get_gpr_dw0(r1)); - assign(op2, load(Ity_I64, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int) - i2 << 1)))); + assign(op2, load(Ity_I64, mkU64(addr_rel_long(i2)))); s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2); return "cgrl"; @@ -5810,8 +5823,7 @@ s390_irgen_CGFRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I64); assign(op1, get_gpr_dw0(r1)); - assign(op2, unop(Iop_32Sto64, load(Ity_I32, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + assign(op2, unop(Iop_32Sto64, load(Ity_I32, mkU64(addr_rel_long(i2))))); s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2); return "cgfrl"; @@ -5875,15 +5887,14 @@ s390_irgen_CRJ(UChar r1, UChar r2, UShort i4, UChar m3) if (m3 == 0) { } else { if (m3 == 14) { - always_goto_and_chase( - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + always_goto_and_chase(addr_relative(i4)); } else { assign(op1, get_gpr_w1(r1)); assign(op2, get_gpr_w1(r2)); assign(cond, s390_call_calculate_icc(m3, S390_CC_OP_SIGNED_COMPARE, op1, op2)); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + addr_relative(i4)); } } @@ -5901,15 +5912,14 @@ s390_irgen_CGRJ(UChar r1, UChar r2, UShort i4, UChar m3) if (m3 == 0) { } else { if (m3 == 14) { - always_goto_and_chase( - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + always_goto_and_chase(addr_relative(i4)); } else { assign(op1, get_gpr_dw0(r1)); assign(op2, get_gpr_dw0(r2)); assign(cond, s390_call_calculate_icc(m3, S390_CC_OP_SIGNED_COMPARE, op1, op2)); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + addr_relative(i4)); } } @@ -5975,14 +5985,14 @@ s390_irgen_CIJ(UChar r1, UChar m3, UShort i4, UChar i2) if (m3 == 0) { } else { if (m3 == 14) { - always_goto_and_chase(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + always_goto_and_chase(addr_relative(i4)); } else { assign(op1, get_gpr_w1(r1)); op2 = (Int)(Char)i2; assign(cond, s390_call_calculate_icc(m3, S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I32, mkU32((UInt)op2)))); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + addr_relative(i4)); } } @@ -6000,14 +6010,14 @@ s390_irgen_CGIJ(UChar r1, UChar m3, UShort i4, UChar i2) if (m3 == 0) { } else { if (m3 == 14) { - always_goto_and_chase(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + always_goto_and_chase(addr_relative(i4)); } else { assign(op1, get_gpr_dw0(r1)); op2 = (Long)(Char)i2; assign(cond, s390_call_calculate_icc(m3, S390_CC_OP_SIGNED_COMPARE, op1, mktemp(Ity_I64, mkU64((ULong)op2)))); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + addr_relative(i4)); } } @@ -6131,8 +6141,7 @@ s390_irgen_CHRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I32); assign(op1, get_gpr_w1(r1)); - assign(op2, unop(Iop_16Sto32, load(Ity_I16, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + assign(op2, unop(Iop_16Sto32, load(Ity_I16, mkU64(addr_rel_long(i2))))); s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2); return "chrl"; @@ -6145,8 +6154,7 @@ s390_irgen_CGHRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I64); assign(op1, get_gpr_dw0(r1)); - assign(op2, unop(Iop_16Sto64, load(Ity_I16, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + assign(op2, unop(Iop_16Sto64, load(Ity_I16, mkU64(addr_rel_long(i2))))); s390_cc_thunk_putSS(S390_CC_OP_SIGNED_COMPARE, op1, op2); return "cghrl"; @@ -6401,8 +6409,7 @@ s390_irgen_CLRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I32); assign(op1, get_gpr_w1(r1)); - assign(op2, load(Ity_I32, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int) - i2 << 1)))); + assign(op2, load(Ity_I32, mkU64(addr_rel_long(i2)))); s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2); return "clrl"; @@ -6415,8 +6422,7 @@ s390_irgen_CLGRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I64); assign(op1, get_gpr_dw0(r1)); - assign(op2, load(Ity_I64, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int) - i2 << 1)))); + assign(op2, load(Ity_I64, mkU64(addr_rel_long(i2)))); s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2); return "clgrl"; @@ -6429,8 +6435,7 @@ s390_irgen_CLGFRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I64); assign(op1, get_gpr_dw0(r1)); - assign(op2, unop(Iop_32Uto64, load(Ity_I32, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + assign(op2, unop(Iop_32Uto64, load(Ity_I32, mkU64(addr_rel_long(i2))))); s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2); return "clgfrl"; @@ -6443,8 +6448,7 @@ s390_irgen_CLHRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I32); assign(op1, get_gpr_w1(r1)); - assign(op2, unop(Iop_16Uto32, load(Ity_I16, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + assign(op2, unop(Iop_16Uto32, load(Ity_I16, mkU64(addr_rel_long(i2))))); s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2); return "clhrl"; @@ -6457,8 +6461,7 @@ s390_irgen_CLGHRL(UChar r1, UInt i2) IRTemp op2 = newTemp(Ity_I64); assign(op1, get_gpr_dw0(r1)); - assign(op2, unop(Iop_16Uto64, load(Ity_I16, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + assign(op2, unop(Iop_16Uto64, load(Ity_I16, mkU64(addr_rel_long(i2))))); s390_cc_thunk_putZZ(S390_CC_OP_UNSIGNED_COMPARE, op1, op2); return "clghrl"; @@ -6730,14 +6733,14 @@ s390_irgen_CLRJ(UChar r1, UChar r2, UShort i4, UChar m3) if (m3 == 0) { } else { if (m3 == 14) { - always_goto_and_chase(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + always_goto_and_chase(addr_relative(i4)); } else { assign(op1, get_gpr_w1(r1)); assign(op2, get_gpr_w1(r2)); assign(cond, s390_call_calculate_icc(m3, S390_CC_OP_UNSIGNED_COMPARE, op1, op2)); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + addr_relative(i4)); } } @@ -6755,14 +6758,14 @@ s390_irgen_CLGRJ(UChar r1, UChar r2, UShort i4, UChar m3) if (m3 == 0) { } else { if (m3 == 14) { - always_goto_and_chase(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + always_goto_and_chase(addr_relative(i4)); } else { assign(op1, get_gpr_dw0(r1)); assign(op2, get_gpr_dw0(r2)); assign(cond, s390_call_calculate_icc(m3, S390_CC_OP_UNSIGNED_COMPARE, op1, op2)); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + addr_relative(i4)); } } @@ -6828,14 +6831,14 @@ s390_irgen_CLIJ(UChar r1, UChar m3, UShort i4, UChar i2) if (m3 == 0) { } else { if (m3 == 14) { - always_goto_and_chase(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + always_goto_and_chase(addr_relative(i4)); } else { assign(op1, get_gpr_w1(r1)); op2 = (UInt)i2; assign(cond, s390_call_calculate_icc(m3, S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I32, mkU32(op2)))); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + addr_relative(i4)); } } @@ -6853,14 +6856,14 @@ s390_irgen_CLGIJ(UChar r1, UChar m3, UShort i4, UChar i2) if (m3 == 0) { } else { if (m3 == 14) { - always_goto_and_chase(guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + always_goto_and_chase(addr_relative(i4)); } else { assign(op1, get_gpr_dw0(r1)); op2 = (ULong)i2; assign(cond, s390_call_calculate_icc(m3, S390_CC_OP_UNSIGNED_COMPARE, op1, mktemp(Ity_I64, mkU64(op2)))); if_condition_goto(binop(Iop_CmpNE32, mkexpr(cond), mkU32(0)), - guest_IA_curr_instr + ((ULong)(Long)(Short)i4 << 1)); + addr_relative(i4)); } } @@ -7539,8 +7542,7 @@ s390_irgen_LGFI(UChar r1, UInt i2) static const HChar * s390_irgen_LRL(UChar r1, UInt i2) { - put_gpr_w1(r1, load(Ity_I32, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int) - i2 << 1)))); + put_gpr_w1(r1, load(Ity_I32, mkU64(addr_rel_long(i2)))); return "lrl"; } @@ -7548,8 +7550,7 @@ s390_irgen_LRL(UChar r1, UInt i2) static const HChar * s390_irgen_LGRL(UChar r1, UInt i2) { - put_gpr_dw0(r1, load(Ity_I64, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int) - i2 << 1)))); + put_gpr_dw0(r1, load(Ity_I64, mkU64(addr_rel_long(i2)))); return "lgrl"; } @@ -7557,8 +7558,7 @@ s390_irgen_LGRL(UChar r1, UInt i2) static const HChar * s390_irgen_LGFRL(UChar r1, UInt i2) { - put_gpr_dw0(r1, unop(Iop_32Sto64, load(Ity_I32, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + put_gpr_dw0(r1, unop(Iop_32Sto64, load(Ity_I32, mkU64(addr_rel_long(i2))))); return "lgfrl"; } @@ -7598,7 +7598,7 @@ s390_irgen_LAEY(UChar r1, IRTemp op2addr) static const HChar * s390_irgen_LARL(UChar r1, UInt i2) { - put_gpr_dw0(r1, mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1))); + put_gpr_dw0(r1, mkU64(addr_rel_long(i2))); return "larl"; } @@ -8038,8 +8038,7 @@ s390_irgen_LGHI(UChar r1, UShort i2) static const HChar * s390_irgen_LHRL(UChar r1, UInt i2) { - put_gpr_w1(r1, unop(Iop_16Sto32, load(Ity_I16, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + put_gpr_w1(r1, unop(Iop_16Sto32, load(Ity_I16, mkU64(addr_rel_long(i2))))); return "lhrl"; } @@ -8047,8 +8046,7 @@ s390_irgen_LHRL(UChar r1, UInt i2) static const HChar * s390_irgen_LGHRL(UChar r1, UInt i2) { - put_gpr_dw0(r1, unop(Iop_16Sto64, load(Ity_I16, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + put_gpr_dw0(r1, unop(Iop_16Sto64, load(Ity_I16, mkU64(addr_rel_long(i2))))); return "lghrl"; } @@ -8088,8 +8086,7 @@ s390_irgen_LLGF(UChar r1, IRTemp op2addr) static const HChar * s390_irgen_LLGFRL(UChar r1, UInt i2) { - put_gpr_dw0(r1, unop(Iop_32Uto64, load(Ity_I32, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + put_gpr_dw0(r1, unop(Iop_32Uto64, load(Ity_I32, mkU64(addr_rel_long(i2))))); return "llgfrl"; } @@ -8169,8 +8166,7 @@ s390_irgen_LLGH(UChar r1, IRTemp op2addr) static const HChar * s390_irgen_LLHRL(UChar r1, UInt i2) { - put_gpr_w1(r1, unop(Iop_16Uto32, load(Ity_I16, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + put_gpr_w1(r1, unop(Iop_16Uto32, load(Ity_I16, mkU64(addr_rel_long(i2))))); return "llhrl"; } @@ -8178,8 +8174,7 @@ s390_irgen_LLHRL(UChar r1, UInt i2) static const HChar * s390_irgen_LLGHRL(UChar r1, UInt i2) { - put_gpr_dw0(r1, unop(Iop_16Uto64, load(Ity_I16, mkU64(guest_IA_curr_instr + - ((ULong)(Long)(Int)i2 << 1))))); + put_gpr_dw0(r1, unop(Iop_16Uto64, load(Ity_I16, mkU64(addr_rel_long(i2))))); return "llghrl"; } @@ -10064,8 +10059,7 @@ s390_irgen_STG(UChar r1, IRTemp op2addr) static const HChar * s390_irgen_STRL(UChar r1, UInt i2) { - store(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)), - get_gpr_w1(r1)); + store(mkU64(addr_rel_long(i2)), get_gpr_w1(r1)); return "strl"; } @@ -10073,8 +10067,7 @@ s390_irgen_STRL(UChar r1, UInt i2) static const HChar * s390_irgen_STGRL(UChar r1, UInt i2) { - store(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)), - get_gpr_dw0(r1)); + store(mkU64(addr_rel_long(i2)), get_gpr_dw0(r1)); return "stgrl"; } @@ -10203,8 +10196,7 @@ s390_irgen_STHY(UChar r1, IRTemp op2addr) static const HChar * s390_irgen_STHRL(UChar r1, UInt i2) { - store(mkU64(guest_IA_curr_instr + ((ULong)(Long)(Int)i2 << 1)), - get_gpr_hw3(r1)); + store(mkU64(addr_rel_long(i2)), get_gpr_hw3(r1)); return "sthrl"; } @@ -13282,7 +13274,7 @@ static const HChar * s390_irgen_EXRL(UChar r1, UInt offset) { IRTemp addr = newTemp(Ity_I64); - Addr64 bytes_addr = guest_IA_curr_instr + offset * 2UL; + Addr64 bytes_addr = addr_rel_long(offset); UChar *bytes = (UChar *)(HWord)bytes_addr; /* we might save one round trip because we know the target */ if (!last_execute_target) diff --git a/none/tests/s390x/exrl.c b/none/tests/s390x/exrl.c index 2c99602d82..e669e484fe 100644 --- a/none/tests/s390x/exrl.c +++ b/none/tests/s390x/exrl.c @@ -54,6 +54,17 @@ int main(void) printf("|\n"); printf("\n"); + printf("------- EXRL with negative offset\n"); + asm volatile( "j 2f\n\t" + "1:\n\t" + "mvc 2(1,%0),0(%0)\n\t" + "2:\n\t" + "lghi 1,8\n\t" + ".insn ril,0xc60000000000,1,1b\n\t" // exrl 1, 1b + : : "a" (target) + : "1", "2", "3", "4"); + printf(" target = |%s|\n", target); + return 0; } diff --git a/none/tests/s390x/exrl.stdout.exp b/none/tests/s390x/exrl.stdout.exp index 520919e925..30dcde8295 100644 --- a/none/tests/s390x/exrl.stdout.exp +++ b/none/tests/s390x/exrl.stdout.exp @@ -11,3 +11,5 @@ after: target = |0123456789aXXXXX| ------- EXRL to OR in the syscall number (writes out target) target = |0123456789aXXXXX| +------- EXRL with negative offset + target = |01010101010XXXXX| |
|
From: Mark W. <ma...@so...> - 2021-10-28 12:13:36
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=0cf05f82d4fb9b34ddea7de6932231bc5796e66a commit 0cf05f82d4fb9b34ddea7de6932231bc5796e66a Author: Mark Wielaard <ma...@kl...> Date: Thu Oct 28 14:10:49 2021 +0200 Set version to 3.19.0.GIT in configure.ac And update docs/internals/release-HOWTO.txt. Diff: --- configure.ac | 8 ++++---- docs/internals/release-HOWTO.txt | 35 +++++++++++++++++++++-------------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/configure.ac b/configure.ac index d5683f2b5b..e7381f205d 100755 --- a/configure.ac +++ b/configure.ac @@ -15,10 +15,10 @@ # Also set the (expected/last) release date here. # Do not forget to rerun ./autogen.sh m4_define([v_major_ver], [3]) -m4_define([v_minor_ver], [18]) -m4_define([v_micro_ver], [1]) -m4_define([v_suffix_ver], []) -m4_define([v_rel_date], ["15 Oct 2021"]) +m4_define([v_minor_ver], [19]) +m4_define([v_micro_ver], [0]) +m4_define([v_suffix_ver], [GIT]) +m4_define([v_rel_date], ["?? ??? 202?"]) m4_define([v_version], m4_if(v_suffix_ver, [], [v_major_ver.v_minor_ver.v_micro_ver], diff --git a/docs/internals/release-HOWTO.txt b/docs/internals/release-HOWTO.txt index 45cc41a435..17fa480ebc 100644 --- a/docs/internals/release-HOWTO.txt +++ b/docs/internals/release-HOWTO.txt @@ -17,12 +17,16 @@ First of all: - Go over the docs, make sure they're up to date. -- Update version number and date in docs/xml/vg-entities.xml. (Exact - release date probably won't be known yet, updating it is in the list below - of tasks for the official release.) +- Update version number and date in configure.ac. Probably just the + v_suffix_ver, set it to RC1. The v_rel_date probably won't be known yet, + updating it is in the list below of tasks for the official release. + Note that the date MUST be quoted with ["...date string..."]. -- Make sure __VALGRIND_MAJOR__ and __VALGRIND_MINOR__ are correct - for the release. (include/valgrind.h) +- Make sure the after ./autogen.sh && ./configure + __VALGRIND_MAJOR__ and __VALGRIND_MINOR__ are correct for the release. + (include/valgrind.h) + And that docs/xml/vg-entities.xml contains the correct release number + and release date. - Write release notes, add to NEWS. Include a list of fixed bugs from Bugzilla. It's unclear how to do this consistently. The approach @@ -105,11 +109,16 @@ releases, bug-fix-only releases might not need one): * s390x: Ensure README.s390 is up-to-date and URLs therein are not stale. -- Change release number in AC_INIT() in configure.ac to "X.Y.Z-rcN", where - 'N' is the release candidate number. +- Change release number (v_major_ver, v_minor_ver, v_micro_ver) + in configure.ac, set v_suffix_ver to RCN, where 'N' is the release + candidate number. Don't forget to ./autogen.sh and ./configure afterwards. - Make the tarball ("make dist") and put it on the web somewhere (it doesn't have to be on valgrind.org if another site is easier). + https://sourceware.org/pub/valgrind/ is the default release site now. + You need a shell account on sourceware.org, then scp it with: + scp valgrind-X.YY-RCN.tar.bz \ + US...@so...:/sourceware/ftp/pub/valgrind/ - Ensure the tarball builds, runs, regtests on the platforms of interest. However redundant this seems, sometimes it can be that a from-the-repo @@ -134,16 +143,14 @@ releases, bug-fix-only releases might not need one): For the official release: -- Again, update date in docs/xml/vg-entities.xml for the official release - date. +- Again, update date (v_rel_date) in configure.ac for the official release + date and set v_suffix_ver to empty [] in configure.ac. - Do pre-release testing: - Make sure regtests run ok on all platforms of interest. - Make sure Mozilla and OpenOffice run ok on all platforms of interest. -- Change release number in AC_INIT() in configure.ac to "X.Y.Z". - -- Make the tarball ("make dist"). +- Run ./autogen.sh && ./configure && make dist to make the tarball. - Check tarball builds, installs, regtests on platforms of interest. If not, fix and repeat until success. @@ -178,8 +185,8 @@ For the official release: - Update the "release-date" and "release-version" in php/.htconfx. - Other pages that might need updating: downloads/repository.html. -- Change release number in AC_INIT() in configure.ac to "X.Y.Z.GIT", where - X.Y.Z is one more than the release just done. +- Change release number in configure.ac with v_minor_ver one more than the + release just done. Set v_suffix_ver to [GIT]. - Make sure the release notes are present in the NEWS file on the master and the branch. |
|
From: Andreas A. <ar...@so...> - 2021-10-28 11:49:23
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=ffb3f77a22403089364c98a9372d9b13fe684e89 commit ffb3f77a22403089364c98a9372d9b13fe684e89 Author: Andreas Arnez <ar...@li...> Date: Thu Oct 28 12:21:28 2021 +0200 Prepare NEWS for the next release Add a placeholder for the next release to the NEWS file and start the list of fixed bugs with Bug 444495. Diff: --- NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/NEWS b/NEWS index 7d2cce734e..3f9439acf2 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,53 @@ +Release 3.??.? (?? 202?) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, +PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, +MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, +X86/Solaris, AMD64/Solaris, AMD64/MacOSX 10.12, X86/FreeBSD and +AMD64/FreeBSD. There is also preliminary support for X86/macOS 10.13, +AMD64/macOS 10.13 and nanoMIPS/Linux. + +* ==================== CORE CHANGES =================== + +* ================== PLATFORM CHANGES ================= + +* arm64: + +* s390: + +* ppc64: + +* ==================== TOOL CHANGES =================== + +* DHAT: + +* Cachegrind: + +* Callgrind: + +* Massif: + +* Memcheck: + +* =================== OTHER CHANGES ================== + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +444495 dhat/tests/copy fails on s390x + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + + Release 3.18.0 (15 Oct 2021) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |