1. 12 5月, 2018 1 次提交
  2. 04 5月, 2018 1 次提交
    • L
      linux-user: remove useless padding in flock64 structure · 7f254c5c
      Laurent Vivier 提交于
      Since commit 8efb2ed5 ("linux-user: Correct signedness of
      target_flock l_start and l_len fields"), flock64 structure uses
      abi_llong for l_start and l_len in place of "unsigned long long"
      this should force them to be aligned accordingly to the target
      rules. So we can remove the padding field and the QEMU_PACKED
      attribute.
      
      I have compared the result of the following program before and
      after the change:
      
          cat -> flock64_dump  <<EOF
          p/d sizeof(struct target_flock64)
          p/d &((struct target_flock64 *)0)->l_type
          p/d &((struct target_flock64 *)0)->l_whence
          p/d &((struct target_flock64 *)0)->l_start
          p/d &((struct target_flock64 *)0)->l_len
          p/d &((struct target_flock64 *)0)->l_pid
          quit
          EOF
      
          for file in build/all/*-linux-user/qemu-* ; do
          echo $file
          gdb -batch -nx -x flock64_dump $file 2> /dev/null
          done
      
      The sizeof() changes because we remove the QEMU_PACKED.
      The new size is 32 (except for i386 and m68k) and this is
      the real size of "struct flock64" on the target architecture.
      
      The following architectures differ:
      aarch64_be, aarch64, alpha, armeb, arm, cris, hppa, nios2, or1k,
      riscv32, riscv64, s390x.
      
      For a subset of these architectures, I have checked with the following
      program the new structure is the correct one:
      
        #include <stdio.h>
        #define __USE_LARGEFILE64
        #include <fcntl.h>
      
        int main(void)
        {
      	  printf("struct flock64 %d\n", sizeof(struct flock64));
      	  printf("l_type %d\n", &((struct flock64 *)0)->l_type);
      	  printf("l_whence %d\n", &((struct flock64 *)0)->l_whence);
      	  printf("l_start %d\n", &((struct flock64 *)0)->l_start);
      	  printf("l_len %d\n", &((struct flock64 *)0)->l_len);
      	  printf("l_pid %d\n", &((struct flock64 *)0)->l_pid);
        }
      
      [I have checked aarch64, alpha, hppa, s390x]
      
      For ARM, the target_flock64 becomes the EABI definition, so we need to
      define the OABI one in place of the EABI one and use it when it is
      needed.
      
      I have also fixed the alignment value for sh4 (to align llong on 4 bytes)
      (see c2e3dee6 "linux-user: Define target alignment size")
      [We should check alignment properties for cris, nios2 and or1k]
      Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Message-Id: <20180502215730.28162-1-laurent@vivier.eu>
      7f254c5c
  3. 03 4月, 2018 2 次提交
  4. 17 3月, 2018 1 次提交
    • M
      target/xtensa: add linux-user support · ba7651fb
      Max Filippov 提交于
      Import list of syscalls from the kernel source. Conditionalize code/data
      that is only used with softmmu. Implement exception handlers. Implement
      signal hander (only the core registers for now, no coprocessors or TIE).
      
      Cc: Riku Voipio <riku.voipio@iki.fi>
      Cc: Laurent Vivier <laurent@vivier.eu>
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      ba7651fb
  5. 10 3月, 2018 2 次提交
  6. 07 3月, 2018 1 次提交
  7. 23 1月, 2018 1 次提交
  8. 08 11月, 2017 5 次提交
  9. 18 10月, 2017 1 次提交
  10. 17 10月, 2017 1 次提交
  11. 16 10月, 2017 2 次提交
  12. 28 2月, 2017 1 次提交
  13. 16 2月, 2017 1 次提交
  14. 25 1月, 2017 1 次提交
  15. 24 1月, 2017 2 次提交
  16. 23 1月, 2017 2 次提交
  17. 21 10月, 2016 4 次提交
    • P
      linux-user: Fix definition of target_sigevent for 32-bit guests · 17351c3f
      Peter Maydell 提交于
      The sigevent structure includes a union with some fields which
      are pointers. For the QEMU target_sigevent structure we must
      represent these as abi_ulongs, not host function pointers.
      
      This error was causing the compiler to believe it should 8-align
      the _sigev_un union on a 64-bit host, which meant that the
      code in target_to_host_sigevent() was looking at the wrong
      offset to find the _tid field, and timer_create() would
      spuriously fail with EINVAL.
      
      This fixes the final loose end noted in LP:1042388.
      
      While we're editing the structure, switch the 'int32_t' fields
      to 'abi_int'; this will only matter for guests with non-standard
      integer alignment like m68k.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      17351c3f
    • A
      linux-user: Fix syslog() syscall support · da2c8ad7
      Aleksandar Markovic 提交于
      There are currently several problems related to syslog() support.
      
      For example, if the second argument "bufp" of target syslog() syscall
      is NULL, the current implementation always returns error code EFAULT.
      However, NULL is a perfectly valid value for the second argument for
      many use cases of this syscall. This is, for example, visible from
      this excerpt of man page for syslog(2):
      
      > EINVAL Bad arguments (e.g., bad type; or for type 2, 3, or 4, buf is
      >        NULL, or len is less than zero; or for type 8, the level is
      >        outside the range 1 to 8).
      
      Moreover, the argument "bufp" is ignored for all cases of values of the
      first argument, except 2, 3 and 4. This means that for such cases
      (the first argument is not 2, 3 or 4), there is no need to pass "buf"
      between host and target, and it can be set to NULL while calling host's
      syslog(), without loss of emulation accuracy.
      
      Note also that if "bufp" is NULL and the first argument is 2, 3 or 4, the
      correct returned error code is EINVAL, not EFAULT.
      
      All these details are reflected in this patch.
      
      "#ifdef TARGET_NR_syslog" is also proprerly inserted when needed.
      
      Support for Qemu's "-strace" switch for syslog() syscall is included too.
      
      LTP tests syslog11 and syslog12 pass with this patch (while fail without
      it), on any platform.
      
      Changes to original patch by Riku Voipio:
      
       fixed error paths in TARGET_SYSLOG_ACTION_READ_ALL to match
      
      http://lxr.free-electrons.com/source/kernel/printk/printk.c?v=4.7#L1335
      
      Should fix also the build error in:
      
      https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg03721.htmlSigned-off-by: NAleksandar Markovic <aleksandar.markovic@imgtec.com>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      da2c8ad7
    • A
      linux-user: Fix socketcall() syscall support · ff71a454
      Aleksandar Markovic 提交于
      Since not all Linux host platforms support socketcall() (most notably
      Intel), do_socketcall() function in Qemu's syscalls.c is implemented to
      mirror the corespondant implementation of socketcall() in Linux kernel,
      and to utilise individual socket operations that are supported on all
      Linux platforms. (see kernel source file net/socket.c, definition of
      socketcall).
      
      However, error codes produced by Qemu implementation are wrong for the
      cases of invalid values of the first argument. Also, naming of constants
      is not consistent with kernel one, and not consistant with Qemu convention
      of prefixing such constants with "TARGET_". This patch in that light
      brings do_socketcall() closer to its kernel counterpart, and in that way
      fixes the errors and yields more consisrtent Qemu code.
      
      There were also three missing cases (among 20) for strace support for
      socketcall(). The array that contains pointers for appropriate printing
      functions is updated with 3 elements, however pointers to functions are
      left NULL, and its implementation is left for future.
      
      Also, this patch fixes failure of LTP test socketcall02, if executed on some
      Qemu emulated sywstems (uer mode).
      Signed-off-by: NAleksandar Markovic <aleksandar.markovic@imgtec.com>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      ff71a454
    • A
      linux-user: Add support for adjtimex() syscall · 19f59bce
      Aleksandar Markovic 提交于
      This patch implements Qemu user mode adjtimex() syscall support.
      
      Syscall adjtimex() reads and optionally sets parameters for a clock
      adjustment algorithm used in network synchonization or similar scenarios.
      
      Its declaration is:
      
      int adjtimex(struct timex *buf);
      
      The correspondent source code in the Linux kernel is at kernel/time.c,
      line 206.
      
      The Qemu implementation is based on invocation of host's adjtimex(), and
      its key part is in the "TARGET_NR_adjtimex" case segment of the the main
      switch statement of the function do_syscall(), in linux-user/syscalls.c. All
      necessary conversions of the data structures from target to host and from
      host to target are covered. Two new functions, target_to_host_timex() and
      host_to_target_timex(), are provided for the purpose of such conversions.
      For that purpose, the support for related structure "timex" had tp be added
      to the file linux-user/syscall_defs.h, based on its definition in Linux
      kernel. Also, the relevant support for "-strace" Qemu option is included
      in files linux-user/strace.c and linux-user/strace.list.
      
      This patch also fixes failures of LTP tests adjtimex01 and adjtimex02, if
      executed in Qemu user mode.
      Signed-off-by: NAleksandar Rikalo <aleksandar.rikalo@imgtec.com>
      Signed-off-by: NAleksandar Markovic <aleksandar.markovic@imgtec.com>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      19f59bce
  18. 23 9月, 2016 3 次提交
  19. 21 9月, 2016 2 次提交
  20. 15 9月, 2016 1 次提交
    • T
      Remove remainders of HPPA backend · d41f3c3c
      Thomas Huth 提交于
      The HPPA backend has been removed by the following commit:
      
          802b5081
          tcg-hppa: Remove tcg backend
      
      But some small pieces of the HPPA backend still survived until
      today. Since we also do not have support for a HPPA target in
      QEMU, we can nowadays safely remove the remaining HPPA parts
      (like the disassembler code, or the detection of HPPA in the
      configure script).
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      d41f3c3c
  21. 19 7月, 2016 2 次提交
  22. 12 7月, 2016 1 次提交
  23. 26 6月, 2016 2 次提交