qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/5] linux-user: fix dependencies, forbid unknown host arch
@ 2016-06-14  9:52 Peter Maydell
  2016-06-14  9:52 ` [Qemu-devel] [PATCH 1/5] configure: Don't override ARCH=unknown if enabling TCI Peter Maydell
                   ` (4 more replies)
  0 siblings, 5 replies; 17+ messages in thread
From: Peter Maydell @ 2016-06-14  9:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: patches, Riku Voipio, Laurent Vivier, Richard Henderson

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

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2016-06-14 16:34 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-14  9:52 [Qemu-devel] [PATCH 0/5] linux-user: fix dependencies, forbid unknown host arch Peter Maydell
2016-06-14  9:52 ` [Qemu-devel] [PATCH 1/5] configure: Don't override ARCH=unknown if enabling TCI Peter Maydell
2016-06-14  9:57   ` Laurent Vivier
2016-06-14  9:59     ` Laurent Vivier
2016-06-14 16:30   ` Richard Henderson
2016-06-14  9:52 ` [Qemu-devel] [PATCH 2/5] configure: Don't allow user-only targets for unknown CPU architectures Peter Maydell
2016-06-14  9:58   ` Laurent Vivier
2016-06-14 16:31   ` Richard Henderson
2016-06-14  9:52 ` [Qemu-devel] [PATCH 3/5] user-exec: Delete now-unused hppa and m68k cpu_signal_handler() code Peter Maydell
2016-06-14  9:58   ` Laurent Vivier
2016-06-14 16:32   ` Richard Henderson
2016-06-14  9:52 ` [Qemu-devel] [PATCH 4/5] user-exec: Remove unused code for OSX hosts Peter Maydell
2016-06-14  9:58   ` Laurent Vivier
2016-06-14 16:33   ` Richard Henderson
2016-06-14  9:52 ` [Qemu-devel] [PATCH 5/5] linux-user: Create a hostdep.h for each host architecture Peter Maydell
2016-06-14  9:58   ` Laurent Vivier
2016-06-14 16:34   ` Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).