|
From: <sv...@va...> - 2005-09-14 23:24:29
|
Author: tom
Date: 2005-09-15 00:24:24 +0100 (Thu, 15 Sep 2005)
New Revision: 4663
Log:
Port some more x86 changes to the amd64 code.
Modified:
branches/ASPACEM/coregrind/m_sigframe/sigframe-amd64-linux.c
branches/ASPACEM/coregrind/m_syswrap/syswrap-amd64-linux.c
Modified: branches/ASPACEM/coregrind/m_sigframe/sigframe-amd64-linux.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_sigframe/sigframe-amd64-linux.c 2005-09-=
14 22:06:49 UTC (rev 4662)
+++ branches/ASPACEM/coregrind/m_sigframe/sigframe-amd64-linux.c 2005-09-=
14 23:24:24 UTC (rev 4663)
@@ -376,17 +376,16 @@
static Bool extend ( ThreadState *tst, Addr addr, SizeT size )
{
ThreadId tid =3D tst->tid;
- Segment *stackseg =3D NULL;
+ NSegment *stackseg =3D NULL;
=20
if (VG_(extend_stack)(addr, tst->client_stack_szB)) {
- stackseg =3D VG_(find_segment)(addr);
+ stackseg =3D VG_(am_find_nsegment)(addr);
if (0 && stackseg)
VG_(printf)("frame=3D%p seg=3D%p-%p\n",
- addr, stackseg->addr, stackseg->addr+stackseg->len);
+ addr, stackseg->start, stackseg->end);
}
=20
- if (stackseg =3D=3D NULL=20
- || (stackseg->prot & (VKI_PROT_READ|VKI_PROT_WRITE)) =3D=3D 0) {
+ if (stackseg =3D=3D NULL || !stackseg->hasR || !stackseg->hasW) {
VG_(message)(
Vg_UserMsg,
"Can't extend stack to %p during signal delivery for thread %d:=
",
Modified: branches/ASPACEM/coregrind/m_syswrap/syswrap-amd64-linux.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_syswrap/syswrap-amd64-linux.c 2005-09-14=
22:06:49 UTC (rev 4662)
+++ branches/ASPACEM/coregrind/m_syswrap/syswrap-amd64-linux.c 2005-09-14=
23:24:24 UTC (rev 4663)
@@ -368,7 +368,7 @@
ThreadState* ptst =3D VG_(get_ThreadState)(ptid);
ThreadState* ctst =3D VG_(get_ThreadState)(ctid);
UWord* stack;
- Segment* seg;
+ NSegment* seg;
SysRes res;
Long rax;
vki_sigset_t blockall, savedmask;
@@ -416,14 +416,14 @@
memory mappings and try to derive some useful information. We
assume that esp starts near its highest possible value, and can
only go down to the start of the mmaped segment. */
- seg =3D VG_(find_segment)((Addr)rsp);
- if (seg) {
+ seg =3D VG_(am_find_nsegment)((Addr)rsp);
+ if (seg && seg->kind !=3D SkResvn) {
ctst->client_stack_highest_word =3D (Addr)VG_PGROUNDUP(rsp);
- ctst->client_stack_szB =3D ctst->client_stack_highest_word - seg-=
>addr;
+ ctst->client_stack_szB =3D ctst->client_stack_highest_word - seg->=
start;
=20
if (debug)
VG_(printf)("tid %d: guessed client stack range %p-%p\n",
- ctid, seg->addr, VG_PGROUNDUP(rsp));
+ ctid, seg->start, VG_PGROUNDUP(rsp));
} else {
VG_(message)(Vg_UserMsg, "!? New thread %d starts with RSP(%p) unm=
apped\n",
ctid, rsp);
|