{"id":2198294,"url":"http://patchwork.ozlabs.org/api/1.0/covers/2198294/?format=json","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.0/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260219191955.83815-1-philmd@linaro.org>","date":"2026-02-19T19:19:02","name":"[v2,00/50] gdbstub: Build once on various targets (single-binary)","submitter":{"id":85046,"url":"http://patchwork.ozlabs.org/api/1.0/people/85046/?format=json","name":"Philippe Mathieu-Daudé","email":"philmd@linaro.org"},"series":[{"id":492715,"url":"http://patchwork.ozlabs.org/api/1.0/series/492715/?format=json","date":"2026-02-19T19:19:03","name":"gdbstub: Build once on various targets (single-binary)","version":2,"mbox":"http://patchwork.ozlabs.org/series/492715/mbox/"}],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=exXgHUWl;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fH3Bp4KVYz1xxQ\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 20 Feb 2026 06:21:06 +1100 (AEDT)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1vt9ZH-0007qA-WF; Thu, 19 Feb 2026 14:20:08 -0500","from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1vt9ZD-0007pE-R0\n for qemu-devel@nongnu.org; Thu, 19 Feb 2026 14:20:04 -0500","from mail-wm1-x335.google.com ([2a00:1450:4864:20::335])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1vt9Z9-0007NL-Tx\n for qemu-devel@nongnu.org; Thu, 19 Feb 2026 14:20:03 -0500","by mail-wm1-x335.google.com with SMTP id\n 5b1f17b1804b1-4834826e5a0so14084765e9.2\n for <qemu-devel@nongnu.org>; Thu, 19 Feb 2026 11:19:59 -0800 (PST)","from localhost.localdomain (88-187-86-199.subs.proxad.net.\n [88.187.86.199]) by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-483a31bfbd0sm21494795e9.6.2026.02.19.11.19.56\n (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);\n Thu, 19 Feb 2026 11:19:57 -0800 (PST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1771528798; x=1772133598; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:from:to:cc:subject:date:message-id:reply-to;\n bh=8+pnWOJBJoMrrb3M/TGtd76e4GjVLqIYK4EQBYWzI8Y=;\n b=exXgHUWl3WbmP43nll+yuYQ9yfrPhVNGetPti07kOpDb9QZDqgSFaPoXkqhQYgrypD\n Dz+2cxtjBnNm10pUVfEORewbDlx2lqxqcpuxnP099J8UayzNohfSC92T83SpPvP/yrDz\n hOYzAUGqKk07+h/8xtNlvDj5j5gqxHBRqmgxoYCQUjihBjIGiAgZ1VD3X3jOlU+1p2nO\n frI7NQuycRuTJXx9nYja85FW4qcy8INBXyMihwZ7tyFG1DQDvYcGFNx80qVb32KlRpnK\n Fsbtk8nscOLQT3LfNeL4V6o4gcIPRQzeDM98iuJkKBGRLTdLzQ5SYn9nptIDDnpxDf0S\n VZ+Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1771528798; x=1772133598;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=8+pnWOJBJoMrrb3M/TGtd76e4GjVLqIYK4EQBYWzI8Y=;\n b=ZOh5PxRy/9BGNmNlNviVnxQfpyMtXMGoT4dVEQbWyp/BxypjEmhZxRMgxBuY4ZpH//\n 0fy/pbqbu3zGTAQ3vdXJ+imgdYssQFeT44iERAeLAVaa6O3duz8aB24gqmjg6QiSiCH7\n +G5il15M9kK79zjEXL06bBH/BxOzznSWX0jLcmWKt2ahs2J4O6/zIVSf++LkH+9I0Uqa\n 34xPqLccoAY0QOpQsJg7vHqglcK11FsUrhZT3qiTts6/Ar5Y+9WfBQ7/hqbjRonvQbLz\n ceB9FnLHgo2RpgAjtz3tTTugxctYLZPd62Tv6WfcUJ/alEZJNqIfTH+TKufcNlBXe6p/\n ixsg==","X-Gm-Message-State":"AOJu0Ywt9jR9VJHnvWxoda9PHcvnEDn+0q5HD1LC6YHzFNGflN/Kka3j\n 3rVMdu6Jy3ZSJiNNCoOP2EBnV3tcNORRQsGpdKrqOHH02lRSGesYSwF2MfXXANF7/jFBCPTzcgX\n Pb9xRmvOw4g==","X-Gm-Gg":"AZuq6aJVUPxwhfNHawS0S/u8H7gw324on/nSGI6Nw+tizTmpfDJ2YWackNFzwFXe44N\n uRkBK5TVTDNSHSbbqoDMOscFtlIt+bPS0qWgoBhr3sjlEmZVSxoG6hzmxr2RwNtfavE1eo0Z62/\n o+Vb4bOMEJDDrHhcmyHhZvvgtyA94jRnHX841GKFqf/9j3KTgswWwHNv2ksfBQHGWba6Au0rt4h\n V7sLNbaSsU9VU30E6I7nvrXzl1Qm5v3Aj/1eiyPfZcL0aTxBqJh/EK54S8w9KsS1IYc0mb+JcBQ\n 3Gtr5t1SAvQ52IU+JX2bVTExA5rogJfMSIIpMaQDQDxV4uuBFiDgqicpGDA6HJ1htYdpuISJYJZ\n 3iCEmNSdWuv4lFmYoDNyzHuWM/vQ5zz6p8X7PuLhC/+Bi3WYbf+6unxFUvVd9zIbrRoaMcvc8H4\n ctfvAaLuvEbj32QfpGbY1zeaE53dQU6+CyYYmID0X+QkWj3q/BETV8q5x+GuTkykRlOHRmBhN8","X-Received":"by 2002:a05:600c:8411:b0:480:4a90:1b06 with SMTP id\n 5b1f17b1804b1-48398b7d820mr97920305e9.34.1771528797856;\n Thu, 19 Feb 2026 11:19:57 -0800 (PST)","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","To":"qemu-devel@nongnu.org","Cc":"Pierrick Bouvier <pierrick.bouvier@linaro.org>,\n Richard Henderson <richard.henderson@linaro.org>, qemu-s390x@nongnu.org,\n\t=?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>, qemu-riscv@nongnu.org,\n qemu-ppc@nongnu.org,\n =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","Subject":"[PATCH v2 00/50] gdbstub: Build once on various targets\n (single-binary)","Date":"Thu, 19 Feb 2026 20:19:02 +0100","Message-ID":"<20260219191955.83815-1-philmd@linaro.org>","X-Mailer":"git-send-email 2.52.0","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=2a00:1450:4864:20::335;\n envelope-from=philmd@linaro.org; helo=mail-wm1-x335.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"This series absorbed \"monitor/hmp: Automatically handle\ngdb-xml exposed registers\", thus version 2. Previous cover:\n\n  MonitorDef registers parsing is one of the oldest APIs in QEMU,\n  thus predates gdbstub and XML register files. The latters are\n  maintained by the GDB/binutils project and are more up-to-date.\n  Getting the target register list from them allows to expose\n  all accessible registers to the HMP commands.\n\n  This series adds gdb_get_register() to monitor to use XML\n  generated registers, and remove the legacy MonitorDef entries\n  which became unreachable.\n\n  First we need to have the SPARC target better follow the\n  gdb-xml API.\n\nOn top of that we remove more TARGET_LONG_BITS uses, replacing\nldtul_p() -> ldn_p() and gdb_get_regl() -> gdb_get_reg32/64(),\nallowing to build various gdbstub.c files once. Few other meson\ncleanups on the way.\n\nPhilippe Mathieu-Daudé (50):\n  target/ppc: Move user_only_helper.c to target_user_arch[] source set\n  target/ppc: Remove PPC_DEBUG_SPR left-over comment\n  target/i386: Inline GDB_FORCE_64 definition\n  target/avr: Fix typo in gdb-xml feature name\n  target/alpha: Document gdbstub register indexes\n  target/riscv: Extract monitor-related code to monitor.c\n  target/ppc: Fix CPUClass::gdb_num_core_regs value\n  target/ppc: Remove dead code depending on USE_APPLE_GDB\n  gdbstub: Always infer gdb_num_core_regs when using XML file\n  target/sparc: Introduce sparc_cpu_register_gdb_regs() stub\n  target/sparc: Restore 'gdb-xml/sparc64-cp0.xml'\n  target/sparc: Restore 'gdb-xml/sparc64-fpu.xml'\n  target/sparc: Restore 'gdb-xml/sparc64-cpu.xml'\n  target/sparc: Expose gdbstub registers to sparc32plus target\n  target/sparc: Expose gdbstub registers to sparc32 targets\n  monitor/hmp: Handle gdb-xml exposed registers via  gdb_get_register()\n  target/sparc: Remove MonitorDef register entries available via gdbstub\n  target/i386: Remove MonitorDef register entries available via gdbstub\n  target/m68k: Remove MonitorDef register entries available via gdbstub\n  target/ppc: Remove MonitorDef register entries available via gdbstub\n  target/ppc: Extract monitor-related code to monitor.c\n  target/or1k: Use XML register definitions from GDB\n  target/riscv: Remove empty target_monitor_defs() symbol\n  target/sparc: Factor sparc_cpu_gdb_write_register() out\n  target/ppc: Replace ldtul_p() -> ldn_p()\n  target/mips: Replace ldtul_p() -> ldn_p()\n  target/riscv: Replace ldtul_p() -> ldn_p()\n  target/riscv: Remove unnecessary target_ulong type uses\n  target/i386: Replace ldtul_p() -> ldn_p()\n  target/i386: Expand 64-bit definitions when TARGET_LONG_BITS == 64\n  gdbstub: Remove ldtul*() macros\n  target/alpha: Expand gdb_get_regl() -> gdb_get_reg64()\n  target/hexagon: Expand gdb_get_regl() -> gdb_get_reg32()\n  target/rx: Expand gdb_get_regl() -> gdb_get_reg32()\n  target/sh4: Expand gdb_get_regl() -> gdb_get_reg32()\n  target/sparc: Expand gdb_get_regl() in gdb_get_rega()\n  gdbstub/helpers: Convert gdb_get_regl() macro to inlined helper\n  target/microblaze: Build 'gdbstub.c' once for system binaries\n  target/sh4: Build 'monitor.c' once for system binaries\n  target/sh4: Build 'gdbstub.c' once for system binaries\n  target/or1k: Rename 'openrisc' -> 'or1k' in meson.build\n  target/or1k: Build 'gdbstub.c' once for system single binary\n  target/alpha: Build 'gdbstub.c' once for system single binary\n  target/avr: Build 'gdbstub.c' once for system single binary\n  target/loongarch: Build 'gdbstub.c' once for system single binary\n  target/m68k: Build 'gdbstub.c' once for system single binary\n  target/rx: Build 'gdbstub.c' once for system single binary\n  target/s390x: Build 'gdbstub.c' once for system single binary\n  target/tricore: Build 'gdbstub.c' once for system single binary\n  DONOTREVIEW Revert \"target/loongarch: Build 'gdbstub.c' once\"\n\n configs/targets/or1k-linux-user.mak           |   1 +\n configs/targets/or1k-softmmu.mak              |   1 +\n configs/targets/sparc-linux-user.mak          |   1 +\n configs/targets/sparc-softmmu.mak             |   1 +\n configs/targets/sparc32plus-linux-user.mak    |   1 +\n configs/targets/sparc64-linux-user.mak        |   2 +-\n configs/targets/sparc64-softmmu.mak           |   2 +-\n include/gdbstub/helpers.h                     |  28 +-\n include/hw/core/cpu.h                         |   4 +-\n target/ppc/cpu.h                              |   2 -\n target/sparc/cpu.h                            |   1 +\n gdbstub/gdbstub.c                             |   1 +\n monitor/hmp.c                                 |  49 ++-\n target/alpha/cpu.c                            |   1 -\n target/alpha/gdbstub.c                        |  27 +-\n target/hexagon/gdbstub.c                      |  12 +-\n target/i386/gdbstub.c                         |  23 +-\n target/i386/monitor.c                         |  39 ---\n target/m68k/monitor.c                         |  18 -\n target/mips/gdbstub.c                         |  14 +-\n target/or1k/cpu.c                             |   2 +-\n target/ppc/cpu_init.c                         |  10 -\n target/ppc/gdbstub.c                          | 146 +-------\n target/ppc/monitor.c                          |  41 +++\n target/ppc/ppc-qmp-cmds.c                     | 148 +-------\n target/riscv/gdbstub.c                        |  20 +-\n target/riscv/monitor.c                        | 135 ++++++++\n target/riscv/riscv-qmp-cmds.c                 | 150 ---------\n target/rx/gdbstub.c                           |  20 +-\n target/sh4/gdbstub.c                          |  32 +-\n target/sparc/cpu.c                            |   7 +-\n target/sparc/gdbstub.c                        | 317 +++++++++++-------\n target/sparc/monitor.c                        | 107 ------\n gdb-xml/avr-cpu.xml                           |   2 +-\n gdb-xml/or1k-core.xml                         |  65 ++++\n gdb-xml/sparc32-cp0.xml                       |  18 +\n gdb-xml/sparc32-cpu.xml                       |  42 +++\n gdb-xml/sparc32-fpu.xml                       |  42 +++\n gdb-xml/sparc64-cp0.xml                       |  16 +\n gdb-xml/sparc64-cpu.xml                       |  42 +++\n gdb-xml/{sparc64-core.xml => sparc64-fpu.xml} |  44 +--\n target/alpha/meson.build                      |  14 +-\n target/avr/meson.build                        |   5 +-\n target/m68k/meson.build                       |   9 +-\n target/microblaze/meson.build                 |  11 +-\n target/or1k/meson.build                       |  23 +-\n target/ppc/meson.build                        |   7 +-\n target/rx/meson.build                         |   6 +-\n target/s390x/meson.build                      |   3 +-\n target/sh4/meson.build                        |  14 +-\n target/tricore/meson.build                    |  10 +-\n 51 files changed, 836 insertions(+), 900 deletions(-)\n create mode 100644 target/ppc/monitor.c\n create mode 100644 gdb-xml/or1k-core.xml\n create mode 100644 gdb-xml/sparc32-cp0.xml\n create mode 100644 gdb-xml/sparc32-cpu.xml\n create mode 100644 gdb-xml/sparc32-fpu.xml\n create mode 100644 gdb-xml/sparc64-cp0.xml\n create mode 100644 gdb-xml/sparc64-cpu.xml\n rename gdb-xml/{sparc64-core.xml => sparc64-fpu.xml} (59%)"}