From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59848) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCl1A-0004SQ-CE for qemu-devel@nongnu.org; Tue, 14 Jun 2016 05:52:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bCl18-0005TB-9K for qemu-devel@nongnu.org; Tue, 14 Jun 2016 05:52:19 -0400 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:57686) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bCl18-0005Sc-1I for qemu-devel@nongnu.org; Tue, 14 Jun 2016 05:52:18 -0400 From: Peter Maydell Date: Tue, 14 Jun 2016 10:52:02 +0100 Message-Id: <1465897927-4719-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PATCH 0/5] linux-user: fix dependencies, forbid unknown host arch List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: patches@linaro.org, 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