qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 0/5] linux-user: fix dependencies, forbid unknown ho


From: Peter Maydell
Subject: [Qemu-devel] [PATCH 0/5] linux-user: fix dependencies, forbid unknown host arch
Date: Tue, 14 Jun 2016 10:52:02 +0100

The main aim of this patchset is to fix a problem with the dependency
handling of the hostdep.h files added in in commit 4d330cee37a21.
It needs to be applied before we add any more architecture-specific
hostdep.h files (ie before rth's patchset for ppc/arm/i386/s390/etc).


The intent of commit 4d330cee3 was that host architectures which needed
a hostdep.h could provide it, and the build system would automatically
fall back to a generic version if there was no version for the host
architecture.  Although this works, it has a flaw: if a subsequent
commit switches an architecture from "uses generic/hostdep.h" to
"uses its own hostdep.h" nothing in the makefile dependencies notices
this and so doing a rebuild without a manual 'make clean' will fail.
    
So we drop the idea of having a 'generic' version in favour of
every architecture we support having its own hostdep.h, even if
it doesn't have anything in it. (There are only thirteen of these.)


There is an oddball corner case for linux-user which is that we were
permitting 'unknown' host architectures in configure even though we
need to know about the host CPU architecture for linux-user to work
(in particular user-exec.c has code for handling signals that needs
to know about that host's context structures).  Cleaning this up
first means we don't need to have a weird and mostly useless
unknown/hostdep.h.  The only two configurations which could in theory
use ARCH=unknown without failing to compile due to missing
user-exec.c support are:
 * linux-user targets on M68K hosts using TCI
 * linux-user targets on HPPA hosts using TCI
    
I doubt anybody is actually trying to use these in practice, though:
 * interpreted TCG on a slow host CPU would be unusably slow
 * the m68k user-exec.c support is missing is_write detection so guest
   code which writes to the same page it is executing from was broken
   (will include any guest program using signals)
 * HPPA TCG backend support was dropped two and a half years ago
   with no complaints

So rather than raising m68k or hppa to "actually known architecture"
this patchset drops support for them entirely as linux-user hosts,
and deletes the now-unused code from user-exec.c. A bonus extra
patch removes some OSX code from user-exec.c which hasn't been used
since we dropped darwin-user.

thanks
-- PMM


Peter Maydell (5):
  configure: Don't override ARCH=unknown if enabling TCI
  configure: Don't allow user-only targets for unknown CPU architectures
  user-exec: Delete now-unused hppa and m68k cpu_signal_handler() code
  user-exec: Remove unused code for OSX hosts
  linux-user: Create a hostdep.h for each host architecture

 Makefile.target                   |   5 +-
 configure                         |   8 ++-
 linux-user/host/aarch64/hostdep.h |  15 ++++++
 linux-user/host/arm/hostdep.h     |  15 ++++++
 linux-user/host/generic/hostdep.h |  20 -------
 linux-user/host/i386/hostdep.h    |  15 ++++++
 linux-user/host/ia64/hostdep.h    |  15 ++++++
 linux-user/host/mips/hostdep.h    |  15 ++++++
 linux-user/host/ppc/hostdep.h     |  15 ++++++
 linux-user/host/ppc64/hostdep.h   |  15 ++++++
 linux-user/host/s390/hostdep.h    |  15 ++++++
 linux-user/host/s390x/hostdep.h   |  15 ++++++
 linux-user/host/sparc/hostdep.h   |  15 ++++++
 linux-user/host/sparc64/hostdep.h |  15 ++++++
 linux-user/host/x32/hostdep.h     |  15 ++++++
 user-exec.c                       | 107 +-------------------------------------
 16 files changed, 189 insertions(+), 131 deletions(-)
 create mode 100644 linux-user/host/aarch64/hostdep.h
 create mode 100644 linux-user/host/arm/hostdep.h
 delete mode 100644 linux-user/host/generic/hostdep.h
 create mode 100644 linux-user/host/i386/hostdep.h
 create mode 100644 linux-user/host/ia64/hostdep.h
 create mode 100644 linux-user/host/mips/hostdep.h
 create mode 100644 linux-user/host/ppc/hostdep.h
 create mode 100644 linux-user/host/ppc64/hostdep.h
 create mode 100644 linux-user/host/s390/hostdep.h
 create mode 100644 linux-user/host/s390x/hostdep.h
 create mode 100644 linux-user/host/sparc/hostdep.h
 create mode 100644 linux-user/host/sparc64/hostdep.h
 create mode 100644 linux-user/host/x32/hostdep.h

-- 
1.9.1




reply via email to

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