qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] qemu-arm in various flavours and circumstances
@ 2004-08-07 12:37 Lennert Buytenhek
  2004-08-07 13:11 ` Paul Brook
  0 siblings, 1 reply; 2+ messages in thread
From: Lennert Buytenhek @ 2004-08-07 12:37 UTC (permalink / raw)
  To: Paul Brook, David Woodhouse; +Cc: qemu-devel

OK, I built a number of different ARM binaries with different toolchains,
a few different versions of qemu, and ran them under a few different
circumstances.


The test
--------
I made the following 27 "Hello, world!" binaries (all static):
- hello-arm-unknown-linux-gnu-gcc-2.95.3-glibc-{2.1.3,2.2.2}
- hello-arm-unknown-linux-gnu-gcc-3.2.3-glibc-{2.2.3,2.2.5,2.3.2}
- hello-arm-unknown-linux-gnu-gcc-3.3.1-glibc-2.3.2
- hello-arm-unknown-linux-gnu-gcc-3.3-glibc-{2.2.5,2.3.2}
- hello-arm-unknown-linux-gnu-gcc-3.4.0-glibc-2.3.2
- hello-armv4eb-redhat-linux-gcc-{3.3.2,3.3.3,3.4.0}-glibc-2.3.2
- hello-armv4e-redhat-linux-gcc-{3.3.2,3.3.3,3.4.0}-glibc-2.3.2
- hello-armv5eb-redhat-linux-gcc-{3.3.2,3.3.3,3.4.0}-glibc-2.3.2
- hello-armv5e-redhat-linux-gcc-{3.3.2,3.3.3,3.4.0}-glibc-2.3.2
- hello-armv5teb-redhat-linux-gcc-{3.3.2,3.3.3,3.4.0}-glibc-2.3.2
- hello-armv5te-redhat-linux-gcc-{3.3.2,3.3.3,3.4.0}-glibc-2.3.2

And used the following versions of qemu:
- qemu 0.6.0
- qemu 20040806
- qemu 20040806 plus patch.qemu_5e, patch.qemu_rrx, patch.qemu_selfmodify

Each version of qemu was built on:
- Red Hat 7.3
- Fedora Core 2

And each invocation of "qemu-version target-binary" was done with both
'setarch i686' and without.  So, 12 (3*2*2) different runs for each
target binary, 12*27=324 runs total.  All runs are done on a FC2 host.


The results
-----------
bigendian:
- The bigendian binaries (armv?eb, armv?teb) always result in
  "Error loading $NAME_OF_BINARY", under every version of qemu
  (I didn't muck with WORDS_BIGENDIAN.)

setarch i686:
- An FC2-compiled qemu-arm, when ran on an FC2 host without setarch i686,
  under each and every circumstance gives a sig11.
- An FC2-compiled qemu-arm, when ran on an FC2 host with setarch i686,
  always behaves the same as a RH73-compiled qemu-arm when ran on an FC2
  host.  Meaning, sometimes it works, sometimes it doesn't -- see below.

When using either a RH73-compiled qemu or setarch i686:
- All arm-unknown-linux-gnu and armv4e-redhat-linux toolchains produce
  binaries that work under qemu.
- There is no difference in results between qemu 0.6.0 and qemu 20040806.
- There is no difference in results between armv5e and armv5te binaries.
- All armv5(t)e binaries give a sig11 under qemu 0.6.0 and qemu 20040806,
  but under qemu 20040806 plus Paul's three patches they give sig4:
  "qemu: uncaught target signal 4 (Illegal instruction) - exiting"


--L

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Qemu-devel] qemu-arm in various flavours and circumstances
  2004-08-07 12:37 [Qemu-devel] qemu-arm in various flavours and circumstances Lennert Buytenhek
@ 2004-08-07 13:11 ` Paul Brook
  0 siblings, 0 replies; 2+ messages in thread
From: Paul Brook @ 2004-08-07 13:11 UTC (permalink / raw)
  To: qemu-devel

On Saturday 07 August 2004 13:37, Lennert Buytenhek wrote:
> OK, I built a number of different ARM binaries with different toolchains,
> a few different versions of qemu, and ran them under a few different
> circumstances.
<snip>
> The results
> -----------
> bigendian:
> - The bigendian binaries (armv?eb, armv?teb) always result in
>   "Error loading $NAME_OF_BINARY", under every version of qemu
>   (I didn't muck with WORDS_BIGENDIAN.)

I haven't tried big-endian binaries. I suspect you won't be able to run both 
big and little endian binaries with the same version of qemu.

> setarch i686:
> - An FC2-compiled qemu-arm, when ran on an FC2 host without setarch i686,
>   under each and every circumstance gives a sig11.
> - An FC2-compiled qemu-arm, when ran on an FC2 host with setarch i686,
>   always behaves the same as a RH73-compiled qemu-arm when ran on an FC2
>   host.  Meaning, sometimes it works, sometimes it doesn't -- see below.

I suspect this is a generic qemu problem, not specific to qemu-arm.

> When using either a RH73-compiled qemu or setarch i686:
> - All arm-unknown-linux-gnu and armv4e-redhat-linux toolchains produce
>   binaries that work under qemu.
> - There is no difference in results between qemu 0.6.0 and qemu 20040806.
> - There is no difference in results between armv5e and armv5te binaries.
> - All armv5(t)e binaries give a sig11 under qemu 0.6.0 and qemu 20040806,
>   but under qemu 20040806 plus Paul's three patches they give sig4:
>   "qemu: uncaught target signal 4 (Illegal instruction) - exiting"

armv5 support is still incomplete, even with my patches. Thumb state, and the 
interworking branch instruction (bx) are still missing. I'm working on it 
(slowly).

A side-effect of my armv5e patch is that more illegal/unrecognised 
instructions are detected. Without the patch they are probably misinterpreted 
as a nonsensical form of a different instruction.

Paul

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-08-07 13:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-07 12:37 [Qemu-devel] qemu-arm in various flavours and circumstances Lennert Buytenhek
2004-08-07 13:11 ` Paul Brook

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).