1. 27 5月, 2016 3 次提交
  2. 04 3月, 2016 1 次提交
  3. 26 2月, 2016 2 次提交
  4. 29 1月, 2016 1 次提交
  5. 08 1月, 2016 1 次提交
    • L
      linux-user,sh4: fix signal retcode address · 2a0fa68f
      Laurent Vivier 提交于
      To return from a signal, setup_frame() puts an instruction to
      be executed in the stack. This sequence calls the syscall sigreturn().
      
      The address of the instruction must be set in the PR register
      to be executed.
      
      This patch fixes this: the current code sets the register to the address
      of the instruction in the host address space (which can be 64bit whereas
      PR is only 32bit), but the virtual CPU can't access this address space,
      so we put in PR the address of the instruction in the guest address space.
      
      This patch also removes an useless variable (ret) in the modified functions.
      Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      2a0fa68f
  6. 18 12月, 2015 1 次提交
  7. 07 10月, 2015 1 次提交
  8. 01 10月, 2015 1 次提交
  9. 11 9月, 2015 1 次提交
  10. 09 7月, 2015 1 次提交
  11. 27 5月, 2015 1 次提交
  12. 28 1月, 2015 3 次提交
    • P
      linux-user: Fix broken m68k signal handling on 64 bit hosts · 1669add7
      Peter Maydell 提交于
      The m68k signal frame setup code which writes the signal return
      trampoline code to the stack was assuming that a 'long' was 32 bits;
      on 64 bit systems this meant we would end up writing the 32 bit
      (2 insn) trampoline sequence to retaddr+4,retaddr+6 instead of
      the intended retaddr+0,retaddr+2, resulting in a guest crash when
      it tried to execute the invalid zero-bytes at retaddr+0.
      Fix by using uint32_t instead; also use uint16_t rather than short
      for consistency. This fixes bug LP:1404690.
      
      Reported-by: Michel Boaventura
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      1669add7
    • P
      linux-user/signal.c: Remove unnecessary wrapper copy_siginfo_to_user · f6c7a05b
      Peter Maydell 提交于
      The function copy_siginfo_to_user() just calls tswap_siginfo(), so
      call the latter function directly and delete the wrapper function.
      The wrapper is actually misleading since it implies that the
      semantics are like the kernel function with the same name which
      copies the data to a guest user-space address. In fact tswap_siginfo()
      just does data-structure conversion between two structures whose
      addresses are host addresses (the copy to userspace is handled
      in QEMU by the lock_user/unlock_user calls).
      
      This also fixes clang complaints about the wrapper being unused
      in some configs.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      f6c7a05b
    • P
      linux-user/signal.c: Remove current_exec_domain_sig() · b6e2c935
      Peter Maydell 提交于
      Remove the function current_exec_domain_sig(), which always returns
      its argument. This was intended as a stub for supporting the kernel's
      exec_domain handling, but:
       * we don't have any of the other code for execution domains
       * in the kernel this handling is architecture-specific, not generic
       * we only call this function in the x86, ppc and sh4 signal code paths,
         and the PPC one is wrong anyway because the PPC kernel doesn't
         have this signal-remapping code
      
      So it's best to simply delete the function; any future attempt to
      implement exec domains will be better served by adding the correct
      code from scratch based on the kernel sources at that time.
      
      This change also fixes some clang warnings about the function being
      defined but not used for some target architectures.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      b6e2c935
  13. 08 9月, 2014 6 次提交
  14. 22 8月, 2014 1 次提交
  15. 15 7月, 2014 1 次提交
  16. 17 6月, 2014 12 次提交
  17. 03 5月, 2014 1 次提交
  18. 27 3月, 2014 1 次提交
  19. 17 3月, 2014 1 次提交
    • P
      linux-user: Don't allow guest to block SIGSEGV · a7ec0f98
      Peter Maydell 提交于
      Don't allow the linux-user guest to block SIGSEGV -- QEMU needs this
      signal to detect accesses to pages which it has marked read-only
      because it has cached translated code from them.
      
      We implement this by making the do_sigprocmask() wrapper suppress
      SIGSEGV when doing the host process signal mask manipulation; instead
      we store the current state of SIGSEGV in the TaskState struct.
      
      If we get a SIGSEGV for the guest when the guest has blocked the
      signal, we treat it as if the default SEGV handler was in place,
      as the kernel does for forced SIGSEGV delivery.
      
      This patch is based on an idea by Alex Barcelo, but rather than
      simply lying to the guest about the SIGSEGV state we track it.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reported-by: NAlex Barcelo <abarcelo@ac.upc.edu>
      Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
      a7ec0f98