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

Reply via email to