Linux emulation on FreeBSD AMD64
Martin Cracauer
cracauer at cons.org
Thu Nov 1 08:26:24 PDT 2007
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 at cons.org> http://www.cons.org/cracauer/
FreeBSD - where you want to go, today. http://www.freebsd.org/
More information about the freebsd-emulation
mailing list