Use VG_(am_mmap_anon_float_valgrind) to allocate the unredirected

translation cache. This ensures that the cache space is executable
which it isn't when it is allocated as a static variable in the data
segment, at least on my amd64 box.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5525
This commit is contained in:
Tom Hughes 2006-01-13 09:57:01 +00:00
parent fac8b71d11
commit 63da307b46

View File

@ -1241,8 +1241,8 @@ typedef
UTCEntry;
/* We just allocate forwards in _tc, never deleting. */
static ULong unredir_tc[N_UNREDIR_TCQ] __attribute__((aligned(8)));
static Int unredir_tc_used;
static ULong *unredir_tc;
static Int unredir_tc_used = N_UNREDIR_TCQ;
/* Slots in _tt can come into use and out again (.inUse).
Nevertheless _tt_highwater is maintained so that invalidations
@ -1256,6 +1256,14 @@ static Int unredir_tt_highwater;
static void init_unredir_tt_tc ( void )
{
Int i;
if (unredir_tc == NULL) {
SysRes sres = VG_(am_mmap_anon_float_valgrind)( N_UNREDIR_TT * UNREDIR_SZB );
if (sres.isError) {
VG_(out_of_memory_NORETURN)("init_unredir_tt_tc", N_UNREDIR_TT * UNREDIR_SZB);
/*NOTREACHED*/
}
unredir_tc = (ULong *)sres.val;
}
unredir_tc_used = 0;
for (i = 0; i < N_UNREDIR_TT; i++)
unredir_tt[i].inUse = False;