Am 06.09.2013 19:24, schrieb Stefan Weil: > Am 06.09.2013 19:16, schrieb Peter Maydell: >> On 6 September 2013 17:46, Stefan Weil <s...@weilnetz.de> wrote: >>> This test case is fixed now: >>> sparc64-linux-user/qemu-sparc64 /usr/gnemul/qemu-sparc64/busybox ls -l >>> block.c >>> >>> Signed-off-by: Stefan Weil <s...@weilnetz.de> >>> --- >>> linux-user/syscall.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >>> index ecead51..e498a92 100644 >>> --- a/linux-user/syscall.c >>> +++ b/linux-user/syscall.c >>> @@ -4764,7 +4764,7 @@ static inline abi_long host_to_target_stat64(void >>> *cpu_env, >>> } else >>> #endif >>> { >>> -#if TARGET_ABI_BITS == 64 && !defined(TARGET_ALPHA) >>> +#if TARGET_ABI_BITS == 64 && !defined(TARGET_ALPHA) && >>> !defined(TARGET_SPARC64) >>> struct target_stat *target_st; >>> #else >>> struct target_stat64 *target_st; >> So this condition is trying to identify the platforms >> which don't actually have a struct stat64 (which is >> some but not all of the 64 bit platforms). I think that >> rather than trying to enumerate those here it would >> be better if in the sections of syscall_defs.h which >> define target_stat/target_stat64 we had those sections >> which don't have a target_stat64 definition instead >> #define TARGET_NO_STRUCT_STAT64 >> and then used that here. >> >> -- PMM > I even thought about a totally different solution: > > Could we write some sample code with all those structs > and system calls, compile it once for each target, and > get all information we need from the resulting binaries > (using tools like pahole, for example)? > > For the moment, I think my patch is sufficient (it is also > needed for QEMU 1.6!). > > Stefan
Ping? Are there any more opinions how qemu-sparc64 should be fixed? Should we choose Peter's approach (which is good, but with a higher risk than my patch)? Stefan