|
From: <sv...@va...> - 2005-09-15 09:14:15
|
Author: sewardj
Date: 2005-09-15 10:14:12 +0100 (Thu, 15 Sep 2005)
New Revision: 4666
Log:
On x86 only, allow execution in segments with read permissions.
Modified:
branches/ASPACEM/coregrind/m_translate.c
Modified: branches/ASPACEM/coregrind/m_translate.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_translate.c 2005-09-15 08:58:53 UTC (rev=
4665)
+++ branches/ASPACEM/coregrind/m_translate.c 2005-09-15 09:14:12 UTC (rev=
4666)
@@ -440,7 +440,7 @@
{
Addr64 redir, orig_addr0 =3D orig_addr;
Int tmpbuf_used, verbosity;
- Bool notrace_until_done, do_self_check;
+ Bool notrace_until_done, do_self_check, allowR;
UInt notrace_until_limit =3D 0;
NSegment* seg;
VexGuestExtents vge;
@@ -531,9 +531,15 @@
=20
seg =3D VG_(am_find_nsegment)(orig_addr);
=20
+# if defined(VGA_x86)
+ allowR =3D True;
+# else
+ allowR =3D False;
+# endif
+
if (seg =3D=3D NULL=20
|| !(seg->kind =3D=3D SkAnonC || seg->kind =3D=3D SkFileC)
- || !seg->hasX) {
+ || !(seg->hasX || (seg->hasR && allowR)) ) {
=20
/* U R busted, sonny. Place your hands on your head and step
away from the orig_addr. */
|