From patchwork Mon Apr 20 14:01:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: KONRAD Frederic X-Patchwork-Id: 11499047 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3D4F313B2 for ; Mon, 20 Apr 2020 14:04:17 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1D55C221F4 for ; Mon, 20 Apr 2020 14:04:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1D55C221F4 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:36414 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jQX20-0008B7-68 for patchwork-qemu-devel@patchwork.kernel.org; Mon, 20 Apr 2020 10:04:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41066 helo=eggs1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jQX10-0007HQ-8c for qemu-devel@nongnu.org; Mon, 20 Apr 2020 10:03:15 -0400 Received: from Debian-exim by eggs1p.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jQX0z-00033C-Bh for qemu-devel@nongnu.org; Mon, 20 Apr 2020 10:03:13 -0400 Received: from mel.act-europe.fr ([194.98.77.210]:45547 helo=smtp.eu.adacore.com) by eggs1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jQX0y-000308-Q9 for qemu-devel@nongnu.org; Mon, 20 Apr 2020 10:03:13 -0400 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id 1FE46812FD; Mon, 20 Apr 2020 16:03:11 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at eu.adacore.com Received: from smtp.eu.adacore.com ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OyGAkBmjt8OW; Mon, 20 Apr 2020 16:03:11 +0200 (CEST) Received: from localhost.localdomain.localdomain (lfbn-tou-1-1471-22.w90-89.abo.wanadoo.fr [90.89.4.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.eu.adacore.com (Postfix) with ESMTPSA id D43F0812EF; Mon, 20 Apr 2020 16:03:10 +0200 (CEST) From: frederic.konrad@adacore.com To: laurent@vivier.eu Subject: [PATCH v1] target/m68k: fix gdb for m68xxx Date: Mon, 20 Apr 2020 16:01:15 +0200 Message-Id: <1587391275-12748-1-git-send-email-frederic.konrad@adacore.com> X-Mailer: git-send-email 1.8.3.1 Received-SPF: pass client-ip=194.98.77.210; envelope-from=frederic.konrad@adacore.com; helo=smtp.eu.adacore.com X-detected-operating-system: by eggs1p.gnu.org: First seen = 2020/04/20 10:03:11 X-ACL-Warn: Detected OS = Linux 3.1-3.10 [fuzzy] X-Received-From: 194.98.77.210 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: huth@tuxfamily.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , f4bug@amsat.org, qemu-devel@nongnu.org, KONRAD Frederic , alex.bennee@linaro.org, pierre@freepascal.org Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" From: KONRAD Frederic Currently "cf-core.xml" is sent to GDB when using any m68k flavor. Thing is it uses the "org.gnu.gdb.coldfire.core" feature name and gdb 8.3 then expects a coldfire FPU instead of the default m68881 FPU. This is not OK because the m68881 floats registers are 96 bits wide so it crashes GDB with the following error message: (gdb) target remote localhost:7960 Remote debugging using localhost:7960 warning: Register "fp0" has an unsupported size (96 bits) warning: Register "fp1" has an unsupported size (96 bits) ... Remote 'g' packet reply is too long (expected 148 bytes, got 180 bytes): \ 00000000000[...]0000 With this patch: qemu-system-m68k -M none -cpu m68020 -s -S (gdb) tar rem :1234 Remote debugging using :1234 warning: No executable has been specified and target does not support determining executable automatically. Try using the "file" command. 0x00000000 in ?? () (gdb) p $fp0 $1 = nan(0xffffffffffffffff) Signed-off-by: KONRAD Frederic --- configure | 2 +- gdb-xml/m68k-core.xml | 29 +++++++++++++++++++++++++++++ target/m68k/cpu.c | 30 +++++++++++++++++++++++++----- 3 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 gdb-xml/m68k-core.xml diff --git a/configure b/configure index 23b5e93..2b07b85 100755 --- a/configure +++ b/configure @@ -7825,7 +7825,7 @@ case "$target_name" in ;; m68k) bflt="yes" - gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml" + gdb_xml_files="cf-core.xml cf-fp.xml m68k-core.xml m68k-fp.xml" TARGET_SYSTBL_ABI=common ;; microblaze|microblazeel) diff --git a/gdb-xml/m68k-core.xml b/gdb-xml/m68k-core.xml new file mode 100644 index 0000000..5b092d2 --- /dev/null +++ b/gdb-xml/m68k-core.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index 9445fcd..976e624 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -297,6 +297,21 @@ static void m68k_cpu_class_init(ObjectClass *c, void *data) dc->vmsd = &vmstate_m68k_cpu; } +static void m68k_cpu_class_init_m68k_core(ObjectClass *c, void *data) +{ + CPUClass *cc = CPU_CLASS(c); + + cc->gdb_core_xml_file = "m68k-core.xml"; +} + +#define DEFINE_M68K_CPU_TYPE_WITH_CLASS(cpu_model, initfn, classinit) \ + { \ + .name = M68K_CPU_TYPE_NAME(cpu_model), \ + .instance_init = initfn, \ + .parent = TYPE_M68K_CPU, \ + .class_init = classinit, \ + } + #define DEFINE_M68K_CPU_TYPE(cpu_model, initfn) \ { \ .name = M68K_CPU_TYPE_NAME(cpu_model), \ @@ -314,11 +329,16 @@ static const TypeInfo m68k_cpus_type_infos[] = { .class_size = sizeof(M68kCPUClass), .class_init = m68k_cpu_class_init, }, - DEFINE_M68K_CPU_TYPE("m68000", m68000_cpu_initfn), - DEFINE_M68K_CPU_TYPE("m68020", m68020_cpu_initfn), - DEFINE_M68K_CPU_TYPE("m68030", m68030_cpu_initfn), - DEFINE_M68K_CPU_TYPE("m68040", m68040_cpu_initfn), - DEFINE_M68K_CPU_TYPE("m68060", m68060_cpu_initfn), + DEFINE_M68K_CPU_TYPE_WITH_CLASS("m68000", m68000_cpu_initfn, + m68k_cpu_class_init_m68k_core), + DEFINE_M68K_CPU_TYPE_WITH_CLASS("m68020", m68020_cpu_initfn, + m68k_cpu_class_init_m68k_core), + DEFINE_M68K_CPU_TYPE_WITH_CLASS("m68030", m68030_cpu_initfn, + m68k_cpu_class_init_m68k_core), + DEFINE_M68K_CPU_TYPE_WITH_CLASS("m68040", m68040_cpu_initfn, + m68k_cpu_class_init_m68k_core), + DEFINE_M68K_CPU_TYPE_WITH_CLASS("m68060", m68060_cpu_initfn, + m68k_cpu_class_init_m68k_core), DEFINE_M68K_CPU_TYPE("m5206", m5206_cpu_initfn), DEFINE_M68K_CPU_TYPE("m5208", m5208_cpu_initfn), DEFINE_M68K_CPU_TYPE("cfv4e", cfv4e_cpu_initfn),