aboutsummaryrefslogtreecommitdiff
path: root/linux-user
AgeCommit message (Collapse)Author
2009-12-13target-alpha: Fixes for alpha-linux syscalls.Richard Henderson
1. Add correct definitions of error numbers. 2. Implement SYS_osf_sigprocmask 3. Implement SYS_osf_get/setsysinfo for IEEE_FP_CONTROL. This last requires exposing the FPCR value to do_syscall. Since this value is actually split up into the float_status, expose routines from helper.c to access it. Finally, also add a float_exception_mask field to float_status. We don't actually use it to control delivery of exceptions to the emulator yet, but simply hold the value that we placed there when loading/storing the FPCR. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2009-12-13target-alpha: Drop bogus UNIQ initial value on Linux.Richard Henderson
Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2009-12-11Fix ARM userspace strex implementation.Paul Brook
Signed-off-by: Paul Brook <paul@codesourcery.com>
2009-11-24linux-user: remove hardcoded value of _NSIG in signal.cArnaud Patard
In a bunch of places, 64 is used as value of _NSIG but it's wrong at least on MIPS were _NSIG is 128. Based on a patch from Arnaud Patard <arnaud.patard@rtp-net.org> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2009-11-24Add missing break.Paul Brook
Signed-off-by: Paul Brook <paul@codesourcery.com>
2009-11-22ARM atomic ops rewritePaul Brook
Implement ARMv6 atomic ops (ldrex/strex) using the same trick as PPC. Signed-off-by: Paul Brook <paul@codesourcery.com>
2009-11-22target-mips: rename CP0_LLAddr into lladdrAurelien Jarno
The variable CP0_LLAddr represent the full lladdr, not the actual register value, which is only part of this value and depends on the CPU. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2009-11-07(x86/Sparc/PPC)-user: fix cpu_copyBlue Swirl
b55a37c981914aa8ecd21b9a2a2fb37f39b917c5 moved the call to cpu_reset to user emulators. But cpu_copy also initializes a CPU structure, so add the call also there. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-11-07user: move CPU reset call to main.c for x86/PPC/SparcBlue Swirl
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-10-17Re: linux-user/syscall.c - don't add GUEST_BASE to NULL pointerJan-Simon Möller
This patch fixes the mount call. GUEST_BASE shouldn't be added to a NULL pointer on arg5 . failing call: mount("rootfs", "/", 0x47a78, MS_MGC_VAL|MS_REMOUNT, 0x10000) = -1 EFAULT (Bad address) correct call: mount("rootfs", "/", 0x37ab0, MS_MGC_VAL|MS_REMOUNT, NULL) = 0 Signed-off-by:  Jan-Simon Möller  <dl9pf@gmx.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-10-17linux-user: KD/VT/FB ioctlsUlrich Hecht
everything needed to run SDL on a framebuffer device in the userspace emulator Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-10-16linux-user: Update ARM hwcapsRiku Voipio
Update ARM hwcaps to match Linux kernel 2.6.31 state Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-10-16linux-user: don't zero a buffer twicePaul Bolle
prepare_binprm() zeroes bprm->buf. That buffer is already zeroed in main() and hasn't been touched since so that is not necessary. Signed-off-by: Paul Bolle <pebolle@tiscali.nl> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-10-15linux-user: fix ppc target_stat64 st_blocks layoutMax Filippov
Swap __pad1 and st_blocks fields location to maintain proper alignment. This fixes incorrect 'du' and 'stat' report on ppc guest. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-10-15linux-user: getpriority errno fixUlrich Hecht
getpriority returned wrong errno; fixes LTP test getpriority02. Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-10-15implementations of dup3 and fallocate that are good enough to fool LTPUlrich Hecht
updated fallocate check to new configure, added dup3 check as suggested by Jan-Simon Möller. Riku: updated to apply to current git. Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-10-04linux-user: fix "#if 0"'d printf()Paul Bolle
Make an "#if 0"'d printf() in load_elf_binary(), probably left to aid in debugging, reflect what the actual code does. The current printf() will only confuse those who "#if 1" it (it certainly confused me enough to write this trivial patch). Signed-off-by: Paul Bolle <pebolle@tiscali.nl> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2009-10-02linux-user: fix up oversealous nitpickingMichael S. Tsirkin
Looks like linux-user code was correct, just unreadable: what it wanted to do with "-=" was really assign a negative number, not decrement. Fix up accordingly. Reported-by: Laurent Desnogues <laurent.desnogues@gmail.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-10-01Revert "Get rid of _t suffix"Anthony Liguori
In the very least, a change like this requires discussion on the list. The naming convention is goofy and it causes a massive merge problem. Something like this _must_ be presented on the list first so people can provide input and cope with it. This reverts commit 99a0949b720a0936da2052cb9a46db04ffc6db29. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2009-10-01Get rid of _t suffixmalc
Some not so obvious bits, slirp and Xen were left alone for the time being. Signed-off-by: malc <av1474@comtv.ru>
2009-09-30linux-user: fix coding style nitMichael S. Tsirkin
Put space between = and & when taking a pointer, to avoid confusion with old-style "&=". Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-30linux-user: fix old style decrement usageMichael S. Tsirkin
Modern compilers do not parse "=-" as decrement: you must use "-=" for that. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-30elfload: fix coding style nitMichael S. Tsirkin
Put space between = and * when dereferencing a pointer, to avoid confusion with old-style "*=" Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-25__thread should be before real typeJuan Quintela
Signed-off-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-25static and inline should came before the type of the functionsJuan Quintela
Signed-off-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-21Export tables properly to avoid a Sparse warningBlue Swirl
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-21Fix Sparse warnings about using plain integer as NULL pointerBlue Swirl
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-20Compile loader only onceBlue Swirl
Callers must pass ELF machine, byte swapping and symbol LSB clearing information to ELF loader. A.out loader needs page size information, pass that too as a parameter. Extract prototypes to a separate file. Move loader.[ch] and elf_ops.h under hw. Adjust callers. Also use target_phys_addr_t instead of target_ulong for addresses: loader addresses aren't virtual. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-13Revert "Fix Sparc/Linux host breakage by ↵Blue Swirl
df70204db53e3611af986f434e74a882bce190ca" This reverts commit 91b40c5be84a478e98c0416325844a7f66d0efae. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-13Fix Sparc/Linux host breakage by df70204db53e3611af986f434e74a882bce190caBlue Swirl
While i386, x86_64 and Sparc64/OpenBSD still worked after df70204db53e3611af986f434e74a882bce190ca, Sparc32 and Sparc64 Linux hosts broke. Partially revert the commit: make the restored code conditional to !CONFIG_USER_PIE. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-12Fix text relocations in linux-user targetsKirill A. Shutemov
There is a link hack in linux-user which produces an executable that looks like PIE, but always has text relocations since all object files isn't position-independent (compiled without -fpic/-fpie). Dynamic loader has to do more work to load a binary with text relocations. The best way to keep this functionality is to build a true PIE without text relocations. Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-12Fix sys-queue.h conflict for goodBlue Swirl
Problem: Our file sys-queue.h is a copy of the BSD file, but there are some additions and it's not entirely compatible. Because of that, there have been conflicts with system headers on BSD systems. Some hacks have been introduced in the commits 15cc9235840a22c289edbe064a9b3c19c5f49896, f40d753718c72693c5f520f0d9899f6e50395e94, 96555a96d724016e13190b28cffa3bc929ac60dc and 3990d09adf4463eca200ad964cc55643c33feb50 but the fixes were fragile. Solution: Avoid the conflict entirely by renaming the functions and the file. Revert the previous hacks. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-09-10F_DUPFD_CLOEXEC is not universally availablemalc
The same issue (and the same patch to the byte) was experienced/proposed by Vince Weaver. Signed-off-by: malc <av1474@comtv.ru>
2009-09-05Fix Sparse warnings: add "static"Blue Swirl
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-08-25linux-user: Rewrite mmap_find_vma() to work fine on 64-bit hosts with 32-bit ↵Kirill A. Shutemov
targets qemu's page table can be incomple if /proc/self/maps is unavailable or host allocating a memory with mmap(), so we can't use it to find free memory area. New version mmap_find_vma() uses mmap() without MAP_FIXED to find free memory. Tested-by: Martin Mohring <martin.mohring@opensuse.org> : quite some time ago this patch had been sent by Kirill to the QEMU ml. At that time, the patch was rejected. Now we found out why the current user mode memory allocator sometimes fails: - Kernel Bug linux/fs/proc/task_mmu.c (fixed after 2.6.27) http://bugzilla.kernel.org/attachment.cgi?id=17219 - use of proc file system to find memory mappings => bad idea So I please apply the attached patch from Kirill to qemu to fix this longstanding bug, because it causes all older linux distros (using kernel 2.6.26 or older) to fail the QEMU memory allocator in user mode. Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-25linux-user: zero fstat buffer to initialize nsec fieldsUlrich Hecht
The fstat implementation does not initialize the nanosecond fields in the stat buffer; this caused funny values to turn up there, preventing, for instance, cp -p from preserving timestamps because utimensat rejected the out-of-bounds nanosecond values. Resetting the entire structure to zero fixes that. Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-25linux-user: fadvise64 implementationUlrich Hecht
good enough to pass all LTP fadvise64 tests Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-25linux-user: enable getdents for > 32-bit systemsUlrich Hecht
works perfectly fine with the example from getdents(2) and passes the LTP tests (tested with s390x on x86_64 emulation) Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-25linux-user: fcntl fixes for LTPUlrich Hecht
Fixes swaps on l_pid which were pretty much of random size. Implements F_SETLEASE, F_GETLEASE. Now passes all LTP fcntl tests. Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-25linux-user: fix mq_* compilation problemsNathan Froyd
mqueue.h is only available if __NR_mq_open is defined. So don't include it unconditionally. Similarly, the mq_* family of syscalls depend on __NR_mq_open. Finally, the copy_{from,to}_user_mq_attr functions should not be defined unconditionally, but only if we're going to use the mq_* syscalls. Signed-off-by: Nathan Froyd <froydnj@codesourcery.com Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-25m68k, linux-user: enable sigaltstack()Laurent Vivier
As setup_frame() and setup_rt_frame() are now implemented we can now enable sigaltstack(). Signed-off-by: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-25m68k, linux-user: add setup_rt_frameLaurent Vivier
This patch implements setup_rt_frame(). Signed-off-by: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-25m68k,linux-user: add setup_frameLaurent Vivier
This patch adds signals management for linux-user. It implements setup_frame() which allows to call the user signal handler. setup_rt_frame() is always unimplemented. Signed-off-by: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-25linux-user: add eventfd supportRiku Voipio
Straightforward implementation. This syscall is rare enough that we don't need to support the odder cases, just disable it if host glibc is too old. Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
2009-08-16Replace local ADDRX/PADDRX macros with TARGET_FMT_lx/plxBlue Swirl
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-08-15linux-user: compile envlist.c only onceBlue Swirl
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-08-15user: compile path.c only onceBlue Swirl
Also merge bsd-user/path.c and linux-user/path.c. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-08-10Fix symfind.Laurent Desnogues
this patch fixes an issue in symfind. Assume you have the following symbols: Address Size 0045bca0 00000080 T s0 0045bd20 00000112 T s1 You'll notice that s1 is s0 + size. So the current symfind will find that address 0045bd20 belongs to s0 instead of s1. Laurent Signed-off-by: Laurent Desnogues <laurent.desnogues@gmail.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Message-Id:
2009-08-04Sparc64: replace tsptr with helper routineIgor Kovalenko
tl and tsptr of members sparc64 cpu state must be changed simultaneously to keep trap state window in sync with current trap level. Currently translation of store to tl does not change tsptr, which leads to corrupt trap state on corresponding trap level. This patch removes tsptr from sparc64 cpu state and replaces all uses with call to helper routine. Changes v0->v1: - reimplemented helper routine with tcg generator - on cpu reset trap type and pstate are populated with power-on reset values, including tl=maxtl Signed-off-by: igor.v.kovalenko@gmail.com Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2009-08-03linux-user: make FUTEX_* calls honor timeout parameterNathan Froyd
Signed-off-by: Nathan Froyd <froydnj@codesourcery.com> Signed-off-by: malc <av1474@comtv.ru>