[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] ANN: DetaolB v0.4 is released

From: Blue Swirl
Subject: Re: [Qemu-devel] ANN: DetaolB v0.4 is released
Date: Wed, 11 Jul 2007 14:17:28 +0300

On 7/10/07, Rob Landley <address@hidden> wrote:
On Tuesday 10 July 2007 14:30:38 Blue Swirl wrote:
> > The sparc platform has a problem that if I boot with init as a "hello
> > world" program everything behaves as expected (there are two in the image
> > for testing purposes, /tools/bin/hello-dynamic and
> > /tools/bin/hello-static).  But if you boot with init=/tools/bin/bash it
> > hangs.  And so do the busybox shells.
> I think there is a problem with the dynamic loader, I get a bus error
> when running the programs on real Sparc.

Huh.  That's odd because hello-dynamic is using the dynamic loader.  (That's
why there's a hello-dynamic and a hello-static.)

It's entirely possibly that qemu and real sparc hardware are behaving
differently, but I'm not seeing this bus error under qemu.  (I haven't got
real sparc hardware, so I can only debug against qemu...)

Right. Debugging the problem I found out that in Qemu, 64-bit loads
and stores to unaligned addresses do not trigger any traps as they
should. I'll commit a fix soon. The problem is in uClibc ldso, there
is this kind of store.

Running the program on qemu-sparc reveals another problem, probably
because of these definitions in ldso/ldso/sparc/dl-sysdep.h:
/* 4096 bytes alignment */
/* ...but 8192 is required for mmap() on sparc64 kernel */
#define PAGE_ALIGN 0xffffe000
#define ADDR_ALIGN 0x1fff
#define OFFS_ALIGN 0x7fffe000

On Sparc32 the correct page alignment is still 4096. Because of these
definitions, some code apparently tries to clear a 8k page, but only
4k of memory is mapped.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]