You can check how NetBSD does that. NetBSD is able to run executables from other UNIXes and POSIX-compatible systems, including, Linux, IRIX, Darwin. They do that with a series of syscall conversions and library substitutions.
That should be portable to use Mac OS X as host instead of NetBSD, and to run thru QEMU (running x86 Linux software on PowerPC Darwin) Regards, Natalia Portillo El 11/08/2010, a las 10:33, C K Kashyap escribió: > I was wondering if it would be easy to force build the user-emulation on mac > - as in, lets say my a.out from linux is really trivial - even statically > linked for that matter. All it does is, say, write "hello world\n" to the > screen - I'd imaging that write system call would be similar on mac (as far > as writing to stdout is concerned) .... Would it be possible/easy to give it > a shot? > > > On Wed, Aug 11, 2010 at 2:48 PM, Stefan Weil <w...@mail.berlios.de> wrote: > Am 11.08.2010 11:06, schrieb C K Kashyap: >> Let me see if I understand this right - >> >> qemu loads the a.out and begins to interpret the x86 instructions in the >> a.out and when a system call happens, it makes the call the host system .... >> is that right? >> > > > Right. That's the way how linux user mode emulation (for example qemu-i386) > works. > See linux-user/syscall.c if you want to see more details. > > bsd-user and darwin-user are also supported (more or less), but darwin-user > only supports translation of darwin/powerpc to darwin/x86 syscalls. > It won't help you to run a linux a.out on your mac. > > >> >> >> On Wed, Aug 11, 2010 at 2:12 PM, Stefan Weil <w...@mail.berlios.de> wrote: >> Am 11.08.2010 10:31, schrieb C K Kashyap: >>> Hi, >>> I've built qemu on my mac osx using this config - >>> ./configure --prefix=/Users/ckk/local/ --target-list="i386-softmmu >>> x86_64-softmmu" --enable-linux-user >>> >>> Now, I have a simple a.out built on linux - how can I run it using qemu on >>> my mac box? >>> >>> -- >>> Regards, >>> Kashyap >> >> Hi Kashyap, >> >> you cannot run it in user mode emulation unless you replace Mac OS by Linux >> on your mac box. Linux user emulations requires a Linux host. >> >> If you have a Linux host, you would need --target-list=i386-linux-user. >> >> You can run your a.out if you run system emulation (e.g. i386-softmmu/qemu) >> and install Linux there, of course. >> >> Regards, >> Stefan >> >> >> >> -- >> Regards, >> Kashyap > > > > > -- > Regards, > Kashyap