Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Nov 2007 11:25:50 -0400
From:      Martin Cracauer <cracauer@cons.org>
To:        "Valery V.Chikalov" <valera@chikalov.dp.ua>
Cc:        Martin Cracauer <cracauer@cons.org>, freebsd-emulation@freebsd.org
Subject:   Re: Linux emulation on FreeBSD AMD64
Message-ID:  <20071101152550.GA10868@cons.org>
In-Reply-To: <47298F10.4050301@chikalov.dp.ua>
References:  <4721AB07.20708@novakom.com.ua> <fg05l9$n32$2@ger.gmane.org> <4723A8D6.6020002@chikalov.dp.ua> <20071031180639.GA93259@cons.org> <47298F10.4050301@chikalov.dp.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Valery V.Chikalov wrote on Thu, Nov 01, 2007 at 10:32:16AM +0200: 
> Martin Cracauer wrote:
> >Valery V.Chikalov wrote on Sun, Oct 28, 2007 at 12:08:38AM +0300: 
> >>Oct 27 19:42:59 tiger kernel: mprotect addr:2a27d000, return 0
> >>Oct 27 19:42:59 tiger kernel: mprotect addr:2a7c1000, return 0
> >>Oct 27 19:42:59 tiger kernel: mprotect addr:2a7cd000, return 0
> >>Oct 27 19:42:59 tiger kernel: mprotect addr:2a7e2000, return 0
> >>Oct 27 19:42:59 tiger kernel: mprotect addr:2a7ef000, return 0
> >>Oct 27 19:43:09 tiger kernel: mprotect addr:55c00000, return 13
> >>Oct 27 19:43:09 tiger kernel: mprotect addr:55c81000, return 13
> >
> >You need to check whether these is anything mapped there in the first
> >place and what the permissions are.
> >
> >This is probably best done by changing your debugging code in the
> >Linuxulator to print amessage, then sleep for 10 seconds giving you
> >time to copy the memory map to a safe place, then look up what the
> >mapping at the position was.
> >
> >Martin
> 
> Hi, Martin.
> 
> Thank you for the hint.
> But I'm not sure that I understanding you right.
> I'm not a kernel hacker, just C-programmer with ability to read 
> documentation. :-)
> Do the "memory map" about you told is some C-struct I can deal with and 
> which can be accessed by some system call, or that task ("copy the 
> memory map") can be achieved by some userland utility like "ipcs" or 
> "vmstat -m".

No, you need the contents of 
/proc/<pid>/map
and
/compat/linux/proc/<pid>/maps

This is why you hack up the kernel to wait a while, before the syscall
is actually executed you want the time to grab both these files for
the process and save them somewhere (cp /proc... /tmp/ is sufficient).

I suspect the difference between Linux and FreeBSD here is what kind
of existing mapping you are allowed to change in permissions.  Should
be reasonably easy to fix once we know both side, what permissions you
had before (from the maps) and where you want to go (from the
syscall arguments).  Might be more hairy if some special kind of
memory is involved but we'll see.

Martin
-- 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <cracauer@cons.org>   http://www.cons.org/cracauer/
FreeBSD - where you want to go, today.      http://www.freebsd.org/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071101152550.GA10868>