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.

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.

Rich

Reply via email to