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
(1) |
2
|
3
(1) |
|
4
(4) |
5
(5) |
6
(6) |
7
(1) |
8
(1) |
9
(3) |
10
(1) |
|
11
(6) |
12
(1) |
13
|
14
|
15
(1) |
16
(5) |
17
|
|
18
|
19
|
20
(3) |
21
(5) |
22
(1) |
23
(5) |
24
|
|
25
|
26
|
27
|
28
|
29
(3) |
30
|
31
|
|
From: <sv...@va...> - 2016-12-16 21:21:12
|
Author: iraisr
Date: Fri Dec 16 21:21:05 2016
New Revision: 16189
Log:
Rename BBPTR to GSPTR as it denotes guest state pointer only
Fixes BZ#373555.
Modified:
trunk/NEWS
trunk/memcheck/mc_translate.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Fri Dec 16 21:21:05 2016
@@ -91,6 +91,7 @@
372600 process loops forever when fatal signals are arriving quickly
373046 Stacks registered by core are never deregistered
373192 Calling posix_spawn in glibc 2.24 completely broken
+373555 Rename BBPTR to GSPTR as it denotes guest state pointer only
Release 3.12.0 (20 October 2016)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Modified: trunk/memcheck/mc_translate.c
==============================================================================
--- trunk/memcheck/mc_translate.c (original)
+++ trunk/memcheck/mc_translate.c Fri Dec 16 21:21:05 2016
@@ -5370,7 +5370,7 @@
for (i = 0; d->args[i]; i++) {
IRAtom* arg = d->args[i];
if ( (d->cee->mcx_mask & (1<<i))
- || UNLIKELY(is_IRExpr_VECRET_or_BBPTR(arg)) ) {
+ || UNLIKELY(is_IRExpr_VECRET_or_GSPTR(arg)) ) {
/* ignore this arg */
} else {
here = mkPCastTo( mce, Ity_I32, expr2vbits(mce, arg) );
@@ -6268,7 +6268,7 @@
d = st->Ist.Dirty.details;
for (i = 0; d->args[i]; i++) {
IRAtom* atom = d->args[i];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(atom))) {
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(atom))) {
if (isBogusAtom(atom))
return True;
}
@@ -7273,7 +7273,7 @@
for (i = 0; d->args[i]; i++) {
IRAtom* arg = d->args[i];
if ( (d->cee->mcx_mask & (1<<i))
- || UNLIKELY(is_IRExpr_VECRET_or_BBPTR(arg)) ) {
+ || UNLIKELY(is_IRExpr_VECRET_or_GSPTR(arg)) ) {
/* ignore this arg */
} else {
here = schemeE( mce, arg );
|
|
From: <sv...@va...> - 2016-12-16 21:20:40
|
Author: iraisr
Date: Fri Dec 16 21:20:30 2016
New Revision: 3287
Log:
Rename BBPTR to GSPTR as it denotes guest state pointer only
Fixes BZ#373555.
Modified:
trunk/priv/guest_amd64_toIR.c
trunk/priv/guest_mips_toIR.c
trunk/priv/guest_ppc_toIR.c
trunk/priv/guest_s390_toIR.c
trunk/priv/guest_x86_toIR.c
trunk/priv/host_amd64_isel.c
trunk/priv/host_arm64_isel.c
trunk/priv/host_arm_isel.c
trunk/priv/host_mips_isel.c
trunk/priv/host_ppc_isel.c
trunk/priv/host_s390_isel.c
trunk/priv/host_tilegx_isel.c
trunk/priv/host_x86_isel.c
trunk/priv/ir_defs.c
trunk/priv/ir_opt.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/guest_amd64_toIR.c
==============================================================================
--- trunk/priv/guest_amd64_toIR.c (original)
+++ trunk/priv/guest_amd64_toIR.c Fri Dec 16 21:20:30 2016
@@ -5214,7 +5214,7 @@
0/*regparms*/,
"amd64g_dirtyhelper_FINIT",
&amd64g_dirtyhelper_FINIT,
- mkIRExprVec_1( IRExpr_BBPTR() )
+ mkIRExprVec_1( IRExpr_GSPTR() )
);
/* declare we're writing guest state */
@@ -5584,7 +5584,7 @@
0/*regparms*/,
"amd64g_dirtyhelper_FLDENV",
&amd64g_dirtyhelper_FLDENV,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
d->tmp = w64;
/* declare we're reading memory */
@@ -5681,7 +5681,7 @@
0/*regparms*/,
"amd64g_dirtyhelper_FSTENV",
&amd64g_dirtyhelper_FSTENV,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
/* declare we're writing memory */
d->mFx = Ifx_Write;
@@ -6551,7 +6551,7 @@
0/*regparms*/,
"amd64g_dirtyhelper_FRSTOR",
&amd64g_dirtyhelper_FRSTOR,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
d->mSize = 108;
}
@@ -6632,7 +6632,7 @@
0/*regparms*/,
"amd64g_dirtyhelper_FNSAVE",
&amd64g_dirtyhelper_FNSAVE,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
d->mSize = 108;
}
@@ -11598,7 +11598,7 @@
0/*regparms*/,
"amd64g_dirtyhelper_XSAVE_COMPONENT_0",
&amd64g_dirtyhelper_XSAVE_COMPONENT_0,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
d0->guard = binop(Iop_CmpEQ64, binop(Iop_And64, mkexpr(rfbm), mkU64(1)),
mkU64(1));
@@ -11658,7 +11658,7 @@
0/*regparms*/,
"amd64g_dirtyhelper_XSAVE_COMPONENT_1_EXCLUDING_XMMREGS",
&amd64g_dirtyhelper_XSAVE_COMPONENT_1_EXCLUDING_XMMREGS,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
d1->guard = guard_1or2;
@@ -11821,7 +11821,7 @@
0/*regparms*/,
"amd64g_dirtyhelper_XRSTOR_COMPONENT_0",
&amd64g_dirtyhelper_XRSTOR_COMPONENT_0,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
d0->guard = binop(Iop_CmpNE64, mkexpr(restore_0), mkU64(0));
@@ -11902,7 +11902,7 @@
0/*regparms*/,
"amd64g_dirtyhelper_XRSTOR_COMPONENT_1_EXCLUDING_XMMREGS",
&amd64g_dirtyhelper_XRSTOR_COMPONENT_1_EXCLUDING_XMMREGS,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
) ;
d1->guard = restore_1or2e;
@@ -17681,7 +17681,7 @@
IRExpr* gstOffLe = mkU64(gstOffL);
IRExpr* gstOffRe = mkU64(gstOffR);
IRExpr** args
- = mkIRExprVec_5( IRExpr_BBPTR(), opc4, gstOffDe, gstOffLe, gstOffRe );
+ = mkIRExprVec_5( IRExpr_GSPTR(), opc4, gstOffDe, gstOffLe, gstOffRe );
IRDirty* d = unsafeIRDirty_0_N( 0/*regparms*/, nm, fn, args );
/* It's not really a dirty call, but we can't use the clean helper
@@ -17771,7 +17771,7 @@
IRExpr* gstOffLe = mkU64(gstOffL);
IRExpr* gstOffRe = mkU64(gstOffR);
IRExpr** args
- = mkIRExprVec_4( IRExpr_BBPTR(), imme, gstOffLe, gstOffRe );
+ = mkIRExprVec_4( IRExpr_GSPTR(), imme, gstOffLe, gstOffRe );
IRDirty* d = unsafeIRDirty_0_N( 0/*regparms*/, nm, fn, args );
/* It's not really a dirty call, but we can't use the clean helper
@@ -18711,7 +18711,7 @@
IRExpr* edxIN = isISTRx ? mkU64(0) : getIRegRDX(8);
IRExpr* eaxIN = isISTRx ? mkU64(0) : getIRegRAX(8);
IRExpr** args
- = mkIRExprVec_6( IRExpr_BBPTR(),
+ = mkIRExprVec_6( IRExpr_GSPTR(),
opc4_and_imm, gstOffLe, gstOffRe, edxIN, eaxIN );
IRTemp resT = newTemp(Ity_I64);
@@ -21645,7 +21645,7 @@
void* fAddr = &amd64g_dirtyhelper_RDTSCP;
IRDirty* d
= unsafeIRDirty_0_N ( 0/*regparms*/,
- fName, fAddr, mkIRExprVec_1(IRExpr_BBPTR()) );
+ fName, fAddr, mkIRExprVec_1(IRExpr_GSPTR()) );
/* declare guest state effects */
d->nFxState = 3;
vex_bzero(&d->fxState, sizeof(d->fxState));
@@ -21966,7 +21966,7 @@
vassert(fName); vassert(fAddr);
d = unsafeIRDirty_0_N ( 0/*regparms*/,
- fName, fAddr, mkIRExprVec_1(IRExpr_BBPTR()) );
+ fName, fAddr, mkIRExprVec_1(IRExpr_GSPTR()) );
/* declare guest state effects */
d->nFxState = 4;
vex_bzero(&d->fxState, sizeof(d->fxState));
Modified: trunk/priv/guest_mips_toIR.c
==============================================================================
--- trunk/priv/guest_mips_toIR.c (original)
+++ trunk/priv/guest_mips_toIR.c Fri Dec 16 21:20:30 2016
@@ -1119,12 +1119,12 @@
{
IRDirty *d;
IRTemp fcsr = newTemp(Ity_I32);
- /* IRExpr_BBPTR() => Need to pass pointer to guest state to helper. */
+ /* IRExpr_GSPTR() => Need to pass pointer to guest state to helper. */
if (fp_mode64)
d = unsafeIRDirty_1_N(fcsr, 0,
"mips_dirtyhelper_calculate_FCSR_fp64",
&mips_dirtyhelper_calculate_FCSR_fp64,
- mkIRExprVec_4(IRExpr_BBPTR(),
+ mkIRExprVec_4(IRExpr_GSPTR(),
mkU32(fs),
mkU32(ft),
mkU32(inst)));
@@ -1132,7 +1132,7 @@
d = unsafeIRDirty_1_N(fcsr, 0,
"mips_dirtyhelper_calculate_FCSR_fp32",
&mips_dirtyhelper_calculate_FCSR_fp32,
- mkIRExprVec_4(IRExpr_BBPTR(),
+ mkIRExprVec_4(IRExpr_GSPTR(),
mkU32(fs),
mkU32(ft),
mkU32(inst)));
Modified: trunk/priv/guest_ppc_toIR.c
==============================================================================
--- trunk/priv/guest_ppc_toIR.c (original)
+++ trunk/priv/guest_ppc_toIR.c Fri Dec 16 21:20:30 2016
@@ -22247,14 +22247,14 @@
IRDirty* d;
UInt vD_off = vectorGuestRegOffset(vD_addr);
IRExpr** args_be = mkIRExprVec_5(
- IRExpr_BBPTR(),
+ IRExpr_GSPTR(),
mkU32(vD_off),
binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
mkU32(0xF)),
mkU32(0)/*left*/,
mkU32(1)/*Big Endian*/);
IRExpr** args_le = mkIRExprVec_5(
- IRExpr_BBPTR(),
+ IRExpr_GSPTR(),
mkU32(vD_off),
binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
mkU32(0xF)),
@@ -22296,14 +22296,14 @@
IRDirty* d;
UInt vD_off = vectorGuestRegOffset(vD_addr);
IRExpr** args_be = mkIRExprVec_5(
- IRExpr_BBPTR(),
+ IRExpr_GSPTR(),
mkU32(vD_off),
binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
mkU32(0xF)),
mkU32(1)/*right*/,
mkU32(1)/*Big Endian*/);
IRExpr** args_le = mkIRExprVec_5(
- IRExpr_BBPTR(),
+ IRExpr_GSPTR(),
mkU32(vD_off),
binop(Iop_And32, mkNarrowTo32(ty, mkexpr(EA)),
mkU32(0xF)),
Modified: trunk/priv/guest_s390_toIR.c
==============================================================================
--- trunk/priv/guest_s390_toIR.c (original)
+++ trunk/priv/guest_s390_toIR.c Fri Dec 16 21:20:30 2016
@@ -13172,10 +13172,10 @@
IRDirty *d;
IRTemp cc = newTemp(Ity_I64);
- /* IRExpr_BBPTR() => Need to pass pointer to guest state to helper */
+ /* IRExpr_GSPTR() => Need to pass pointer to guest state to helper */
d = unsafeIRDirty_1_N(cc, 0, "s390x_dirtyhelper_STFLE",
&s390x_dirtyhelper_STFLE,
- mkIRExprVec_2(IRExpr_BBPTR(), mkexpr(op2addr)));
+ mkIRExprVec_2(IRExpr_GSPTR(), mkexpr(op2addr)));
d->nFxState = 1;
vex_bzero(&d->fxState, sizeof(d->fxState));
Modified: trunk/priv/guest_x86_toIR.c
==============================================================================
--- trunk/priv/guest_x86_toIR.c (original)
+++ trunk/priv/guest_x86_toIR.c Fri Dec 16 21:20:30 2016
@@ -4030,7 +4030,7 @@
0/*regparms*/,
"x86g_dirtyhelper_FLDENV",
&x86g_dirtyhelper_FLDENV,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
d->tmp = ew;
/* declare we're reading memory */
@@ -4126,7 +4126,7 @@
0/*regparms*/,
"x86g_dirtyhelper_FSTENV",
&x86g_dirtyhelper_FSTENV,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
/* declare we're writing memory */
d->mFx = Ifx_Write;
@@ -4842,7 +4842,7 @@
0/*regparms*/,
"x86g_dirtyhelper_FINIT",
&x86g_dirtyhelper_FINIT,
- mkIRExprVec_1(IRExpr_BBPTR())
+ mkIRExprVec_1(IRExpr_GSPTR())
);
/* declare we're writing guest state */
@@ -5041,7 +5041,7 @@
0/*regparms*/,
"x86g_dirtyhelper_FRSTOR",
&x86g_dirtyhelper_FRSTOR,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
d->tmp = ew;
/* declare we're reading memory */
@@ -5100,7 +5100,7 @@
0/*regparms*/,
"x86g_dirtyhelper_FSAVE",
&x86g_dirtyhelper_FSAVE,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
/* declare we're writing memory */
d->mFx = Ifx_Write;
@@ -8337,7 +8337,7 @@
0/*regparms*/,
"x86g_dirtyhelper_FXSAVE",
&x86g_dirtyhelper_FXSAVE,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
/* declare we're writing memory */
@@ -8411,7 +8411,7 @@
0/*regparms*/,
"x86g_dirtyhelper_FXRSTOR",
&x86g_dirtyhelper_FXRSTOR,
- mkIRExprVec_2( IRExpr_BBPTR(), mkexpr(addr) )
+ mkIRExprVec_2( IRExpr_GSPTR(), mkexpr(addr) )
);
/* declare we're reading memory */
@@ -14874,7 +14874,7 @@
vassert(fName); vassert(fAddr);
d = unsafeIRDirty_0_N ( 0/*regparms*/,
- fName, fAddr, mkIRExprVec_1(IRExpr_BBPTR()) );
+ fName, fAddr, mkIRExprVec_1(IRExpr_GSPTR()) );
/* declare guest state effects */
d->nFxState = 4;
vex_bzero(&d->fxState, sizeof(d->fxState));
Modified: trunk/priv/host_amd64_isel.c
==============================================================================
--- trunk/priv/host_amd64_isel.c (original)
+++ trunk/priv/host_amd64_isel.c Fri Dec 16 21:20:30 2016
@@ -370,7 +370,7 @@
vassert(e->tag != Iex_VECRET);
/* In this case we give out a copy of the BaseBlock pointer. */
- if (UNLIKELY(e->tag == Iex_BBPTR)) {
+ if (UNLIKELY(e->tag == Iex_GSPTR)) {
return mk_iMOVsd_RR( hregAMD64_RBP(), dst );
}
@@ -442,9 +442,9 @@
*retloc = mk_RetLoc_INVALID();
/* These are used for cross-checking that IR-level constraints on
- the use of IRExpr_VECRET() and IRExpr_BBPTR() are observed. */
+ the use of IRExpr_VECRET() and IRExpr_GSPTR() are observed. */
UInt nVECRETs = 0;
- UInt nBBPTRs = 0;
+ UInt nGSPTRs = 0;
/* Marshal args for a call and do the call.
@@ -462,7 +462,7 @@
stack, it is enough to preallocate the return space before
marshalling any arguments, in this case.
- |args| may also contain IRExpr_BBPTR(), in which case the
+ |args| may also contain IRExpr_GSPTR(), in which case the
value in %rbp is passed as the corresponding argument.
Generating code which is both efficient and correct when
@@ -556,7 +556,7 @@
/* FAST SCHEME */
/* In this loop, we process args that can be computed into the
destination (real) register with a single instruction, without
- using any fixed regs. That also includes IRExpr_BBPTR(), but
+ using any fixed regs. That also includes IRExpr_GSPTR(), but
not IRExpr_VECRET(). Indeed, if the IR is well-formed, we can
never see IRExpr_VECRET() at this point, since the return-type
check above should ensure all those cases use the slow scheme
@@ -564,7 +564,7 @@
vassert(n_args >= 0 && n_args <= 6);
for (i = 0; i < n_args; i++) {
IRExpr* arg = args[i];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg))) {
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg))) {
vassert(typeOfIRExpr(env->type_env, args[i]) == Ity_I64);
}
fastinstrs[i]
@@ -610,10 +610,10 @@
vassert(n_args >= 0 && n_args <= 6);
for (i = 0; i < n_args; i++) {
IRExpr* arg = args[i];
- if (UNLIKELY(arg->tag == Iex_BBPTR)) {
+ if (UNLIKELY(arg->tag == Iex_GSPTR)) {
tmpregs[i] = newVRegI(env);
addInstr(env, mk_iMOVsd_RR( hregAMD64_RBP(), tmpregs[i]));
- nBBPTRs++;
+ nGSPTRs++;
}
else if (UNLIKELY(arg->tag == Iex_VECRET)) {
/* We stashed the address of the return slot earlier, so just
@@ -661,7 +661,7 @@
vassert(nVECRETs == 0);
}
- vassert(nBBPTRs == 0 || nBBPTRs == 1);
+ vassert(nGSPTRs == 0 || nGSPTRs == 1);
vassert(*stackAdjustAfterCall == 0);
vassert(is_RetLoc_INVALID(*retloc));
Modified: trunk/priv/host_arm64_isel.c
==============================================================================
--- trunk/priv/host_arm64_isel.c (original)
+++ trunk/priv/host_arm64_isel.c Fri Dec 16 21:20:30 2016
@@ -449,7 +449,7 @@
static
Bool mightRequireFixedRegs ( IRExpr* e )
{
- if (UNLIKELY(is_IRExpr_VECRET_or_BBPTR(e))) {
+ if (UNLIKELY(is_IRExpr_VECRET_or_GSPTR(e))) {
// These are always "safe" -- either a copy of SP in some
// arbitrary vreg, or a copy of x21, respectively.
return False;
@@ -493,9 +493,9 @@
*retloc = mk_RetLoc_INVALID();
/* These are used for cross-checking that IR-level constraints on
- the use of IRExpr_VECRET() and IRExpr_BBPTR() are observed. */
+ the use of IRExpr_VECRET() and IRExpr_GSPTR() are observed. */
UInt nVECRETs = 0;
- UInt nBBPTRs = 0;
+ UInt nGSPTRs = 0;
/* Marshal args for a call and do the call.
@@ -513,7 +513,7 @@
preallocate the return space before marshalling any arguments,
in this case.
- |args| may also contain IRExpr_BBPTR(), in which case the
+ |args| may also contain IRExpr_GSPTR(), in which case the
value in x21 is passed as the corresponding argument.
Generating code which is both efficient and correct when
@@ -560,14 +560,14 @@
IRExpr* arg = args[i];
if (UNLIKELY(arg->tag == Iex_VECRET)) {
nVECRETs++;
- } else if (UNLIKELY(arg->tag == Iex_BBPTR)) {
- nBBPTRs++;
+ } else if (UNLIKELY(arg->tag == Iex_GSPTR)) {
+ nGSPTRs++;
}
n_args++;
}
/* If this fails, the IR is ill-formed */
- vassert(nBBPTRs == 0 || nBBPTRs == 1);
+ vassert(nGSPTRs == 0 || nGSPTRs == 1);
/* If we have a VECRET, allocate space on the stack for the return
value, and record the stack pointer after that. */
@@ -640,7 +640,7 @@
IRExpr* arg = args[i];
IRType aTy = Ity_INVALID;
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
aTy = typeOfIRExpr(env->type_env, args[i]);
if (nextArgReg >= ARM64_N_ARGREGS)
@@ -651,7 +651,7 @@
iselIntExpr_R(env, args[i]) ));
nextArgReg++;
}
- else if (arg->tag == Iex_BBPTR) {
+ else if (arg->tag == Iex_GSPTR) {
vassert(0); //ATC
addInstr(env, ARM64Instr_MovI( argregs[nextArgReg],
hregARM64_X21() ));
@@ -679,7 +679,7 @@
IRExpr* arg = args[i];
IRType aTy = Ity_INVALID;
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
aTy = typeOfIRExpr(env->type_env, args[i]);
if (nextArgReg >= ARM64_N_ARGREGS)
@@ -689,7 +689,7 @@
tmpregs[nextArgReg] = iselIntExpr_R(env, args[i]);
nextArgReg++;
}
- else if (arg->tag == Iex_BBPTR) {
+ else if (arg->tag == Iex_GSPTR) {
vassert(0); //ATC
tmpregs[nextArgReg] = hregARM64_X21();
nextArgReg++;
@@ -733,7 +733,7 @@
/* Do final checks, set the return values, and generate the call
instruction proper. */
- vassert(nBBPTRs == 0 || nBBPTRs == 1);
+ vassert(nGSPTRs == 0 || nGSPTRs == 1);
vassert(nVECRETs == (retTy == Ity_V128 || retTy == Ity_V256) ? 1 : 0);
vassert(*stackAdjustAfterCall == 0);
vassert(is_RetLoc_INVALID(*retloc));
Modified: trunk/priv/host_arm_isel.c
==============================================================================
--- trunk/priv/host_arm_isel.c (original)
+++ trunk/priv/host_arm_isel.c Fri Dec 16 21:20:30 2016
@@ -353,7 +353,7 @@
static
Bool mightRequireFixedRegs ( IRExpr* e )
{
- if (UNLIKELY(is_IRExpr_VECRET_or_BBPTR(e))) {
+ if (UNLIKELY(is_IRExpr_VECRET_or_GSPTR(e))) {
// These are always "safe" -- either a copy of r13(sp) in some
// arbitrary vreg, or a copy of r8, respectively.
return False;
@@ -387,7 +387,7 @@
UInt n_real_args = 0;
for (i = 1; args[i]; i++) {
IRExpr* arg = args[i];
- if (UNLIKELY(is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (UNLIKELY(is_IRExpr_VECRET_or_GSPTR(arg)))
goto no_match;
IRType argTy = typeOfIRExpr(env->type_env, arg);
if (UNLIKELY(argTy != Ity_I32))
@@ -525,9 +525,9 @@
*retloc = mk_RetLoc_INVALID();
/* These are used for cross-checking that IR-level constraints on
- the use of IRExpr_VECRET() and IRExpr_BBPTR() are observed. */
+ the use of IRExpr_VECRET() and IRExpr_GSPTR() are observed. */
UInt nVECRETs = 0;
- UInt nBBPTRs = 0;
+ UInt nGSPTRs = 0;
/* Marshal args for a call and do the call.
@@ -545,7 +545,7 @@
preallocate the return space before marshalling any arguments,
in this case.
- |args| may also contain IRExpr_BBPTR(), in which case the
+ |args| may also contain IRExpr_GSPTR(), in which case the
value in r8 is passed as the corresponding argument.
Generating code which is both efficient and correct when
@@ -592,8 +592,8 @@
IRExpr* arg = args[i];
if (UNLIKELY(arg->tag == Iex_VECRET)) {
nVECRETs++;
- } else if (UNLIKELY(arg->tag == Iex_BBPTR)) {
- nBBPTRs++;
+ } else if (UNLIKELY(arg->tag == Iex_GSPTR)) {
+ nGSPTRs++;
}
n_args++;
}
@@ -665,7 +665,7 @@
IRExpr* arg = args[i];
IRType aTy = Ity_INVALID;
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
aTy = typeOfIRExpr(env->type_env, arg);
if (nextArgReg >= ARM_N_ARGREGS)
@@ -696,7 +696,7 @@
addInstr(env, mk_iMOVds_RR( argregs[nextArgReg], raHi ));
nextArgReg++;
}
- else if (arg->tag == Iex_BBPTR) {
+ else if (arg->tag == Iex_GSPTR) {
vassert(0); //ATC
addInstr(env, mk_iMOVds_RR( argregs[nextArgReg],
hregARM_R8() ));
@@ -722,7 +722,7 @@
IRExpr* arg = args[i];
IRType aTy = Ity_INVALID;
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
aTy = typeOfIRExpr(env->type_env, arg);
if (nextArgReg >= ARM_N_ARGREGS)
@@ -745,7 +745,7 @@
tmpregs[nextArgReg] = raHi;
nextArgReg++;
}
- else if (arg->tag == Iex_BBPTR) {
+ else if (arg->tag == Iex_GSPTR) {
vassert(0); //ATC
tmpregs[nextArgReg] = hregARM_R8();
nextArgReg++;
@@ -791,7 +791,7 @@
/* Do final checks, set the return values, and generate the call
instruction proper. */
- vassert(nBBPTRs == 0 || nBBPTRs == 1);
+ vassert(nGSPTRs == 0 || nGSPTRs == 1);
vassert(nVECRETs == (retTy == Ity_V128 || retTy == Ity_V256) ? 1 : 0);
vassert(*stackAdjustAfterCall == 0);
vassert(is_RetLoc_INVALID(*retloc));
Modified: trunk/priv/host_mips_isel.c
==============================================================================
--- trunk/priv/host_mips_isel.c (original)
+++ trunk/priv/host_mips_isel.c Fri Dec 16 21:20:30 2016
@@ -407,9 +407,9 @@
*retloc = mk_RetLoc_INVALID();
/* These are used for cross-checking that IR-level constraints on
- the use of IRExpr_VECRET() and IRExpr_BBPTR() are observed. */
+ the use of IRExpr_VECRET() and IRExpr_GSPTR() are observed. */
UInt nVECRETs = 0;
- UInt nBBPTRs = 0;
+ UInt nGSPTRs = 0;
/* MIPS O32 calling convention: up to four registers ($a0 ... $a3)
are allowed to be used for passing integer arguments. They correspond
@@ -431,7 +431,7 @@
stack, it is enough to preallocate the return space before
marshalling any arguments, in this case.
- |args| may also contain IRExpr_BBPTR(), in which case the value
+ |args| may also contain IRExpr_GSPTR(), in which case the value
in the guest state pointer register is passed as the
corresponding argument. */
@@ -440,8 +440,8 @@
IRExpr* arg = args[i];
if (UNLIKELY(arg->tag == Iex_VECRET)) {
nVECRETs++;
- } else if (UNLIKELY(arg->tag == Iex_BBPTR)) {
- nBBPTRs++;
+ } else if (UNLIKELY(arg->tag == Iex_GSPTR)) {
+ nGSPTRs++;
}
n_args++;
}
@@ -512,7 +512,7 @@
vassert(argreg < MIPS_N_REGPARMS);
IRType aTy = Ity_INVALID;
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
aTy = typeOfIRExpr(env->type_env, arg);
if (aTy == Ity_I32 || mode64) {
@@ -532,7 +532,7 @@
argiregs |= (1 << (argreg + 4));
addInstr(env, mk_iMOVds_RR( argregs[argreg], rLo));
argreg++;
- } else if (arg->tag == Iex_BBPTR) {
+ } else if (arg->tag == Iex_GSPTR) {
vassert(0); // ATC
addInstr(env, mk_iMOVds_RR(argregs[argreg],
GuestStatePointer(mode64)));
@@ -553,10 +553,10 @@
IRExpr* arg = args[i];
IRType aTy = Ity_INVALID;
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
aTy = typeOfIRExpr(env->type_env, arg);
- if (aTy == Ity_I32 || (mode64 && arg->tag != Iex_BBPTR)) {
+ if (aTy == Ity_I32 || (mode64 && arg->tag != Iex_GSPTR)) {
tmpregs[argreg] = iselWordExpr_R(env, arg);
argreg++;
} else if (aTy == Ity_I64) { /* Ity_I64 */
@@ -570,7 +570,7 @@
argreg++;
tmpregs[argreg] = raHi;
argreg++;
- } else if (arg->tag == Iex_BBPTR) {
+ } else if (arg->tag == Iex_GSPTR) {
tmpregs[argreg] = GuestStatePointer(mode64);
argreg++;
}
@@ -607,7 +607,7 @@
/* Do final checks, set the return values, and generate the call
instruction proper. */
- vassert(nBBPTRs == 0 || nBBPTRs == 1);
+ vassert(nGSPTRs == 0 || nGSPTRs == 1);
vassert(nVECRETs == (retTy == Ity_V128 || retTy == Ity_V256) ? 1 : 0);
vassert(*stackAdjustAfterCall == 0);
vassert(is_RetLoc_INVALID(*retloc));
Modified: trunk/priv/host_ppc_isel.c
==============================================================================
--- trunk/priv/host_ppc_isel.c (original)
+++ trunk/priv/host_ppc_isel.c Fri Dec 16 21:20:30 2016
@@ -736,9 +736,9 @@
*retloc = mk_RetLoc_INVALID();
/* These are used for cross-checking that IR-level constraints on
- the use of IRExpr_VECRET() and IRExpr_BBPTR() are observed. */
+ the use of IRExpr_VECRET() and IRExpr_GSPTR() are observed. */
UInt nVECRETs = 0;
- UInt nBBPTRs = 0;
+ UInt nGSPTRs = 0;
/* Marshal args for a call and do the call.
@@ -756,7 +756,7 @@
stack, it is enough to preallocate the return space before
marshalling any arguments, in this case.
- |args| may also contain IRExpr_BBPTR(), in which case the value
+ |args| may also contain IRExpr_GSPTR(), in which case the value
in the guest state pointer register is passed as the
corresponding argument.
@@ -852,7 +852,7 @@
if (go_fast) {
for (i = 0; i < n_args; i++) {
IRExpr* arg = args[i];
- if (UNLIKELY(arg->tag == Iex_BBPTR)) {
+ if (UNLIKELY(arg->tag == Iex_GSPTR)) {
/* that's OK */
}
else if (UNLIKELY(arg->tag == Iex_VECRET)) {
@@ -880,7 +880,7 @@
IRExpr* arg = args[i];
vassert(argreg < PPC_N_REGPARMS);
- if (arg->tag == Iex_BBPTR) {
+ if (arg->tag == Iex_GSPTR) {
argiregs |= (1 << (argreg+3));
addInstr(env, mk_iMOVds_RR( argregs[argreg],
GuestStatePtr(mode64) ));
@@ -954,11 +954,11 @@
for (i = 0; i < n_args; i++) {
IRExpr* arg = args[i];
vassert(argreg < PPC_N_REGPARMS);
- if (UNLIKELY(arg->tag == Iex_BBPTR)) {
+ if (UNLIKELY(arg->tag == Iex_GSPTR)) {
tmpregs[argreg] = newVRegI(env);
addInstr(env, mk_iMOVds_RR( tmpregs[argreg],
GuestStatePtr(mode64) ));
- nBBPTRs++;
+ nGSPTRs++;
}
else if (UNLIKELY(arg->tag == Iex_VECRET)) {
/* We stashed the address of the return slot earlier, so just
@@ -1025,7 +1025,7 @@
vassert(nVECRETs == 0);
}
- vassert(nBBPTRs == 0 || nBBPTRs == 1);
+ vassert(nGSPTRs == 0 || nGSPTRs == 1);
vassert(*stackAdjustAfterCall == 0);
vassert(is_RetLoc_INVALID(*retloc));
Modified: trunk/priv/host_s390_isel.c
==============================================================================
--- trunk/priv/host_s390_isel.c (original)
+++ trunk/priv/host_s390_isel.c Fri Dec 16 21:20:30 2016
@@ -527,14 +527,14 @@
special node IRExpr_VECRET(). For s390, however, V128 and V256 return
values do not occur as we generally do not support vector types.
- |args| may also contain IRExpr_BBPTR(), in which case the value
+ |args| may also contain IRExpr_GSPTR(), in which case the value
in the guest state pointer register is passed as the
corresponding argument.
These are used for cross-checking that IR-level constraints on
- the use of IRExpr_VECRET() and IRExpr_BBPTR() are observed. */
+ the use of IRExpr_VECRET() and IRExpr_GSPTR() are observed. */
UInt nVECRETs = 0;
- UInt nBBPTRs = 0;
+ UInt nGSPTRs = 0;
n_args = 0;
for (i = 0; args[i]; i++)
@@ -553,8 +553,8 @@
for (i = 0; i < n_args; ++i) {
if (UNLIKELY(args[i]->tag == Iex_VECRET)) {
nVECRETs++;
- } else if (UNLIKELY(args[i]->tag == Iex_BBPTR)) {
- nBBPTRs++;
+ } else if (UNLIKELY(args[i]->tag == Iex_GSPTR)) {
+ nGSPTRs++;
} else {
IRType type = typeOfIRExpr(env->type_env, args[i]);
if (type != Ity_I64) {
@@ -570,7 +570,7 @@
vpanic("cannot continue due to errors in argument passing");
/* If these fail, the IR is ill-formed */
- vassert(nBBPTRs == 0 || nBBPTRs == 1);
+ vassert(nGSPTRs == 0 || nGSPTRs == 1);
vassert(nVECRETs == 0);
argreg = 0;
@@ -578,7 +578,7 @@
/* Compute the function arguments into a temporary register each */
for (i = 0; i < n_args; i++) {
IRExpr *arg = args[i];
- if (UNLIKELY(arg->tag == Iex_BBPTR)) {
+ if (UNLIKELY(arg->tag == Iex_GSPTR)) {
/* If we need the guest state pointer put it in a temporary arg reg */
tmpregs[argreg] = newVRegI(env);
addInstr(env, s390_insn_move(sizeof(ULong), tmpregs[argreg],
Modified: trunk/priv/host_tilegx_isel.c
==============================================================================
--- trunk/priv/host_tilegx_isel.c (original)
+++ trunk/priv/host_tilegx_isel.c Fri Dec 16 21:20:30 2016
@@ -225,7 +225,7 @@
UInt nVECRETs = 0;
- UInt nBBPTRs = 0;
+ UInt nGSPTRs = 0;
/* TILEGX calling convention: up to 10 registers (r0 ... r9)
are allowed to be used for passing integer arguments. They correspond
@@ -241,14 +241,14 @@
IRExpr* arg = args[i];
if (UNLIKELY(arg->tag == Iex_VECRET)) {
nVECRETs++;
- } else if (UNLIKELY(arg->tag == Iex_BBPTR)) {
- nBBPTRs++;
+ } else if (UNLIKELY(arg->tag == Iex_GSPTR)) {
+ nGSPTRs++;
}
}
- if (nVECRETs || nBBPTRs)
- vex_printf("nVECRETs=%u, nBBPTRs=%u\n",
- nVECRETs, nBBPTRs);
+ if (nVECRETs || nGSPTRs)
+ vex_printf("nVECRETs=%u, nGSPTRs=%u\n",
+ nVECRETs, nGSPTRs);
if (TILEGX_N_REGPARMS < n_args) {
vpanic("doHelperCall(TILEGX): cannot currently handle > 10 args");
Modified: trunk/priv/host_x86_isel.c
==============================================================================
--- trunk/priv/host_x86_isel.c (original)
+++ trunk/priv/host_x86_isel.c Fri Dec 16 21:20:30 2016
@@ -352,7 +352,7 @@
addInstr(env, X86Instr_Push(X86RMI_Reg(r_vecRetAddr)));
return 1;
}
- if (UNLIKELY(arg->tag == Iex_BBPTR)) {
+ if (UNLIKELY(arg->tag == Iex_GSPTR)) {
addInstr(env, X86Instr_Push(X86RMI_Reg(hregX86_EBP())));
return 1;
}
@@ -402,7 +402,7 @@
static
Bool mightRequireFixedRegs ( IRExpr* e )
{
- if (UNLIKELY(is_IRExpr_VECRET_or_BBPTR(e))) {
+ if (UNLIKELY(is_IRExpr_VECRET_or_GSPTR(e))) {
// These are always "safe" -- either a copy of %esp in some
// arbitrary vreg, or a copy of %ebp, respectively.
return False;
@@ -443,9 +443,9 @@
*retloc = mk_RetLoc_INVALID();
/* These are used for cross-checking that IR-level constraints on
- the use of Iex_VECRET and Iex_BBPTR are observed. */
+ the use of Iex_VECRET and Iex_GSPTR are observed. */
UInt nVECRETs = 0;
- UInt nBBPTRs = 0;
+ UInt nGSPTRs = 0;
/* Marshal args for a call, do the call, and clear the stack.
Complexities to consider:
@@ -458,7 +458,7 @@
is enough to preallocate the return space before marshalling
any arguments, in this case.
- |args| may also contain IRExpr_BBPTR(), in which case the
+ |args| may also contain IRExpr_GSPTR(), in which case the
value in %ebp is passed as the corresponding argument.
* If the callee claims regparmness of 1, 2 or 3, we must pass the
@@ -510,13 +510,13 @@
n_args++;
if (UNLIKELY(arg->tag == Iex_VECRET)) {
nVECRETs++;
- } else if (UNLIKELY(arg->tag == Iex_BBPTR)) {
- nBBPTRs++;
+ } else if (UNLIKELY(arg->tag == Iex_GSPTR)) {
+ nGSPTRs++;
}
}
/* If this fails, the IR is ill-formed */
- vassert(nBBPTRs == 0 || nBBPTRs == 1);
+ vassert(nGSPTRs == 0 || nGSPTRs == 1);
/* If we have a VECRET, allocate space on the stack for the return
value, and record the stack pointer after that. */
@@ -588,7 +588,7 @@
if (UNLIKELY(arg->tag == Iex_VECRET)) {
vassert(0); //ATC
}
- else if (UNLIKELY(arg->tag == Iex_BBPTR)) {
+ else if (UNLIKELY(arg->tag == Iex_GSPTR)) {
vassert(0); //ATC
} else {
vassert(typeOfIRExpr(env->type_env, arg) == Ity_I32);
@@ -615,7 +615,7 @@
X86RMI_Reg(r_vecRetAddr),
argregs[argreg]));
}
- else if (UNLIKELY(arg->tag == Iex_BBPTR)) {
+ else if (UNLIKELY(arg->tag == Iex_GSPTR)) {
vassert(0); //ATC
} else {
vassert(typeOfIRExpr(env->type_env, arg) == Ity_I32);
Modified: trunk/priv/ir_defs.c
==============================================================================
--- trunk/priv/ir_defs.c (original)
+++ trunk/priv/ir_defs.c Fri Dec 16 21:20:30 2016
@@ -1382,8 +1382,8 @@
case Iex_VECRET:
vex_printf("VECRET");
break;
- case Iex_BBPTR:
- vex_printf("BBPTR");
+ case Iex_GSPTR:
+ vex_printf("GSPTR");
break;
default:
vpanic("ppIRExpr");
@@ -1909,9 +1909,9 @@
e->tag = Iex_VECRET;
return e;
}
-IRExpr* IRExpr_BBPTR ( void ) {
+IRExpr* IRExpr_GSPTR ( void ) {
IRExpr* e = LibVEX_Alloc_inline(sizeof(IRExpr));
- e->tag = Iex_BBPTR;
+ e->tag = Iex_GSPTR;
return e;
}
@@ -2386,8 +2386,8 @@
case Iex_VECRET:
return IRExpr_VECRET();
- case Iex_BBPTR:
- return IRExpr_BBPTR();
+ case Iex_GSPTR:
+ return IRExpr_GSPTR();
case Iex_Binder:
return IRExpr_Binder(e->Iex.Binder.binder);
@@ -3670,8 +3670,8 @@
vpanic("typeOfIRExpr: Binder is not a valid expression");
case Iex_VECRET:
vpanic("typeOfIRExpr: VECRET is not a valid expression");
- case Iex_BBPTR:
- vpanic("typeOfIRExpr: BBPTR is not a valid expression");
+ case Iex_GSPTR:
+ vpanic("typeOfIRExpr: GSPTR is not a valid expression");
default:
ppIRExpr(e);
vpanic("typeOfIRExpr");
@@ -3709,13 +3709,13 @@
}
*/
-static inline Bool isIRAtom_or_VECRET_or_BBPTR ( const IRExpr* e )
+static inline Bool isIRAtom_or_VECRET_or_GSPTR ( const IRExpr* e )
{
if (isIRAtom(e)) {
return True;
}
- return UNLIKELY(is_IRExpr_VECRET_or_BBPTR(e));
+ return UNLIKELY(is_IRExpr_VECRET_or_GSPTR(e));
}
Bool isFlatIRStmt ( const IRStmt* st )
@@ -3805,7 +3805,7 @@
if (!isIRAtom(di->guard))
return False;
for (i = 0; di->args[i]; i++)
- if (!isIRAtom_or_VECRET_or_BBPTR(di->args[i]))
+ if (!isIRAtom_or_VECRET_or_GSPTR(di->args[i]))
return False;
if (di->mAddr && !isIRAtom(di->mAddr))
return False;
@@ -3950,7 +3950,7 @@
case Iex_CCall:
for (i = 0; expr->Iex.CCall.args[i]; i++) {
const IRExpr* arg = expr->Iex.CCall.args[i];
- if (UNLIKELY(is_IRExpr_VECRET_or_BBPTR(arg))) {
+ if (UNLIKELY(is_IRExpr_VECRET_or_GSPTR(arg))) {
/* These aren't allowed in CCall lists. Let's detect
and throw them out here, though, rather than
segfaulting a bit later on. */
@@ -4032,7 +4032,7 @@
d = stmt->Ist.Dirty.details;
for (i = 0; d->args[i] != NULL; i++) {
IRExpr* arg = d->args[i];
- if (UNLIKELY(is_IRExpr_VECRET_or_BBPTR(arg))) {
+ if (UNLIKELY(is_IRExpr_VECRET_or_GSPTR(arg))) {
/* This is ensured by isFlatIRStmt */
;
} else {
@@ -4232,8 +4232,8 @@
if (i >= 32)
sanityCheckFail(bb,stmt,"Iex.CCall: > 32 args");
IRExpr* arg = expr->Iex.CCall.args[i];
- if (UNLIKELY(is_IRExpr_VECRET_or_BBPTR(arg)))
- sanityCheckFail(bb,stmt,"Iex.CCall.args: is VECRET/BBPTR");
+ if (UNLIKELY(is_IRExpr_VECRET_or_GSPTR(arg)))
+ sanityCheckFail(bb,stmt,"Iex.CCall.args: is VECRET/GSPTR");
tcExpr(bb,stmt, arg, gWordTy);
}
if (expr->Iex.CCall.retty == Ity_I1)
@@ -4472,21 +4472,21 @@
if (retTy == Ity_I1)
sanityCheckFail(bb,stmt,"IRStmt.Dirty.dst :: Ity_I1");
}
- UInt nVECRETs = 0, nBBPTRs = 0;
+ UInt nVECRETs = 0, nGSPTRs = 0;
for (i = 0; d->args[i] != NULL; i++) {
if (i >= 32)
sanityCheckFail(bb,stmt,"IRStmt.Dirty: > 32 args");
const IRExpr* arg = d->args[i];
if (UNLIKELY(arg->tag == Iex_VECRET)) {
nVECRETs++;
- } else if (UNLIKELY(arg->tag == Iex_BBPTR)) {
- nBBPTRs++;
+ } else if (UNLIKELY(arg->tag == Iex_GSPTR)) {
+ nGSPTRs++;
} else {
if (typeOfIRExpr(tyenv, arg) == Ity_I1)
sanityCheckFail(bb,stmt,"IRStmt.Dirty.arg[i] :: Ity_I1");
}
- if (nBBPTRs > 1) {
- sanityCheckFail(bb,stmt,"IRStmt.Dirty.args: > 1 BBPTR arg");
+ if (nGSPTRs > 1) {
+ sanityCheckFail(bb,stmt,"IRStmt.Dirty.args: > 1 GSPTR arg");
}
if (nVECRETs == 1) {
/* Fn must return V128 or V256. */
@@ -4505,15 +4505,15 @@
"IRStmt.Dirty.args: > 1 VECRET present");
}
}
- if (nBBPTRs > 1) {
+ if (nGSPTRs > 1) {
sanityCheckFail(bb,stmt,
- "IRStmt.Dirty.args: > 1 BBPTR present");
+ "IRStmt.Dirty.args: > 1 GSPTR present");
}
/* If you ask for the baseblock pointer, you have to make
some declaration about access to the guest state too. */
- if (d->nFxState == 0 && nBBPTRs != 0) {
+ if (d->nFxState == 0 && nGSPTRs != 0) {
sanityCheckFail(bb,stmt,
- "IRStmt.Dirty.args: BBPTR requested, "
+ "IRStmt.Dirty.args: GSPTR requested, "
"but no fxState declared");
}
break;
Modified: trunk/priv/ir_opt.c
==============================================================================
--- trunk/priv/ir_opt.c (original)
+++ trunk/priv/ir_opt.c Fri Dec 16 21:20:30 2016
@@ -488,7 +488,7 @@
d2->guard = flatten_Expr(bb, d2->guard);
for (i = 0; d2->args[i]; i++) {
IRExpr* arg = d2->args[i];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
d2->args[i] = flatten_Expr(bb, arg);
}
addStmtToIRSB(bb, IRStmt_Dirty(d2));
@@ -2702,7 +2702,7 @@
d2->guard = fold_Expr(env, subst_Expr(env, d2->guard));
for (i = 0; d2->args[i]; i++) {
IRExpr* arg = d2->args[i];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg))) {
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg))) {
vassert(isIRAtom(arg));
d2->args[i] = fold_Expr(env, subst_Expr(env, arg));
}
@@ -3045,7 +3045,7 @@
addUses_Expr(set, d->guard);
for (i = 0; d->args[i] != NULL; i++) {
IRExpr* arg = d->args[i];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
addUses_Expr(set, arg);
}
return;
@@ -4670,7 +4670,7 @@
deltaIRExpr(d->guard, delta);
for (i = 0; d->args[i]; i++) {
IRExpr* arg = d->args[i];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
deltaIRExpr(arg, delta);
}
if (d->tmp != IRTemp_INVALID)
@@ -5207,7 +5207,7 @@
aoccCount_Expr(uses, d->guard);
for (i = 0; d->args[i]; i++) {
IRExpr* arg = d->args[i];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
aoccCount_Expr(uses, arg);
}
return;
@@ -5598,7 +5598,7 @@
d2->guard = atbSubst_Expr(env, d2->guard);
for (i = 0; d2->args[i]; i++) {
IRExpr* arg = d2->args[i];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
d2->args[i] = atbSubst_Expr(env, arg);
}
return IRStmt_Dirty(d2);
@@ -5629,7 +5629,7 @@
guest state under the covers. It's not allowed, but let's be
extra conservative and assume the worst. */
for (i = 0; d->args[i]; i++) {
- if (UNLIKELY(d->args[i]->tag == Iex_BBPTR)) {
+ if (UNLIKELY(d->args[i]->tag == Iex_GSPTR)) {
*requiresPreciseMemExns = True;
/* Assume all guest state is written. */
interval.present = True;
@@ -6328,7 +6328,7 @@
vassert(isIRAtom(d->guard));
for (Int j = 0; d->args[j]; j++) {
IRExpr* arg = d->args[j];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg))) {
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg))) {
vassert(isIRAtom(arg));
}
}
@@ -6537,7 +6537,7 @@
vassert(isIRAtom(d->guard));
for (j = 0; d->args[j]; j++) {
IRExpr* arg = d->args[j];
- if (LIKELY(!is_IRExpr_VECRET_or_BBPTR(arg)))
+ if (LIKELY(!is_IRExpr_VECRET_or_GSPTR(arg)))
vassert(isIRAtom(arg));
}
if (d->mFx != Ifx_None)
Modified: trunk/pub/libvex_ir.h
==============================================================================
--- trunk/pub/libvex_ir.h (original)
+++ trunk/pub/libvex_ir.h Fri Dec 16 21:20:30 2016
@@ -1957,7 +1957,7 @@
Iex_ITE,
Iex_CCall,
Iex_VECRET,
- Iex_BBPTR
+ Iex_GSPTR
}
IRExprTag;
@@ -2132,7 +2132,7 @@
quite poor code to be generated. Try to avoid it.
In principle it would be allowable to have the arg vector
- contain an IRExpr_VECRET(), although not IRExpr_BBPTR(). However,
+ contain an IRExpr_VECRET(), although not IRExpr_GSPTR(). However,
at the moment there is no requirement for clean helper calls to
be able to return V128 or V256 values. Hence this is not allowed.
@@ -2196,8 +2196,8 @@
only appear at most once in an argument list, and it may not appear
at all in argument lists for clean helper calls. */
-static inline Bool is_IRExpr_VECRET_or_BBPTR ( const IRExpr* e ) {
- return e->tag == Iex_VECRET || e->tag == Iex_BBPTR;
+static inline Bool is_IRExpr_VECRET_or_GSPTR ( const IRExpr* e ) {
+ return e->tag == Iex_VECRET || e->tag == Iex_GSPTR;
}
@@ -2217,7 +2217,7 @@
extern IRExpr* IRExpr_CCall ( IRCallee* cee, IRType retty, IRExpr** args );
extern IRExpr* IRExpr_ITE ( IRExpr* cond, IRExpr* iftrue, IRExpr* iffalse );
extern IRExpr* IRExpr_VECRET ( void );
-extern IRExpr* IRExpr_BBPTR ( void );
+extern IRExpr* IRExpr_GSPTR ( void );
/* Deep-copy an IRExpr. */
extern IRExpr* deepCopyIRExpr ( const IRExpr* );
@@ -2376,10 +2376,10 @@
number of times at a fixed interval, if required.
Normally, code is generated to pass just the args to the helper.
- However, if IRExpr_BBPTR() is present in the argument list (at most
- one instance is allowed), then the baseblock pointer is passed for
+ However, if IRExpr_GSPTR() is present in the argument list (at most
+ one instance is allowed), then the guest state pointer is passed for
that arg, so that the callee can access the guest state. It is
- invalid for .nFxState to be zero but IRExpr_BBPTR() to be present,
+ invalid for .nFxState to be zero but IRExpr_GSPTR() to be present,
since .nFxState==0 is a claim that the call does not access guest
state.
@@ -2416,7 +2416,7 @@
allowed. */
IRCallee* cee; /* where to call */
IRExpr* guard; /* :: Ity_Bit. Controls whether call happens */
- /* The args vector may contain IRExpr_BBPTR() and/or
+ /* The args vector may contain IRExpr_GSPTR() and/or
IRExpr_VECRET(), in both cases, at most once. */
IRExpr** args; /* arg vector, ends in NULL. */
IRTemp tmp; /* to assign result to, or IRTemp_INVALID if none */
|
|
From: Petar J. <mip...@gm...> - 2016-12-16 18:37:07
|
On Sun, Dec 11, 2016 at 10:39 PM, <sv...@va...> wrote: > > * for mips32/mips64 and tilegx, there is a strange unconditional assignment > of 0 to a register (guest_r2 on mips, guest_r0 on tilegx). Not needed. Removed in r16188. Thanks for noticing. Regards, Petar |
|
From: <sv...@va...> - 2016-12-16 18:32:04
|
Author: petarj
Date: Fri Dec 16 18:31:57 2016
New Revision: 16188
Log:
mips: remove some old cruft from clone functions
Follow up to r16186 when this cruft was noticed.
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Fri Dec 16 18:31:57 2016
@@ -711,10 +711,7 @@
VG_TRACK( pre_thread_ll_exit, ctid );
}
-#if defined(VGP_mips64_linux) || defined(VGP_mips32_linux)
- // ??? why do we set unconditionally r2 to 0, even when error out ???
- ptst->arch.vex.guest_r2 = 0;
-#elif defined(VGP_tilegx_linux)
+#if defined(VGP_tilegx_linux)
// ??? why do we set unconditionally r0 to 0, even when error out ???
ptst->arch.vex.guest_r0 = 0;
#endif
|
|
From: Paul F. <pa...@fr...> - 2016-12-16 06:56:59
|
On 11 Dec 2016, at 23:13, Philippe Waroquiers wrote: > On Fri, 2016-12-09 at 20:26 +0100, pa...@fr... wrote: >> Hi >> >> After lurking here for a few years, I think it's time that I >> contributed something a bit more concrete. >> >> At the moment I have two ideas: >> >> Add C++17 support. I also lurk on the BSI C++ panel. Obviously C++17 is >> not done yet. The first changes that I see are the additional alignment >> overloads for operator new, see if polymorphic_allocator needs any >> support. I haven't been through the changes to threads but I imagine >> there may be things there as well. Do you think that this is too >> experimental/bleeding edge for Valgrind? > No idea if C++17 is to be considered experimental or not. > However, note that there are still some work to do for previous versions > of C++. See bugs > Bug 373069 - memcheck/tests/leak_cpp_interior fails with GCC 5.1+ > Bug 372347 - Replacement problem of the additional c++14/c++17 new and > delete operators > I had a look at the bugzilla items, and 372347 is pretty much what I was referring to. I need to look at the second one a bit more. By experimental I mean that, for instance, clang support is only at subversion head, not yet in an official release. >> >> Update FreeBSD support. Currently FreeBSD has a version of Valgrind >> 10.1 available. Initially I'd just like to get it to build and >> function. After that I'm sure that there are lots of other things like >> missing syscalls. I've started looking at merging the existing code >> (the bitbucket FreeBSD repo and Valgrind head), and it looks like a >> fairly major task, if nothing else there are many manual merges where >> Solaris and TileGX have been added. > Yes, this is not a minor task. > You might discuss this at the FOSDEM 17 Valgrind devroom and see > if there is (some) enthusiasm for merging FreeBSD upstream. > OK, I'll leave FreeBSD for now. I'm not likely to go to FOSDEM, though I might try to catch some videos if possible. A+ Paul |