Cover Letter Detail
Show a cover letter.
GET /api/1.0/covers/2198294/?format=api
{ "id": 2198294, "url": "http://patchwork.ozlabs.org/api/1.0/covers/2198294/?format=api", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/1.0/projects/14/?format=api", "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=api", "name": "Philippe Mathieu-Daudé", "email": "philmd@linaro.org" }, "series": [ { "id": 492715, "url": "http://patchwork.ozlabs.org/api/1.0/series/492715/?format=api", "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%)" }