From patchwork Tue Sep 26 20:14:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 114287 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4239145qgf; Tue, 26 Sep 2017 13:17:19 -0700 (PDT) X-Received: by 10.55.82.194 with SMTP id g185mr16093331qkb.282.1506457039366; Tue, 26 Sep 2017 13:17:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506457039; cv=none; d=google.com; s=arc-20160816; b=HKk/Ty8uYwUoeAQRhHdUZ6JDGAX46YbyUGEx2/mG+Rj3vSnT+HYCiBnU1BuwKoWjiv 4EA4QzhrqbaGD7dacgLi1hEzA1d9ziLRFpHg1dpzf9A/LqDGkLftN6JllUrkM09NmjkN 0CB5nmtZ/xAFbeB9fzk/WReM9xYzpxcuaiqyzuJljBFySRpoW3bbJHyoroTwl5lRo9h3 39qhARmpSx0MchzsP7BXmHGM0N8RNXsoeJEUiUIY5VWyo+UEAf1FnWC16IrfTUeJzGFd q2n4SBiAcM1Q+hP1GlTyPrNS26GOYnLB4/28SCiLeqiDUYjoV4rTtUJl0h3n79uy3nBx Aj5Q== 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:arc-authentication-results; bh=L4w7e6YVtwe6n3TScz7OlWevdXr+V6CRdMWP0MnC9cE=; b=Ivkf5cfY1MmRVqx0wpteLDJkeFj4wnfoezOpgcYEN04SLMestbaEmQTuHJZFCWzd84 gmAkGHTg0PwVdrsWpZV992BYnoLiQmOg+6wjHRzFL8WKf33tvFAQnO6pIgVrZgOoRWX+ Ig2ljx/BxbE3SH+DYxatNNzvE/zgc0hzfudVFQA6T2/21Unp2QbNyYASvcCbJjg37YYG bW4SRqplnyU9w2mTceap/dLgUhE8Vhkh0HXgV+6a0cXhNjHS4xXp0M7fvug3mWrKYxJI SWLOLyL3ki/AW5AE3tJDsjnku/ScppnffYsBwKjVP41ob4+9otw3F0kKT2ZGTuNetseK qJ4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=hXtYv0JN; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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. [208.118.235.17]) by mx.google.com with ESMTPS id u79si1237966qku.7.2017.09.26.13.17.18 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 26 Sep 2017 13:17:19 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=hXtYv0JN; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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]:50989 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwI8-0004em-HY for patch@linaro.org; Tue, 26 Sep 2017 16:17:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43882) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwFW-0002sb-S6 for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwFV-00036Q-4P for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:34 -0400 Received: from mail-pg0-x235.google.com ([2607:f8b0:400e:c05::235]:43649) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwwFU-000365-Uj for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:33 -0400 Received: by mail-pg0-x235.google.com with SMTP id u18so6520397pgo.0 for ; Tue, 26 Sep 2017 13:14:32 -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=L4w7e6YVtwe6n3TScz7OlWevdXr+V6CRdMWP0MnC9cE=; b=hXtYv0JN4oZ+JG0EPYHd81APZvFIxuqzEixwzBB76v2uR9oSE4YmZE2bwNm3MwTSQb brOBcusOmvKC47OY2TEiJGCcgd/35Q+dEuiB255lqMthkgEW8bxkIMnOIsJQKK4tOv5E U1eTc/HC4YipOZvh5S4TgqV+O1ORNaSRCuyJc= 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=L4w7e6YVtwe6n3TScz7OlWevdXr+V6CRdMWP0MnC9cE=; b=BhehGh5z6pllffaZcW013FBhBZcnL0BiUc5bAMQmy02nL/FhJq5/RvJSP+Sb/AxrF8 oYoUYooLgX3mXpVeVHeJqXfWYm6pORo+BiOAChJnEp/mu5dGdli5G0aZuxOyweAnoNXi DOKPtDcIas8mIBiqmeVC0D/mgYVBq23G7XtlEPJXM1m+8rK1GLlqoUFW9xf1eiOYgi+O 6dux3vEyeryvJaYcdHE/ZdzLi3M4RZZYTEJAr2FcyYpYyDDxGC1+XV4nwoVB2Fx9NjUg XoM/TH6hSYSB5Ti4hq6e5wPQN4fdULl+tywkcrKzCWQNG7+IoE/JoXNnrlAq0txbS5ZL aAJw== X-Gm-Message-State: AHPjjUjgPgE3HX4ZqmDUGU0WZVpls7XDZcu0XOHTh2/DMS7b8lNYMUHQ kD8yhVCcsaJNV07GWi3L3CH5EYBwWSo= X-Google-Smtp-Source: AOwi7QCSmCMZQ6RYmVQYiXR4d08rfzDQvl4G31NrqFygSDxZ+nOWC0aAtlwpMfSm194tfTd+6gvLPg== X-Received: by 10.98.60.14 with SMTP id j14mr11713172pfa.51.1506456871761; Tue, 26 Sep 2017 13:14:31 -0700 (PDT) Received: from bigtime.twiddle.net ([70.35.39.2]) by smtp.gmail.com with ESMTPSA id r138sm15582470pgr.12.2017.09.26.13.14.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 26 Sep 2017 13:14:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 26 Sep 2017 13:14:19 -0700 Message-Id: <20170926201427.2833-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170926201427.2833-1-richard.henderson@linaro.org> References: <20170926201427.2833-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::235 Subject: [Qemu-devel] [PATCH v3 1/9] target/i386: Convert to disas_set_info hook X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-ppc@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Reviewed-by: Alex Bennée Signed-off-by: Richard Henderson --- disas.c | 22 ++-------------------- monitor.c | 21 --------------------- target/i386/cpu.c | 12 ++++++++++++ target/i386/translate.c | 8 +------- 4 files changed, 15 insertions(+), 48 deletions(-) -- 2.13.5 diff --git a/disas.c b/disas.c index d6a1eb9c8e..2be716fdb2 100644 --- a/disas.c +++ b/disas.c @@ -205,16 +205,7 @@ void target_disas(FILE *out, CPUState *cpu, target_ulong code, cc->disas_set_info(cpu, &s.info); } -#if defined(TARGET_I386) - if (flags == 2) { - s.info.mach = bfd_mach_x86_64; - } else if (flags == 1) { - s.info.mach = bfd_mach_i386_i8086; - } else { - s.info.mach = bfd_mach_i386_i386; - } - s.info.print_insn = print_insn_i386; -#elif defined(TARGET_PPC) +#if defined(TARGET_PPC) if ((flags >> 16) & 1) { s.info.endian = BFD_ENDIAN_LITTLE; } @@ -390,16 +381,7 @@ void monitor_disas(Monitor *mon, CPUState *cpu, cc->disas_set_info(cpu, &s.info); } -#if defined(TARGET_I386) - if (flags == 2) { - s.info.mach = bfd_mach_x86_64; - } else if (flags == 1) { - s.info.mach = bfd_mach_i386_i8086; - } else { - s.info.mach = bfd_mach_i386_i386; - } - s.info.print_insn = print_insn_i386; -#elif defined(TARGET_PPC) +#if defined(TARGET_PPC) if (flags & 0xFFFF) { /* If we have a precise definition of the instruction set, use it. */ s.info.mach = flags & 0xFFFF; diff --git a/monitor.c b/monitor.c index f4856b9268..1184bec678 100644 --- a/monitor.c +++ b/monitor.c @@ -1310,27 +1310,6 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize, if (format == 'i') { int flags = 0; -#ifdef TARGET_I386 - CPUArchState *env = mon_get_cpu_env(); - if (wsize == 2) { - flags = 1; - } else if (wsize == 4) { - flags = 0; - } else { - /* as default we use the current CS size */ - flags = 0; - if (env) { -#ifdef TARGET_X86_64 - if ((env->efer & MSR_EFER_LMA) && - (env->segs[R_CS].flags & DESC_L_MASK)) - flags = 2; - else -#endif - if (!(env->segs[R_CS].flags & DESC_B_MASK)) - flags = 1; - } - } -#endif #ifdef TARGET_PPC CPUArchState *env = mon_get_cpu_env(); flags = msr_le << 16; diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 98732cd65f..13b2f8fbc5 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -4097,6 +4097,17 @@ static bool x86_cpu_has_work(CPUState *cs) !(env->hflags & HF_SMM_MASK)); } +static void x86_disas_set_info(CPUState *cs, disassemble_info *info) +{ + X86CPU *cpu = X86_CPU(cs); + CPUX86State *env = &cpu->env; + + info->mach = (env->hflags & HF_CS64_MASK ? bfd_mach_x86_64 + : env->hflags & HF_CS32_MASK ? bfd_mach_i386_i386 + : bfd_mach_i386_i8086); + info->print_insn = print_insn_i386; +} + static Property x86_cpu_properties[] = { #ifdef CONFIG_USER_ONLY /* apic_id = 0 by default for *-user, see commit 9886e834 */ @@ -4216,6 +4227,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data) #endif cc->cpu_exec_enter = x86_cpu_exec_enter; cc->cpu_exec_exit = x86_cpu_exec_exit; + cc->disas_set_info = x86_disas_set_info; dc->user_creatable = true; } diff --git a/target/i386/translate.c b/target/i386/translate.c index a8986f4c1a..9932d64f2e 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -8527,15 +8527,9 @@ static void i386_tr_disas_log(const DisasContextBase *dcbase, CPUState *cpu) { DisasContext *dc = container_of(dcbase, DisasContext, base); - int disas_flags = !dc->code32; qemu_log("IN: %s\n", lookup_symbol(dc->base.pc_first)); -#ifdef TARGET_X86_64 - if (dc->code64) { - disas_flags = 2; - } -#endif - log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size, disas_flags); + log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size, 0); } static const TranslatorOps i386_tr_ops = { From patchwork Tue Sep 26 20:14:20 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 114289 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4239991qgf; Tue, 26 Sep 2017 13:18:23 -0700 (PDT) X-Received: by 10.200.39.13 with SMTP id g13mr18260790qtg.234.1506457103176; Tue, 26 Sep 2017 13:18:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506457103; cv=none; d=google.com; s=arc-20160816; b=da+JDHCZ5WcVWQVxctTqE+CODggXfWnMMKY0oeEIttr0PYLA5446gMY6uDfGMUc6Vw 424YLeAkYzdjtjcpgllaX7N0Y3FCb1TEI/+vIWlMg5Dc+s9b9rRCOJtxY9ToVv6aa42X 2mTXUKqxALosOLhdHIKO/eECUQ1thsculmNKcMHJUHcQ6MgbbzkNfb+WSL2bGVsPkJCh T2q8LLTB5NUg1TsOrq4w/qUsig05MmLTGFFuZh+k8W8ohYNDBbuVgHktUBoDRbtCu4Qq NMENSf+fiOdBkWg5W/YqS6AeK6SAu1ddHyu2Jl8GlpI4dOZDUnArO0PpIE7mKZn/Y6rJ 6VQA== 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:arc-authentication-results; bh=8gn2Vjfcpv8lszaAxHBwoyqNNNQxwByUaJ2hAt6cgTg=; b=FLNknPvmXNdiEfsMAx8nD1MpLqGRCYH3Ag3t6smkbOWgE1LHrmMCo5UZUc8kHG8WNR 2bJ9z1YlJZDU603IgCqXxxc5UflK/MnSJoHW9TmjjPL9kZRAd45jl8HRxLgq5TJOiCN/ ao3qwhUozV/QkK80dRMIDo4kFt2f7vatQ1X+vqQ4k6zbV+g3KlPIKfSNoacKi4Q/4RQx 3CRpH4cnwPLSRjyq1R1mu+WtapBysJOUnWe7eAbyvtnNQ+3MstTHsvw/WLYHK+DJujFv 3uITnX6xLOTh9ohL0gNja7w2sGIISmw/G4AG2cEWIPhzRtPISjY5JNqvQA6yUzxAfTKM E7NA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Sk/FPBQI; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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. [208.118.235.17]) by mx.google.com with ESMTPS id a22si1157809qtc.268.2017.09.26.13.18.22 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 26 Sep 2017 13:18:23 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Sk/FPBQI; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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]:50993 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwJA-00063I-Mt for patch@linaro.org; Tue, 26 Sep 2017 16:18:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43911) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwFX-0002sp-Vo for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwFW-00037L-Rm for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:35 -0400 Received: from mail-pf0-x231.google.com ([2607:f8b0:400e:c00::231]:46177) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwwFW-00036r-JQ for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:34 -0400 Received: by mail-pf0-x231.google.com with SMTP id r68so6078448pfj.3 for ; Tue, 26 Sep 2017 13:14:34 -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=8gn2Vjfcpv8lszaAxHBwoyqNNNQxwByUaJ2hAt6cgTg=; b=Sk/FPBQI/Q14KWMYUKamVg0v0yKOzWgqFwL9ujRdJiV6Dnd6slo6TVIodjjRchIRbC WyyoyJIH+UWo39DMQS9x7qlJ/bVl0C+8EdjiCMhJrZZxrG4Mel6SglXwQL7bVjw5BQl/ oLYxUjcTr/L68ZniirImou0Sz8+0rL92S8cC4= 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=8gn2Vjfcpv8lszaAxHBwoyqNNNQxwByUaJ2hAt6cgTg=; b=BjnTCivbKf4vLMURKmTZFCLRRR6Gb+T4LS/Ry5cGMMASv0U7zoZN6gDAvT2O8l1n5G ibW98gFBxhdqFpw4eAbdvoxpJH/1eTHZNmPoJRUwbCZZuQ9IQfpaiXWw/oyN8dmpuAeW jQLf9AcSyLwLiX6Cf9hWD6MtzFyCDftfBXP8/FdUh98yOk4TpzI2WgjQH0aaY/jRlq+k v7YyxH0tR3/cvx+xFBq7AqgoBw8qtbiY3G6qYhNN/jIMFIQx3UE/22pShazuIlG00OvP hiJHiWORqFEnaCWbnRS+Va0g5b8IkdRPWT9XqPN5RFkQuAfRWOSzg9keLdWWq7rja002 O2iw== X-Gm-Message-State: AHPjjUjXKX6Dca4iZ25NY8ocIx5VhIBgXL4IYkK1k4GLU6MxUQ8WnM0g ErynIoFpDAL/gD4yQ3z5L6VOzniZ0xs= X-Google-Smtp-Source: AOwi7QDTAl+DYgY+VVkCnV1rlT6VzNETgpGZJ9Kv1q19IxaxQELggbC939VhR3+5yOPtPli4U05cNA== X-Received: by 10.98.87.23 with SMTP id l23mr11908315pfb.77.1506456873429; Tue, 26 Sep 2017 13:14:33 -0700 (PDT) Received: from bigtime.twiddle.net ([70.35.39.2]) by smtp.gmail.com with ESMTPSA id r138sm15582470pgr.12.2017.09.26.13.14.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 26 Sep 2017 13:14:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 26 Sep 2017 13:14:20 -0700 Message-Id: <20170926201427.2833-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170926201427.2833-1-richard.henderson@linaro.org> References: <20170926201427.2833-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::231 Subject: [Qemu-devel] [PATCH v3 2/9] target/ppc: Convert to disas_set_info hook X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-ppc@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Reviewed-by: Alex Bennée Signed-off-by: Richard Henderson --- disas.c | 33 --------------------------------- monitor.c | 5 ----- target/ppc/translate.c | 5 +---- target/ppc/translate_init.c | 21 +++++++++++++++++++++ 4 files changed, 22 insertions(+), 42 deletions(-) -- 2.13.5 diff --git a/disas.c b/disas.c index 2be716fdb2..3a375a3b6c 100644 --- a/disas.c +++ b/disas.c @@ -205,23 +205,6 @@ void target_disas(FILE *out, CPUState *cpu, target_ulong code, cc->disas_set_info(cpu, &s.info); } -#if defined(TARGET_PPC) - if ((flags >> 16) & 1) { - s.info.endian = BFD_ENDIAN_LITTLE; - } - if (flags & 0xFFFF) { - /* If we have a precise definition of the instruction set, use it. */ - s.info.mach = flags & 0xFFFF; - } else { -#ifdef TARGET_PPC64 - s.info.mach = bfd_mach_ppc64; -#else - s.info.mach = bfd_mach_ppc; -#endif - } - s.info.disassembler_options = (char *)"any"; - s.info.print_insn = print_insn_ppc; -#endif if (s.info.print_insn == NULL) { s.info.print_insn = print_insn_od_target; } @@ -381,22 +364,6 @@ void monitor_disas(Monitor *mon, CPUState *cpu, cc->disas_set_info(cpu, &s.info); } -#if defined(TARGET_PPC) - if (flags & 0xFFFF) { - /* If we have a precise definition of the instruction set, use it. */ - s.info.mach = flags & 0xFFFF; - } else { -#ifdef TARGET_PPC64 - s.info.mach = bfd_mach_ppc64; -#else - s.info.mach = bfd_mach_ppc; -#endif - } - if ((flags >> 16) & 1) { - s.info.endian = BFD_ENDIAN_LITTLE; - } - s.info.print_insn = print_insn_ppc; -#endif if (!s.info.print_insn) { monitor_printf(mon, "0x" TARGET_FMT_lx ": Asm output not supported on this arch\n", pc); diff --git a/monitor.c b/monitor.c index 1184bec678..d55ad61dbb 100644 --- a/monitor.c +++ b/monitor.c @@ -1310,11 +1310,6 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize, if (format == 'i') { int flags = 0; -#ifdef TARGET_PPC - CPUArchState *env = mon_get_cpu_env(); - flags = msr_le << 16; - flags |= env->bfd_mach; -#endif monitor_disas(mon, cs, addr, count, is_physical, flags); return; } diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 606b605ba0..bc155f1036 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7395,12 +7395,9 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb) #if defined(DEBUG_DISAS) if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM) && qemu_log_in_addr_range(pc_start)) { - int flags; - flags = env->bfd_mach; - flags |= ctx.le_mode << 16; qemu_log_lock(); qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, ctx.nip - pc_start, flags); + log_target_disas(cs, pc_start, ctx.nip - pc_start, 0); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c index 466bf97347..5524b171e0 100644 --- a/target/ppc/translate_init.c +++ b/target/ppc/translate_init.c @@ -10643,6 +10643,26 @@ static gchar *ppc_gdb_arch_name(CPUState *cs) #endif } +static void ppc_disas_set_info(CPUState *cs, disassemble_info *info) +{ + PowerPCCPU *cpu = POWERPC_CPU(cs); + CPUPPCState *env = &cpu->env; + + if ((env->hflags >> MSR_LE) & 1) { + info->endian = BFD_ENDIAN_LITTLE; + } + info->mach = env->bfd_mach; + if (!env->bfd_mach) { +#ifdef TARGET_PPC64 + info->mach = bfd_mach_ppc64; +#else + info->mach = bfd_mach_ppc; +#endif + } + info->disassembler_options = (char *)"any"; + info->print_insn = print_insn_ppc; +} + static Property ppc_cpu_properties[] = { DEFINE_PROP_BOOL("pre-2.8-migration", PowerPCCPU, pre_2_8_migration, false), DEFINE_PROP_BOOL("pre-2.10-migration", PowerPCCPU, pre_2_10_migration, @@ -10704,6 +10724,7 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data) #ifndef CONFIG_USER_ONLY cc->virtio_is_big_endian = ppc_cpu_is_big_endian; #endif + cc->disas_set_info = ppc_disas_set_info; dc->fw_name = "PowerPC,UNKNOWN"; } From patchwork Tue Sep 26 20:14:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 114290 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4240050qgf; Tue, 26 Sep 2017 13:18:27 -0700 (PDT) X-Received: by 10.200.6.8 with SMTP id d8mr16949348qth.142.1506457107443; Tue, 26 Sep 2017 13:18:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506457107; cv=none; d=google.com; s=arc-20160816; b=aO20ZPDLlpCCeeWNzY84O988Y0n0+BakXes8qcmTL/tOz49UUgUz6SthEkDGlI9Umu psZXYMh8XOp61lh0xwBO7EuuJmd6Z+ZeUj30TilvNAH2nv2i73+p97mqbGkHUxtXw08y pBWa03uNyr9JkzIoR/P+2jY0NUtQPkYDJxoL36hLuOw/Q9yu5IZ6zugrWCZsbwB2i34e JMBW2sk38uX4v5C4pY/mDuMHhrzu6r6JB5mrHtf8WYdQhRmvR0rQ9rSRXwb0zXulZEGX Fqux2txwbjPcPs9MnqxVcZHI5z+BcYWY09+jrjFukyXH3JX6T1majWnY9uhKoveKQdsA wgpg== 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:arc-authentication-results; bh=dfJ2RY5N7Y/P4LoHGeQTZEqY5DUKOtU32aQC3yxYPXU=; b=J+uw2by21ep4xRCYDS68N23I3ugjDpQ+hf0WE3rYu9J9Zu4AQLIyYmg59/3APVQLD6 6A7jbu76wTxeE8pprURJIcctBIWQUAAqgek8P3OXk7RNyXy2USqLkRQprF63HtzWPO7z Ua1lzHfSEyUEiLeL1RhPJIJ5pfz8oYpY9TelGJlRXhlE1wjr9oqiAO2blQMXcykUFICE dSxTCX9K/He+TxyGKjJGE0YyNrKeksIw8pkmIIRZlOthbTeyKvwxGhul7UFOqiyArksf 8Fn/Km3yfQbj+BJruBf5LI5DCh39lwhza0jbEnFSB3xfWO0Io6pcWGRFmOy/DaqiZTyB nvgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=JncswOqq; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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. [208.118.235.17]) by mx.google.com with ESMTPS id o1si5077964qkf.249.2017.09.26.13.18.26 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 26 Sep 2017 13:18:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=JncswOqq; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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]:50996 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwJF-00068M-0J for patch@linaro.org; Tue, 26 Sep 2017 16:18:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43943) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwFa-0002uU-KA for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwFY-00038i-KV for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:38 -0400 Received: from mail-pg0-x22b.google.com ([2607:f8b0:400e:c05::22b]:50452) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwwFY-000385-Bb for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:36 -0400 Received: by mail-pg0-x22b.google.com with SMTP id p5so6514114pgn.7 for ; Tue, 26 Sep 2017 13:14:36 -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=dfJ2RY5N7Y/P4LoHGeQTZEqY5DUKOtU32aQC3yxYPXU=; b=JncswOqqy0hTLnfeW+efk3szBy4vOSdYHzUI7t0rWFB04Gud1QtAdJR6FUFMwjFf3t Hy07wRdvQhUru0XlcWagdD67QFzf6NOCr6IOtyVvXVrnLjjzM4iNvUO67HoJnzNJa7cA A330m4ndmx9wLt43GEv2MsIyczb8AV2iA01hU= 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=dfJ2RY5N7Y/P4LoHGeQTZEqY5DUKOtU32aQC3yxYPXU=; b=nahJE8hVaFYO2GUuWV+tiykPwN8SG9Wy1RNeYIyW4C7G4kZbb7jVsK9ijITJ9HcMqj jw/mCiXY4jZrxmB6mYzAEOyiW2kmUQMyoDL9g7KA1o9FR+4ZIYxQZlwQ5saZn/ewmGr2 LAYb7IleqlhaBhxE8/s70gVvS+8RyRx9VxIZgFohrD8eWFU7lxiQQZHWJH6CovylHruc ru95MirRDHgF5/UYD343/QEF/NAXFL4713qd+BerJBshaR/ZKQtbUM3Br6QWr9mJ/Vtp sS0rqf9W7DhUTSEK7IzLurmH3fNBeW0YT1viX0rHTswQRs+aviA+iMrodX+fhlqCNT9Y nuHQ== X-Gm-Message-State: AHPjjUgBAfV66g/kV8E9qMCcF+ZG2MskalrVPhovT/1r4NG61boY2ujK SrqssimSuL9+OTIDIiuyN5kmnXt0Xlw= X-Google-Smtp-Source: AOwi7QBDV6ChZcwHboLPuftwzQqDMVGeoKTU76RxbqZnLQV9kSohi80TkxZcz6IGTskxfwVtfnKGNw== X-Received: by 10.98.193.2 with SMTP id i2mr11474898pfg.207.1506456874994; Tue, 26 Sep 2017 13:14:34 -0700 (PDT) Received: from bigtime.twiddle.net ([70.35.39.2]) by smtp.gmail.com with ESMTPSA id r138sm15582470pgr.12.2017.09.26.13.14.33 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 26 Sep 2017 13:14:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 26 Sep 2017 13:14:21 -0700 Message-Id: <20170926201427.2833-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170926201427.2833-1-richard.henderson@linaro.org> References: <20170926201427.2833-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::22b Subject: [Qemu-devel] [PATCH v3 3/9] disas: Remove unused flags arguments X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-ppc@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Now that every target is using the disas_set_info hook, the flags argument is unused. Remove it. Reviewed-by: Alex Bennée Signed-off-by: Richard Henderson --- include/disas/disas.h | 4 ++-- include/exec/log.h | 4 ++-- disas.c | 15 ++++----------- monitor.c | 3 +-- target/alpha/translate.c | 2 +- target/arm/translate-a64.c | 3 +-- target/arm/translate.c | 3 +-- target/cris/translate.c | 3 +-- target/hppa/translate.c | 2 +- target/i386/translate.c | 2 +- target/lm32/translate.c | 2 +- target/m68k/translate.c | 2 +- target/microblaze/translate.c | 2 +- target/mips/translate.c | 2 +- target/nios2/translate.c | 2 +- target/openrisc/translate.c | 2 +- target/ppc/translate.c | 2 +- target/s390x/translate.c | 2 +- target/sh4/translate.c | 2 +- target/sparc/translate.c | 2 +- target/tricore/translate.c | 2 +- target/unicore32/translate.c | 2 +- target/xtensa/translate.c | 2 +- 23 files changed, 28 insertions(+), 39 deletions(-) -- 2.13.5 diff --git a/include/disas/disas.h b/include/disas/disas.h index e549ca24a1..4d48c13c65 100644 --- a/include/disas/disas.h +++ b/include/disas/disas.h @@ -9,10 +9,10 @@ /* Disassemble this for me please... (debugging). */ void disas(FILE *out, void *code, unsigned long size); void target_disas(FILE *out, CPUState *cpu, target_ulong code, - target_ulong size, int flags); + target_ulong size); void monitor_disas(Monitor *mon, CPUState *cpu, - target_ulong pc, int nb_insn, int is_physical, int flags); + target_ulong pc, int nb_insn, int is_physical); /* Look up symbol for debugging purpose. Returns "" if unknown. */ const char *lookup_symbol(target_ulong orig_addr); diff --git a/include/exec/log.h b/include/exec/log.h index ba1c9b5682..c249307911 100644 --- a/include/exec/log.h +++ b/include/exec/log.h @@ -38,9 +38,9 @@ static inline void log_cpu_state_mask(int mask, CPUState *cpu, int flags) #ifdef NEED_CPU_H /* disas() and target_disas() to qemu_logfile: */ static inline void log_target_disas(CPUState *cpu, target_ulong start, - target_ulong len, int flags) + target_ulong len) { - target_disas(qemu_logfile, cpu, start, len, flags); + target_disas(qemu_logfile, cpu, start, len); } static inline void log_disas(void *code, unsigned long size) diff --git a/disas.c b/disas.c index 3a375a3b6c..ad675dc361 100644 --- a/disas.c +++ b/disas.c @@ -171,15 +171,9 @@ static int print_insn_od_target(bfd_vma pc, disassemble_info *info) return print_insn_objdump(pc, info, "OBJD-T"); } -/* Disassemble this for me please... (debugging). 'flags' has the following - values: - i386 - 1 means 16 bit code, 2 means 64 bit code - ppc - bits 0:15 specify (optionally) the machine instruction set; - bit 16 indicates little endian. - other targets - unused - */ +/* Disassemble this for me please... (debugging). */ void target_disas(FILE *out, CPUState *cpu, target_ulong code, - target_ulong size, int flags) + target_ulong size) { CPUClass *cc = CPU_GET_CLASS(cpu); target_ulong pc; @@ -336,10 +330,9 @@ monitor_read_memory (bfd_vma memaddr, bfd_byte *myaddr, int length, return 0; } -/* Disassembler for the monitor. - See target_disas for a description of flags. */ +/* Disassembler for the monitor. */ void monitor_disas(Monitor *mon, CPUState *cpu, - target_ulong pc, int nb_insn, int is_physical, int flags) + target_ulong pc, int nb_insn, int is_physical) { CPUClass *cc = CPU_GET_CLASS(cpu); int count, i; diff --git a/monitor.c b/monitor.c index d55ad61dbb..8fca25513d 100644 --- a/monitor.c +++ b/monitor.c @@ -1309,8 +1309,7 @@ static void memory_dump(Monitor *mon, int count, int format, int wsize, } if (format == 'i') { - int flags = 0; - monitor_disas(mon, cs, addr, count, is_physical, flags); + monitor_disas(mon, cs, addr, count, is_physical); return; } diff --git a/target/alpha/translate.c b/target/alpha/translate.c index 5a92c4accb..e9a245f9c5 100644 --- a/target/alpha/translate.c +++ b/target/alpha/translate.c @@ -3048,7 +3048,7 @@ static void alpha_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) static void alpha_tr_disas_log(const DisasContextBase *dcbase, CPUState *cpu) { qemu_log("IN: %s\n", lookup_symbol(dcbase->pc_first)); - log_target_disas(cpu, dcbase->pc_first, dcbase->tb->size, 1); + log_target_disas(cpu, dcbase->pc_first, dcbase->tb->size); } static const TranslatorOps alpha_tr_ops = { diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 899ffb96fc..0975c883a7 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -11403,8 +11403,7 @@ static void aarch64_tr_disas_log(const DisasContextBase *dcbase, DisasContext *dc = container_of(dcbase, DisasContext, base); qemu_log("IN: %s\n", lookup_symbol(dc->base.pc_first)); - log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size, - 4 | (bswap_code(dc->sctlr_b) ? 2 : 0)); + log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size); } const TranslatorOps aarch64_translator_ops = { diff --git a/target/arm/translate.c b/target/arm/translate.c index ab1a12a1b8..93e9dbe33d 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -12258,8 +12258,7 @@ static void arm_tr_disas_log(const DisasContextBase *dcbase, CPUState *cpu) DisasContext *dc = container_of(dcbase, DisasContext, base); qemu_log("IN: %s\n", lookup_symbol(dc->base.pc_first)); - log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size, - dc->thumb | (dc->sctlr_b << 1)); + log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size); } static const TranslatorOps arm_translator_ops = { diff --git a/target/cris/translate.c b/target/cris/translate.c index 38a999e6f1..b1fda57c74 100644 --- a/target/cris/translate.c +++ b/target/cris/translate.c @@ -3297,8 +3297,7 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb) qemu_log_lock(); qemu_log("--------------\n"); qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, dc->pc - pc_start, - env->pregs[PR_VR]); + log_target_disas(cs, pc_start, dc->pc - pc_start); qemu_log("\nisize=%d osize=%d\n", dc->pc - pc_start, tcg_op_buf_count()); qemu_log_unlock(); diff --git a/target/hppa/translate.c b/target/hppa/translate.c index b6e2652341..fc2a9f5896 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -3904,7 +3904,7 @@ static void hppa_tr_disas_log(const DisasContextBase *dcbase, CPUState *cs) break; default: qemu_log("IN: %s\n", lookup_symbol(tb->pc)); - log_target_disas(cs, tb->pc, tb->size, 1); + log_target_disas(cs, tb->pc, tb->size); break; } } diff --git a/target/i386/translate.c b/target/i386/translate.c index 9932d64f2e..6567e5438f 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -8529,7 +8529,7 @@ static void i386_tr_disas_log(const DisasContextBase *dcbase, DisasContext *dc = container_of(dcbase, DisasContext, base); qemu_log("IN: %s\n", lookup_symbol(dc->base.pc_first)); - log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size, 0); + log_target_disas(cpu, dc->base.pc_first, dc->base.tb->size); } static const TranslatorOps i386_tr_ops = { diff --git a/target/lm32/translate.c b/target/lm32/translate.c index 65bc9c0bf6..a83cbdf729 100644 --- a/target/lm32/translate.c +++ b/target/lm32/translate.c @@ -1156,7 +1156,7 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb) && qemu_log_in_addr_range(pc_start)) { qemu_log_lock(); qemu_log("\n"); - log_target_disas(cs, pc_start, dc->pc - pc_start, 0); + log_target_disas(cs, pc_start, dc->pc - pc_start); qemu_log("\nisize=%d osize=%d\n", dc->pc - pc_start, tcg_op_buf_count()); qemu_log_unlock(); diff --git a/target/m68k/translate.c b/target/m68k/translate.c index d738f32f9c..e1e31f622c 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -5620,7 +5620,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb) qemu_log_lock(); qemu_log("----------------\n"); qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, dc->pc - pc_start, 0); + log_target_disas(cs, pc_start, dc->pc - pc_start); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 067b0878d6..fecc61a1ec 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -1810,7 +1810,7 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb) qemu_log_lock(); qemu_log("--------------\n"); #if DISAS_GNU - log_target_disas(cs, pc_start, dc->pc - pc_start, 0); + log_target_disas(cs, pc_start, dc->pc - pc_start); #endif qemu_log("\nisize=%d osize=%d\n", dc->pc - pc_start, tcg_op_buf_count()); diff --git a/target/mips/translate.c b/target/mips/translate.c index d16d879df7..ea4a796381 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -20370,7 +20370,7 @@ done_generating: && qemu_log_in_addr_range(pc_start)) { qemu_log_lock(); qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, ctx.pc - pc_start, 0); + log_target_disas(cs, pc_start, ctx.pc - pc_start); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 6b0961837d..7a0fa860da 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -907,7 +907,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb) && qemu_log_in_addr_range(tb->pc)) { qemu_log_lock(); qemu_log("IN: %s\n", lookup_symbol(tb->pc)); - log_target_disas(cs, tb->pc, dc->pc - tb->pc, 0); + log_target_disas(cs, tb->pc, dc->pc - tb->pc); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/openrisc/translate.c b/target/openrisc/translate.c index 112db1ad0f..99f2b463ce 100644 --- a/target/openrisc/translate.c +++ b/target/openrisc/translate.c @@ -1653,7 +1653,7 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb) if (qemu_loglevel_mask(CPU_LOG_TB_IN_ASM) && qemu_log_in_addr_range(pc_start)) { - log_target_disas(cs, pc_start, tb->size, 0); + log_target_disas(cs, pc_start, tb->size); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/ppc/translate.c b/target/ppc/translate.c index bc155f1036..8e92e4579c 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -7397,7 +7397,7 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb) && qemu_log_in_addr_range(pc_start)) { qemu_log_lock(); qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, ctx.nip - pc_start, 0); + log_target_disas(cs, pc_start, ctx.nip - pc_start); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 5abd34fb34..9838ae4584 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -5907,7 +5907,7 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb) qemu_log("IN: EXECUTE %016" PRIx64 "\n", dc.ex_value); } else { qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, dc.pc - pc_start, 1); + log_target_disas(cs, pc_start, dc.pc - pc_start); qemu_log("\n"); } qemu_log_unlock(); diff --git a/target/sh4/translate.c b/target/sh4/translate.c index 10191073b2..7532bf74c1 100644 --- a/target/sh4/translate.c +++ b/target/sh4/translate.c @@ -2347,7 +2347,7 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb) && qemu_log_in_addr_range(pc_start)) { qemu_log_lock(); qemu_log("IN:\n"); /* , lookup_symbol(pc_start)); */ - log_target_disas(cs, pc_start, ctx.pc - pc_start, 0); + log_target_disas(cs, pc_start, ctx.pc - pc_start); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/sparc/translate.c b/target/sparc/translate.c index 6290705b11..e89b6227f2 100644 --- a/target/sparc/translate.c +++ b/target/sparc/translate.c @@ -5855,7 +5855,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock * tb) qemu_log_lock(); qemu_log("--------------\n"); qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, last_pc + 4 - pc_start, 0); + log_target_disas(cs, pc_start, last_pc + 4 - pc_start); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/tricore/translate.c b/target/tricore/translate.c index 4e4198e887..e807500e26 100644 --- a/target/tricore/translate.c +++ b/target/tricore/translate.c @@ -8839,7 +8839,7 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb) && qemu_log_in_addr_range(pc_start)) { qemu_log_lock(); qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, ctx.pc - pc_start, 0); + log_target_disas(cs, pc_start, ctx.pc - pc_start); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/unicore32/translate.c b/target/unicore32/translate.c index 6c094d59d7..f9aa248a80 100644 --- a/target/unicore32/translate.c +++ b/target/unicore32/translate.c @@ -2031,7 +2031,7 @@ done_generating: qemu_log_lock(); qemu_log("----------------\n"); qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, dc->pc - pc_start, 0); + log_target_disas(cs, pc_start, dc->pc - pc_start); qemu_log("\n"); qemu_log_unlock(); } diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c index d7bf07e8e6..03719ce12b 100644 --- a/target/xtensa/translate.c +++ b/target/xtensa/translate.c @@ -3250,7 +3250,7 @@ done: qemu_log_lock(); qemu_log("----------------\n"); qemu_log("IN: %s\n", lookup_symbol(pc_start)); - log_target_disas(cs, pc_start, dc.pc - pc_start, 0); + log_target_disas(cs, pc_start, dc.pc - pc_start); qemu_log("\n"); qemu_log_unlock(); } From patchwork Tue Sep 26 20:14:22 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 114288 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4239151qgf; Tue, 26 Sep 2017 13:17:19 -0700 (PDT) X-Received: by 10.200.56.215 with SMTP id g23mr18278751qtc.238.1506457039844; Tue, 26 Sep 2017 13:17:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506457039; cv=none; d=google.com; s=arc-20160816; b=y5ULjvewasXW8DTbkaN/WMdw2FsjF74fiA7yKyTGKset58mdtXk1fr+sjRGN4E3gId Hi2Jfthf1btFT8zM+h43hbfg3ku3YFJ5BGsTQ6x4kkBKGlQAoS70zdFaZqA4QT/lLEvZ TP7wUMh2+Oe/qKnCzpREIeWSaSNd+q+Ypj2BorcK6AvJuYYdyVgvMQXY+U2Q/wQA/p5e wU2xOdKC+4VhsNS7acwmnJK6hER65qMM3RSkjdLTA32yX2wibi5+hSFPKvc3Gfm4SAgP x5eNEkRK+Kg+RTFW3yaJ05hzqx0M5he3zikIXbMiwOZLHFKbtMi+3UYImVSUk+zuSvBM 2LUQ== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=Zsk94JGD4lIp1idCYat95TCifGpYkPN29sGSiypvc8g=; b=sE+Cj+ScXvybLYqfGrE1cuRG7Ps0sKypaCIfGk44+MoCPa74dPWREPnECH77QgaLXi PA6I+kfDClt13L9Ob24s8ozTwXD8R1C/o52CpffF8d2MCVVckf/v8wTo39jNT7oK6BKX +bAaUNLDjA+C/J/23q+rdLY0qO7oDKBPZQ66t0HdYDa5KSraUafQrANe1ZgTiJSpKzns 6le/qPByjyllbnSsi8wMikH1OUUU9SWIXKu3cX57t5pvsanranh0NI3Tr0xCij8oOb+P H1dRP+mbhC0I6NDXyoLvAdEyh7/DMCFwpjtQJiWftngqAwd60TvtzHy3ozff5UnpulZT 8bPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=RnGFCAre; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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. [208.118.235.17]) by mx.google.com with ESMTPS id g26si3361182qtc.332.2017.09.26.13.17.19 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 26 Sep 2017 13:17:19 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=RnGFCAre; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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]:50988 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwI9-0004eR-Ab for patch@linaro.org; Tue, 26 Sep 2017 16:17:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43971) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwFc-0002wQ-1y for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwFa-0003AA-25 for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:40 -0400 Received: from mail-pf0-x22d.google.com ([2607:f8b0:400e:c00::22d]:55315) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwwFZ-000397-QQ for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:37 -0400 Received: by mail-pf0-x22d.google.com with SMTP id r71so6071290pfe.12 for ; Tue, 26 Sep 2017 13:14:37 -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; bh=Zsk94JGD4lIp1idCYat95TCifGpYkPN29sGSiypvc8g=; b=RnGFCAreHj+7B844sCSRDKtobWivp58ScjQJ+Iw5UOx8vcmJ+O4loJwCeSXeuKZuiw S8fvxCsV4MpeOYEKeoM4GQOORS1QsTI5rryzMxyOd/mDBfCU90+mVO+yOrdzCXw4RkkJ PbTB1/lRqZlAqi9sg/M1OSHNqN2VSj/E9RPyg= 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; bh=Zsk94JGD4lIp1idCYat95TCifGpYkPN29sGSiypvc8g=; b=FcfDtuzt8I1AV3GDNfvQEoPQzqhiY1wfVA37oMz+QLXwA3TvJXvuXtjUj8hc1FD2vH KrneorZPW4lGEIib7/TUcT3efSEXV+dXhK5vEx252eSGjqEtj9FJZjwhCHrec+YMjDoq qh4zTpRl6919KaW/X8sue/EBQtblAIQNdnZdjDwsHbqBx0X0uzEwSVuWY5OR7JWgehgx gELXA+FjrWb4DYRuuI2yy1y7PKjXOXesUoIW2UdXuE+jF9PJDU4RgEhVdzH01d6FptZz mYYvi2TgLb2OAm+fb196EhpArgEVqUHFAyMZb0oHOkmSaiyfrHo10h1InsivL52Pgv8V BTgg== X-Gm-Message-State: AHPjjUif5/aXybf7zqCpiPDna92g2BU0KzMPn+aBgIXtcwYwc3/mZwU/ Akj0PqTTjb5WxbTlWGM/anPhxzX+SYc= X-Google-Smtp-Source: AOwi7QA5sJojZTUqSpCfl+nHEhffsqtVIp6SArCKTAEeapwrGvvJ+khxE/4z8e4OYZdyAHbXGnwpiA== X-Received: by 10.98.100.69 with SMTP id y66mr12125682pfb.337.1506456876395; Tue, 26 Sep 2017 13:14:36 -0700 (PDT) Received: from bigtime.twiddle.net ([70.35.39.2]) by smtp.gmail.com with ESMTPSA id r138sm15582470pgr.12.2017.09.26.13.14.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 26 Sep 2017 13:14:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 26 Sep 2017 13:14:22 -0700 Message-Id: <20170926201427.2833-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170926201427.2833-1-richard.henderson@linaro.org> References: <20170926201427.2833-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::22d Subject: [Qemu-devel] [PATCH v3 4/9] disas: Support the Capstone disassembler library X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-ppc@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" If configured, prefer this over our rather dated copy of the GPLv2-only binutils. This will be especially apparent with the proposed vector extensions to TCG, as disas/i386.c does not handle AVX. Signed-off-by: Richard Henderson --- include/disas/bfd.h | 4 + include/disas/capstone.h | 38 ++++++++ disas.c | 219 ++++++++++++++++++++++++++++++++++++++++++++--- configure | 26 ++++++ 4 files changed, 274 insertions(+), 13 deletions(-) create mode 100644 include/disas/capstone.h -- 2.13.5 diff --git a/include/disas/bfd.h b/include/disas/bfd.h index b01e002b4c..0f4ecdeb88 100644 --- a/include/disas/bfd.h +++ b/include/disas/bfd.h @@ -377,6 +377,10 @@ typedef struct disassemble_info { /* Command line options specific to the target disassembler. */ char * disassembler_options; + /* Options for Capstone disassembly. */ + int cap_arch; + int cap_mode; + } disassemble_info; diff --git a/include/disas/capstone.h b/include/disas/capstone.h new file mode 100644 index 0000000000..84e214956d --- /dev/null +++ b/include/disas/capstone.h @@ -0,0 +1,38 @@ +#ifndef QEMU_CAPSTONE_H +#define QEMU_CAPSTONE_H 1 + +#ifdef CONFIG_CAPSTONE + +#include + +#else + +/* Just enough to allow backends to init without ifdefs. */ + +#define CS_ARCH_ARM -1 +#define CS_ARCH_ARM64 -1 +#define CS_ARCH_MIPS -1 +#define CS_ARCH_X86 -1 +#define CS_ARCH_PPC -1 +#define CS_ARCH_SPARC -1 +#define CS_ARCH_SYSZ -1 + +#define CS_MODE_LITTLE_ENDIAN 0 +#define CS_MODE_BIG_ENDIAN 0 +#define CS_MODE_ARM 0 +#define CS_MODE_16 0 +#define CS_MODE_32 0 +#define CS_MODE_64 0 +#define CS_MODE_THUMB 0 +#define CS_MODE_MCLASS 0 +#define CS_MODE_V8 0 +#define CS_MODE_MICRO 0 +#define CS_MODE_MIPS3 0 +#define CS_MODE_MIPS32R6 0 +#define CS_MODE_MIPSGP64 0 +#define CS_MODE_V9 0 +#define CS_MODE_MIPS32 0 +#define CS_MODE_MIPS64 0 + +#endif /* CONFIG_CAPSTONE */ +#endif /* QEMU_CAPSTONE_H */ diff --git a/disas.c b/disas.c index ad675dc361..746d76c07d 100644 --- a/disas.c +++ b/disas.c @@ -6,6 +6,7 @@ #include "cpu.h" #include "disas/disas.h" +#include "disas/capstone.h" typedef struct CPUDebug { struct disassemble_info info; @@ -171,6 +172,192 @@ static int print_insn_od_target(bfd_vma pc, disassemble_info *info) return print_insn_objdump(pc, info, "OBJD-T"); } +#ifdef CONFIG_CAPSTONE +/* Temporary storage for the capstone library. This will be alloced via + malloc with a size private to the library; thus there's no reason not + to share this across calls and across host vs target disassembly. */ +static __thread cs_insn *cap_insn; + +/* Initialize the Capstone library. */ +/* ??? It would be nice to cache this. We would need one handle for the + host and one for the target. For most targets we can reset specific + parameters via cs_option(CS_OPT_MODE, new_mode), but we cannot change + CS_ARCH_* in this way. Thus we would need to be able to close and + re-open the target handle with a different arch for the target in order + to handle AArch64 vs AArch32 mode switching. */ +static cs_err cap_disas_start(disassemble_info *info, csh *handle) +{ + cs_mode cap_mode = info->cap_mode; + cs_err err; + + cap_mode += (info->endian == BFD_ENDIAN_BIG ? CS_MODE_BIG_ENDIAN + : CS_MODE_LITTLE_ENDIAN); + + err = cs_open(info->cap_arch, cap_mode, handle); + if (err != CS_ERR_OK) { + return err; + } + + /* ??? There probably ought to be a better place to put this. */ + if (info->cap_arch == CS_ARCH_X86) { + /* We don't care about errors (if for some reason the library + is compiled without AT&T syntax); the user will just have + to deal with the Intel syntax. */ + cs_option(*handle, CS_OPT_SYNTAX, CS_OPT_SYNTAX_ATT); + } + + /* "Disassemble" unknown insns as ".byte W,X,Y,Z". */ + cs_option(*handle, CS_OPT_SKIPDATA, CS_OPT_ON); + + /* Allocate temp space for cs_disasm_iter. */ + if (cap_insn == NULL) { + cap_insn = cs_malloc(*handle); + if (cap_insn == NULL) { + cs_close(handle); + return CS_ERR_MEM; + } + } + return CS_ERR_OK; +} + +/* Disassemble SIZE bytes at PC for the target. */ +static bool cap_disas_target(disassemble_info *info, uint64_t pc, size_t size) +{ + uint8_t cap_buf[1024]; + csh handle; + cs_insn *insn; + size_t csize = 0; + + if (cap_disas_start(info, &handle) != CS_ERR_OK) { + return false; + } + insn = cap_insn; + + while (1) { + size_t tsize = MIN(sizeof(cap_buf) - csize, size); + const uint8_t *cbuf = cap_buf; + + target_read_memory(pc + csize, cap_buf + csize, tsize, info); + csize += tsize; + size -= tsize; + + while (cs_disasm_iter(handle, &cbuf, &csize, &pc, insn)) { + (*info->fprintf_func)(info->stream, + "0x%08" PRIx64 ": %-12s %s\n", + insn->address, insn->mnemonic, + insn->op_str); + } + + /* If the target memory is not consumed, go back for more... */ + if (size != 0) { + /* ... taking care to move any remaining fractional insn + to the beginning of the buffer. */ + if (csize != 0) { + memmove(cap_buf, cbuf, csize); + } + continue; + } + + /* Since the target memory is consumed, we should not have + a remaining fractional insn. */ + if (csize != 0) { + (*info->fprintf_func)(info->stream, + "Disassembler disagrees with translator " + "over instruction decoding\n" + "Please report this to qemu-devel@nongnu.org\n"); + } + break; + } + + cs_close(&handle); + return true; +} + +/* Disassemble SIZE bytes at CODE for the host. */ +static bool cap_disas_host(disassemble_info *info, void *code, size_t size) +{ + csh handle; + const uint8_t *cbuf; + cs_insn *insn; + uint64_t pc; + + if (cap_disas_start(info, &handle) != CS_ERR_OK) { + return false; + } + insn = cap_insn; + + cbuf = code; + pc = (uintptr_t)code; + + while (cs_disasm_iter(handle, &cbuf, &size, &pc, insn)) { + (*info->fprintf_func)(info->stream, + "0x%08" PRIx64 ": %-12s %s\n", + insn->address, insn->mnemonic, + insn->op_str); + } + if (size != 0) { + (*info->fprintf_func)(info->stream, + "Disassembler disagrees with TCG over instruction encoding\n" + "Please report this to qemu-devel@nongnu.org\n"); + } + + cs_close(&handle); + return true; +} + +#if !defined(CONFIG_USER_ONLY) +/* Disassemble COUNT insns at PC for the target. */ +static bool cap_disas_monitor(disassemble_info *info, uint64_t pc, int count) +{ + uint8_t cap_buf[32]; + csh handle; + cs_insn *insn; + size_t csize = 0; + + if (cap_disas_start(info, &handle) != CS_ERR_OK) { + return false; + } + insn = cap_insn; + + while (1) { + /* We want to read memory for one insn, but generically we do not + know how much memory that is. We have a small buffer which is + known to be sufficient for all supported targets. Try to not + read beyond the page, Just In Case. For even more simplicity, + ignore the actual target page size and use a 1k boundary. If + that turns out to be insufficient, we'll come back around the + loop and read more. */ + uint64_t epc = QEMU_ALIGN_UP(pc + csize + 1, 1024); + size_t tsize = MIN(sizeof(cap_buf) - csize, epc - pc); + const uint8_t *cbuf = cap_buf; + + /* Make certain that we can make progress. */ + assert(tsize != 0); + info->read_memory_func(pc, cap_buf + csize, tsize, info); + csize += tsize; + + if (cs_disasm_iter(handle, &cbuf, &csize, &pc, insn)) { + (*info->fprintf_func)(info->stream, + "0x%08" PRIx64 ": %-12s %s\n", + insn->address, insn->mnemonic, + insn->op_str); + if (--count <= 0) { + break; + } + } + memmove(cap_buf, cbuf, csize); + } + + cs_close(&handle); + return true; +} +#endif /* !CONFIG_USER_ONLY */ +#else +# define cap_disas_target(i, p, s) false +# define cap_disas_host(i, p, s) false +# define cap_disas_monitor(i, p, c) false +#endif /* CONFIG_CAPSTONE */ + /* Disassemble this for me please... (debugging). */ void target_disas(FILE *out, CPUState *cpu, target_ulong code, target_ulong size) @@ -188,6 +375,8 @@ void target_disas(FILE *out, CPUState *cpu, target_ulong code, s.info.buffer_vma = code; s.info.buffer_length = size; s.info.print_address_func = generic_print_address; + s.info.cap_arch = -1; + s.info.cap_mode = 0; #ifdef TARGET_WORDS_BIGENDIAN s.info.endian = BFD_ENDIAN_BIG; @@ -199,6 +388,10 @@ void target_disas(FILE *out, CPUState *cpu, target_ulong code, cc->disas_set_info(cpu, &s.info); } + if (s.info.cap_arch >= 0 && cap_disas_target(&s.info, code, size)) { + return; + } + if (s.info.print_insn == NULL) { s.info.print_insn = print_insn_od_target; } @@ -206,18 +399,6 @@ void target_disas(FILE *out, CPUState *cpu, target_ulong code, for (pc = code; size > 0; pc += count, size -= count) { fprintf(out, "0x" TARGET_FMT_lx ": ", pc); count = s.info.print_insn(pc, &s.info); -#if 0 - { - int i; - uint8_t b; - fprintf(out, " {"); - for(i = 0; i < count; i++) { - target_read_memory(pc + i, &b, 1, &s.info); - fprintf(out, " %02x", b); - } - fprintf(out, " }"); - } -#endif fprintf(out, "\n"); if (count < 0) break; @@ -245,6 +426,8 @@ void disas(FILE *out, void *code, unsigned long size) s.info.buffer = code; s.info.buffer_vma = (uintptr_t)code; s.info.buffer_length = size; + s.info.cap_arch = -1; + s.info.cap_mode = 0; #ifdef HOST_WORDS_BIGENDIAN s.info.endian = BFD_ENDIAN_BIG; @@ -282,6 +465,11 @@ void disas(FILE *out, void *code, unsigned long size) #elif defined(__hppa__) print_insn = print_insn_hppa; #endif + + if (s.info.cap_arch >= 0 && cap_disas_host(&s.info, code, size)) { + return; + } + if (print_insn == NULL) { print_insn = print_insn_od_host; } @@ -344,8 +532,9 @@ void monitor_disas(Monitor *mon, CPUState *cpu, monitor_disas_is_physical = is_physical; s.info.read_memory_func = monitor_read_memory; s.info.print_address_func = generic_print_address; - s.info.buffer_vma = pc; + s.info.cap_arch = -1; + s.info.cap_mode = 0; #ifdef TARGET_WORDS_BIGENDIAN s.info.endian = BFD_ENDIAN_BIG; @@ -357,6 +546,10 @@ void monitor_disas(Monitor *mon, CPUState *cpu, cc->disas_set_info(cpu, &s.info); } + if (s.info.cap_arch >= 0 && cap_disas_monitor(&s.info, pc, nb_insn)) { + return; + } + if (!s.info.print_insn) { monitor_printf(mon, "0x" TARGET_FMT_lx ": Asm output not supported on this arch\n", pc); diff --git a/configure b/configure index 133a5757ef..62d172d88a 100755 --- a/configure +++ b/configure @@ -366,6 +366,7 @@ opengl_dmabuf="no" cpuid_h="no" avx2_opt="no" zlib="yes" +capstone="" lzo="" snappy="" bzip2="" @@ -1284,6 +1285,10 @@ for opt do error_exit "vhost-user isn't available on win32" fi ;; + --disable-capstone) capstone="no" + ;; + --enable-capstone) capstone="yes" + ;; *) echo "ERROR: unknown option $opt" echo "Try '$0 --help' for more information" @@ -1530,6 +1535,7 @@ disabled with --disable-FEATURE, default is enabled if available: vxhs Veritas HyperScale vDisk backend support crypto-afalg Linux AF_ALG crypto backend driver vhost-user vhost-user support + capstone capstone disassembler support NOTE: The object files are built at the place where configure is launched EOF @@ -4369,6 +4375,22 @@ EOF fi ########################################## +# capstone + +if test "$capstone" != no; then + if $pkg_config capstone; then + capstone=yes + QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)" + LIBS="$($pkg_config --libs capstone) $LIBS" + else + if test "$capstone" = yes; then + feature_not_found capstone + fi + capstone=no + fi +fi + +########################################## # check if we have fdatasync fdatasync=no @@ -5408,6 +5430,7 @@ echo "jemalloc support $jemalloc" echo "avx2 optimization $avx2_opt" echo "replication support $replication" echo "VxHS block device $vxhs" +echo "capstone $capstone" if test "$sdl_too_old" = "yes"; then echo "-> Your SDL version is too old - please upgrade to have SDL support" @@ -6069,6 +6092,9 @@ fi if test "$ivshmem" = "yes" ; then echo "CONFIG_IVSHMEM=y" >> $config_host_mak fi +if test "$capstone" = "yes" ; then + echo "CONFIG_CAPSTONE=y" >> $config_host_mak +fi # Hold two types of flag: # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on From patchwork Tue Sep 26 20:14:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 114286 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4237649qgf; Tue, 26 Sep 2017 13:15:29 -0700 (PDT) X-Received: by 10.55.24.22 with SMTP id j22mr15368292qkh.310.1506456928888; Tue, 26 Sep 2017 13:15:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506456928; cv=none; d=google.com; s=arc-20160816; b=HNqnuSvSUpB8hXM1NA+NUtRqlUzMgyxsarn+P7wfsY2vMi+fW88ZKv/huw3MPd+nCU gb6wQ8KPX3UUGtGvcC+wIDONi0ColXQNpDm8xpziqb5GV1so71VVS2V0gfTPt2SmcTzF IPWkFlEvtBcrYizbpEDwr1WPs0Jvr6QTuXkLJG8fF2Kh5iwAjJOcSTVpZb2ieUuyH6hx 3kPdCZ1uuNGwQxSu7FCECV0ORMU5ynOqLRldClQc085mWYewzNYx97pHoAC+CR9kKfI1 DkzKDDRBn/qCohuJ4gRux2AT7YwCS8AfIZvs45zVUC3MmqZv60dkPCrtdqRTZtdB0Gw7 8eBQ== 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:arc-authentication-results; bh=H1wqHIjont5qZFEBAawyVACPy8IpDxXA5bA8KuHdecE=; b=xisRKEjhafVWI2+4u0pNfueoi6/UelUomnLTuR6WhGslm+0M/x/61J/N5cpyTU3c6F gFGI8uOqyFLQjH3TLfYRUOVpjIaEFWZgihldGnucuYPv7udYpYb6entNscQNyUugB4yH vpOMdxfkIbnM3eZ645NViHK4wAI7w9OXVpA5Cjgqk/gbbZyYthq9fbfXntY3Pr/MrgV9 fea8XgINz3pI9EwVROq1qIB90yRuNUkz7pn6ZZ7tuNge0R56deOUdv+vCJk/a5VFCD9u w5pvZf86+MwyAmRYQnpq59y5UYrEGHR41AtHJREggVFCOETvYWFlMqcfutYywIM7yKcP 3CKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=O/KhGcoj; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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. [208.118.235.17]) by mx.google.com with ESMTPS id v6si8977249qkd.438.2017.09.26.13.15.28 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 26 Sep 2017 13:15:28 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=O/KhGcoj; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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]:50978 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwGM-0003D2-Lu for patch@linaro.org; Tue, 26 Sep 2017 16:15:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43968) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwFc-0002wO-0m for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwFb-0003DN-7M for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:39 -0400 Received: from mail-pf0-x233.google.com ([2607:f8b0:400e:c00::233]:46177) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwwFb-0003BO-2F for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:39 -0400 Received: by mail-pf0-x233.google.com with SMTP id r68so6078534pfj.3 for ; Tue, 26 Sep 2017 13:14:39 -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=H1wqHIjont5qZFEBAawyVACPy8IpDxXA5bA8KuHdecE=; b=O/KhGcojlmhrI000TYo9EvdiD7n+1rmCaRTThRpoUJLXHru8CYbRn9O0TOhR4h/Lq7 SaHIukBHX1+mm/U/AvHyP1ogjAllLYOnnfEodGIyJjyzgnM6A63U0FZFp2COGPH3RROh nm+m19fBz6R4TdGaTHOrYXOaj8dJy1SAq/kuY= 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=H1wqHIjont5qZFEBAawyVACPy8IpDxXA5bA8KuHdecE=; b=UDZqrHLtFl3svIrOFI35nvXDXsGczdoq34hVccfoS+/as/2TpdIHUT5pBdA7jyPVpx /V+EtkihfDIWL+WOzgsxJW9uN+8euF1pu1INgiWu8y43eKYLE7zwrrXbWCvLXsYqzwbc ntEV4dgfcMUuFdm69ajDItjhXFUFxqFefj9D/IjpVH5INHTlEsI8BR8U2IBSwsc6NgfM M+A7/I0CbC7GaliKGJIrr65vnJJWO6zUWCEd/x6TeoIcHYI7n5cFi2qr+Mj0GCg8pZvm wS3LxZ0ZLA7DIDHpqBt0R5q7kSlF/5nL6W4/rqtgT7SiYKXSXaW8e+1LwfvOAwj3tEy3 mTXQ== X-Gm-Message-State: AHPjjUhQSkcuhCSebJ4XKosSYFOL8Hx9TePJPKHO9JdO9Eu/0enk1J6P 8sVlXQZL4FfoebCEWLqEGQU+tmv6bOc= X-Google-Smtp-Source: AOwi7QDH7K+D6B+0sdadbZdyhXKUGwbkVEo7rBDmS1ujSm+lcedHtD8A2zdWfweEIMkVDPg+fTwJ6g== X-Received: by 10.84.234.137 with SMTP id n9mr11848517plk.383.1506456877885; Tue, 26 Sep 2017 13:14:37 -0700 (PDT) Received: from bigtime.twiddle.net ([70.35.39.2]) by smtp.gmail.com with ESMTPSA id r138sm15582470pgr.12.2017.09.26.13.14.36 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 26 Sep 2017 13:14:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 26 Sep 2017 13:14:23 -0700 Message-Id: <20170926201427.2833-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170926201427.2833-1-richard.henderson@linaro.org> References: <20170926201427.2833-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::233 Subject: [Qemu-devel] [PATCH v3 5/9] i386: Support Capstone in disas_set_info X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-ppc@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Reviewed-by: Alex Bennée Signed-off-by: Richard Henderson --- disas.c | 4 ++++ target/i386/cpu.c | 7 +++++++ 2 files changed, 11 insertions(+) -- 2.13.5 diff --git a/disas.c b/disas.c index 746d76c07d..1c44514254 100644 --- a/disas.c +++ b/disas.c @@ -439,9 +439,13 @@ void disas(FILE *out, void *code, unsigned long size) #elif defined(__i386__) s.info.mach = bfd_mach_i386_i386; print_insn = print_insn_i386; + s.info.cap_arch = CS_ARCH_X86; + s.info.cap_mode = CS_MODE_32; #elif defined(__x86_64__) s.info.mach = bfd_mach_x86_64; print_insn = print_insn_i386; + s.info.cap_arch = CS_ARCH_X86; + s.info.cap_mode = CS_MODE_64; #elif defined(_ARCH_PPC) s.info.disassembler_options = (char *)"any"; print_insn = print_insn_ppc; diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 13b2f8fbc5..cf890b763b 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -51,6 +51,8 @@ #include "hw/i386/apic_internal.h" #endif +#include "disas/capstone.h" + /* Cache topology CPUID constants: */ @@ -4106,6 +4108,11 @@ static void x86_disas_set_info(CPUState *cs, disassemble_info *info) : env->hflags & HF_CS32_MASK ? bfd_mach_i386_i386 : bfd_mach_i386_i8086); info->print_insn = print_insn_i386; + + info->cap_arch = CS_ARCH_X86; + info->cap_mode = (env->hflags & HF_CS64_MASK ? CS_MODE_64 + : env->hflags & HF_CS32_MASK ? CS_MODE_32 + : CS_MODE_16); } static Property x86_cpu_properties[] = { From patchwork Tue Sep 26 20:14:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 114293 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4244117qgf; Tue, 26 Sep 2017 13:23:25 -0700 (PDT) X-Received: by 10.55.123.1 with SMTP id w1mr16884793qkc.114.1506457405173; Tue, 26 Sep 2017 13:23:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506457405; cv=none; d=google.com; s=arc-20160816; b=xLSPRG3an5vusyNluhofK0Z6OnRn+/fioA4jES3yNjs3tjRHkdDFVRQK7Nk4qAJlDe hoCbvtzxMgwx4+KNXeIrsKEOfR0fMPGCNbCKI08P6R9xjP8PO+zNYULWQHRZUgSkR0DO RmlBlc+tDpjuutXuf3+6nf4DnC8A8dSYXZfv1K8Oi8JmMGprv25BfBi1i/5Ckxxejaxf vvzss+ezfPsYofpRBiyzEvD4ePdUR+aElF9y2u7mZAVKQPDQiwI813X8AV5cnfrmAJAG jw6JDZRb+gVAIdvvqMJu+GCCxZLECE5YyAMUqBwW5FyJ/Y7bmR2lu7sKboGqyhhmt4L3 lgSg== 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:arc-authentication-results; bh=zMC0NKR2kUHL8+PcGxOPQFS0+lj7R04nlWLL0JapJto=; b=GeUOzbDDU8GdUcosLyO/SfDmL+a6AX59TYpqJ7cQgKqA9JmzCYnFU27b99seqcNxB3 wFkmzHUfaOQhey3IPMCGcrd+UoXUuss/btWTMoGY1OZFRTYXuRTWhEQ5AsJ1XBOvkGnh od34i1nAyeZ0dotxVxme87Dq8Zt+XKtqAfTmJYkCaAMmLO0Eq7c4BdIik3XGSzrSl3OX 3afV7fAjRsOoTB/HR831sZ2sPz9eJtO5LmGLBqFoveH/HhUYli+ETFxnTfNuAi8/OmG/ h1Cj8RgZpIGWNFXUaSgzEi9H3NdX9PSEn7JDaAXTkjzGJw6b7Ps4uKDQ+xaDqe/VicVI Qpqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=kWsFTzPG; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 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. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id j63si2476721qke.421.2017.09.26.13.23.24 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 26 Sep 2017 13:23:25 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=kWsFTzPG; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 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]:51022 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwO2-0001U0-Vv for patch@linaro.org; Tue, 26 Sep 2017 16:23:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44020) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwFf-0002xI-8R for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwFc-0003El-Kr for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:43 -0400 Received: from mail-pg0-x236.google.com ([2607:f8b0:400e:c05::236]:46433) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwwFc-0003EB-Fi for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:40 -0400 Received: by mail-pg0-x236.google.com with SMTP id i130so6514097pgc.3 for ; Tue, 26 Sep 2017 13:14:40 -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=zMC0NKR2kUHL8+PcGxOPQFS0+lj7R04nlWLL0JapJto=; b=kWsFTzPG7z7fGpL4vVm61fPSZsbyhd6xiw3kQ15pkIQJXHEIKHnmejeL8MqYE0dx2R oGKD9IOjZD3oxKrPhddcrzBXOyNKSwcIwvEK9EjQTpLYoZCF/QOYiHTSPhvI900a2mcM MLjpwCR4ayg9RChOtDNCQi+edM8SG35bPB9pc= 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=zMC0NKR2kUHL8+PcGxOPQFS0+lj7R04nlWLL0JapJto=; b=daoTJc6QSCjLqc3N8o7c4aeUvXajaQl7n1b0NI+EwyzggEQ1bpeGZH2a6Z6GmqmOX2 LLhn4xtDISVkOTtmzr9YU4cd2cNcvmUSIDPvQYQlHoPlUwNtneIfxwbvIaynjni3xkwT 8hvJQkfdQOJjc9kt2JGw7tH9qdYDhrubwHe3RY8AIZdQ08mhrwoJ8MXW2XH6Nri43/q+ LGf9cfmgobKihjNLFv/1h8nhIhDN7ZZam0U5gvQDBGSKmx5N3tTL0JVQaEsElMT9jOt1 7oopvu7Ru7j+e+ST3YD4TDpf0zCFju++6fEkl+uHvq+VcNJTBNIsXlRsfTNZRpwvBZqm sXrw== X-Gm-Message-State: AHPjjUj3dHqSUfKbRj91ZBNvizFid8IpFSVMBrvxgvFvq0BfCiAf1+Sv VPjM2Ve5dyOhlGguGuY4MJvfp4DtscU= X-Google-Smtp-Source: AOwi7QC5k6Agcp6oWQr7Lb4SEutoLoGuxrHMAXsm5sxAU42853AuL0TR+uWjsBK4mKgv609MDTzsPA== X-Received: by 10.84.238.142 with SMTP id v14mr11825802plk.388.1506456879353; Tue, 26 Sep 2017 13:14:39 -0700 (PDT) Received: from bigtime.twiddle.net ([70.35.39.2]) by smtp.gmail.com with ESMTPSA id r138sm15582470pgr.12.2017.09.26.13.14.38 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 26 Sep 2017 13:14:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 26 Sep 2017 13:14:24 -0700 Message-Id: <20170926201427.2833-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170926201427.2833-1-richard.henderson@linaro.org> References: <20170926201427.2833-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::236 Subject: [Qemu-devel] [PATCH v3 6/9] arm: Support Capstone in disas_set_info X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-ppc@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Tested-by: Alex Bennée Reviewed-by: Alex Bennée Signed-off-by: Richard Henderson --- disas.c | 3 +++ target/arm/cpu.c | 21 ++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) -- 2.13.5 diff --git a/disas.c b/disas.c index 1c44514254..23c4742f8d 100644 --- a/disas.c +++ b/disas.c @@ -451,6 +451,7 @@ void disas(FILE *out, void *code, unsigned long size) print_insn = print_insn_ppc; #elif defined(__aarch64__) && defined(CONFIG_ARM_A64_DIS) print_insn = print_insn_arm_a64; + s.info.cap_arch = CS_ARCH_ARM64; #elif defined(__alpha__) print_insn = print_insn_alpha; #elif defined(__sparc__) @@ -458,6 +459,8 @@ void disas(FILE *out, void *code, unsigned long size) s.info.mach = bfd_mach_sparc_v9b; #elif defined(__arm__) print_insn = print_insn_arm; + s.info.cap_arch = CS_ARCH_ARM; + /* TCG only generates code for arm mode. */ #elif defined(__MIPSEB__) print_insn = print_insn_big_mips; #elif defined(__MIPSEL__) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 4300de66e2..e5f84066b4 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -33,6 +33,7 @@ #include "sysemu/sysemu.h" #include "sysemu/hw_accel.h" #include "kvm_arm.h" +#include "disas/capstone.h" static void arm_cpu_set_pc(CPUState *cs, vaddr value) { @@ -489,10 +490,24 @@ static void arm_disas_set_info(CPUState *cpu, disassemble_info *info) #if defined(CONFIG_ARM_A64_DIS) info->print_insn = print_insn_arm_a64; #endif - } else if (env->thumb) { - info->print_insn = print_insn_thumb1; + info->cap_arch = CS_ARCH_ARM64; } else { - info->print_insn = print_insn_arm; + int cap_mode; + if (env->thumb) { + info->print_insn = print_insn_thumb1; + cap_mode = CS_MODE_THUMB; + } else { + info->print_insn = print_insn_arm; + cap_mode = CS_MODE_ARM; + } + if (arm_feature(env, ARM_FEATURE_V8)) { + cap_mode |= CS_MODE_V8; + } + if (arm_feature(env, ARM_FEATURE_M)) { + cap_mode |= CS_MODE_MCLASS; + } + info->cap_arch = CS_ARCH_ARM; + info->cap_mode = cap_mode; } if (bswap_code(arm_sctlr_b(env))) { #ifdef TARGET_WORDS_BIGENDIAN From patchwork Tue Sep 26 20:14:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 114291 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4242335qgf; Tue, 26 Sep 2017 13:21:12 -0700 (PDT) X-Received: by 10.55.98.214 with SMTP id w205mr15721059qkb.355.1506457271903; Tue, 26 Sep 2017 13:21:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506457271; cv=none; d=google.com; s=arc-20160816; b=polldpPDD9dNNRgF9qbgdch/qvfOEaBwNm7tkiuoHhpiIJfp4rfVHqZw+iKGbsys8P WQSMGUAp9F6vZhkvXFEYr3k9ZD+6ku1pCN9F6SjWHhBFUoOmBj8vB17NfpntMGruknNk COY3leBxC+0KrtRUvtFq2EMEUI1v+Olkdt+O21SDFHFKhi3fzS48bO99iEf3VmwNS34E +GhxczaXsC8WnhJ+V/05l1MDSpgslNciISv17sFt+f5q7/5jg0sYldELaXP3gTScjsXk LBiIOgkHblD4veI3mGpYvp4S3yAs/MibSDgFohsm8mkn8pC1Jpi35k8Q49FKZMjMzWqo Cp2Q== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=cJ5l6HNXUfgpDzEpHbSOX+oIRbEB2raX+y/0EHEZpJo=; b=aeMMdzuTB/Xb6tf3jL9f1rF0rKebmu4lLzfSGAz46OFU4LaymLH+xBYatw8M8qtT78 9COM52t2bQrx6W5/xtS8L+GSoWnQmb6YR6eIg3MSPS0slx3KoSjriz2jC4nPA4m8iyFJ CNmJu3+/J4hEeYxDgt9nPoufTriMZiRSyPVxVmwTJ3AaQJnTYg/PFHY2UEtD5fVdzkK2 2R7TwMkpvVyLRisldXN2BISFhB/yRaU7++IS6oIfnq/dIEaiazLyPrPL3TRp7VLB1lKK 7CYjPMUsvp6LDYAPqTZ1lvsLjTtHibP2G3laVJ7EVmyYekHsN/cvkU/w1gX+ruUmADbc Rkeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=IkeI6/fe; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 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. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 133si5110263qki.523.2017.09.26.13.21.11 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 26 Sep 2017 13:21:11 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=IkeI6/fe; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 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]:51012 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwLt-0008LZ-Qy for patch@linaro.org; Tue, 26 Sep 2017 16:21:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44019) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwFf-0002xH-8V for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwFe-0003Fc-7p for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:43 -0400 Received: from mail-pg0-x22d.google.com ([2607:f8b0:400e:c05::22d]:48917) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwwFe-0003F9-2J for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:42 -0400 Received: by mail-pg0-x22d.google.com with SMTP id v23so6516366pgc.5 for ; Tue, 26 Sep 2017 13:14:42 -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; bh=cJ5l6HNXUfgpDzEpHbSOX+oIRbEB2raX+y/0EHEZpJo=; b=IkeI6/fe4NDEHT62WSoPxKmuACX+DIZj6g9H4rRPscAWG2oUjIxT4r47b+tpkbw/aI bFlA2KGu1Qie7AcFyeDsoTXaTQHLhZkNZzVlOUTwBzgtLVTOA0tCgGK5HNtv7xOmfMYM sC6yYneEomp1TjffuUWQfwWq7QHF0krX1JctE= 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; bh=cJ5l6HNXUfgpDzEpHbSOX+oIRbEB2raX+y/0EHEZpJo=; b=VeC0+Zj2lsxbFZTSAuDzXYMiprYoql/93ajhUWDQLCSGE/1eHroNFvBlpLGXsCcMqH s+fGa+MyVwnxUudn1ZxaYT1cXtx3D2zu2xfeJWz3dKZFONlPhtgfhXlnjjDTwdc+OS0W Hg8iYMU1BPnKtPgmyxmATu9ImdyGq141zLXpAZI6ir24Rx6Vxm1dTye0o1hRIFRPHv7P t95AXfQKZmyAj3JPJBC0LHcakSEqytvPx2Cpg1YQlUc9YDqQzOq7qu1TLGz7c0qHLhSU 6neXXyNjVoYkoCDTJj2u6qFb/XhMV7qe8h26IewmKIKc6yRT7SEjNN4YWfuLsWoLI/kj LTLA== X-Gm-Message-State: AHPjjUgNxDgwc+gS6mc3keuSJ4wegwD/v8IgXbLAO1pfXrYLsFwn5Rfz FR/zTSYOB2Bnaja/QwzVaK3lNi3V1p0= X-Google-Smtp-Source: AOwi7QCKm13meHOnQGnrBgJy4VQ7M1NIvTD4uVU0f2UXCV7Z8KGoMnFq27Fw3poIZuKunBK/Xil0KA== X-Received: by 10.159.197.6 with SMTP id bj6mr11806542plb.178.1506456880939; Tue, 26 Sep 2017 13:14:40 -0700 (PDT) Received: from bigtime.twiddle.net ([70.35.39.2]) by smtp.gmail.com with ESMTPSA id r138sm15582470pgr.12.2017.09.26.13.14.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 26 Sep 2017 13:14:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 26 Sep 2017 13:14:25 -0700 Message-Id: <20170926201427.2833-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170926201427.2833-1-richard.henderson@linaro.org> References: <20170926201427.2833-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::22d Subject: [Qemu-devel] [PATCH v3 7/9] ppc: Support Capstone in disas_set_info X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-ppc@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Richard Henderson --- disas.c | 4 ++++ target/ppc/translate_init.c | 6 ++++++ 2 files changed, 10 insertions(+) -- 2.13.5 diff --git a/disas.c b/disas.c index 23c4742f8d..0d212f2ac5 100644 --- a/disas.c +++ b/disas.c @@ -449,6 +449,10 @@ void disas(FILE *out, void *code, unsigned long size) #elif defined(_ARCH_PPC) s.info.disassembler_options = (char *)"any"; print_insn = print_insn_ppc; + s.info.cap_arch = CS_ARCH_PPC; +# ifdef _ARCH_PPC64 + s.info.cap_mode = CS_MODE_64; +# endif #elif defined(__aarch64__) && defined(CONFIG_ARM_A64_DIS) print_insn = print_insn_arm_a64; s.info.cap_arch = CS_ARCH_ARM64; diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c index 5524b171e0..599068cb22 100644 --- a/target/ppc/translate_init.c +++ b/target/ppc/translate_init.c @@ -35,6 +35,7 @@ #include "mmu-book3s-v3.h" #include "sysemu/qtest.h" #include "qemu/cutils.h" +#include "disas/capstone.h" //#define PPC_DUMP_CPU //#define PPC_DEBUG_SPR @@ -10661,6 +10662,11 @@ static void ppc_disas_set_info(CPUState *cs, disassemble_info *info) } info->disassembler_options = (char *)"any"; info->print_insn = print_insn_ppc; + + info->cap_arch = CS_ARCH_PPC; +#ifdef TARGET_PPC64 + info->cap_mode = CS_MODE_64; +#endif } static Property ppc_cpu_properties[] = { From patchwork Tue Sep 26 20:14:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 114294 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4246203qgf; Tue, 26 Sep 2017 13:25:50 -0700 (PDT) X-Received: by 10.55.177.129 with SMTP id a123mr16450618qkf.210.1506457550370; Tue, 26 Sep 2017 13:25:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506457550; cv=none; d=google.com; s=arc-20160816; b=py8mkznVdTY+2sHEDe04HbEemXhzV311dtVdBJUJH9ZTqJab8CLML8U1q/KLP7J6ld yaNl2OtyQllsDgmdNTjCPo6Eg+5ahLsCguWv9r/O6UjFVYbfwcGbaxQXjh/tdt4xGTib iRAd7s8jq6mE7nQbHZaMuhPAFxqudr6F6z9ojo7N0ar641ALd/fWqAZsEZ0D3xVzkvsn vGvPlVzM6y4X8YFEXrfZwZr7zmThYxhVEwKwXy61+dQjNsVZiuYvPyIjswrcHFmxPZ2+ 7cFOs0iH7433FpPfGxru4VrAifBt473Jng6QHO0eX8fYFw7BQkh6I9ZJK5L+SINeaK1G 4Yjg== 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:arc-authentication-results; bh=iHGWhZ7FMiF/1t3mBnHk2VoW4xUvwNwin4py5V11uoo=; b=yjKyE/i6oCIrCSyYzromCRrcPBx71+VpdOt5QUM6dA6pouSRJ0NYZjbyFKtYyIkQZl ff7pObJOVlAqiPdsiwLS/3B+TQxBT1oF8pWg7IFUQiBjXxwHByae/GZmPsa/Saq5Ld21 tBpv8AIwvlvSJh65OuKYJgQUncU2CAgkY56GanepRp13604KCxy6BdzGE/xPU0l208mu vdHNGJUepkVEgY2u25NupJJifNdo25/p3Ev2RaRr9Zl3N8+pjFvd4/0WtzQ4Rs98uxvT fnMd3mtnnwgRl1T1O64jZ60jjIkZRZaJuu84b3ipX740XNuTo+diAvxM4GJb9/ybODCt Tjyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=V2foSD8u; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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. [208.118.235.17]) by mx.google.com with ESMTPS id i2si1715203qkf.196.2017.09.26.13.25.50 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 26 Sep 2017 13:25:50 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=V2foSD8u; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.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]:51039 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwQO-000349-5e for patch@linaro.org; Tue, 26 Sep 2017 16:25:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44062) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwFg-0002yp-AN for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwFf-0003Gm-Dq for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:44 -0400 Received: from mail-pg0-x22f.google.com ([2607:f8b0:400e:c05::22f]:48917) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwwFf-0003Fw-7T for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:43 -0400 Received: by mail-pg0-x22f.google.com with SMTP id v23so6516393pgc.5 for ; Tue, 26 Sep 2017 13:14:43 -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=iHGWhZ7FMiF/1t3mBnHk2VoW4xUvwNwin4py5V11uoo=; b=V2foSD8upKy8zHkZTTcI/X/T3o4ZgD3BR5f3N6SLpdGSGiyot553RG38IioqV2UFfm XzNz/vCnz4TWhn2qQwt/u3C/uWH97z+do9sPyyQJR93eigSMZhKnxu/tvVkrCqG+NEFw 1AL14DeUKyeIZzS2nrTKAdbhCcjNZO7uyYT1s= 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=iHGWhZ7FMiF/1t3mBnHk2VoW4xUvwNwin4py5V11uoo=; b=RzLeBGLnwbv7ADx9HvVh47bzKWTrnyOjzG2h+PcdyKWNcBN5kmWEEiCMHw9Qj80vT6 CqdaNSpzc+4WGE+N0T2rC/K2NfTvLtdzrTY2s0l17GzAuYt319Gu9CFxQ8E1+Dkme1Lm ySpV+OBFNzdsqol7pNYel3cncynZV5VicK6UzFJjBGZofiEu4wnX2SG/MvtyNFDStnID tMrkOJXjovQL1zR1W/nPqTeSd3qNhCG6Wvt2GkcpCcJM+Gon90mNNVnsOZNpEc7K4IeO LbU9xKXSIGautBwIXMoxQpgdP3W2KJUjdK5bKHZ5Y+arqJy9CUZMAI+fkdTFQL8Ymbp6 TZCA== X-Gm-Message-State: AHPjjUipbNmk1ls1rfRAxvtN6fcOt24kXMyKVVAJRyfYMdQSyCPomw7R XsZMBKjATlFmiFCsfgzqz/vSuHES2kk= X-Google-Smtp-Source: AOwi7QCPO/T7YdbaUmE3sajSJEvwvC/Ikb62vMALuT7RXQ4Er70sNYMZad4vFiaAuWzbFyJ4/Zz2sQ== X-Received: by 10.101.74.129 with SMTP id b1mr11968029pgu.272.1506456882139; Tue, 26 Sep 2017 13:14:42 -0700 (PDT) Received: from bigtime.twiddle.net ([70.35.39.2]) by smtp.gmail.com with ESMTPSA id r138sm15582470pgr.12.2017.09.26.13.14.40 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 26 Sep 2017 13:14:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 26 Sep 2017 13:14:26 -0700 Message-Id: <20170926201427.2833-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170926201427.2833-1-richard.henderson@linaro.org> References: <20170926201427.2833-1-richard.henderson@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::22f Subject: [Qemu-devel] [PATCH v3 8/9] disas: Remove monitor_disas_is_physical X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-ppc@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Even though there is only one monitor, and thus no race on this global data object, there is also no point in having it. We can just as well record the decision in the read_memory_function that we select. Reviewed-by: Alex Bennée Signed-off-by: Richard Henderson --- disas.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) -- 2.13.5 diff --git a/disas.c b/disas.c index 0d212f2ac5..194c523885 100644 --- a/disas.c +++ b/disas.c @@ -513,19 +513,11 @@ const char *lookup_symbol(target_ulong orig_addr) #include "monitor/monitor.h" -static int monitor_disas_is_physical; - static int -monitor_read_memory (bfd_vma memaddr, bfd_byte *myaddr, int length, +physical_read_memory(bfd_vma memaddr, bfd_byte *myaddr, int length, struct disassemble_info *info) { - CPUDebug *s = container_of(info, CPUDebug, info); - - if (monitor_disas_is_physical) { - cpu_physical_memory_read(memaddr, myaddr, length); - } else { - cpu_memory_rw_debug(s->cpu, memaddr, myaddr, length, 0); - } + cpu_physical_memory_read(memaddr, myaddr, length); return 0; } @@ -540,8 +532,8 @@ void monitor_disas(Monitor *mon, CPUState *cpu, INIT_DISASSEMBLE_INFO(s.info, (FILE *)mon, monitor_fprintf); s.cpu = cpu; - monitor_disas_is_physical = is_physical; - s.info.read_memory_func = monitor_read_memory; + s.info.read_memory_func + = (is_physical ? physical_read_memory : target_read_memory); s.info.print_address_func = generic_print_address; s.info.buffer_vma = pc; s.info.cap_arch = -1; From patchwork Tue Sep 26 20:14:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 114292 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp4242408qgf; Tue, 26 Sep 2017 13:21:18 -0700 (PDT) X-Received: by 10.200.17.20 with SMTP id c20mr17942996qtj.321.1506457277986; Tue, 26 Sep 2017 13:21:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506457277; cv=none; d=google.com; s=arc-20160816; b=dTTJRD7nxiu9ZyPAPrQOQCmnfwAygI6QGr5qB7dkzIexvEaVjsdypYZQ7NPtERayDn ysIBBr6OMFXaev3Kyv3/dnTARqDyaQqM/E0pZm5YRA+wkELys0bpHwUcYb7zVFJx9FCC hNtrQNPoGy3Mi+BQDXrxzIhv2pjxuuQagecgbkbZC+ftojB0gx5doQxLnKdafbDpzmTk V8tj2UKjHjBuWqafqX9ExN4IKT7RPFp8dg80HyJhEM3FMUSlksYqnAS/mi+eT3Ax/nsG JaA8mcljpKX5V1sHlEnWbt+WlxiMSUW6ix4PjBKqIgA/2KpB+ZizhJ0K7KbgqSRnsedX Q3Lw== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=hZDT8cNI/9rhnMMwQw4AhrvAIrHkiQH4MRh280ZdV2M=; b=iYGOebl+CDxHS4v9orGTTI7Zsv8CrxLlOEX9uOgMWxSuBxOfL9ov/OlPK5T4XHZ5fQ sqqnmDC5rOFuHF/nvHQ+LDg735pEzKQGSCk8I4ZXAfUTLUtfqvc9gRFTkHg4sTWVNGGh ICnJ8sxZesp7TPcVDoxSLYxaiCmuUOD3Ru9P+E7MYyKkQ/u4LiZ4MMFnARXWskM0+sHE ZCxTgTZ4FaJmsfKM363d0FXe6NBMEZ4lv7p9pd5xNBnqvdkh/UWpb3jfs2s//E3ouMoQ FxS54J1Zx1Ex0xCQVgH0NOGofkIoGzVD70cQJQvurOptamG9YoYzXMcpd2ka6otbWR5C uX4w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Pu2g9p0b; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 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. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id y8si7207259qty.19.2017.09.26.13.21.17 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 26 Sep 2017 13:21:17 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Pu2g9p0b; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 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]:51013 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwLz-0008Of-Rr for patch@linaro.org; Tue, 26 Sep 2017 16:21:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44085) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwwFi-000315-6s for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwwFh-0003Hy-3r for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:46 -0400 Received: from mail-pg0-x22f.google.com ([2607:f8b0:400e:c05::22f]:57028) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dwwFg-0003HW-VY for qemu-devel@nongnu.org; Tue, 26 Sep 2017 16:14:45 -0400 Received: by mail-pg0-x22f.google.com with SMTP id 7so6503514pgd.13 for ; Tue, 26 Sep 2017 13:14:44 -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; bh=hZDT8cNI/9rhnMMwQw4AhrvAIrHkiQH4MRh280ZdV2M=; b=Pu2g9p0bK1/u++slvUhBPxZU9XF6joQc5nMHbrDwVv4NuQZWx7udIrQPhc8lJWexXC WckqFKsaFPVPqLxfOK2PFtXqyJWWOlag2YIVMDLUFWUtpPBQZU6Xo/HSbvuetO0ZXRnA +AQmXOutRl8XQecKa56zjjKnZC7pY5EEecBhA= 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; bh=hZDT8cNI/9rhnMMwQw4AhrvAIrHkiQH4MRh280ZdV2M=; b=HkOIPhRAhq7OX/8DmFnuBAmTPf+aHjeGTSe2IYxGBrG7tx3q8GXYLOAV/xGKovCaJd nll30+jCWR/a4Z1HWDnLFL/ZO9/fcscEeUTi/82pxGmhfm5AFIcvAFF6qQEmFoPEK9/x hAXkGjlBwZmPSRoSjsbtdmn4/2mnppmW2rZz0LikNyLMk+/A5eCB63YcZ8Mz+KSBc65C f4fZvR/WvfdyPXE3O7zGS6+1ICzFpgWvFyHUYA+qmMYX+Ho23DCB9Cv5p9EnfBaFPUpw 697QXPs+kpGHZ1sj+yISEsG18ssPdC42E5c2Lbd6AIz9gwL76BVlQxDHUqzkB4nOJJDM rzKg== X-Gm-Message-State: AHPjjUgDbmBFWZolEB2QI1nVURjgnPC4uUpSQESAHNB3pQys0jafecEu Pn2paXVNi/ro5cAAP8eyg+E5Hmt6HVo= X-Google-Smtp-Source: AOwi7QAFb9qltYmvIRokcGdT8iR6AYYdm+RN8YKybatACZMnTiCpc4/HwwaNBNZuePywAW1ZBz+5mg== X-Received: by 10.99.113.94 with SMTP id b30mr12036012pgn.312.1506456883824; Tue, 26 Sep 2017 13:14:43 -0700 (PDT) Received: from bigtime.twiddle.net ([70.35.39.2]) by smtp.gmail.com with ESMTPSA id r138sm15582470pgr.12.2017.09.26.13.14.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 26 Sep 2017 13:14:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 26 Sep 2017 13:14:27 -0700 Message-Id: <20170926201427.2833-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170926201427.2833-1-richard.henderson@linaro.org> References: <20170926201427.2833-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::22f Subject: [Qemu-devel] [PATCH v3 9/9] disas: Add capstone as submodule X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-ppc@nongnu.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Do not require the submodule, but use it if present (in preference even to a system copy). This will allow us to easily use capstone in older systems for which a package is not available, and also easily track bug fixes from upstream. Signed-off-by: Richard Henderson --- Makefile | 4 ++++ .gitmodules | 3 +++ capstone | 1 + configure | 12 +++++++++++- 4 files changed, 19 insertions(+), 1 deletion(-) create mode 160000 capstone -- 2.13.5 diff --git a/Makefile b/Makefile index 2be61fcf1c..4723a65e9c 100644 --- a/Makefile +++ b/Makefile @@ -335,6 +335,10 @@ subdir-dtc:dtc/libfdt dtc/tests dtc/%: mkdir -p $@ +# ??? Overriding CFLAGS causes us to lose defines added in the sub-makefile. +subdir-capstone: + $(call quiet-command,$(MAKE) -C $(SRC_PATH)/capstone CAPSTONE_SHARED=no BUILDDIR="$(BUILD_DIR)/capstone" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) $(BUILD_DIR)/capstone/libcapstone.a) + $(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \ $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY)) diff --git a/.gitmodules b/.gitmodules index 84c54cdc49..bcb80d701a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,3 +34,6 @@ [submodule "roms/QemuMacDrivers"] path = roms/QemuMacDrivers url = git://git.qemu.org/QemuMacDrivers.git +[submodule "capstone"] + path = capstone + url = https://github.com/aquynh/capstone.git diff --git a/capstone b/capstone new file mode 160000 index 0000000000..a279481dbf --- /dev/null +++ b/capstone @@ -0,0 +1 @@ +Subproject commit a279481dbfd54bb1e2336d771e89978cc6d43176 diff --git a/configure b/configure index 62d172d88a..b0c30992ff 100755 --- a/configure +++ b/configure @@ -4378,7 +4378,14 @@ fi # capstone if test "$capstone" != no; then - if $pkg_config capstone; then + if test -d ${source_path}/capstone ; then + # have submodule capstone - use it + capstone=yes + capstone_internal=yes + mkdir -p capstone + QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include" + LIBS="\$(BUILD_DIR)/capstone/libcapstone.a $LIBS" + elif $pkg_config capstone; then capstone=yes QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)" LIBS="$($pkg_config --libs capstone) $LIBS" @@ -6577,6 +6584,9 @@ done # for target in $targets if [ "$dtc_internal" = "yes" ]; then echo "config-host.h: subdir-dtc" >> $config_host_mak fi +if [ "$capstone_internal" = "yes" ]; then + echo "config-host.h: subdir-capstone" >> $config_host_mak +fi if test "$numa" = "yes"; then echo "CONFIG_NUMA=y" >> $config_host_mak