From patchwork Tue Sep 10 19:34:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 173551 Delivered-To: patch@linaro.org Received: by 2002:a05:6e02:ce:0:0:0:0 with SMTP id r14csp6237581ilq; Tue, 10 Sep 2019 12:35:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqzx49Im29JXyyCpZaZMRczOEjVLV29CJIB4Rf4HEdjKKYL49Stna9YGSF+26hhMMh+35bgI X-Received: by 2002:ac8:33c3:: with SMTP id d3mr31671589qtb.41.1568144145021; Tue, 10 Sep 2019 12:35:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568144145; cv=none; d=google.com; s=arc-20160816; b=azr6iN5EN1+0y7tdWxdt12YiywAOvPg7xU9N64S4tgtCPU5ReGNcpsfm0Raib2hSwy optlQXXgkcsF4yexcQve3Refea3dF7GdQ1lLEVniZTrElC1T0bzdtfdbn0w4IoFf5sxl V//hUQ6X8uhZ3CMfIHjuD50D/E+WyoQXxDaPIhcAaOXwlafP3BPPxvyBs7e+7NQgPL+V N3Vgf8w+RKhpwdjEDZwN1SNJDcsIujYTSjPOTUXlaX/Tle2UqsBBFLXOOAdmtBdN2zVs PnLkDfFx9Qv95g3LwAvzQjhOxjJleOT+/4TlIQZwx6R0x+Zyf5Za2tQ9Zz6bw/ShsWVL zDiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=5XyzKPTEVeMZHoyBnFttJunUqWTPcDprpKPpXz8/JuA=; b=aYOfH6FOQOwktdCnaQY7oDU5rnRPXmtLAWzd5OBxF2vMuhtjhAkZGXx7aAasMEv640 dNM32IfdWCjQSVXsJWGZwSRKVlaSkA89EMoK/7CM0i97WHGlvn+8CFCpsAi6H8N+IRif dDwGNbO2WIcExWCHzsVPfE/xapnKusLDdBDDZkDIpWXWO8ojHzUPT3cWAOnRp01z6PJB HZrXrDp1pxR3lFo1gSkGqAOFzCYtaQUsz8+IupEVpgJdKVmGH26LhV5YBH7vzT+YYLto 76xSjjEI+AOemOTopHRjcU+Dp2/oMznI6JUBN0ITibgq0uU4LdG2rIrjZ+UnOiZS3szm 5iVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=vTpQxAdJ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 32si14439294qvw.120.2019.09.10.12.35.44 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 10 Sep 2019 12:35:45 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=vTpQxAdJ; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:44318 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i7lvU-0000w7-Ad for patch@linaro.org; Tue, 10 Sep 2019 15:35:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58855) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i7lu1-0000vG-Kn for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i7lu0-0006jh-9Q for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:13 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:33750) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i7lu0-0006j7-1X for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:12 -0400 Received: by mail-wr1-x42f.google.com with SMTP id u16so21922418wrr.0 for ; Tue, 10 Sep 2019 12:34:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5XyzKPTEVeMZHoyBnFttJunUqWTPcDprpKPpXz8/JuA=; b=vTpQxAdJ9xknXNw4aCUYvm+cIC5kA4DL2Qc14EeUWTGi+OAlGOtBRh95WXWVH94Jg3 z28cpsdaComFtDOjngozTVfzXRtK2mFlUskHi+4aRV+z0PIozhy9SEBtjjmDJC8fksVv kFAxNjyTlNTrrcp5n1vL/RAAqRyEpPLJf+OW3jWdDBTyFADBwHXpDi6u0iQNEM3kDom0 joq2XD/LHtZveyctgCqqWX258ApFKG7vY9rLaOVAeBqKmiJwVcuKk6UcyNIogbkHF4N1 B2xcuQglqulqMic/nGsTKQYdCmUMa1UrjcPbUd1xZYu7Dwp2jSCG8bPssL2xkILzlPea /CZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5XyzKPTEVeMZHoyBnFttJunUqWTPcDprpKPpXz8/JuA=; b=QgAmif/8OhwaRfKj6sXF5q7Jy6Rvb94AACgs8YG56zKGS8f6Zt3kF8UsjB36IGwzYJ F95cf/1gZJ15OeL21Jv7S431zVYa/8KljVvudipxfElr1hmx8E39ZGx1p60aq1xjQj8D WrlzH1sxPOxJOsNUBzQgsJnSasT9mb6TyBncsKQ1LUrGDhJoRo4Wqyw/RlOz6aQpjmfL 2oBgkUdLl2hQ7U8DRENPqHr0J885OShMyZk7jVRTGAwsLcSrw2PD8t4CizO8+nOuyzu3 l0aXN0xvDmMM59njiDYZ78pC4XKrJk2tBDCVT/ZyJjGuoTBjuEhGJxWSc8w+KczfxAwl otUw== X-Gm-Message-State: APjAAAVGBbx6jirXqGjUkLWkLErqDjCiS6c9/9NHyOkRZ1y2pGiDaWev SIG4NMUDBqlNczd44Vj96k12Mw== X-Received: by 2002:adf:dc43:: with SMTP id m3mr28062078wrj.118.1568144050368; Tue, 10 Sep 2019 12:34:10 -0700 (PDT) Received: from zen.linaroharston ([51.148.130.216]) by smtp.gmail.com with ESMTPSA id l5sm491162wmj.4.2019.09.10.12.34.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2019 12:34:09 -0700 (PDT) Received: from zen.lan (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id BC91C1FF8C; Tue, 10 Sep 2019 20:34:08 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 10 Sep 2019 20:34:05 +0100 Message-Id: <20190910193408.28917-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190910193408.28917-1-alex.bennee@linaro.org> References: <20190910193408.28917-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42f Subject: [Qemu-devel] [PATCH v1 1/4] target/ppc: fix signal delivery for ppc64abi32 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , qemu-arm@nongnu.org, =?utf-8?q?Alex_?= =?utf-8?q?Benn=C3=A9e?= , qemu-devel@nongnu.org, Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" We were incorrectly setting NIP resulting in a segfault. This fixes linux-test for this ABI. Signed-off-by: Alex Bennée --- linux-user/ppc/signal.c | 4 +++- tests/tcg/configure.sh | 1 + tests/tcg/multiarch/Makefile.target | 5 ----- 3 files changed, 4 insertions(+), 6 deletions(-) -- 2.20.1 diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c index 619a56950df..5b82af6cb62 100644 --- a/linux-user/ppc/signal.c +++ b/linux-user/ppc/signal.c @@ -501,7 +501,9 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, int i, err = 0; #if defined(TARGET_PPC64) struct target_sigcontext *sc = 0; +#if !defined(TARGET_ABI32) struct image_info *image = ((TaskState *)thread_cpu->opaque)->info; +#endif #endif rt_sf_addr = get_sigframe(ka, env, sizeof(*rt_sf)); @@ -557,7 +559,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, env->gpr[5] = (target_ulong) h2g(&rt_sf->uc); env->gpr[6] = (target_ulong) h2g(rt_sf); -#if defined(TARGET_PPC64) +#if defined(TARGET_PPC64) && !defined(TARGET_ABI32) if (get_ppc64_abi(image) < 2) { /* ELFv1 PPC64 function pointers are pointers to OPD entries. */ struct target_func_ptr *handler = diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh index 6c4a471aeae..e8a1a1495fc 100755 --- a/tests/tcg/configure.sh +++ b/tests/tcg/configure.sh @@ -54,6 +54,7 @@ fi : ${cross_cc_cflags_ppc="-m32"} : ${cross_cc_ppc64="powerpc-linux-gnu-gcc"} : ${cross_cc_cflags_ppc64="-m64"} +: ${cross_cc_cflags_ppc64abi32="-mcpu=power8"} : ${cross_cc_ppc64le="powerpc64le-linux-gnu-gcc"} : ${cross_cc_cflags_s390x="-m64"} : ${cross_cc_cflags_sparc="-m32 -mv8plus -mcpu=ultrasparc"} diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target index 6b1e30e2fec..e6893b2e283 100644 --- a/tests/tcg/multiarch/Makefile.target +++ b/tests/tcg/multiarch/Makefile.target @@ -12,11 +12,6 @@ VPATH += $(MULTIARCH_SRC) MULTIARCH_SRCS =$(notdir $(wildcard $(MULTIARCH_SRC)/*.c)) MULTIARCH_TESTS =$(MULTIARCH_SRCS:.c=) -# FIXME: ppc64abi32 linux-test seems to have issues but the other basic tests work -ifeq ($(TARGET_NAME),ppc64abi32) -BROKEN_TESTS = linux-test -endif - # Update TESTS TESTS += $(filter-out $(BROKEN_TESTS), $(MULTIARCH_TESTS)) From patchwork Tue Sep 10 19:34:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 173552 Delivered-To: patch@linaro.org Received: by 2002:a05:6e02:ce:0:0:0:0 with SMTP id r14csp6241152ilq; Tue, 10 Sep 2019 12:39:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqzpX0jGejQAt4Vb2BQW6MYpoPmyX+aymIBzbBaMQp5v0PX8uZSKnnKLiL4zKz1RSoDQSrDp X-Received: by 2002:a50:f285:: with SMTP id f5mr26299840edm.269.1568144343644; Tue, 10 Sep 2019 12:39:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568144343; cv=none; d=google.com; s=arc-20160816; b=DHk3psAgAycpGr6M1Wxo6RAur9XFqEIiUeoLMIlJ66QlAcBA5BsI3qOyU4i1FC8W42 qdY7tarAgfBACzjM9X1FL07OzNycZDPD9Q7WoREXLgQE2Ap4TnKD0NrCZXkwQ6RkVCUQ d8ZvZe/Msv0VzqmeM86V7Vw99pq2kmC0BYcS6jbUpTKHDoa6EfQGXpaaMTI3wI10fejl L7y6Q6rULaFxelX5REVN/u1ns9KZctTnZBKYXymLPNqK8nl9SFJoPJ0NPyzsDmm+UnDQ vqQcsjQGSqpADw7XRKnQBdlR7zbMlTA9L1ol6IFFKuKvkh5kc6OTyOhMcEE9HXiCzRpr AaDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=JsFRcEl2DcaLcclzT+IneVbnyOOq8rTFO8lmcuTBMe4=; b=HFHQgNuRb69dzV7/IU967gofUk9wMF7jmr4oly/zZcUZp4X7VRe/tB6c7AwPzAS5ow 2bBbIszvzYbwjDnWbKd+/TvWuaiGf916U3BBRkWR5CLga7n5h23LZDw1qntXiENZ08eb 4HTCjMF+612UFRMMGZVhdBXXJv+G/MRDHS4WLE2C+0cQd9chea2B6V/L59dRbm1cNTWl tN7hpCLXvIBG5h9Qgzy3LFcPyYtCZfXOftYXk4DbWL91RuDMZW3ouMrRMHGweMztGsVE AFfb6sov7JGfl+P5VpBZYowD5tx6YCHBZBcpE3u/fBBvc9vLcunn8g1/VKmbXIl949eT PXjA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ONaqj+CT; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id y11si10658987edr.426.2019.09.10.12.39.03 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 10 Sep 2019 12:39:03 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ONaqj+CT; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:44462 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i7lyg-000626-1Q for patch@linaro.org; Tue, 10 Sep 2019 15:39:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58996) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i7lu8-00011y-Rq for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i7lu2-0006mA-HM for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:20 -0400 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]:37267) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i7lu2-0006kU-1p for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:14 -0400 Received: by mail-wr1-x444.google.com with SMTP id i1so21292514wro.4 for ; Tue, 10 Sep 2019 12:34:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JsFRcEl2DcaLcclzT+IneVbnyOOq8rTFO8lmcuTBMe4=; b=ONaqj+CTn8G/i9Wqg/GAlSrM6b5cEGQJ4mOkSayNCso6uG+jEBpjjIl7udMbVkrnvB m+vuDQWalK0ekS1bf6DokDDiN+I2tH8uc1q7PP501nMiDbNrvl4tjjuyqSFZ4z3HmUce IsEpHQER17KsAtzm2gaM6poRNSL+aF/qxEOtdNyX1wyctkhn3jBM9zWM+vNgrdnu2+uf KNPNIchpw4Qrq3uQdjQjdqrhebhUK4fw2AEKvQh31IHGXG+ESKxhmG4vwNuOF6+Q0Crg 3QB5Yvs885z5/UBD6QtksZK1oVtE1SU3BPMHzsAM0SUQCsxP3wy5F29ItDJ8KpmgkwKP l9KQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JsFRcEl2DcaLcclzT+IneVbnyOOq8rTFO8lmcuTBMe4=; b=KmqZRWU/yKsCwd0VlBLw/gzgetktxR5rWPa5tOqxPy/05uhZRkQLlJHsQbbz9mo5in sry1/c7pECCgFMewaQJDly/iCc+8wK8Qvm1zD54mLNxtjEziPVho7zfx9o7/B/YXxe5I 2YTfYHaPxgjLvrLMGz9ga21MIotuQv/YmBPyiKOXWGp0/A/69gakMZuF4q1ukumHvNtd XfUuBNJTKBrbCaDRXMhCaMkca0CIcQjgfCPboaPVGT68aAu2aV3RLckDv91V45BC+Gew VlzzuGCHf69pRN1DwVF2i58QAzDx69EHb6vNBzGRaLCxwexYPaxPsSazQePEBca192iS iQ/w== X-Gm-Message-State: APjAAAUa0x3GehkSVg7RdVDXpNSnaOCOQmyLvFc3QYkDsnAgLsqSQw7J Nf/ENNLCjBoJXn0yS8z149D7UA== X-Received: by 2002:adf:e4cd:: with SMTP id v13mr9918723wrm.165.1568144052158; Tue, 10 Sep 2019 12:34:12 -0700 (PDT) Received: from zen.linaroharston ([51.148.130.216]) by smtp.gmail.com with ESMTPSA id m17sm21089285wrs.9.2019.09.10.12.34.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2019 12:34:11 -0700 (PDT) Received: from zen.lan (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 3CB221FF8F; Tue, 10 Sep 2019 20:34:09 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 10 Sep 2019 20:34:06 +0100 Message-Id: <20190910193408.28917-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190910193408.28917-1-alex.bennee@linaro.org> References: <20190910193408.28917-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::444 Subject: [Qemu-devel] [PATCH v1 2/4] elf: move elf.h to elf/elf.h and split out types X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Cornelia Huck , Sagar Karandikar , "Michael S. Tsirkin" , Anthony Green , Palmer Dabbelt , Mark Cave-Ayland , qemu-devel@nongnu.org, Max Filippov , KONRAD Frederic , Alistair Francis , "Edgar E. Iglesias" , Marek Vasut , Jia Liu , Aleksandar Rikalo , Helge Deller , David Hildenbrand , Halil Pasic , Christian Borntraeger , =?utf-8?q?Herv=C3=A9_Poussineau?= , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , David Gibson , Artyom Tarasenko , Eduardo Habkost , Riku Voipio , Fabien Chouteau , "open list:S390-ccw boot" , qemu-arm@nongnu.org, Stafford Horne , =?utf-8?q?Alex_Benn=C3=A9e?= , Richard Henderson , "open list:RISC-V TCG CPUs" , Viktor Prutyanov , Thomas Huth , Bastian Koppelmann , Chris Wulff , Laurent Vivier , Michael Walle , "open list:PReP" , Aleksandar Markovic , Paolo Bonzini , Aurelien Jarno Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Most of the users of elf.h just want the standard Elf definitions. The couple that want more than that want an expansion based on ELF_CLASS which can be used for size agnostic code. The later is moved into elf/elf-types.inc.h to make it clearer what it is for. While doing that I also removed the whitespace damage. Signed-off-by: Alex Bennée --- bsd-user/elfload.c | 2 +- contrib/elf2dmp/qemu_elf.h | 2 +- disas.c | 2 +- dump/dump.c | 2 +- dump/win_dump.c | 2 +- hw/alpha/dp264.c | 2 +- hw/arm/armv7m.c | 2 +- hw/arm/boot.c | 2 +- hw/core/loader.c | 3 +- hw/cris/axis_dev88.c | 2 +- hw/cris/boot.c | 2 +- hw/hppa/machine.c | 2 +- hw/i386/multiboot.c | 2 +- hw/i386/pc.c | 2 +- hw/lm32/lm32_boards.c | 2 +- hw/lm32/milkymist.c | 2 +- hw/m68k/an5206.c | 2 +- hw/m68k/mcf5208.c | 2 +- hw/microblaze/boot.c | 2 +- hw/mips/mips_fulong2e.c | 2 +- hw/mips/mips_malta.c | 2 +- hw/mips/mips_mipssim.c | 2 +- hw/mips/mips_r4k.c | 2 +- hw/moxie/moxiesim.c | 2 +- hw/nios2/boot.c | 2 +- hw/openrisc/openrisc_sim.c | 2 +- hw/pci-host/prep.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mac_oldworld.c | 2 +- hw/ppc/ppc440_bamboo.c | 2 +- hw/ppc/prep.c | 2 +- hw/ppc/sam460ex.c | 2 +- hw/ppc/spapr.c | 2 +- hw/ppc/spapr_vio.c | 2 +- hw/ppc/virtex_ml507.c | 2 +- hw/riscv/boot.c | 2 +- hw/s390x/ipl.c | 2 +- hw/sparc/leon3.c | 2 +- hw/sparc/sun4m.c | 2 +- hw/sparc64/sun4u.c | 2 +- hw/tricore/tricore_testboard.c | 2 +- hw/xtensa/sim.c | 2 +- hw/xtensa/xtfpga.c | 2 +- include/elf/elf-types.inc.h | 63 ++++++++++++++++++++++++++++++++ include/{ => elf}/elf.h | 42 --------------------- include/hw/core/generic-loader.h | 2 +- linux-user/arm/cpu_loop.c | 2 +- linux-user/elfload.c | 5 +-- linux-user/main.c | 2 +- linux-user/mips/cpu_loop.c | 2 +- linux-user/riscv/cpu_loop.c | 2 +- target/arm/arch_dump.c | 2 +- target/i386/arch_dump.c | 2 +- target/ppc/arch_dump.c | 2 +- target/ppc/kvm.c | 2 +- target/s390x/arch_dump.c | 2 +- tcg/arm/tcg-target.inc.c | 2 +- tcg/ppc/tcg-target.inc.c | 2 +- tcg/s390/tcg-target.inc.c | 2 +- tcg/tcg.c | 5 ++- util/getauxval.c | 2 +- 62 files changed, 128 insertions(+), 104 deletions(-) create mode 100644 include/elf/elf-types.inc.h rename include/{ => elf}/elf.h (98%) -- 2.20.1 Acked-by: David Gibson Reviewed-by: Richard Henderson Reviewed-by: Laurent Vivier diff --git a/bsd-user/elfload.c b/bsd-user/elfload.c index 32378af7b2e..321ee98b86b 100644 --- a/bsd-user/elfload.c +++ b/bsd-user/elfload.c @@ -509,7 +509,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #define bswaptls(ptr) bswap32s(ptr) #endif -#include "elf.h" +#include "elf/elf.h" struct exec { diff --git a/contrib/elf2dmp/qemu_elf.h b/contrib/elf2dmp/qemu_elf.h index b2f0d9cbc9b..060d148d7f0 100644 --- a/contrib/elf2dmp/qemu_elf.h +++ b/contrib/elf2dmp/qemu_elf.h @@ -7,7 +7,7 @@ #ifndef ELF2DMP_QEMU_ELF_H #define ELF2DMP_QEMU_ELF_H -#include "elf.h" +#include "elf/elf.h" typedef struct QEMUCPUSegment { uint32_t selector; diff --git a/disas.c b/disas.c index 3e2bfa572b1..6f2370cfda7 100644 --- a/disas.c +++ b/disas.c @@ -1,7 +1,7 @@ /* General "disassemble this chunk" code. Used for debugging. */ #include "qemu/osdep.h" #include "disas/dis-asm.h" -#include "elf.h" +#include "elf/elf.h" #include "qemu/qemu-print.h" #include "cpu.h" diff --git a/dump/dump.c b/dump/dump.c index 6fb6e1245ad..6b084a21a2a 100644 --- a/dump/dump.c +++ b/dump/dump.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "qemu-common.h" #include "qemu/cutils.h" -#include "elf.h" +#include "elf/elf.h" #include "cpu.h" #include "exec/hwaddr.h" #include "monitor/monitor.h" diff --git a/dump/win_dump.c b/dump/win_dump.c index eda2a489742..8232c3cb6b3 100644 --- a/dump/win_dump.c +++ b/dump/win_dump.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "qemu-common.h" #include "qemu/cutils.h" -#include "elf.h" +#include "elf/elf.h" #include "cpu.h" #include "exec/hwaddr.h" #include "monitor/monitor.h" diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c index 51feee85581..87e5c77c69c 100644 --- a/hw/alpha/dp264.c +++ b/hw/alpha/dp264.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu-common.h" #include "cpu.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/loader.h" #include "alpha_sys.h" #include "qemu/error-report.h" diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c index 7a3c48f0026..559586fa527 100644 --- a/hw/arm/armv7m.c +++ b/hw/arm/armv7m.c @@ -15,7 +15,7 @@ #include "hw/arm/boot.h" #include "hw/loader.h" #include "hw/qdev-properties.h" -#include "elf.h" +#include "elf/elf.h" #include "sysemu/qtest.h" #include "sysemu/reset.h" #include "qemu/error-report.h" diff --git a/hw/arm/boot.c b/hw/arm/boot.c index bf97ef3e339..7818e5b5518 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -20,7 +20,7 @@ #include "hw/boards.h" #include "sysemu/reset.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "sysemu/device_tree.h" #include "qemu/config-file.h" #include "qemu/option.h" diff --git a/hw/core/loader.c b/hw/core/loader.c index 32f7cc7c33c..e0c6563e643 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -59,6 +59,7 @@ #include "hw/boards.h" #include "qemu/cutils.h" #include "sysemu/runstate.h" +#include "elf/elf.h" #include @@ -295,7 +296,7 @@ static void *load_at(int fd, off_t offset, size_t size) #endif #define ELF_CLASS ELFCLASS32 -#include "elf.h" +#include "elf/elf-types.inc.h" #define SZ 32 #define elf_word uint32_t diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c index 940c7dd1226..31dc391a637 100644 --- a/hw/cris/axis_dev88.c +++ b/hw/cris/axis_dev88.c @@ -32,7 +32,7 @@ #include "hw/boards.h" #include "hw/cris/etraxfs.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "boot.h" #include "exec/address-spaces.h" #include "sysemu/qtest.h" diff --git a/hw/cris/boot.c b/hw/cris/boot.c index 2d2cc0c7a53..0b8008ca0b2 100644 --- a/hw/cris/boot.c +++ b/hw/cris/boot.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "boot.h" #include "qemu/cutils.h" #include "sysemu/reset.h" diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 2736ce835ee..3c121f1a645 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -6,7 +6,7 @@ #include "qemu/osdep.h" #include "qemu-common.h" #include "cpu.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/loader.h" #include "hw/boards.h" #include "qemu/error-report.h" diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c index 9a59f954972..54a7e5f048e 100644 --- a/hw/i386/multiboot.c +++ b/hw/i386/multiboot.c @@ -28,7 +28,7 @@ #include "hw/nvram/fw_cfg.h" #include "multiboot.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "sysemu/sysemu.h" #include "qemu/error-report.h" diff --git a/hw/i386/pc.c b/hw/i386/pc.c index bad866fe44f..e84710a944a 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -39,7 +39,7 @@ #include "hw/timer/hpet.h" #include "hw/firmware/smbios.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "migration/vmstate.h" #include "multiboot.h" #include "hw/timer/mc146818rtc.h" diff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c index 5ae308bfcfb..12c60ad9b74 100644 --- a/hw/lm32/lm32_boards.c +++ b/hw/lm32/lm32_boards.c @@ -26,7 +26,7 @@ #include "hw/block/flash.h" #include "hw/boards.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "lm32_hwsetup.h" #include "lm32.h" #include "exec/address-spaces.h" diff --git a/hw/lm32/milkymist.c b/hw/lm32/milkymist.c index 460d322de57..9f3a2f2ff5f 100644 --- a/hw/lm32/milkymist.c +++ b/hw/lm32/milkymist.c @@ -31,7 +31,7 @@ #include "hw/boards.h" #include "hw/loader.h" #include "hw/qdev-properties.h" -#include "elf.h" +#include "elf/elf.h" #include "milkymist-hw.h" #include "hw/display/milkymist_tmu2.h" #include "lm32.h" diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c index 54ccbe1a822..12664b872bc 100644 --- a/hw/m68k/an5206.c +++ b/hw/m68k/an5206.c @@ -12,7 +12,7 @@ #include "hw/m68k/mcf.h" #include "hw/boards.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "exec/address-spaces.h" #include "qemu/error-report.h" #include "sysemu/qtest.h" diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index 012710d057d..42d79bd2f03 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -25,7 +25,7 @@ #include "hw/boards.h" #include "hw/loader.h" #include "hw/sysbus.h" -#include "elf.h" +#include "elf/elf.h" #include "exec/address-spaces.h" #define SYS_FREQ 166666666 diff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c index bade4d22c00..0c1020cd373 100644 --- a/hw/microblaze/boot.c +++ b/hw/microblaze/boot.c @@ -34,7 +34,7 @@ #include "sysemu/reset.h" #include "sysemu/sysemu.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "qemu/cutils.h" #include "boot.h" diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c index cf537dd7e63..4ba670cc909 100644 --- a/hw/mips/mips_fulong2e.c +++ b/hw/mips/mips_fulong2e.c @@ -37,7 +37,7 @@ #include "qemu/log.h" #include "hw/loader.h" #include "hw/ide.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/isa/vt82c686.h" #include "hw/timer/mc146818rtc.h" #include "hw/timer/i8254.h" diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c index 4d9c64b36ab..1c841298363 100644 --- a/hw/mips/mips_malta.c +++ b/hw/mips/mips_malta.c @@ -44,7 +44,7 @@ #include "hw/ide.h" #include "hw/irq.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/timer/mc146818rtc.h" #include "hw/timer/i8254.h" #include "exec/address-spaces.h" diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c index 282bbecb24e..d6acd53b3e3 100644 --- a/hw/mips/mips_mipssim.c +++ b/hw/mips/mips_mipssim.c @@ -38,7 +38,7 @@ #include "hw/boards.h" #include "hw/mips/bios.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/sysbus.h" #include "exec/address-spaces.h" #include "qemu/error-report.h" diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c index bc0be265441..7fc2fc51fee 100644 --- a/hw/mips/mips_r4k.c +++ b/hw/mips/mips_r4k.c @@ -27,7 +27,7 @@ #include "hw/mips/bios.h" #include "hw/ide.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/timer/mc146818rtc.h" #include "hw/input/i8042.h" #include "hw/timer/i8254.h" diff --git a/hw/moxie/moxiesim.c b/hw/moxie/moxiesim.c index 57af1b48912..bc1cc8b0bf8 100644 --- a/hw/moxie/moxiesim.c +++ b/hw/moxie/moxiesim.c @@ -37,7 +37,7 @@ #include "hw/loader.h" #include "hw/char/serial.h" #include "exec/address-spaces.h" -#include "elf.h" +#include "elf/elf.h" #define PHYS_MEM_BASE 0x80000000 #define FIRMWARE_BASE 0x1000 diff --git a/hw/nios2/boot.c b/hw/nios2/boot.c index d78bc9ed0e2..ec1eb15bcaa 100644 --- a/hw/nios2/boot.c +++ b/hw/nios2/boot.c @@ -39,7 +39,7 @@ #include "sysemu/reset.h" #include "sysemu/sysemu.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "boot.h" diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c index 79e70493fc7..f21a2962a90 100644 --- a/hw/openrisc/openrisc_sim.c +++ b/hw/openrisc/openrisc_sim.c @@ -24,7 +24,7 @@ #include "cpu.h" #include "hw/irq.h" #include "hw/boards.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/char/serial.h" #include "net/net.h" #include "hw/loader.h" diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c index 85d7ba90374..9568746d8e2 100644 --- a/hw/pci-host/prep.c +++ b/hw/pci-host/prep.c @@ -37,7 +37,7 @@ #include "hw/loader.h" #include "hw/or-irq.h" #include "exec/address-spaces.h" -#include "elf.h" +#include "elf/elf.h" #define TYPE_RAVEN_PCI_DEVICE "raven" #define TYPE_RAVEN_PCI_HOST_BRIDGE "raven-pcihost" diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 91cd4c26f91..add6277ad6c 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -36,7 +36,7 @@ #include "hw/ppc/ppc.h" #include "hw/qdev-properties.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/sysbus.h" #include "exec/address-spaces.h" #include "qemu/host-utils.h" diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index c5bbcc74335..50babbb7a67 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -65,7 +65,7 @@ #include "hw/ide.h" #include "hw/loader.h" #include "hw/fw-path-provider.h" -#include "elf.h" +#include "elf/elf.h" #include "qemu/error-report.h" #include "sysemu/kvm.h" #include "sysemu/reset.h" diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 0fa680b7499..64fe33cd1f3 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -44,7 +44,7 @@ #include "hw/ide.h" #include "hw/loader.h" #include "hw/fw-path-provider.h" -#include "elf.h" +#include "elf/elf.h" #include "qemu/error-report.h" #include "sysemu/kvm.h" #include "sysemu/reset.h" diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 4d95c0f8a88..15f39b332a8 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -23,7 +23,7 @@ #include "kvm_ppc.h" #include "sysemu/device_tree.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "exec/address-spaces.h" #include "hw/char/serial.h" #include "hw/ppc/ppc.h" diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 4f3c6bf1901..8bd3209dec7 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -49,7 +49,7 @@ #include "sysemu/reset.h" #include "exec/address-spaces.h" #include "trace.h" -#include "elf.h" +#include "elf/elf.h" #include "qemu/units.h" #include "kvm_ppc.h" diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 437e214210b..982b80e5bad 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -22,7 +22,7 @@ #include "sysemu/device_tree.h" #include "sysemu/block-backend.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "exec/address-spaces.h" #include "exec/memory.h" #include "ppc440.h" diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 222a325056c..57f8041ec81 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -36,7 +36,7 @@ #include "sysemu/runstate.h" #include "qemu/log.h" #include "hw/fw-path-provider.h" -#include "elf.h" +#include "elf/elf.h" #include "net/net.h" #include "sysemu/device_tree.h" #include "sysemu/cpus.h" diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c index 0803649658f..6d90322db0b 100644 --- a/hw/ppc/spapr_vio.c +++ b/hw/ppc/spapr_vio.c @@ -26,7 +26,7 @@ #include "hw/irq.h" #include "qemu/log.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/sysbus.h" #include "sysemu/kvm.h" #include "sysemu/device_tree.h" diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index 68625522d8a..ede7da4bbc2 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -35,7 +35,7 @@ #include "hw/boards.h" #include "sysemu/device_tree.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "qemu/error-report.h" #include "qemu/log.h" #include "qemu/option.h" diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index 4c63b5cf8a8..9a7b4a5ca87 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -25,7 +25,7 @@ #include "hw/boards.h" #include "hw/loader.h" #include "hw/riscv/boot.h" -#include "elf.h" +#include "elf/elf.h" #include "sysemu/qtest.h" #if defined(TARGET_RISCV32) diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index ca544d64c5e..cf4e06b633e 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -19,7 +19,7 @@ #include "sysemu/sysemu.h" #include "sysemu/tcg.h" #include "cpu.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/loader.h" #include "hw/qdev-properties.h" #include "hw/boards.h" diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index c5f1b1ee72e..735a823fd56 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -37,7 +37,7 @@ #include "sysemu/reset.h" #include "hw/boards.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "trace.h" #include "exec/address-spaces.h" diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 6c5a17a0205..d542a6c203c 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -49,7 +49,7 @@ #include "hw/empty_slot.h" #include "hw/irq.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "trace.h" /* diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 1ded2a4c9ab..79b15c8aec3 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -54,7 +54,7 @@ #include "hw/ide/pci.h" #include "hw/loader.h" #include "hw/fw-path-provider.h" -#include "elf.h" +#include "elf/elf.h" #include "trace.h" #define KERNEL_LOAD_ADDR 0x00404000 diff --git a/hw/tricore/tricore_testboard.c b/hw/tricore/tricore_testboard.c index aef3289f8c3..84e8d7b429f 100644 --- a/hw/tricore/tricore_testboard.c +++ b/hw/tricore/tricore_testboard.c @@ -26,7 +26,7 @@ #include "hw/boards.h" #include "hw/loader.h" #include "exec/address-spaces.h" -#include "elf.h" +#include "elf/elf.h" #include "hw/tricore/tricore.h" #include "qemu/error-report.h" diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c index 981dbb7bbeb..f8d96fc452c 100644 --- a/hw/xtensa/sim.c +++ b/hw/xtensa/sim.c @@ -32,7 +32,7 @@ #include "sysemu/sysemu.h" #include "hw/boards.h" #include "hw/loader.h" -#include "elf.h" +#include "elf/elf.h" #include "exec/memory.h" #include "exec/address-spaces.h" #include "qemu/error-report.h" diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 8220c7a3794..5e3ed738fa8 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -33,7 +33,7 @@ #include "hw/boards.h" #include "hw/loader.h" #include "hw/qdev-properties.h" -#include "elf.h" +#include "elf/elf.h" #include "exec/memory.h" #include "exec/address-spaces.h" #include "hw/char/serial.h" diff --git a/include/elf/elf-types.inc.h b/include/elf/elf-types.inc.h new file mode 100644 index 00000000000..35163adb2b5 --- /dev/null +++ b/include/elf/elf-types.inc.h @@ -0,0 +1,63 @@ +/* + * Elf Type Specialisation + * + * Copyright (c) 2019 + * Written by Alex Bennée + * + * This code is licensed under the GNU . + */ + +#ifndef _ELF_TYPES_INC_H_ +#define _ELF_TYPES_INC_H_ + +#ifndef ELF_CLASS +#error you must define ELF_CLASS before including elf-types.inc.h +#else + +#if ELF_CLASS == ELFCLASS32 + +#define elfhdr elf32_hdr +#define elf_phdr elf32_phdr +#define elf_note elf32_note +#define elf_shdr elf32_shdr +#define elf_sym elf32_sym +#define elf_addr_t Elf32_Off +#define elf_rela elf32_rela + +#ifdef ELF_USES_RELOCA +# define ELF_RELOC Elf32_Rela +#else +# define ELF_RELOC Elf32_Rel +#endif + +#ifndef ElfW +# define ElfW(x) Elf32_ ## x +# define ELFW(x) ELF32_ ## x +#endif + +#else /* ELF_CLASS == ELFCLASS64 */ + +#define elfhdr elf64_hdr +#define elf_phdr elf64_phdr +#define elf_note elf64_note +#define elf_shdr elf64_shdr +#define elf_sym elf64_sym +#define elf_addr_t Elf64_Off +#define elf_rela elf64_rela + +#ifdef ELF_USES_RELOCA +# define ELF_RELOC Elf64_Rela +#else +# define ELF_RELOC Elf64_Rel +#endif + +#ifndef ElfW +# define ElfW(x) Elf64_ ## x +# define ELFW(x) ELF64_ ## x +#endif + +#endif /* ELF_CLASS == ELFCLASS64 */ +#endif /* ELF_CLASS */ +#else +#error elf-types.inc.h should not be included twice in one compilation unit +#endif /* _ELF_TYPES_INC_H_ */ diff --git a/include/elf.h b/include/elf/elf.h similarity index 98% rename from include/elf.h rename to include/elf/elf.h index 3501e0c8d03..2e264c1a7a0 100644 --- a/include/elf.h +++ b/include/elf/elf.h @@ -1696,49 +1696,7 @@ struct elf32_fdpic_loadmap { }; #ifdef ELF_CLASS -#if ELF_CLASS == ELFCLASS32 - -#define elfhdr elf32_hdr -#define elf_phdr elf32_phdr -#define elf_note elf32_note -#define elf_shdr elf32_shdr -#define elf_sym elf32_sym -#define elf_addr_t Elf32_Off -#define elf_rela elf32_rela - -#ifdef ELF_USES_RELOCA -# define ELF_RELOC Elf32_Rela -#else -# define ELF_RELOC Elf32_Rel -#endif - -#else - -#define elfhdr elf64_hdr -#define elf_phdr elf64_phdr -#define elf_note elf64_note -#define elf_shdr elf64_shdr -#define elf_sym elf64_sym -#define elf_addr_t Elf64_Off -#define elf_rela elf64_rela - -#ifdef ELF_USES_RELOCA -# define ELF_RELOC Elf64_Rela -#else -# define ELF_RELOC Elf64_Rel -#endif - -#endif /* ELF_CLASS */ -#ifndef ElfW -# if ELF_CLASS == ELFCLASS32 -# define ElfW(x) Elf32_ ## x -# define ELFW(x) ELF32_ ## x -# else -# define ElfW(x) Elf64_ ## x -# define ELFW(x) ELF64_ ## x -# endif -#endif #endif /* ELF_CLASS */ diff --git a/include/hw/core/generic-loader.h b/include/hw/core/generic-loader.h index 9ffce1c5a30..ca97affd8e1 100644 --- a/include/hw/core/generic-loader.h +++ b/include/hw/core/generic-loader.h @@ -18,7 +18,7 @@ #ifndef GENERIC_LOADER_H #define GENERIC_LOADER_H -#include "elf.h" +#include "elf/elf.h" #include "hw/qdev-core.h" typedef struct GenericLoaderState { diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c index 8d65de5b9f4..970fff8b1bc 100644 --- a/linux-user/arm/cpu_loop.c +++ b/linux-user/arm/cpu_loop.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "qemu-common.h" #include "qemu.h" -#include "elf.h" +#include "elf/elf.h" #include "cpu_loop-common.h" #define get_user_code_u32(x, gaddr, env) \ diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 3365e192eb3..59a0d21c6f1 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -7,6 +7,7 @@ #include "qemu.h" #include "disas/disas.h" +#include "elf/elf.h" #include "qemu/path.h" #include "qemu/queue.h" #include "qemu/guest-random.h" @@ -1317,8 +1318,6 @@ static inline void init_thread(struct target_pt_regs *regs, #define ELF_DATA ELFDATA2MSB #define ELF_ARCH EM_S390 -#include "elf.h" - #define ELF_HWCAP get_elf_hwcap() #define GET_FEATURE(_feat, _hwcap) \ @@ -1512,7 +1511,7 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, #define bswaptls(ptr) bswap32s(ptr) #endif -#include "elf.h" +#include "elf/elf-types.inc.h" struct exec { diff --git a/linux-user/main.c b/linux-user/main.c index 47917bbb20f..c796a15700d 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -40,7 +40,7 @@ #include "qemu/timer.h" #include "qemu/envlist.h" #include "qemu/guest-random.h" -#include "elf.h" +#include "elf/elf.h" #include "trace/control.h" #include "target_elf.h" #include "cpu_loop-common.h" diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index 39915b3fde2..0d3f0738b58 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -21,7 +21,7 @@ #include "qemu-common.h" #include "qemu.h" #include "cpu_loop-common.h" -#include "elf.h" +#include "elf/elf.h" #include "internal.h" # ifdef TARGET_ABI_MIPSO32 diff --git a/linux-user/riscv/cpu_loop.c b/linux-user/riscv/cpu_loop.c index 12aa3c0f16e..f9f5beef431 100644 --- a/linux-user/riscv/cpu_loop.c +++ b/linux-user/riscv/cpu_loop.c @@ -22,7 +22,7 @@ #include "qemu/error-report.h" #include "qemu.h" #include "cpu_loop-common.h" -#include "elf.h" +#include "elf/elf.h" void cpu_loop(CPURISCVState *env) { diff --git a/target/arm/arch_dump.c b/target/arm/arch_dump.c index 26a2c098687..c05a2845883 100644 --- a/target/arm/arch_dump.c +++ b/target/arm/arch_dump.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "cpu.h" -#include "elf.h" +#include "elf/elf.h" #include "sysemu/dump.h" /* struct user_pt_regs from arch/arm64/include/uapi/asm/ptrace.h */ diff --git a/target/i386/arch_dump.c b/target/i386/arch_dump.c index 004141fc042..9eb1e2a8bcf 100644 --- a/target/i386/arch_dump.c +++ b/target/i386/arch_dump.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "sysemu/dump.h" -#include "elf.h" +#include "elf/elf.h" #include "sysemu/memory_mapping.h" #define ELF_NOTE_SIZE(hdr_size, name_size, desc_size) \ diff --git a/target/ppc/arch_dump.c b/target/ppc/arch_dump.c index 9ab04b2c38f..0e102be1ed5 100644 --- a/target/ppc/arch_dump.c +++ b/target/ppc/arch_dump.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "cpu.h" -#include "elf.h" +#include "elf/elf.h" #include "sysemu/dump.h" #include "sysemu/kvm.h" #include "exec/helper-proto.h" diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 8c5b1f25cc9..c2e5f72ab0d 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -48,7 +48,7 @@ #include "qemu/cutils.h" #include "qemu/main-loop.h" #include "qemu/mmap-alloc.h" -#include "elf.h" +#include "elf/elf.h" #include "sysemu/kvm_int.h" #define PROC_DEVTREE_CPU "/proc/device-tree/cpus/" diff --git a/target/s390x/arch_dump.c b/target/s390x/arch_dump.c index 50fa0ae4b67..5fe9519d26c 100644 --- a/target/s390x/arch_dump.c +++ b/target/s390x/arch_dump.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "internal.h" -#include "elf.h" +#include "elf/elf.h" #include "sysemu/dump.h" diff --git a/tcg/arm/tcg-target.inc.c b/tcg/arm/tcg-target.inc.c index 94d80d79d1f..e04f726e4a6 100644 --- a/tcg/arm/tcg-target.inc.c +++ b/tcg/arm/tcg-target.inc.c @@ -22,7 +22,7 @@ * THE SOFTWARE. */ -#include "elf.h" +#include "elf/elf.h" #include "tcg-pool.inc.c" int arm_arch = __ARM_ARCH; diff --git a/tcg/ppc/tcg-target.inc.c b/tcg/ppc/tcg-target.inc.c index 815edac077f..4886f8c0d39 100644 --- a/tcg/ppc/tcg-target.inc.c +++ b/tcg/ppc/tcg-target.inc.c @@ -22,7 +22,7 @@ * THE SOFTWARE. */ -#include "elf.h" +#include "elf/elf.h" #include "tcg-pool.inc.c" #if defined _CALL_DARWIN || defined __APPLE__ diff --git a/tcg/s390/tcg-target.inc.c b/tcg/s390/tcg-target.inc.c index 8aaa4cebe8d..82a81d2d94d 100644 --- a/tcg/s390/tcg-target.inc.c +++ b/tcg/s390/tcg-target.inc.c @@ -30,7 +30,7 @@ #endif #include "tcg-pool.inc.c" -#include "elf.h" +#include "elf/elf.h" /* ??? The translation blocks produced by TCG are generally small enough to be entirely reachable with a 16-bit displacement. Leaving the option for diff --git a/tcg/tcg.c b/tcg/tcg.c index 16b2d0e0ece..b8e2c7956b7 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -50,6 +50,8 @@ #include "tcg-op.h" +#include "elf/elf.h" + #if UINTPTR_MAX == UINT32_MAX # define ELF_CLASS ELFCLASS32 #else @@ -61,7 +63,8 @@ # define ELF_DATA ELFDATA2LSB #endif -#include "elf.h" +#include "elf/elf-types.inc.h" + #include "exec/log.h" #include "sysemu/sysemu.h" diff --git a/util/getauxval.c b/util/getauxval.c index 36afdfb9e62..ee216c81c0b 100644 --- a/util/getauxval.c +++ b/util/getauxval.c @@ -36,7 +36,7 @@ unsigned long qemu_getauxval(unsigned long key) return getauxval(key); } #elif defined(__linux__) -#include "elf.h" +#include "elf/elf.h" /* Our elf.h doesn't contain Elf32_auxv_t and Elf64_auxv_t, which is ok because that just makes it easier to define it properly for the host here. */ From patchwork Tue Sep 10 19:34:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 173549 Delivered-To: patch@linaro.org Received: by 2002:a05:6e02:ce:0:0:0:0 with SMTP id r14csp6236605ilq; Tue, 10 Sep 2019 12:34:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqxGfaGx6s8fw25myHM9K3VOXsUwsgz37lzpNPdSXjVi5T+q/HMQA5vdf95pKBpYrmICdmVZ X-Received: by 2002:a37:b041:: with SMTP id z62mr13360302qke.94.1568144088141; Tue, 10 Sep 2019 12:34:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568144088; cv=none; d=google.com; s=arc-20160816; b=hckacTYrhI+U2wj3fHZvAuH68valOeMxfL6Ezu8GftXqE8++SGbfPRZjSGBQ5Qk96B JadDvjbMaI3WJoxkQNeFwq2vntzg9mSMs6xkT4npsP6m/eaJnbKbi0d5LUhFA/+P/eCt 8B052v2+iKicjz1xjdMg0zxP3WPF4jevjq5pIIMctJ2ySUfOvALqkQ5WQcLsVoE/1Ji/ PFkm9xZRv725akEkjhVNV4rZEdtRTmIIOoMSLYTtBNkx0V3xrStWun9NSwO1ESdOJGJj 5NxXTO865sn4SoHHSEWKcnXXaGTmnEp28MBRBA6A8fJFS/feF8qDRKk0twlpHIBDZN88 MdhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=05vMXPIxoWx34Tv2XwUiZnuEHt704CpxHZvOBau6J1M=; b=A7ZDHCz3+4wnvDXaTryMLjppAMb3iSXJIL69BdJbKpqxHXiO8RFpKW7EBBuQdiVCPn nTrWhfjbO4k2caxdka/Tgjb8DHi/x5nOsIt/Qmi8ze0LpE3x6h1jNTnv62SVRzCRt7Z6 4cImFWqAxgWFrNc2DwN7akUyznZ/ul4rjskjC6yFhtYyLzpbx8iWiIQWLVl2cRxSvbdJ u/b/Cxd9iomzCcYQGi73FGibqpTOCXytWkyehuCU+vXayFbmu5k3EQJIUjOzDA5t2Ts2 smFJmfzRxD7AcyTvte4ubUn+qCpq8+Ggq92wSip3hRnSc2mKU3gbU94Ttt0AGtmH6J4o OJ+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=nZjJ9G1i; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d13si1405314qki.375.2019.09.10.12.34.48 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 10 Sep 2019 12:34:48 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=nZjJ9G1i; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:44334 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i7luZ-0000zQ-4k for patch@linaro.org; Tue, 10 Sep 2019 15:34:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58916) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i7lu3-0000vi-H1 for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i7lu2-0006lW-1m for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:15 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:40022) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i7lu1-0006kO-Ov for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:13 -0400 Received: by mail-wm1-x344.google.com with SMTP id t9so833197wmi.5 for ; Tue, 10 Sep 2019 12:34:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=05vMXPIxoWx34Tv2XwUiZnuEHt704CpxHZvOBau6J1M=; b=nZjJ9G1iqf2I/2iNeYJ8qtRThltUGZ4lmb+YPY9enONu1JgNvbIj0ME5o8R7rS7w2p uH3eCdGKUAg9DbG5ikgC45/WV4PbyErnNG9iSabL+p1uqGoUATYFZPmfVwZB9JIkBDS4 P0U8cRO3WdWxOXS5R58I8S2lSI6OybmTltRaUnIPDHHGme+V6toCFaz5QVz8VL1Aktqj GMJ0iDg8JfuFWACyFiuVWaUqL7+Rfn8H457CiVDcs/o+PghTpp1HGoyJ30UIPQpGEqNC FjXXvzPHL95dyHjg3IjVgNq2aBS0EUoRlg3p0/ncVLkYJZHRkjHQCanGMB4EMssiD/wR WB0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=05vMXPIxoWx34Tv2XwUiZnuEHt704CpxHZvOBau6J1M=; b=QlBvSNGxu6LNF8Kb+TvJi3h7JK5pSaGrkdAMfitUI+0vR0n/+pS0laXgPgYvIFF9YV 2KWp0HG3GFMInOHi9Ix8QdACrxfNnPOKN+AHqT+mFhC+JITYA3udLB28jmTOtjGRElX7 fGWwRlMWsXF49sAIJkf6+n3+ZmM4nsI2SmpuEgY4adVs9ZWF7a0iiCWAW3BveT8MhOWD fGwYKHE3phPAqAWRn9RrT4yx+hgGd20R+je+XXpvkIUiSXi7rvJQQBJ3IUUKYyMaS+lM qPxM4I8aJaP5G+Lpb9mVc91LKzWEx45aVKs0HGmYKZZ6+YF/5cjrCBkP+KEheVKJ5BCp LrsQ== X-Gm-Message-State: APjAAAUsHfH9jmYQuDlQ7ADxFMwJvY8JMOd+AlpuzTvQmJEDlm7hNVjj 0OCIbU4mW+nJk+bx1ZnPeD4phA== X-Received: by 2002:a1c:c911:: with SMTP id f17mr876238wmb.73.1568144052633; Tue, 10 Sep 2019 12:34:12 -0700 (PDT) Received: from zen.linaroharston ([51.148.130.216]) by smtp.gmail.com with ESMTPSA id l1sm22205092wrb.1.2019.09.10.12.34.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2019 12:34:11 -0700 (PDT) Received: from zen.lan (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 544321FF90; Tue, 10 Sep 2019 20:34:09 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 10 Sep 2019 20:34:07 +0100 Message-Id: <20190910193408.28917-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190910193408.28917-1-alex.bennee@linaro.org> References: <20190910193408.28917-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PATCH v1 3/4] elf: move elf_ops.h into include/elf/ and rename X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Lets keep all the Elf manipulation bits together. Also rename the file to better reflect how it is used and add a little header to the file. Signed-off-by: Alex Bennée --- hw/core/loader.c | 4 ++-- include/{hw/elf_ops.h => elf/elf_ops.inc.h} | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) rename include/{hw/elf_ops.h => elf/elf_ops.inc.h} (98%) -- 2.20.1 diff --git a/hw/core/loader.c b/hw/core/loader.c index e0c6563e643..886179a4947 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -302,7 +302,7 @@ static void *load_at(int fd, off_t offset, size_t size) #define elf_word uint32_t #define elf_sword int32_t #define bswapSZs bswap32s -#include "hw/elf_ops.h" +#include "elf/elf_ops.inc.h" #undef elfhdr #undef elf_phdr @@ -324,7 +324,7 @@ static void *load_at(int fd, off_t offset, size_t size) #define elf_sword int64_t #define bswapSZs bswap64s #define SZ 64 -#include "hw/elf_ops.h" +#include "elf/elf_ops.inc.h" const char *load_elf_strerror(int error) { diff --git a/include/hw/elf_ops.h b/include/elf/elf_ops.inc.h similarity index 98% rename from include/hw/elf_ops.h rename to include/elf/elf_ops.inc.h index 1496d7e7536..a820bd821d5 100644 --- a/include/hw/elf_ops.h +++ b/include/elf/elf_ops.inc.h @@ -1,3 +1,12 @@ +/* + * Macro expansions for Elf operations. This is included in a + * compilation unit with appropriate definitions for SZ and elf + * headers to generate utility functions for reading 32 and 64 bit elf + * headers. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + static void glue(bswap_ehdr, SZ)(struct elfhdr *ehdr) { bswap16s(&ehdr->e_type); /* Object file type */ From patchwork Tue Sep 10 19:34:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 173550 Delivered-To: patch@linaro.org Received: by 2002:a05:6e02:ce:0:0:0:0 with SMTP id r14csp6236703ilq; Tue, 10 Sep 2019 12:34:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqxVXZjLuIFq3n5vOQy76FlZ0IzQH4Tve/9MTGPVT+UbPrBdOBDhkjy8FhqxtekpIFtscidd X-Received: by 2002:ac8:4817:: with SMTP id g23mr27309635qtq.372.1568144092680; Tue, 10 Sep 2019 12:34:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568144092; cv=none; d=google.com; s=arc-20160816; b=zzc7OhhKmkd0Ql+F9WCV9H6pcGM0EFc64IsDgiZcVZF1bbxDYSORMgUDrDxt19Zqv4 xriGJQilcccD8NiulsKBL1aeSsS1VTxoOkshS4qg2DNZKoE7CSV59QXHY8ME6DK6tG1S c1EKNwIK6c6+1vPWYwsbejegrJ+fm4k976pAZ/pQusteQT9QSafDhIFV8BHpcAsrF2t/ ZgAel9XJ3Yb9A1CH6odelb67vjr6+MQ0ApSA7xHkWfk7qHTtE3VVcPJydPDXscWCalEe ipufyVeid0yvfu8jkpN/BCiJ4CjqeHQJXiI6DGRMtPyOAnLtJ6Shcf/PSgROela6Kv0k 037Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=3O9EXRDiG8lwCqPTGZE4nRj1SK0nw1gH8b5voet+7G4=; b=a4k7oiW+VUheepzIY3u6yjVCT6oHV3lbneBX8um6K7Y50uLD7tbA1tyttTF7h5PDpj 2nu96ma+GyPkU7tX86A9R3pGEoWe7KYdxc+OHT6rtRl86jnVi5lhypjWI/6HUNR3FwEx JeiP43ILUj2HHqdZF2uMAzLWN3ddydUHztFe2U1crHHWe4RxLBimMEx5+z+gO8FzWcU5 JE5u44a9QBs0TE8DtfU04lWLCgBUWI4/CEBVKebZZw/ipyAppp8ykpiKUucurQliw2l4 aunKOtzo9b3goJ+GDmo2uy9yeCxYzIjGeHOXAjCsLEa41hp6+wVYks0M4L7g3ruDzPw5 +21A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ok9sG2dr; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id m128si674704qkd.289.2019.09.10.12.34.52 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 10 Sep 2019 12:34:52 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=ok9sG2dr; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:44362 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i7lud-00014z-QO for patch@linaro.org; Tue, 10 Sep 2019 15:34:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58950) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i7lu6-0000yq-5f for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i7lu2-0006mV-NT for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:17 -0400 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:40544) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i7lu2-0006l8-Fg for qemu-devel@nongnu.org; Tue, 10 Sep 2019 15:34:14 -0400 Received: by mail-wr1-x441.google.com with SMTP id w13so21872081wru.7 for ; Tue, 10 Sep 2019 12:34:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3O9EXRDiG8lwCqPTGZE4nRj1SK0nw1gH8b5voet+7G4=; b=ok9sG2drhxGaTcRjHImZarNSTWYdKF6qlsF+2On5RfTVYyIHeDVPWG85Te9b1gxgLU SS2X+GjnELhF8uKHt3Mwn+NfaNb9WItgH3zpEfHo+mXkWp52xO33Cu5KKf3c1ly8f2oV DWLWdVMX7y3bnsyLUeftLXcFPYFbO5Kduz3//0W/5lexSUziXnSWnHlUoREZeUBvX28u LtYQ/BUWgIvPJMJ35nJ7ID4wAuSxygPVnx/0CSXyAfXllU9S0Iq8AkCfyr8d9Q0QukfW R/utiGzh6W7uqBU6QkOHEzqd4QZeWF8xQoWhI5lZjn8vfKpd/NxJY74VEXqUGydXIb4V 7QbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3O9EXRDiG8lwCqPTGZE4nRj1SK0nw1gH8b5voet+7G4=; b=UdvRkJ63jn+e/L2SPaXgxzXCFdWxXTlLb+1/1YimUjJQguTUT2whqVk2vRTlSdCX6M ra+xMCxOjIk2IF2yKgaVUXgL7OeWo2TVu2IG5F0OhZiPOQ/bnh8Ah/+BxDPpRmt9tksh FktvfFRmrUMW4VpHQz8gRIEY5k3OXAtxCHVQ13D0At/+AvscMyQs1b/Xw1aYiAaW6dL4 26KblyUEdaBZnqqdFdmQfjjvrWKkLgCVQ5ohKPaKgOnelK1gEs6Ww9+MtXknnQ1lIiHN 0DBtSkkIXzNs4dU3lN0vDOz0RBOUOf+9wzpxZ6e1OCLQNvhTcO/UMoImPSOSmNPsFZ91 eb+g== X-Gm-Message-State: APjAAAUIaePi2dDQeM1kL1jP+ntxRSPFoNIuPW9rl1RS5UBINOJ/GVbJ L6m6SwyFFWf26ApQD5Xc2RvABA== X-Received: by 2002:a05:6000:49:: with SMTP id k9mr7739815wrx.21.1568144053125; Tue, 10 Sep 2019 12:34:13 -0700 (PDT) Received: from zen.linaroharston ([51.148.130.216]) by smtp.gmail.com with ESMTPSA id b194sm925871wmg.46.2019.09.10.12.34.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2019 12:34:11 -0700 (PDT) Received: from zen.lan (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 6B4941FF91; Tue, 10 Sep 2019 20:34:09 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Tue, 10 Sep 2019 20:34:08 +0100 Message-Id: <20190910193408.28917-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190910193408.28917-1-alex.bennee@linaro.org> References: <20190910193408.28917-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::441 Subject: [Qemu-devel] [PATCH v1 4/4] elf: move ELF_ARCH definition to elf-arch.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Riku Voipio , qemu-arm@nongnu.org, =?utf-8?q?Alex_?= =?utf-8?q?Benn=C3=A9e?= , qemu-devel@nongnu.org, Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This is preparatory for plugins which will want to report the architecture to plugins. Move the ELF_ARCH definition out of the loader and into its own header. Signed-off-by: Alex Bennée --- bsd-user/elfload.c | 13 +---- include/elf/elf-arch.h | 109 +++++++++++++++++++++++++++++++++++++++++ linux-user/elfload.c | 27 ++-------- 3 files changed, 115 insertions(+), 34 deletions(-) create mode 100644 include/elf/elf-arch.h -- 2.20.1 diff --git a/bsd-user/elfload.c b/bsd-user/elfload.c index 321ee98b86b..adaae0e0dca 100644 --- a/bsd-user/elfload.c +++ b/bsd-user/elfload.c @@ -5,6 +5,7 @@ #include "qemu.h" #include "disas/disas.h" #include "qemu/path.h" +#include "elf/elf-arch.h" #ifdef _ARCH_PPC64 #undef ARCH_DLINFO @@ -12,7 +13,6 @@ #undef ELF_HWCAP #undef ELF_CLASS #undef ELF_DATA -#undef ELF_ARCH #endif /* from personality.h */ @@ -115,7 +115,6 @@ static uint32_t get_elf_hwcap(void) #define ELF_CLASS ELFCLASS64 #define ELF_DATA ELFDATA2LSB -#define ELF_ARCH EM_X86_64 static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { @@ -141,7 +140,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i */ #define ELF_CLASS ELFCLASS32 #define ELF_DATA ELFDATA2LSB -#define ELF_ARCH EM_386 static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { @@ -176,7 +174,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #else #define ELF_DATA ELFDATA2LSB #endif -#define ELF_ARCH EM_ARM static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { @@ -231,7 +228,6 @@ enum #define ELF_CLASS ELFCLASS64 #define ELF_DATA ELFDATA2MSB -#define ELF_ARCH EM_SPARCV9 #define STACK_BIAS 2047 @@ -265,7 +261,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #define ELF_CLASS ELFCLASS32 #define ELF_DATA ELFDATA2MSB -#define ELF_ARCH EM_SPARC static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { @@ -302,7 +297,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #else #define ELF_DATA ELFDATA2LSB #endif -#define ELF_ARCH EM_PPC /* * We need to put in some extra aux table entries to tell glibc what @@ -388,7 +382,6 @@ static inline void init_thread(struct target_pt_regs *_regs, struct image_info * #else #define ELF_DATA ELFDATA2LSB #endif -#define ELF_ARCH EM_MIPS static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { @@ -410,7 +403,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #define ELF_CLASS ELFCLASS32 #define ELF_DATA ELFDATA2LSB -#define ELF_ARCH EM_SH static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { @@ -432,7 +424,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #define ELF_CLASS ELFCLASS32 #define ELF_DATA ELFDATA2LSB -#define ELF_ARCH EM_CRIS static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { @@ -452,7 +443,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #define ELF_CLASS ELFCLASS32 #define ELF_DATA ELFDATA2MSB -#define ELF_ARCH EM_68K /* ??? Does this need to do anything? #define ELF_PLAT_INIT(_r) */ @@ -477,7 +467,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #define ELF_CLASS ELFCLASS64 #define ELF_DATA ELFDATA2MSB -#define ELF_ARCH EM_ALPHA static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { diff --git a/include/elf/elf-arch.h b/include/elf/elf-arch.h new file mode 100644 index 00000000000..9e052543c51 --- /dev/null +++ b/include/elf/elf-arch.h @@ -0,0 +1,109 @@ +/* + * Elf Architecture Definition + * + * This is a simple expansion to define common Elf types for the + * various machines for the various places it's needed in the source + * tree. + * + * Copyright (c) 2019 Alex Bennée + * + * SPDX-License-Identifier: GPL-2.0-or-later + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#ifndef _ELF_ARCH_H_ +#define _ELF_ARCH_H_ + +#include "elf/elf.h" + +#ifndef NEED_CPU_H +#error Needs an target definition +#endif + +#ifdef ELF_ARCH +#error ELF_ARCH should only be defined once in this file +#endif + +#ifdef TARGET_I386 +#ifdef TARGET_X86_64 +#define ELF_ARCH EM_X86_64 +#else +#define ELF_ARCH EM_386 +#endif +#endif + +#ifdef TARGET_ARM +#ifndef TARGET_AARCH64 +#define ELF_ARCH EM_ARM +#else +#define ELF_ARCH EM_AARCH64 +#endif +#endif + +#ifdef TARGET_SPARC +#ifdef TARGET_SPARC64 +#define ELF_ARCH EM_SPARCV9 +#else +#define ELF_ARCH EM_SPARC +#endif +#endif + +#ifdef TARGET_PPC +#define ELF_ARCH EM_PPC +#endif + +#ifdef TARGET_MIPS +#define ELF_ARCH EM_MIPS +#endif + +#ifdef TARGET_MICROBLAZE +#define ELF_ARCH EM_MICROBLAZE +#endif + +#ifdef TARGET_NIOS2 +#define ELF_ARCH EM_ALTERA_NIOS2 +#endif + +#ifdef TARGET_OPENRISC +#define ELF_ARCH EM_OPENRISC +#endif + +#ifdef TARGET_SH4 +#define ELF_ARCH EM_SH +#endif + +#ifdef TARGET_CRIS +#define ELF_ARCH EM_CRIS +#endif + +#ifdef TARGET_M68K +#define ELF_ARCH EM_68K +#endif + +#ifdef TARGET_ALPHA +#define ELF_ARCH EM_ALPHA +#endif + +#ifdef TARGET_S390X +#define ELF_ARCH EM_S390 +#endif + +#ifdef TARGET_TILEGX +#define ELF_ARCH EM_TILEGX +#endif + +#ifdef TARGET_RISCV +#define ELF_ARCH EM_RISCV +#endif + +#ifdef TARGET_HPPA +#define ELF_ARCH EM_PARISC +#endif + +#ifdef TARGET_XTENSA +#define ELF_ARCH EM_XTENSA +#endif + +#endif /* _ELF_ARCH_H_ */ diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 59a0d21c6f1..3ac7016a7e3 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -8,10 +8,15 @@ #include "qemu.h" #include "disas/disas.h" #include "elf/elf.h" +#include "elf/elf-arch.h" #include "qemu/path.h" #include "qemu/queue.h" #include "qemu/guest-random.h" +#ifndef ELF_ARCH +#error something got missed +#endif + #ifdef _ARCH_PPC64 #undef ARCH_DLINFO #undef ELF_PLATFORM @@ -19,7 +24,6 @@ #undef ELF_HWCAP2 #undef ELF_CLASS #undef ELF_DATA -#undef ELF_ARCH #endif #define ELF_OSABI ELFOSABI_SYSV @@ -148,7 +152,6 @@ static uint32_t get_elf_hwcap(void) #define ELF_START_MMAP 0x2aaaaab000ULL #define ELF_CLASS ELFCLASS64 -#define ELF_ARCH EM_X86_64 static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { @@ -211,7 +214,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUX86State *en * These are used to set parameters in the core dumps. */ #define ELF_CLASS ELFCLASS32 -#define ELF_ARCH EM_386 static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) @@ -273,7 +275,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUX86State *en #define ELF_START_MMAP 0x80000000 -#define ELF_ARCH EM_ARM #define ELF_CLASS ELFCLASS32 static inline void init_thread(struct target_pt_regs *regs, @@ -539,7 +540,6 @@ static const char *get_elf_platform(void) /* 64 bit ARM definitions */ #define ELF_START_MMAP 0x80000000 -#define ELF_ARCH EM_AARCH64 #define ELF_CLASS ELFCLASS64 #ifdef TARGET_WORDS_BIGENDIAN # define ELF_PLATFORM "aarch64_be" @@ -667,7 +667,6 @@ static uint32_t get_elf_hwcap(void) #endif #define ELF_CLASS ELFCLASS64 -#define ELF_ARCH EM_SPARCV9 #define STACK_BIAS 2047 @@ -696,7 +695,6 @@ static inline void init_thread(struct target_pt_regs *regs, | HWCAP_SPARC_MULDIV) #define ELF_CLASS ELFCLASS32 -#define ELF_ARCH EM_SPARC static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) @@ -728,8 +726,6 @@ static inline void init_thread(struct target_pt_regs *regs, #endif -#define ELF_ARCH EM_PPC - /* Feature masks for the Aux Vector Hardware Capabilities (AT_HWCAP). See arch/powerpc/include/asm/cputable.h. */ enum { @@ -921,7 +917,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUPPCState *en #else #define ELF_CLASS ELFCLASS32 #endif -#define ELF_ARCH EM_MIPS #define elf_check_arch(x) ((x) == EM_MIPS || (x) == EM_NANOMIPS) @@ -1014,7 +1009,6 @@ static uint32_t get_elf_hwcap(void) #define elf_check_arch(x) ( (x) == EM_MICROBLAZE || (x) == EM_MICROBLAZE_OLD) #define ELF_CLASS ELFCLASS32 -#define ELF_ARCH EM_MICROBLAZE static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) @@ -1053,7 +1047,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUMBState *env #define elf_check_arch(x) ((x) == EM_ALTERA_NIOS2) #define ELF_CLASS ELFCLASS32 -#define ELF_ARCH EM_ALTERA_NIOS2 static void init_thread(struct target_pt_regs *regs, struct image_info *infop) { @@ -1107,7 +1100,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, #define ELF_START_MMAP 0x08000000 -#define ELF_ARCH EM_OPENRISC #define ELF_CLASS ELFCLASS32 #define ELF_DATA ELFDATA2MSB @@ -1146,7 +1138,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, #define ELF_START_MMAP 0x80000000 #define ELF_CLASS ELFCLASS32 -#define ELF_ARCH EM_SH static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) @@ -1228,7 +1219,6 @@ static uint32_t get_elf_hwcap(void) #define ELF_START_MMAP 0x80000000 #define ELF_CLASS ELFCLASS32 -#define ELF_ARCH EM_CRIS static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) @@ -1245,7 +1235,6 @@ static inline void init_thread(struct target_pt_regs *regs, #define ELF_START_MMAP 0x80000000 #define ELF_CLASS ELFCLASS32 -#define ELF_ARCH EM_68K /* ??? Does this need to do anything? #define ELF_PLAT_INIT(_r) */ @@ -1296,7 +1285,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUM68KState *e #define ELF_START_MMAP (0x30000000000ULL) #define ELF_CLASS ELFCLASS64 -#define ELF_ARCH EM_ALPHA static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) @@ -1316,7 +1304,6 @@ static inline void init_thread(struct target_pt_regs *regs, #define ELF_CLASS ELFCLASS64 #define ELF_DATA ELFDATA2MSB -#define ELF_ARCH EM_S390 #define ELF_HWCAP get_elf_hwcap() @@ -1362,7 +1349,6 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i #define ELF_CLASS ELFCLASS64 #define ELF_DATA ELFDATA2LSB -#define ELF_ARCH EM_TILEGX static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) @@ -1379,7 +1365,6 @@ static inline void init_thread(struct target_pt_regs *regs, #ifdef TARGET_RISCV #define ELF_START_MMAP 0x80000000 -#define ELF_ARCH EM_RISCV #ifdef TARGET_RISCV32 #define ELF_CLASS ELFCLASS32 @@ -1402,7 +1387,6 @@ static inline void init_thread(struct target_pt_regs *regs, #define ELF_START_MMAP 0x80000000 #define ELF_CLASS ELFCLASS32 -#define ELF_ARCH EM_PARISC #define ELF_PLATFORM "PARISC" #define STACK_GROWS_DOWN 0 #define STACK_ALIGNMENT 64 @@ -1427,7 +1411,6 @@ static inline void init_thread(struct target_pt_regs *regs, #define ELF_START_MMAP 0x20000000 #define ELF_CLASS ELFCLASS32 -#define ELF_ARCH EM_XTENSA static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop)