On Wed, Jul 16, 2014 at 09:36:23AM +0100, Peter Maydell wrote: > On 16 July 2014 05:02, Rich Felker <dal...@libc.org> wrote: > > The qemu-microblaze definition of struct stat64 seems to mismatch the > > kernel definition, which is using asm-generic/stat.h. See: > > > > http://git.qemu.org/?p=qemu.git;a=blob;f=linux-user/syscall_defs.h;h=c9e6323905486452f518102bf40ba73143c9d601;hb=HEAD#l1469 > > http://git.qemu.org/?p=qemu.git;a=blob;f=linux-user/syscall.c;h=a50229d0d72fc68966515fcf2bc308b833a3c032;hb=HEAD#l4949 > > > > This seems to be causing a truncated-to-32-bit inode number to be > > stored in the location where st_ino should reside, and a spurious copy > > of the inode number to be written in a unused slot at the end of the > > structure. > > Sounds quite plausible -- we've had issues with other archs > not having correct stat struct definitions in QEMU. I don't > suppose anybody's done much testing of the microblaze > linux-user code.
The bug seems to have been introduced here. http://git.qemu.org/?p=qemu.git;a=commitdiff;h=a523eb06ec3fb2f4f4f4d362bb23704811d11379 I'm CC'ing the author/committer in case he has any input on why he did this. > > Is my analysis correct? Stefan Kristiansson and I found this while > > working on the or1k port of musl libc, where it seems our structure > > for the existing microblaze port is wrongly aligned with the qemu > > definition rather than the definition the real kernel is using. Before > > I try correcting this on our side, I want to make sure we're working > > with the right version. > > I would definitely trust the kernel definition, not QEMU's! Yes. Rich