qemu-devel
[Top][All Lists]
Advanced

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

Re: [Fwd: [Qemu-devel] RFC: linux user problems]


From: Thiemo Seufer
Subject: Re: [Fwd: [Qemu-devel] RFC: linux user problems]
Date: Wed, 19 Sep 2007 10:07:52 +0100
User-agent: Mutt/1.5.16 (2007-06-11)

J. Mayer wrote:
> Following my previous message, I did a patch that makes syscalls take
> target_long/target_ulong argument and return target_long value instead
> of long/unsigned long.
> I also included the #ifdef protection for do_socketcall and do_ipc to
> avoid compilation warnings.
> And I also converted the fd given to do_ioctl to be an int.
> 
> In addition to my previous remarks, I noticed some other things while
> reading the code:
> - the do_msgctl function seems very strange to me. It looks like half of
> the code is missing in the switch...
> - do_ipc directly uses pointers from the emulated environment without
> using lock_user related functions like it seems to be done everywhere
> else.
> - there are at least two problems in IPCOP_shmat:
>  * the returned address could not fit in the target address space when
> emulating a 32 bits
>   target on a 64 bits host
> * the returned address is always casted into a 32 bits value. I changed
> this to be target_ulong.
> - I also noticed some suspicious warnings (cast between pointer and
> integer of different size) that may hide other problems:
> * target_to_host_cmsg:567
> * host_to_target_cmsg:612
> * do_ipc:1609
> * do_ipc: 1621
> * do_ipc: 1645
> * do_ipc: 1655
> * do_ipc: 1677 (multiple times)
> * do_ipc: 1687
> * do_ipc: 1711
> * do_syscall:2686
> * do_syscall: 3903
> * do_syscall: 4671
> 
> May someone take a look at my patch and say if it seems reasonable to
> include this in the repository ?

Looks reasonable, but introduces new compiler warnings
(on a ppc32/Linux host):

Most (all?) targets show:

/home/ths/qemu/qemu-work/linux-user/syscall.c: In function do_ipc':
/home/ths/qemu/qemu-work/linux-user/syscall.c:1612: warning: long int format, 
target_long arg (arg 2)

There's also one instance of:

/home/ths/qemu/qemu-work/linux-user/syscall.c: At top level:
/home/ths/qemu/qemu-work/linux-user/syscall.c:1258: warning: 'shm_regions' 
defined but not used

which looks like a missing #ifdef TARGET_NR_ipc.


Thiemo




reply via email to

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