From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785112; cv=none; d=zoho.com; s=zohoarc; b=f3P39PjsPhLGdVaQllQNaDm5mLr9M9o4TCQOn6B8TymxcyqDYUY1tYkUyzpCyZ/mttDh/9HlAvzK4G781UiYzLHLmOZOIw3dl6yUnNh87SZk7qo7Gg/3RIhyZWLe9v9wgRXKgG98bBUwg1djtxG5ZBLU4rJrI67bwJzc7+OHRC4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785112; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=9gs1pjZcHlRiuvyF89Xf0dDUFOI/nZh6LcrIM/HDQRg=; b=SEP7zun6X5eXjzFGIKRQ9ddH6tLEU8S6lkY4tHknT3l41RIw+3rOWagZu6m3PdUzYyav0v6OMU9pmL33Iw+s48PTXpczPJQhkQh+W0gv4XeZs+qQwy2IGhy22/YxTU4l4n0a5IkZIeibJSKsd96gvVYAEzdHy8rVMlwxNtjx+ng= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785112204122.74044738070847; Thu, 2 May 2019 01:18:32 -0700 (PDT) Received: from localhost ([127.0.0.1]:47188 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6v9-0004EA-19 for importer@patchew.org; Thu, 02 May 2019 04:18:23 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42461) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6t1-000351-CM for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6sz-0007Eo-Le for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:11 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:42034) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6sz-00079X-FL for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:09 -0400 Received: by mail-wr1-x442.google.com with SMTP id l2so1983812wrb.9 for ; Thu, 02 May 2019 01:16:08 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.05 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9gs1pjZcHlRiuvyF89Xf0dDUFOI/nZh6LcrIM/HDQRg=; b=PS9HWP/MIAjLGJXkZy0nraGanI83qmx++phe56i5PKbGKQ/Np2Cvscj+g3cJuoRKB4 N9w4nHBoTdBKsMBnv9XmYTDlpOGSyztKcvwd0a1l4QAGVImZ2okgwNV2BgUtQ3IvEceg fiXEWUQGf1ni1vw82FXNIo/RXNfX+Y1fYpNnDanolb6xqnlHWmHqYfnrVnfXr+G1jhWv fTsGKSqUdPVvjMQHnts9z7Uguh5jYGEV9r+6tulIm+Pq26XFCeEUwJff5ShoumfSCI5f jDrgt0Kf+f+mXiANGSJOTBpxeSyXdRRg2BsfdOQiMG7OgOco43eDbUMXqkzViFwcg0rp 5Ocg== 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=9gs1pjZcHlRiuvyF89Xf0dDUFOI/nZh6LcrIM/HDQRg=; b=e70Wsg7I1/CvDnsUk0Jc2CqA+c79VsqpKVgLPzYmzeRJMgjVhUjzJYcIpZL2w6QCBs lMn66dAFZClpw1A1nroK/4bPKuk42hEneOfAEVJr8EURfa8c08vGuPfqsLgaHgAjBI8Y YGbHdpMLaGQios1bfAkru6AZZDq8wEfancS3izlccQG1bq5ouKLoNrXJq1ahLToOrsRf IaeEYj5zlmf7WdQlVLbMLP4+JrKBSpkOkVJpQqXEm8Pu0RxOPRKKncu3qzMySpNr4QSH 4gLBlu/xf9uL+mkSGNH/ZERhBflmgvV1IgS356oi+FPnfFCZnT3VGeWS56fJ78ZOsLF/ bbyA== X-Gm-Message-State: APjAAAUf03bXnmS8OnVDsLeBZdv/EVjTAQLSD9tjFoKXPoxKuhNgc7NL T1g6KTraQRqAqha/e2w9HRB8ARoG X-Google-Smtp-Source: APXvYqyMliQOexKRZ0Rcdic0GRF1LnwZl8zGkbeAaF30CrIt8BHJtFqA19XrawNPEJrTAWXptTOGfQ== X-Received: by 2002:adf:eec8:: with SMTP id a8mr1733251wrp.64.1556784967273; Thu, 02 May 2019 01:16:07 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:28 +0300 Message-Id: <20190502081554.5521-2-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v9 01/27] gdbstub: Add infrastructure to parse cmd packets 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) diff --git a/gdbstub.c b/gdbstub.c index d54abd17cc..d5e0f3878a 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1268,6 +1268,206 @@ out: return res; } =20 +typedef union GdbCmdVariant { + const char *data; + uint8_t opcode; + unsigned long val_ul; + unsigned long long val_ull; + struct { + GDBThreadIdKind kind; + uint32_t pid; + uint32_t tid; + } thread_id; +} GdbCmdVariant; + +static const char *cmd_next_param(const char *param, const char delimiter) +{ + static const char all_delimiters[] =3D ",;:=3D"; + char curr_delimiters[2] =3D {0}; + const char *delimiters; + + if (delimiter =3D=3D '?') { + delimiters =3D all_delimiters; + } else if (delimiter =3D=3D '0') { + return strchr(param, '\0'); + } else if (delimiter =3D=3D '.' && *param) { + return param + 1; + } else { + curr_delimiters[0] =3D delimiter; + delimiters =3D curr_delimiters; + } + + param +=3D strcspn(param, delimiters); + if (*param) { + param++; + } + return param; +} + +static int cmd_parse_params(const char *data, const char *schema, + GdbCmdVariant *params, int *num_params) +{ + int curr_param; + const char *curr_schema, *curr_data; + + *num_params =3D 0; + + if (!schema) { + return 0; + } + + curr_schema =3D schema; + curr_param =3D 0; + curr_data =3D data; + while (curr_schema[0] && curr_schema[1] && *curr_data) { + switch (curr_schema[0]) { + case 'l': + if (qemu_strtoul(curr_data, &curr_data, 16, + ¶ms[curr_param].val_ul)) { + return -EINVAL; + } + curr_param++; + curr_data =3D cmd_next_param(curr_data, curr_schema[1]); + break; + case 'L': + if (qemu_strtou64(curr_data, &curr_data, 16, + (uint64_t *)¶ms[curr_param].val_ull)) { + return -EINVAL; + } + curr_param++; + curr_data =3D cmd_next_param(curr_data, curr_schema[1]); + break; + case 's': + params[curr_param].data =3D curr_data; + curr_param++; + curr_data =3D cmd_next_param(curr_data, curr_schema[1]); + break; + case 'o': + params[curr_param].opcode =3D *(uint8_t *)curr_data; + curr_param++; + curr_data =3D cmd_next_param(curr_data, curr_schema[1]); + break; + case 't': + params[curr_param].thread_id.kind =3D + read_thread_id(curr_data, &curr_data, + ¶ms[curr_param].thread_id.pid, + ¶ms[curr_param].thread_id.tid); + curr_param++; + curr_data =3D cmd_next_param(curr_data, curr_schema[1]); + break; + case '?': + curr_data =3D cmd_next_param(curr_data, curr_schema[1]); + break; + default: + return -EINVAL; + } + curr_schema +=3D 2; + } + + *num_params =3D curr_param; + return 0; +} + +typedef struct GdbCmdContext { + GDBState *s; + GdbCmdVariant *params; + int num_params; + uint8_t mem_buf[MAX_PACKET_LENGTH]; + char str_buf[MAX_PACKET_LENGTH + 1]; +} GdbCmdContext; + +typedef void (*GdbCmdHandler)(GdbCmdContext *gdb_ctx, void *user_ctx); + +/* + * cmd_startswith -> cmd is compared using startswith + * + * + * schema definitions: + * Each schema parameter entry consists of 2 chars, + * the first char represents the parameter type handling + * the second char represents the delimiter for the next parameter + * + * Currently supported schema types: + * 'l' -> unsigned long (stored in .val_ul) + * 'L' -> unsigned long long (stored in .val_ull) + * 's' -> string (stored in .data) + * 'o' -> single char (stored in .opcode) + * 't' -> thread id (stored in .thread_id) + * '?' -> skip according to delimiter + * + * Currently supported delimiters: + * '?' -> Stop at any delimiter (",;:=3D\0") + * '0' -> Stop at "\0" + * '.' -> Skip 1 char unless reached "\0" + * Any other value is treated as the delimiter value itself + */ +typedef struct GdbCmdParseEntry { + GdbCmdHandler handler; + const char *cmd; + union { + int flags; + struct { + int cmd_startswith:1; + }; + }; + const char *schema; +} GdbCmdParseEntry; + +static inline int startswith(const char *string, const char *pattern) +{ + return !strncmp(string, pattern, strlen(pattern)); +} + +static int process_string_cmd( + GDBState *s, void *user_ctx, const char *data, + const GdbCmdParseEntry *cmds, int num_cmds) + __attribute__((unused)); + +static int process_string_cmd(GDBState *s, void *user_ctx, const char *dat= a, + const GdbCmdParseEntry *cmds, int num_cmds) +{ + int i, schema_len, max_num_params =3D 0; + GdbCmdContext gdb_ctx; + + if (!cmds) { + return -1; + } + + for (i =3D 0; i < num_cmds; i++) { + const GdbCmdParseEntry *cmd =3D &cmds[i]; + g_assert(cmd->handler && cmd->cmd); + + if ((cmd->cmd_startswith && !startswith(data, cmd->cmd)) || + (!cmd->cmd_startswith && strcmp(cmd->cmd, data))) { + continue; + } + + if (cmd->schema) { + schema_len =3D strlen(cmd->schema); + if (schema_len % 2) { + return -2; + } + + max_num_params =3D schema_len / 2; + } + + gdb_ctx.params =3D + (GdbCmdVariant *)alloca(sizeof(*gdb_ctx.params) * max_num_para= ms); + memset(gdb_ctx.params, 0, sizeof(*gdb_ctx.params) * max_num_params= ); + + if (cmd_parse_params(&data[strlen(cmd->cmd)], cmd->schema, + gdb_ctx.params, &gdb_ctx.num_params)) { + return -1; + } + + gdb_ctx.s =3D s; + cmd->handler(&gdb_ctx, user_ctx); + return 0; + } + + return -1; +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785113; cv=none; d=zoho.com; s=zohoarc; b=eKrehG2CqlcHCgy3jAu0J3p2sR4khdVg7Qe1ORuHV/FV+4btDRwpKXqcIxyujCELveuNEAWNR25j+OajP5lPxfFAIJN/8aVAfvqw/GhRdo6z+7Qgk/J/Imoe+6MwCYf/Q0Oqdxstwj7cUve9qQoT4FBmAro6DfTkHlDcbsVP5DM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785113; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=o9g7yNsrGp0cm0nQks6oxRIXlO2CyhOpcYCjoRIegtQ=; b=RSyfeFjx38tRL0jNV3+rKDteutqoPqfcrD+vJ5R7U18gvCEe6gG8OkuGA1c9qpwyC4s/Yfkolnwcwi0FQHd2DgYH9fP40olnoISOeD6a+66ndj3WAE67DFXhM+CWTk4jmqxUUyaoF4EbJSQKvGZV2zXkoQFEoHIeuhqfDrNMfmA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 155678511378770.58219491019531; Thu, 2 May 2019 01:18:33 -0700 (PDT) Received: from localhost ([127.0.0.1]:47192 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6vD-0004In-Hf for importer@patchew.org; Thu, 02 May 2019 04:18:27 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42488) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6t3-000357-BH for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6t1-0007GI-Ge for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:13 -0400 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]:35254) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6t1-0007Ea-Aj for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:11 -0400 Received: by mail-wr1-x444.google.com with SMTP id f7so2031951wrs.2 for ; Thu, 02 May 2019 01:16:10 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.07 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=o9g7yNsrGp0cm0nQks6oxRIXlO2CyhOpcYCjoRIegtQ=; b=TPDSUDsx1b4/+tuFMGwcj6Si+1Z6tZT+ncA3pFeq1vN/C1foc1FPpS2YqSvY5Xpwlp /Vj+/wcn2JjxQQJFyDWCsUky21s5Yv+d1yuCovGj8SUlZJPZyYMzDkYE16qRnkqT5v49 fI8Y4eBMxXJtFpJuPBQhwrKeE7caF/h8sIcF34gZHb9QUUhp0HPQl4hyVdrrIkjbhhqs eZypk0BpoHpCanCwE2DgEuWaocZ3SbfxZ8acKAf2F/f7B41cV2gWNx5Mdio6GwZxE/MD OnzNytekIBC8SOasfglXVH9QUZjVLoYxeTBJYji2Kl0EIfcGccXY1MSBnr2qY95Hwmw4 kQEw== 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=o9g7yNsrGp0cm0nQks6oxRIXlO2CyhOpcYCjoRIegtQ=; b=JMpcPmmG72kUlCK5xSFSoGj1XvoMFsYLPXT/srME/2kyGV/hWQFtO0U1pkD8RbS+Wk Hl919DJlaHXJk/9RKNsWfNIh7GDZYnSMpcH4+NrXmaDJarKgYtyy18g+j+WBSZ7HZ2w7 V5Bk8KPuZORK0/18SCJdX3DGJU2u9XK8Dmm9+oCtx36T0Nl3Tso9YWoWpOm+4UQlYGpo q6m4Wh/oIJUIlCZXDrTes5qjhv6l84iJ2GjNYMeNyzFBrnoNg+eFj0v1A0q5POkiF9kG EO5lhypdH03jeydTPRm5jdA8mni+6OdMmDxkrVdr5VOzRl438K8MrFjyY8D5A7ff022k x5Qg== X-Gm-Message-State: APjAAAWZZwVRCltBM7IX5GDkKMhGBgEMfBIveFVeOgSFo5s/GjeCeM8M aVxrnwQ3iQfIfp5FH04kwnfFaI7H X-Google-Smtp-Source: APXvYqxLj4B/HnnAt92t56MYBnCCBwZTx5uItuGBIn/x8Xb/LT5W1EFFfFu/O7nJkZ8+1VV59Yynzg== X-Received: by 2002:adf:eb03:: with SMTP id s3mr876801wrn.170.1556784968761; Thu, 02 May 2019 01:16:08 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:29 +0300 Message-Id: <20190502081554.5521-3-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::444 Subject: [Qemu-devel] [PATCH v9 02/27] gdbstub: Implement deatch (D pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 90 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index d5e0f3878a..621d689868 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1418,11 +1418,6 @@ static inline int startswith(const char *string, con= st char *pattern) return !strncmp(string, pattern, strlen(pattern)); } =20 -static int process_string_cmd( - GDBState *s, void *user_ctx, const char *data, - const GdbCmdParseEntry *cmds, int num_cmds) - __attribute__((unused)); - static int process_string_cmd(GDBState *s, void *user_ctx, const char *dat= a, const GdbCmdParseEntry *cmds, int num_cmds) { @@ -1468,6 +1463,41 @@ static int process_string_cmd(GDBState *s, void *use= r_ctx, const char *data, return -1; } =20 +static void handle_detach(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + GDBProcess *process; + GDBState *s =3D gdb_ctx->s; + uint32_t pid =3D 1; + + if (s->multiprocess) { + if (!gdb_ctx->num_params) { + put_packet(s, "E22"); + return; + } + + pid =3D gdb_ctx->params[0].val_ul; + } + + process =3D gdb_get_process(s, pid); + gdb_process_breakpoint_remove_all(s, process); + process->attached =3D false; + + if (pid =3D=3D gdb_get_cpu_pid(s, s->c_cpu)) { + s->c_cpu =3D gdb_first_attached_cpu(s); + } + + if (pid =3D=3D gdb_get_cpu_pid(s, s->g_cpu)) { + s->g_cpu =3D gdb_first_attached_cpu(s); + } + + if (!s->c_cpu) { + /* No more process attached */ + gdb_syscall_mode =3D GDB_SYS_DISABLED; + gdb_continue(s); + } + put_packet(s, "OK"); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1482,6 +1512,7 @@ static int gdb_handle_packet(GDBState *s, const char = *line_buf) uint8_t *registers; target_ulong addr, len; GDBThreadIdKind thread_kind; + const GdbCmdParseEntry *cmd_parser =3D NULL; =20 trace_gdbstub_io_command(line_buf); =20 @@ -1582,42 +1613,15 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) error_report("QEMU: Terminated via GDBstub"); exit(0); case 'D': - /* Detach packet */ - pid =3D 1; - - if (s->multiprocess) { - unsigned long lpid; - if (*p !=3D ';') { - put_packet(s, "E22"); - break; - } - - if (qemu_strtoul(p + 1, &p, 16, &lpid)) { - put_packet(s, "E22"); - break; - } - - pid =3D lpid; - } - - process =3D gdb_get_process(s, pid); - gdb_process_breakpoint_remove_all(s, process); - process->attached =3D false; - - if (pid =3D=3D gdb_get_cpu_pid(s, s->c_cpu)) { - s->c_cpu =3D gdb_first_attached_cpu(s); - } - - if (pid =3D=3D gdb_get_cpu_pid(s, s->g_cpu)) { - s->g_cpu =3D gdb_first_attached_cpu(s); - } - - if (s->c_cpu =3D=3D NULL) { - /* No more process attached */ - gdb_syscall_mode =3D GDB_SYS_DISABLED; - gdb_continue(s); + { + static const GdbCmdParseEntry detach_cmd_desc =3D { + .handler =3D handle_detach, + .cmd =3D "D", + .cmd_startswith =3D 1, + .schema =3D "?.l0" + }; + cmd_parser =3D &detach_cmd_desc; } - put_packet(s, "OK"); break; case 's': if (*p !=3D '\0') { @@ -1990,6 +1994,12 @@ static int gdb_handle_packet(GDBState *s, const char= *line_buf) put_packet(s, buf); break; } + + if (cmd_parser && + process_string_cmd(s, NULL, line_buf, cmd_parser, 1)) { + put_packet(s, ""); + } + return RS_IDLE; } =20 --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785123; cv=none; d=zoho.com; s=zohoarc; b=j0wn/DLjmMgUwJSr7LoQkCcHcWHqWwvABaUHiv9/3Q5S/EMDrfUcJp2MdoKtMD/e6wjBOpb6amyMxvvgPkYb2L+E8B5+xSBIk+ECKrdBeN74c7LoZMDn2tueENQysab1UCrh3yfvwj6qUKv7eIcQb51TaBrh9zlauLypzShov80= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785123; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=lYm7IhGBrxn52sVAeIC90HrrQ0q55SD5y2VdGObDHgY=; b=WOg651TeOJ4hhYWPI6JVRdya0nHn1u6C/2bCl+u377UszKNKPkOgaZeOrjOvAedpot9tFM2smCNj8Vjq9Xs8QXxf8ELQkbMFqUvvNsDNAhXkjd1UgLUGfdYDNaYibmTLL4wO/lVq1MecqBRoWH3tuHd0nto1sif8AEdROIK9H1M= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785123062604.0929837311659; Thu, 2 May 2019 01:18:43 -0700 (PDT) Received: from localhost ([127.0.0.1]:47194 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6vM-0004OH-1S for importer@patchew.org; Thu, 02 May 2019 04:18:36 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42513) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6t9-00039D-PZ for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6t3-0007Id-Sg for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:17 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:33065) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6t3-0007GP-IR for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:13 -0400 Received: by mail-wr1-x442.google.com with SMTP id e28so2043589wra.0 for ; Thu, 02 May 2019 01:16:12 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.08 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lYm7IhGBrxn52sVAeIC90HrrQ0q55SD5y2VdGObDHgY=; b=fgrUIQ2jOXqt4FTBaAvZCMwg+DNK+T8ejvDceyXZd0+G1n7AgUJfeWmcTYaACpkNny KIW7B6Kuk7meD7/QbdRrzc0KzKe/bllc/s8O60ZVA4D740MnYUrikWQAU99KYm6fDzCd XmaQm+KaFYi/3KR8S0F5op7czSND0Ge2ic1ZmHBq5lnnP1QNEYpGLATyQ0tfm/XWrzf3 ERUm2FYb8JUPiYEFljYDO/zH/bVo8mXg6WhuLL9CDreU6X0c5J5gXAUE8dDLd2Hmbw8R HBErZgrzm7ppCMvulGsDC5EdJXMNKsil6y09AqM/LkJWR6xPw/aGunfQPxSpJlryWLJ3 8+Xg== 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=lYm7IhGBrxn52sVAeIC90HrrQ0q55SD5y2VdGObDHgY=; b=IuHICTPES2KicIaaKAS0QfpSkKTNTOLDzTnU6EYZiG7E9FbrX51UfiHp1E6IFC53W5 gWEXVek+0e1EgeSdSqquovCHMH4hM7iP/RGydXWHen7uPFuuvPUKIj9LQLNamtvhF0Mw 5PbWgRV5Ri9o/hzDyllZwtgB8Uo5WjHyWN81tLCHM5HehazzUhaLKWvnLSed9C8hHt1Q cgQMvEQMye+ApSHEqLjzJoahldI1HYShtLAGttfxwgzY6NXIaFORT0N/NhkNJG14gLg6 Ioge3n9nirzNfkHrtT4W+DRdYLTTNcrG6qhYlkdn75MG1B9wyu0PPOANAyAfaujAYUcU NXxg== X-Gm-Message-State: APjAAAXyhLGz3lByL7U4j18zDUdsuB4c3l/4sJKLbm0W7ngSD7qxkiK+ iUdc1YimKy34hYRlE+TFRCtvMqzj X-Google-Smtp-Source: APXvYqzxHxKTutINtIGOIIj8ytrOEUi/C04Ck1pjkVEtm5U8xlENACvdYP7LnSMuqytVTBy1k2OzpA== X-Received: by 2002:a5d:4acc:: with SMTP id y12mr1754378wrs.234.1556784970894; Thu, 02 May 2019 01:16:10 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:30 +0300 Message-Id: <20190502081554.5521-4-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v9 03/27] gdbstub: Implement thread_alive (T pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 621d689868..c47ef7dd9c 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1498,6 +1498,30 @@ static void handle_detach(GdbCmdContext *gdb_ctx, vo= id *user_ctx) put_packet(s, "OK"); } =20 +static void handle_thread_alive(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + CPUState *cpu; + + if (!gdb_ctx->num_params) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + if (gdb_ctx->params[0].thread_id.kind =3D=3D GDB_READ_THREAD_ERR) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + cpu =3D gdb_get_cpu(gdb_ctx->s, gdb_ctx->params[0].thread_id.pid, + gdb_ctx->params[0].thread_id.tid); + if (!cpu) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + put_packet(gdb_ctx->s, "OK"); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1798,17 +1822,14 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) } break; case 'T': - thread_kind =3D read_thread_id(p, &p, &pid, &tid); - if (thread_kind =3D=3D GDB_READ_THREAD_ERR) { - put_packet(s, "E22"); - break; - } - cpu =3D gdb_get_cpu(s, pid, tid); - - if (cpu !=3D NULL) { - put_packet(s, "OK"); - } else { - put_packet(s, "E22"); + { + static const GdbCmdParseEntry thread_alive_cmd_desc =3D { + .handler =3D handle_thread_alive, + .cmd =3D "T", + .cmd_startswith =3D 1, + .schema =3D "t0" + }; + cmd_parser =3D &thread_alive_cmd_desc; } break; case 'q': --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785299; cv=none; d=zoho.com; s=zohoarc; b=YZNWUQVmgZ9PJIC1GkXq7DjxxhsNFCGtnGzaJth3t6d7i5yzWthLV4P+TQDTVMmw/5TA1+NEePo56Hrr6elmYYozfKfBszcm/7i980tuoGzsMJI0tE+TsedYRa4j+QqNQL+3Y45H8EQyVhLAy1vqD0lWIivRUWKimr1Xq/NLFOc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785299; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=9IF4rsqYBB5CcGAeM/Zis8CV+HM8l1BP4iU1qHaXB5E=; b=S6A9575yDREaHlVGJGuru8tvbz0mWDW8ScPWWl0cdz9td657CXOIvL/d16rFZDD9178jNyzr38P1qHkjoPx3DkcRO45ctCTC1nY6znXgNGta4v3mwmmf9SM5I+1NTIbms4HPgruQUclDbP4s569lfii6ADWdPvpOlClVUsMFjD4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785299755392.452345957598; Thu, 2 May 2019 01:21:39 -0700 (PDT) Received: from localhost ([127.0.0.1]:47247 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6yD-0006mn-3S for importer@patchew.org; Thu, 02 May 2019 04:21:33 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42553) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6tJ-0003Cv-3Y for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6tG-0007Tk-A4 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:28 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:43572) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6t7-0007JB-VU for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:19 -0400 Received: by mail-wr1-x443.google.com with SMTP id a12so1977899wrq.10 for ; Thu, 02 May 2019 01:16:15 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.11 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9IF4rsqYBB5CcGAeM/Zis8CV+HM8l1BP4iU1qHaXB5E=; b=uUAX/zF+Z8eOgAIkBfhItK/EJAQjSlCS5CaZUuB5Hsgq1PYx+izpxQv2Vqxqm0oFop uOG2HsAykPzXSow2Ak/HEvveYdkB4mLQx3XnRQ9w/Yt3ldcqyhSREHrS9KKjKHsINZIT OnYlglovt4LH6bP6yDasAxnSAbUtmPw6KRLS/+5zQkngYvOeGY/ObdU66JtQU76Q0j0m kW+qhBrKofeqw0p4rurA3fO+YP0lrDjQmlpBfM7m3wzfDFiaax6Aznyk4BMKEHmTwgVS QLC5Iwkk0C8KbGv9hJ/vBbtQ2DxyrSeoaFpBLS3ytkKIoKK25NLjR6ElBhHax0iWwzzw 5AVQ== 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=9IF4rsqYBB5CcGAeM/Zis8CV+HM8l1BP4iU1qHaXB5E=; b=LCE6wRGgGLrWhs9MApPF5auz6NsONs9y3uwFJbscETLKBD+SW2sSFeVc5k8NaYdFe/ wvs/h2lQWcET5Jkx5fWA7GYKz9DE3WyXIdHDUxhWcSK5HRZ0mqq119fPoVHfr+EM3Mxm TNBeZCdFwhcMu5jUOBu0QSC3ovYXhRp9AzdTfI6R/wWU84E+sWEiZD4VACAMwsghSQlj CBU3I3XY+qlwe0Py9KgqXQtE1dnAt3eSao2aoyWGizOg93AJtoVvmkeCq5IQEOoD3XJT qz6ZFXqXBlvNfk7NX8TSz0wLsYuir9xsbCirxyqNIncAQu1ihhbqpui+Do7ykhFtJiqr R0/Q== X-Gm-Message-State: APjAAAVG/DH5A2xg1dOci/0rYSbZUUTWir7V3ytbqtEfzVBpvZcjsIGU TIelKt8pEi9eqK/+6bJw2kfGgLsz X-Google-Smtp-Source: APXvYqxWnLllbSFESY6Sgm7zYgl+y/uijNyIowzI9TF/6CK54U/JoIQr2c55BdFYTLdx5Nm7lHWlXw== X-Received: by 2002:a5d:54cd:: with SMTP id x13mr1709106wrv.121.1556784974069; Thu, 02 May 2019 01:16:14 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:31 +0300 Message-Id: <20190502081554.5521-5-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::443 Subject: [Qemu-devel] [PATCH v9 04/27] gdbstub: Implement continue (c pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index c47ef7dd9c..89f1ab6524 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1522,6 +1522,16 @@ static void handle_thread_alive(GdbCmdContext *gdb_c= tx, void *user_ctx) put_packet(gdb_ctx->s, "OK"); } =20 +static void handle_continue(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (gdb_ctx->num_params) { + gdb_set_cpu_pc(gdb_ctx->s, gdb_ctx->params[0].val_ull); + } + + gdb_ctx->s->signal =3D 0; + gdb_continue(gdb_ctx->s); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1558,13 +1568,16 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) gdb_breakpoint_remove_all(); break; case 'c': - if (*p !=3D '\0') { - addr =3D strtoull(p, (char **)&p, 16); - gdb_set_cpu_pc(s, addr); + { + static const GdbCmdParseEntry continue_cmd_desc =3D { + .handler =3D handle_continue, + .cmd =3D "c", + .cmd_startswith =3D 1, + .schema =3D "L0" + }; + cmd_parser =3D &continue_cmd_desc; } - s->signal =3D 0; - gdb_continue(s); - return RS_IDLE; + break; case 'C': s->signal =3D gdb_signal_to_target (strtoul(p, (char **)&p, 16)); if (s->signal =3D=3D -1) --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785304; cv=none; d=zoho.com; s=zohoarc; b=ce7exB1uuRFs6DZqVbqDvufVMl4RfrSYzYiiwk7+pavAP4cIlugI6TlDJ0vfYElgbzOlRNrD2v8XKSAwfDZ4OHiOu8wru0XsbBg776qEbQcbSK86n5kO9mfgwWLLbABlB78Wq4EDmNe2E/yruGZkfs4aHhPHA2d+JNSEPt2eJEE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785304; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=x82aHJMzl8f+PCXWhu2ZX9N8tzch1kuJG+XquT6URF0=; b=OiTcs4joyZhUuVFTwCTMkcJAoH14KmI357pGDSQ5tlxNKgykK/TsRDnrEDcqo3a8yjDJhZnhyqYcpFQU1T8MYiykwj0wPvDuigCJpIDnzigCVlbLr/Co0cTF5FutwrGrbV5Iibfi4g0FEcDYCvYhhZtV4Ny5n29JPgOSAN+QtYo= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785304704678.4204737980407; Thu, 2 May 2019 01:21:44 -0700 (PDT) Received: from localhost ([127.0.0.1]:47250 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6yJ-0006sc-UI for importer@patchew.org; Thu, 02 May 2019 04:21:40 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42814) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6th-0003YB-0B for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6te-00082k-BW for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:36592) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6ta-0007Ju-8E for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: by mail-wr1-x441.google.com with SMTP id o4so2022997wra.3 for ; Thu, 02 May 2019 01:16:17 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=x82aHJMzl8f+PCXWhu2ZX9N8tzch1kuJG+XquT6URF0=; b=j8/EocMQSN+YsSPCgf0Jxc2age1N+MN2UfPqQJJQdcZGcYi+kGlSXtekV0qyeps2WT 6ZvRLWBjN7oEsLHKZBlbNqYISG4rqkH5a9mOfvmeSC5RCV+UyeXAfmOdf/0Xvyxf3WoA pWK0eDDukQMVIE/yaJKDDrdzBKKjSugkH6epUi0hITfAQIv5V/9shaqKaQITI4ixOzbd 7DLlD2/6z5fo3D/B9+wX7bFjHsMVdy2Sz/2VEXH9hwCl3GSa7CyemLQbxuIjSo3bPOFu OOnylwm8aAw6LgcoAcWoC1vGP3GdUKLj7QXv2ci2zu6iI8gSYP0YTcIeqSXnLMU7FqQB eKdw== 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=x82aHJMzl8f+PCXWhu2ZX9N8tzch1kuJG+XquT6URF0=; b=R5GcpqAqAlkE3ci8iAw7j0Qi4eQ9DNouL92doEMEhaSRhMVrbGlgZAFxRoY6SRcXRk TDSFgyZS7oVlzxW71rbBu70V/LOL7yJLx+qU5S0+CNe23FF7x/Ec0fYOmvDac4GTP9Mc O9xAOM+ubougHWsuZL52JWFzfa4pCo7ygeH4gaYh1R3tNAQ08P/vBXipUhBn6ZxnuEZN 3KVMjFAyZTKyER0TodwIvC99dMOuFKbMaMUdh+OQK95MCSFUR40IctimbAY08nyKtnB1 CuyMpYUDEkpWq4mbO3XnrgLtMZTe97GdPo3SZuxDQ5eLh8SNKSI0KKBFiUf7YqcjAypX cC7Q== X-Gm-Message-State: APjAAAUYxYFtBQ/ndwpiOSqXmA5rJhliz2BWo6+GRL31zoe3ZF0KBCH0 m/znMPYxteQN6kM7m/KI9vjssU9F X-Google-Smtp-Source: APXvYqxRS7sDRJ4yxgPWS2XIChyKLpTupJZtmYzffTXMyBjnrVlXZjHz2IMHhKPrVTYmaP4cwfLM9w== X-Received: by 2002:adf:ce0b:: with SMTP id p11mr1616830wrn.196.1556784975880; Thu, 02 May 2019 01:16:15 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:32 +0300 Message-Id: <20190502081554.5521-6-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::441 Subject: [Qemu-devel] [PATCH v9 05/27] gdbstub: Implement continue with signal (C pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 89f1ab6524..469aaeb875 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1532,6 +1532,21 @@ static void handle_continue(GdbCmdContext *gdb_ctx, = void *user_ctx) gdb_continue(gdb_ctx->s); } =20 +static void handle_cont_with_sig(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + unsigned long signal =3D 0; + + if (gdb_ctx->num_params) { + signal =3D gdb_ctx->params[0].val_ul; + } + + gdb_ctx->s->signal =3D gdb_signal_to_target(signal); + if (gdb_ctx->s->signal =3D=3D -1) { + gdb_ctx->s->signal =3D 0; + } + gdb_continue(gdb_ctx->s); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1579,11 +1594,16 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) } break; case 'C': - s->signal =3D gdb_signal_to_target (strtoul(p, (char **)&p, 16)); - if (s->signal =3D=3D -1) - s->signal =3D 0; - gdb_continue(s); - return RS_IDLE; + { + static const GdbCmdParseEntry cont_with_sig_cmd_desc =3D { + .handler =3D handle_cont_with_sig, + .cmd =3D "C", + .cmd_startswith =3D 1, + .schema =3D "l0" + }; + cmd_parser =3D &cont_with_sig_cmd_desc; + } + break; case 'v': if (strncmp(p, "Cont", 4) =3D=3D 0) { p +=3D 4; --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785786; cv=none; d=zoho.com; s=zohoarc; b=KLAc5oFiXcZBq6FexiIyjfhUyrQEH+3gdVwvkF+RvtnwVWQMAMK3YnnVM3fELQlw/gndm5NjXFv+pJvwMJa4YeSrZv19w1cISdH/seMUoxF4T4soqV+va1iy3bQB/SxPrE/fmooII+TokdHVvXMTlf97BqbOfnVKjluhuHLJaAY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785786; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=8aM/3zkgxng0ie4nC212YmQwcdv5GpIX/biWiirdyy8=; b=SKQwAZjtxPJcnrTQVL+cJz5UFHSS3TBjY7pnRE0xX8xr3Ol8eYfhaI5HmMIm6wb8j/oy5j3OlnKYmgT4DJjvH4o7+2u/10HunJhZurjvDNbpZU2V0iVWM3CHloIunQtiQLwkCROvxYwDg4C/KxufEIWcoDDUW5APgaXbHegQ6Yg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785786123915.2556774726435; Thu, 2 May 2019 01:29:46 -0700 (PDT) Received: from localhost ([127.0.0.1]:47362 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM767-0006wc-0z for importer@patchew.org; Thu, 02 May 2019 04:29:43 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42630) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6ta-0003RX-A8 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6tY-0007pQ-Aw for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:39540) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tU-0007L5-Mo for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:42 -0400 Received: by mail-wr1-x443.google.com with SMTP id a9so1997324wrp.6 for ; Thu, 02 May 2019 01:16:19 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.15 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8aM/3zkgxng0ie4nC212YmQwcdv5GpIX/biWiirdyy8=; b=JIVes0a4eaIRpR/FW3T7tTrn8D43Zz3zNpQxvvTduLo/E/oBuVY9gRFdNhTTn6AkUt X1R/Cnp0we9y3q1RF4H9GdrbV89LAO8m6LCqaWVy3wuWZoopgyKFZW3ZvUL/su0XO/J3 0pHaOcUzyqP9q0P/B+L0DOaxOc8nqMJkxOt9BElm1e74Q9WHGyv8Jx6tLVZkLX+/0RuR CY5TFnAgO699vO1GVFQ2hvMXYDRnKnsFRd9/i/3F4O+VV48cZ1EXLRzpfDb0I2QiMLx9 k9MWlEP0RLcb6EcFUy0juZZEEcPAzOAvdNcRGpP+TZftN/VzDZPGD1L9Ob+eLpFF6Pb0 n9Kg== 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=8aM/3zkgxng0ie4nC212YmQwcdv5GpIX/biWiirdyy8=; b=AEkcGCSayr8UMOylLh4Y7rhD/5Oz5Ehp7mCNmU2qLtjxFrZF9w/9+okn3GcuxyRWNw gRLwUm7pi+Q9XuP6KNpLlUR/94JdJiPseMjxs9FQBsgu/G4IHforXVWYURQUMzJt3olu 3qrQkmgVJFmhsOZqf2CdaXzJRht3ETs1vxiHgXxg9uDZBlU8L038XMZxjvI2WHGj7VGA UjvViOZDmQrromg27hPC+cgr/MoCVjN5CLPsjJaYjaDha3CCrrsQjPjtBQgtoqCiY2IB uExKvndUIHk+dFkqBGS/agsbpz1fCHU8/I5spCT2HOp3q3w/6S/RFvJB5Mm5nZO3lyL0 gkww== X-Gm-Message-State: APjAAAWPtowyVHg0vj/ed07FfaddtKg9v7agtvKaVsIuGzoxRKE8v+b/ dyTftuWtimaip9KbhBZ5YyrJuuEA X-Google-Smtp-Source: APXvYqx4r1R7Pr1Cre3yy7aCW+yoK1TUeJeOypws1VRJYjMukUtpzpI66oEn28XSHiuQZh1ubbUdyg== X-Received: by 2002:adf:eec8:: with SMTP id a8mr1733927wrp.64.1556784977985; Thu, 02 May 2019 01:16:17 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:33 +0300 Message-Id: <20190502081554.5521-7-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::443 Subject: [Qemu-devel] [PATCH v9 06/27] gdbstub: Implement set_thread (H pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 79 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 30 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 469aaeb875..21cdaf4678 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1547,6 +1547,47 @@ static void handle_cont_with_sig(GdbCmdContext *gdb_= ctx, void *user_ctx) gdb_continue(gdb_ctx->s); } =20 +static void handle_set_thread(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + CPUState *cpu; + + if (gdb_ctx->num_params < 2) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + if (gdb_ctx->params[1].thread_id.kind =3D=3D GDB_READ_THREAD_ERR) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + if (gdb_ctx->params[1].thread_id.kind !=3D GDB_ONE_THREAD) { + put_packet(gdb_ctx->s, "OK"); + return; + } + + cpu =3D gdb_get_cpu(gdb_ctx->s, gdb_ctx->params[1].thread_id.pid, + gdb_ctx->params[1].thread_id.tid); + if (!cpu) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + switch (gdb_ctx->params[0].opcode) { + case 'c': + gdb_ctx->s->c_cpu =3D cpu; + put_packet(gdb_ctx->s, "OK"); + break; + case 'g': + gdb_ctx->s->g_cpu =3D cpu; + put_packet(gdb_ctx->s, "OK"); + break; + default: + put_packet(gdb_ctx->s, "E22"); + break; + } +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1560,7 +1601,6 @@ static int gdb_handle_packet(GDBState *s, const char = *line_buf) char thread_id[16]; uint8_t *registers; target_ulong addr, len; - GDBThreadIdKind thread_kind; const GdbCmdParseEntry *cmd_parser =3D NULL; =20 trace_gdbstub_io_command(line_buf); @@ -1823,35 +1863,14 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) put_packet(s, "E22"); break; case 'H': - type =3D *p++; - - thread_kind =3D read_thread_id(p, &p, &pid, &tid); - if (thread_kind =3D=3D GDB_READ_THREAD_ERR) { - put_packet(s, "E22"); - break; - } - - if (thread_kind !=3D GDB_ONE_THREAD) { - put_packet(s, "OK"); - break; - } - cpu =3D gdb_get_cpu(s, pid, tid); - if (cpu =3D=3D NULL) { - put_packet(s, "E22"); - break; - } - switch (type) { - case 'c': - s->c_cpu =3D cpu; - put_packet(s, "OK"); - break; - case 'g': - s->g_cpu =3D cpu; - put_packet(s, "OK"); - break; - default: - put_packet(s, "E22"); - break; + { + static const GdbCmdParseEntry set_thread_cmd_desc =3D { + .handler =3D handle_set_thread, + .cmd =3D "H", + .cmd_startswith =3D 1, + .schema =3D "o.t0" + }; + cmd_parser =3D &set_thread_cmd_desc; } break; case 'T': --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785465; cv=none; d=zoho.com; s=zohoarc; b=IjvDMOcD/i3x80OFvHxeqWdGLeW2y7gtovBj0e/Yor6fgwZFNWuTrZwqqzkO2S4P2/Sq5YjqEPDrojEVR5tZwPnp+Ta9kKQvN4hKlGNhJVt013SwRS2xoHFjB7LIixwhxdZjjOZLRH/MmcrA6R40ZtwPa14Wjx9hLj8lw3seGvo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785465; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=y+n9UknESyjS5ywhVhGmu6RRpXVVQXSmReCo/GVxG50=; b=n+Q/2TahyP4xvJ54K7aE8g4xASUZyCr0TMkB7x9e0uKVaevokrSWCW4hhJNG24HTn7JAyBlTnVt1nL47AK0N1qqeqJcS40ft5zsLyv1qN0+Dx1N7CcnVNTTm9vCBNiAev1wimUh3J+BfVahm3VMGkrHCMEyKEgqaFnOjO7vNxxY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785465367404.97476906258976; Thu, 2 May 2019 01:24:25 -0700 (PDT) Received: from localhost ([127.0.0.1]:47272 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM70y-00015B-Ah for importer@patchew.org; Thu, 02 May 2019 04:24:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42695) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6te-0003Ux-AX for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6ta-0007zA-CA for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:48 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:55513) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tY-0007Lr-Dj for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: by mail-wm1-x344.google.com with SMTP id y2so1154116wmi.5 for ; Thu, 02 May 2019 01:16:20 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.18 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=y+n9UknESyjS5ywhVhGmu6RRpXVVQXSmReCo/GVxG50=; b=lt1UjKI06APntNZRaAWb7B1QGAwHDHvMiZXPszIVTaUrA55sHZQHRc/6AROAXrWwhf lzoANLTD+RHndEhLVLrICx6CojBmzMTu18Pb/lS9cOTsgQL3KLQ2EnTCaK5s//l2maMS P3RcNmgAKBN8V0KbITx9GF4IFq8EAWeMNKhaf3QgKHXTyBTvV1re1YKOwXQh7lMa4TM5 CG1T20XU5G/p2nkfNq24s3i4B7A0RHj+UDa3iZYyFpQ9oxwTSmJN60q/3BrQPzPY9M7I ZrR5Z9IlCf/cwBsyDDJ1+Fi0n2QEpN2B8APn5HXOEkCQHI6SlAD++bskfiC9/T1pKuYN stVA== 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=y+n9UknESyjS5ywhVhGmu6RRpXVVQXSmReCo/GVxG50=; b=J53vTyOLsnzRB7qWPbHosTEpFax5zPU17uixG9Fa6POWYC+x98rWrFoiAiuvQOOEc5 kDuANMLm3Q5xOJojXXaT7vLBpkplYHvd7xwWrLzRuyJDPQWr9XkYfpE8VVLas5V+FUtj V4GxhVpXbz8GjXA45j8ENDjwYbS3/ZSOsTduZaLj8SOLgDSSHBIWaHtuKt7C3HHy2HAU naLjlaSllwDciwmv9cOg+3/iz1B7uBD2tK+LFKn1glZaJiCvJIDXhiT+SeSAzuKVznyY AFBni4p4svoFWpS1ybSgXvbhOLLQxtHVwf46MhZWUf67z2hi9UMLuVrMx/KnNxdfScad iWLw== X-Gm-Message-State: APjAAAWgzgfGVdaNTAbKxBLLTVDnUN06opGM5PBtf1e6qp11IltvzPOC fVV3xTDRPE+JR20K1puX4rhECHid X-Google-Smtp-Source: APXvYqwl3kjSJi+Be1jR4+6VvhNE/RLIEd5hn8WhmBZaZjmJpQCLqlpQwISulfucyOQedJhkhhzJ3Q== X-Received: by 2002:a7b:c390:: with SMTP id s16mr1313169wmj.111.1556784979175; Thu, 02 May 2019 01:16:19 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:34 +0300 Message-Id: <20190502081554.5521-8-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PATCH v9 07/27] gdbstub: Implement insert breakpoint (Z pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gdbstub.c b/gdbstub.c index 21cdaf4678..36c7353a22 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1588,6 +1588,29 @@ static void handle_set_thread(GdbCmdContext *gdb_ctx= , void *user_ctx) } } =20 +static void handle_insert_bp(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + int res; + + if (gdb_ctx->num_params < 3) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + res =3D gdb_breakpoint_insert(gdb_ctx->params[1].val_ull, + gdb_ctx->params[2].val_ull, + gdb_ctx->params[0].val_ul); + if (res >=3D 0) { + put_packet(gdb_ctx->s, "OK"); + return; + } else if (res =3D=3D -ENOSYS) { + put_packet(gdb_ctx->s, ""); + return; + } + + put_packet(gdb_ctx->s, "E22"); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1843,6 +1866,16 @@ static int gdb_handle_packet(GDBState *s, const char= *line_buf) put_packet(s, "OK"); break; case 'Z': + { + static const GdbCmdParseEntry insert_bp_cmd_desc =3D { + .handler =3D handle_insert_bp, + .cmd =3D "Z", + .cmd_startswith =3D 1, + .schema =3D "l?L?L0" + }; + cmd_parser =3D &insert_bp_cmd_desc; + } + break; case 'z': type =3D strtoul(p, (char **)&p, 16); if (*p =3D=3D ',') --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785699; cv=none; d=zoho.com; s=zohoarc; b=NFnvLJGIIimpRblbGno6nmb7T5JlRm/YS8Q72lBEQpWvjE/2sDlZHvVAzYFAYD30sfGzc0k1Vj9vuG5gJy1iEEjlr8a1Be41dWtOvzGAjdvXWorv5t9FQxdH4iibiHe3mIRIkDaakoWrckaq51dsgSABvFWjBBSYDD9b0OjRvZ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785699; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=U4fLhEZHxeWF7Ph12MqOmpuk/185Eq0Ogcw/FW+Pwwg=; b=KB3yy/IPa7f8J1bLWjv7WcPnDs9GARTn70fSIb/p/sern+IPvvA9PJuMgZGTKfg9hXDrg4t6gF9tQmKB6KLOc4fDX/zn0hyxeiXUdNCiMgZY2orcgPWsJajv4L7E/62UmhCZKJ6APS/lZbM3V6t+gDuiN9q7zRbEaxVQb47jfVQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785699199950.1801231235999; Thu, 2 May 2019 01:28:19 -0700 (PDT) Received: from localhost ([127.0.0.1]:47339 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM74g-0005ba-1K for importer@patchew.org; Thu, 02 May 2019 04:28:14 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42891) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6ti-0003aB-RU for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6th-0008Nm-8k for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:54 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:51691) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6te-0007Ma-VM for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: by mail-wm1-x344.google.com with SMTP id t76so1484525wmt.1 for ; Thu, 02 May 2019 01:16:21 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.19 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=U4fLhEZHxeWF7Ph12MqOmpuk/185Eq0Ogcw/FW+Pwwg=; b=NjeH4BvXjmor01vw3r0B7wiWYL0sx6K6aWpJuxKCnaEJ16yfOyVG9fv3XmTYyVaIgh 3pvDp4pmtPX8F8tQX3vm1agAqaI0n+9+EISIl33LPLUGvafVIkb3L96unCY71mX6FBZq fNMKXvtT52dq+EXFneizBdx/ESibAYsT9aisUuAbQLNtsnUdY0Z5PonEwhXnzc4N93dG vFJef1oZ7Kso1fY5i0xGjcDMqegrW3aimQndJOkQwAaupWMGQOSnM/MqGb39IsV0TOM9 u90r+lITiLOaMCjnbHkhpkd5RTzw1KEZU/n6SAD1VPZNdovWLX4mOkP+QtJHSXXr23a0 rIZQ== 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=U4fLhEZHxeWF7Ph12MqOmpuk/185Eq0Ogcw/FW+Pwwg=; b=YK/7ZPkSkv9/8IpDb9jCUjwFY/MJ6WwZapxk4Bv81PNDM9zje64EGUXJ/343oPq0CA lc5c6UEw4CTPtqKF2t3mE1zI8nSHRZzFkt91udFcfvhasD14KjMoaS/oJTldvs2TXRYI 4AXTVNWwSuwYvG42c0tLGdKbdVieCPBa+4om+xi5RByDpMvcoaqj5+5Voy+WfibhNbEB N4bc0aylaSgrVWowRAjgFTVlUr7uzeumFxA8SgpS+ftFUduAFWreA6A4N59dYkwIed59 A5Pd881vPYrHuOmW2eZ71pTOTFvDvcCrU4Lzt+M0mIOFulpIuesrLJPp1AUHZKAIk0mA ticg== X-Gm-Message-State: APjAAAV0ANN35bZKfepfAChfF914IS/xjvxozYEHnJVtjixyRwsWmpmD 5w1ocBASIDEtMLUeI5U6qGb664MX X-Google-Smtp-Source: APXvYqyu4iuZEPLGHqE1sG9WNZ4ScIkIGu7pjHTZClO99Drq1x4zuCMHHkIyJVgkC15hiqq//mwm8g== X-Received: by 2002:a1c:2090:: with SMTP id g138mr1400364wmg.117.1556784980413; Thu, 02 May 2019 01:16:20 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:35 +0300 Message-Id: <20190502081554.5521-9-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PATCH v9 08/27] gdbstub: Implement remove breakpoint (z pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 49 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 36c7353a22..b42425b24c 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1611,6 +1611,29 @@ static void handle_insert_bp(GdbCmdContext *gdb_ctx,= void *user_ctx) put_packet(gdb_ctx->s, "E22"); } =20 +static void handle_remove_bp(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + int res; + + if (gdb_ctx->num_params < 3) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + res =3D gdb_breakpoint_remove(gdb_ctx->params[1].val_ull, + gdb_ctx->params[2].val_ull, + gdb_ctx->params[0].val_ul); + if (res >=3D 0) { + put_packet(gdb_ctx->s, "OK"); + return; + } else if (res =3D=3D -ENOSYS) { + put_packet(gdb_ctx->s, ""); + return; + } + + put_packet(gdb_ctx->s, "E22"); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1877,23 +1900,15 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) } break; case 'z': - type =3D strtoul(p, (char **)&p, 16); - if (*p =3D=3D ',') - p++; - addr =3D strtoull(p, (char **)&p, 16); - if (*p =3D=3D ',') - p++; - len =3D strtoull(p, (char **)&p, 16); - if (ch =3D=3D 'Z') - res =3D gdb_breakpoint_insert(addr, len, type); - else - res =3D gdb_breakpoint_remove(addr, len, type); - if (res >=3D 0) - put_packet(s, "OK"); - else if (res =3D=3D -ENOSYS) - put_packet(s, ""); - else - put_packet(s, "E22"); + { + static const GdbCmdParseEntry remove_bp_cmd_desc =3D { + .handler =3D handle_remove_bp, + .cmd =3D "z", + .cmd_startswith =3D 1, + .schema =3D "l?L?L0" + }; + cmd_parser =3D &remove_bp_cmd_desc; + } break; case 'H': { --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785304; cv=none; d=zoho.com; s=zohoarc; b=eI+CxrzUiju1ESIkuQEwpoyh2zWaGQsMHbl9Q8y4YKNuwbTwBTWZG8uSpk8/QdcwWBJ7/aoNjYkTyBKOQPTSVIIMlUIxuD60H9nK53e4Z2Cz1RuZnKiWuUeQ2cat0Gu3WZ1HUqGsXvOm1uQp1QqBFNwQCMX3RyqMOl0brxuAPWA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785304; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=6OoH0VZvs5cN/77prjtAmvXUSegJODVLc//0yGYVjjY=; b=mVcU0XZXPq+NdNlDaxjAVA8VVjq6mfnS9CoV02vBsi6YFYOQCztGeTDrrAKvA7g8fThDRI4CwyyvPtrmnTz9VGwJi5ina0Nv33YNLhvVsIZzk2IWOHDE9CdU1wSkDgjmc3lo6hjblVJdwcDmmnKVAydmtfaADVdZAt8XddcroEM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 155678530449661.60355647979577; Thu, 2 May 2019 01:21:44 -0700 (PDT) Received: from localhost ([127.0.0.1]:47243 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6y9-0006jZ-35 for importer@patchew.org; Thu, 02 May 2019 04:21:29 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42637) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6ta-0003Rc-BF for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6tY-0007p8-A4 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:38472) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tU-0007Rn-Ml for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:42 -0400 Received: by mail-wm1-x343.google.com with SMTP id w15so1390817wmc.3 for ; Thu, 02 May 2019 01:16:23 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.20 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6OoH0VZvs5cN/77prjtAmvXUSegJODVLc//0yGYVjjY=; b=Qg6WMq03GUglWUSrb7qqKs0RptQHnzcuQifvfD1OFNxt5dSB6XOq2dtHAtUhN7HzhX nLMHZh2GsE8uikqxez40DyP+2EaIW4gOTHHiMOPZ2qmvoiPfaLlcjizRYclDTG8ibQyV mLsvdaXcBAzO/9f0lqTu22hi7LQ6EDNpCQ7V9K5dh5hAiOA2rlPIGbczQbtMLikyARnf UEqfRq1AyIiPfE9jy+LFA+8vUL2k8YdQ0OGoPVorJYaGI9jji+z6HrTNkmKrBCHdLQcd stxvWAXHc1CbRvmaB1vQceKr8h9H5QsBLhbbbS497BJlzfnGKBwbJXcg5dwClunB5Rq9 CZFA== 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=6OoH0VZvs5cN/77prjtAmvXUSegJODVLc//0yGYVjjY=; b=BuvSsDlopb/qCw+kjkEKH91WcZrKzcP2DD8a6dG32e3HqpvlDu8VCbDB4Fi4b3o4eM Dk1vx0viJu7E7mh2s8TQWEbMoj0qxtUrtXn4lo2Q2DVPQxZZoAkVSYz5piqUbk1K0HAV GW0Xm+TOn0C2Mn/e8EbVFB3TOgt5eDE9gym76hPAU8i8oZrBTCiQ0Itgr8znsnYa+hgf 7Xffd7IwrXg/vDSZzi4cAvEoZex1GAB5pei6DgzKW3828A1HsFmPNTzadN7rMvgSZ2v5 H3R99glaREIPeDi4kBwbyETCwyuCXAfOuh/6ndeZqWnfsApzh4VkBnWFlUr7GYtZrqOp cR6w== X-Gm-Message-State: APjAAAXk66uoCwkTN8S961mJEz0Qt//9mGrKBfVm2ZfGSm3ILCa4fEqV k1Br6PFdtLbZv8tuaAV1fqMQf05l X-Google-Smtp-Source: APXvYqzt5wBoGEKdFeoWKUVHLXGjhk5Tpb0IDs4Du2eJhm8tlsxHnRgmvFcFsM3sR/+7MmYNk3Wj7g== X-Received: by 2002:a1c:1dd3:: with SMTP id d202mr1317337wmd.98.1556784981795; Thu, 02 May 2019 01:16:21 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:36 +0300 Message-Id: <20190502081554.5521-10-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::343 Subject: [Qemu-devel] [PATCH v9 09/27] gdbstub: Implement set register (P pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index b42425b24c..10e3f12a68 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1634,6 +1634,27 @@ static void handle_remove_bp(GdbCmdContext *gdb_ctx,= void *user_ctx) put_packet(gdb_ctx->s, "E22"); } =20 +static void handle_set_reg(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + int reg_size; + + if (!gdb_has_xml) { + put_packet(gdb_ctx->s, ""); + return; + } + + if (gdb_ctx->num_params < 2) { + put_packet(gdb_ctx->s, ""); + return; + } + + reg_size =3D strlen(gdb_ctx->params[1].data) / 2; + hextomem(gdb_ctx->mem_buf, gdb_ctx->params[1].data, reg_size); + gdb_write_register(gdb_ctx->s->g_cpu, gdb_ctx->mem_buf, + gdb_ctx->params[0].val_ull); + put_packet(gdb_ctx->s, "OK"); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1878,15 +1899,15 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) } break; case 'P': - if (!gdb_has_xml) - goto unknown_command; - addr =3D strtoull(p, (char **)&p, 16); - if (*p =3D=3D '=3D') - p++; - reg_size =3D strlen(p) / 2; - hextomem(mem_buf, p, reg_size); - gdb_write_register(s->g_cpu, mem_buf, addr); - put_packet(s, "OK"); + { + static const GdbCmdParseEntry set_reg_cmd_desc =3D { + .handler =3D handle_set_reg, + .cmd =3D "P", + .cmd_startswith =3D 1, + .schema =3D "L?s0" + }; + cmd_parser =3D &set_reg_cmd_desc; + } break; case 'Z': { --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785634; cv=none; d=zoho.com; s=zohoarc; b=ERIMsuNVXYKZrHtcXxOtcSArkrxAxUVdMdU2BD8IRe5qFsTYNObBBZ095wxEDomTFj6jKfHF8O5bDxcA8DcQ/NJS4JXurH9xNYjYYJA0psLuYEprFa/YBL2njCIRVeLoylw0ADOPJC1EAR752/cYrgdSt1qDVKIupKucZgCvT6k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785634; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=C5wVxSSu9B3yjrVL1kbdSqghY5biwyr5/S2ykkoUubY=; b=ZbaHancHWLQTyemB9496g3pgLZsRyD/ct7kDiED3PDiPr6fqa5bNXAh556oDCAVRC98rtA81j4c1RnaE0OPgNsmRpmIvarpI9j8arx/TmO87q23WMMRc9xRO7mDTrHtdW6aSZqRni1jEchae9mQZM6lPQH/dJU+N5XWCtc+FrzM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785634567276.9175641805773; Thu, 2 May 2019 01:27:14 -0700 (PDT) Received: from localhost ([127.0.0.1]:47334 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM73W-0004Ps-6K for importer@patchew.org; Thu, 02 May 2019 04:27:02 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42641) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6ta-0003Re-Bs for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6tY-0007pD-Aw for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]:38448) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tU-0007SR-Nw for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:42 -0400 Received: by mail-wr1-x444.google.com with SMTP id k16so2002400wrn.5 for ; Thu, 02 May 2019 01:16:24 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=C5wVxSSu9B3yjrVL1kbdSqghY5biwyr5/S2ykkoUubY=; b=P973YXxRkkAoD8ifvQ4auErj5Mf/eBggo1kuDyvPdSN4veKbOzGVjnH7PHerd+TyQh FI4faExZq2rZK/q9pJo71I7EEey4RH9ZoF+3ctmlwKC1kmv9/ozGdZ2P04D3P94FxRKw wJ7D3sN5tBG7USjzkrWTYk+QLXyy+DQcwlQMADcwBiZRY+0uK9kf+ZMndkS7htul423V lTzCTyzQXUG4RPPlH58AAiNJbV/+lPk8h4hOGrM2S+4ElCdpI8OZVGISraQBaY2zOG1z dMGLSn2It+DLA5NGMbSMJXVWLGV3kI20XlZ31n8B1U32kKOCab9/d+tcTHTdDE/rTW9Q iAnQ== 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=C5wVxSSu9B3yjrVL1kbdSqghY5biwyr5/S2ykkoUubY=; b=uIidda+1uWx0wyD240mOAltJz/NBdmigh0IHtHZfGSrYA84QhPQNETdHSLfxUrXLRY h0xA2IW4gUhxJNOv84UPMd8r1rkuw/PVryVhFHrqCbZN0EEV0hiZvxM196DhZSdcEA7E kNGCWuccJL3IUDtVAPab1xKRCkA8h3ySyxCwy65u1NcWqSbaMwDJoFMBi25ASZ3uDLyS gxWzgSmpdVMzdOHGKjWBo4i1zXyQubC3rzuYO7B2ZHtaSHlGv4tEnQx+kQb2dONjfqIw 2zMjH9qHVaPVwnpXOYb1H/jnox8kYfwducNjjkgbedsN2DZ4gMs+CtAMx7x3BTThH2RC lerg== X-Gm-Message-State: APjAAAV/RJXMJrrwaVLUqn836VB15bm9PHHO3BHCYUivUncOhiW1V9vA +shjtPlkX6iB6GWd5f2sA1PwpLV3 X-Google-Smtp-Source: APXvYqy+YNCNJabIbOwxjy7rwjUU3L89FuOqLVyO6ASkWAHtnYT8+BNbFVdlUhiMM5Ch/3n5RZmnuQ== X-Received: by 2002:a05:6000:10:: with SMTP id h16mr1355746wrx.151.1556784983117; Thu, 02 May 2019 01:16:23 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:37 +0300 Message-Id: <20190502081554.5521-11-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::444 Subject: [Qemu-devel] [PATCH v9 10/27] gdbstub: Implement get register (p pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 50 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 10e3f12a68..e9a3d0c2bc 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1655,6 +1655,36 @@ static void handle_set_reg(GdbCmdContext *gdb_ctx, v= oid *user_ctx) put_packet(gdb_ctx->s, "OK"); } =20 +static void handle_get_reg(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + int reg_size; + + /* + * Older gdb are really dumb, and don't use 'g' if 'p' is avaialable. + * This works, but can be very slow. Anything new enough to + * understand XML also knows how to use this properly. + */ + if (!gdb_has_xml) { + put_packet(gdb_ctx->s, ""); + return; + } + + if (!gdb_ctx->num_params) { + put_packet(gdb_ctx->s, "E14"); + return; + } + + reg_size =3D gdb_read_register(gdb_ctx->s->g_cpu, gdb_ctx->mem_buf, + gdb_ctx->params[0].val_ull); + if (!reg_size) { + put_packet(gdb_ctx->s, "E14"); + return; + } + + memtohex(gdb_ctx->str_buf, gdb_ctx->mem_buf, reg_size); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1884,18 +1914,14 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) } break; case 'p': - /* Older gdb are really dumb, and don't use 'g' if 'p' is avaialab= le. - This works, but can be very slow. Anything new enough to - understand XML also knows how to use this properly. */ - if (!gdb_has_xml) - goto unknown_command; - addr =3D strtoull(p, (char **)&p, 16); - reg_size =3D gdb_read_register(s->g_cpu, mem_buf, addr); - if (reg_size) { - memtohex(buf, mem_buf, reg_size); - put_packet(s, buf); - } else { - put_packet(s, "E14"); + { + static const GdbCmdParseEntry get_reg_cmd_desc =3D { + .handler =3D handle_get_reg, + .cmd =3D "p", + .cmd_startswith =3D 1, + .schema =3D "L0" + }; + cmd_parser =3D &get_reg_cmd_desc; } break; case 'P': --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785705; cv=none; d=zoho.com; s=zohoarc; b=W9sat2c7E7WpqQfbiyLtJsm/wUC4QG8SHNs7ek4xMqEXUKvNAw0wppv1QH3xczDPuIVu1M2XUoPgp6p7RSnL20vcEvdm4oSRCGgR4dGaKRj38XopBhhwSMwPRStgKMN2YbEit5/qrEqneaNVDT07/ht+rPzUypFMTpHECqFzVZI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785705; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=7xWdg5J6VC6HFdEkoiuvTsAB/KgJAJp/2excD9374G8=; b=RC1hRO/0qBya6pEiHXGv5/pt0rsDXzgvRW77rA+4r6lUrobGqyIqJeN2f0gjGAoClvdk38ZXeUXHz1RnM+7wqdupgJmpa1Pu7U9AKEWbaE/EHoDQ1OrE1x6wgvQf/tM2NdHB0KX6w39Ja2Q8KSNGbfAIdTPUmbEs71OqAPPbi+U= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785705623826.4141464595406; Thu, 2 May 2019 01:28:25 -0700 (PDT) Received: from localhost ([127.0.0.1]:47341 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM74l-0005ga-Pu for importer@patchew.org; Thu, 02 May 2019 04:28:19 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42812) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6tg-0003Y9-W1 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6te-000835-Cq for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:50251) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6ta-0007Sx-CN for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:48 -0400 Received: by mail-wm1-x341.google.com with SMTP id p21so1485702wmc.0 for ; Thu, 02 May 2019 01:16:25 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.23 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7xWdg5J6VC6HFdEkoiuvTsAB/KgJAJp/2excD9374G8=; b=BThNabtes12/ukdL62x9lRwv9YhPEMdjuthmWPeS1XejuW6PhTJt36l/hvVY623Uli VhoE4Oslr9Mm9aZNGCnxDlzA4usObE4/yh9PLK8LX2Y1P6M1KtfRpRFPE7x4qvF+xjGR Ls9oYhK45Pnj1eoQfA6A8Xbz3enFBnia6jv/tLeLjQd8Ha76uOX2HpxHYUDALwBJixEP aSqHtFUsxjKp1DropT67Sg7Gz/42wFB2tKwYfqXMwtc+3UvZv6w5/0sz/IHFzLLjgOWS EG/sacIjXv3z/3ifk38Cz9NfRiW6UliwI9kwmlAqvTCAv5OFiq+yZjNgZO/ftCyJUcP+ PTXw== 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=7xWdg5J6VC6HFdEkoiuvTsAB/KgJAJp/2excD9374G8=; b=Jzg8tNhgSEfxp1KMav2CXW7S2hPylc1TEcqcnPiN006DPTEvMM+xONnlqk76Sk/7HK +sNGEAP5ZbqfbHcDaU1KdM64wIzhfx6xKZWxUCNw++J/2B5r/X9zuckXqGKloEoTGVCG vHTTEOghaps3mrPk7DnOSZ1fyDNbQAFJNmQEH3Q2o3z9ek1j7+lMtK7ps/52r1iVN8pz U4f4b28jqUf5J3lfaBmTRKS+3YnodORihQojh3ZxlheEmloNY/dT2jgIg18zqKBFsMQF AlOJqQvEEtaq/UQXBfSOmJsi+A0YoAsCVhXOcch8qLOwJko9xKPp/8XjyNz5LdGRT6V9 g73Q== X-Gm-Message-State: APjAAAV5ivXb/pbHIcIb/B7UjWVoQXhYqHFOpZmCdqglFhW2XPU/448m rQ3U973CVkzbpETfeBRAYUYGiGR+ X-Google-Smtp-Source: APXvYqyInea3b8Yd/SumCczzFz0MONMQFApGZICmKBTifun0l7Ya49e8C757zI1XJvc1SG3eI2bqyw== X-Received: by 2002:a1c:7d10:: with SMTP id y16mr1306371wmc.83.1556784984374; Thu, 02 May 2019 01:16:24 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:38 +0300 Message-Id: <20190502081554.5521-12-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::341 Subject: [Qemu-devel] [PATCH v9 11/27] gdbstub: Implement write memory (M pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 51 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index e9a3d0c2bc..8dc2e1d507 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1685,6 +1685,31 @@ static void handle_get_reg(GdbCmdContext *gdb_ctx, v= oid *user_ctx) put_packet(gdb_ctx->s, gdb_ctx->str_buf); } =20 +static void handle_write_mem(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (gdb_ctx->num_params < 3) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + /* hextomem() reads 2*len bytes */ + if (gdb_ctx->params[1].val_ull > strlen(gdb_ctx->params[2].data) / 2) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + hextomem(gdb_ctx->mem_buf, gdb_ctx->params[2].data, + gdb_ctx->params[1].val_ull); + if (target_memory_rw_debug(gdb_ctx->s->g_cpu, gdb_ctx->params[0].val_u= ll, + gdb_ctx->mem_buf, + gdb_ctx->params[1].val_ull, true)) { + put_packet(gdb_ctx->s, "E14"); + return; + } + + put_packet(gdb_ctx->s, "OK"); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1893,24 +1918,14 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) } break; case 'M': - addr =3D strtoull(p, (char **)&p, 16); - if (*p =3D=3D ',') - p++; - len =3D strtoull(p, (char **)&p, 16); - if (*p =3D=3D ':') - p++; - - /* hextomem() reads 2*len bytes */ - if (len > strlen(p) / 2) { - put_packet (s, "E22"); - break; - } - hextomem(mem_buf, p, len); - if (target_memory_rw_debug(s->g_cpu, addr, mem_buf, len, - true) !=3D 0) { - put_packet(s, "E14"); - } else { - put_packet(s, "OK"); + { + static const GdbCmdParseEntry write_mem_cmd_desc =3D { + .handler =3D handle_write_mem, + .cmd =3D "M", + .cmd_startswith =3D 1, + .schema =3D "L,L:s0" + }; + cmd_parser =3D &write_mem_cmd_desc; } break; case 'p': --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785301; cv=none; d=zoho.com; s=zohoarc; b=Ers3t8mm1TTwbEY+NKQLy2IxzhErHkEzEk7r8n40AAytwb9x+3AvP/1foOehBgBvRtOVUG4bd2teKMr282pPtPidwwOPd+KjUTa/tqq5WvlcDXeRyMbWLdZk6gMOqOvwUGWpGs5CVJG+qv71ieblSQ1Y9KN+gm12BjJ25A2VEng= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785301; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=WRCcpUzuoRAzUaN5uQCeSKLXRQ6/9wuQJBWFZBJ3jI8=; b=Z2c4Sc1GCHNyC6tA0yDpDEjbBZFSBponmKZEaZ+Sot4g5RJQND5/EgIAM8R1i6drTE1+Y3nOk4LUSWTmoqcCaUaNmUMkrSqABBwi7KJbIt8ivz3ebmdB5MTiMyR0NePcSROjLB9b7mA3x3XLV91t95mLseNj+se9EY+VAtYmW3Q= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785301919933.7506464205858; Thu, 2 May 2019 01:21:41 -0700 (PDT) Received: from localhost ([127.0.0.1]:47245 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6yD-0006ma-Al for importer@patchew.org; Thu, 02 May 2019 04:21:33 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42698) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6te-0003Uz-Aq for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6ta-0007z1-CP for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:48 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:38472) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tY-0007UE-EO for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: by mail-wm1-x342.google.com with SMTP id w15so1391130wmc.3 for ; Thu, 02 May 2019 01:16:27 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WRCcpUzuoRAzUaN5uQCeSKLXRQ6/9wuQJBWFZBJ3jI8=; b=WXLPbXbpa4YNKPP7Q9n6ioTQgMR4oNJvnsy9Wzv4XLTV48k3pkF2pZcBsJUYnMokLQ jXNEHKFhyu1a98YClKEHpLUM8FmlX71RCCXdoV7+l45XZKMuFOIsHSLJeVtj/lnkgKZW ZLacKRdZdsnwzU2sSlgsxIUDtpalxycQ0Eu1n+lVRhkzQuhrEj4zSmIZo0AKPoXukI9I 5MjRLf3kNScDKdqWjEXr82bFLBQQHjlgG6HUw5uZPazbJ1HdGB5TRTKHU0n+mDGljPaU R1SUSWJV/NsW/yglj+QBW+h0SYB+uoFHGYp6aoNKTJBLSNFtXkBjZ4C7r/z4EE6/usuE mQug== 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=WRCcpUzuoRAzUaN5uQCeSKLXRQ6/9wuQJBWFZBJ3jI8=; b=JLBT8cfRotp33l2whjuz1UutwcyLoU8hWOuPuGxi6wv8s0zMaNzfhb2ZgzYqdCHIA+ yPy4A2eycTUXjBqU4NtNvVUVWyb52FyqgXBlicFupVj0YIU7olv8Puw0xfeXS3xMamfp Pt/JQs6Ma4A68xGCN9LzT+1liN+8n6tmuXYeYOm6VdR64dpuw6rGK1u/ETQlwU2Djw0g MCWRbzX+NkvdrddUko+BUKDLRA51aRlxHCmlLSscEH99V2o2h2xwVV1D0eefduKryO1o tuUoI3Wyv084SbzuJqIrplJO7L1BE4E0lCdqSMY+pWbU3IgJAJoAUqh1gvefEIWxOLj5 7EYA== X-Gm-Message-State: APjAAAUwTZvv0HV/ne1hgNwKJnGtZXBx3KUwy4031KiKMkIF0v3SWD84 XmD0f5zMpqFFMF9am/C3PE3Mt4Fy X-Google-Smtp-Source: APXvYqx97FiytTJe0nSmzbK7qmFq8HKDysBHewunWB/EhHcXmPHDVia5gJLLuobhYG/1HVDuJYYMXw== X-Received: by 2002:a1c:a3c2:: with SMTP id m185mr1260120wme.17.1556784986217; Thu, 02 May 2019 01:16:26 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:39 +0300 Message-Id: <20190502081554.5521-13-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::342 Subject: [Qemu-devel] [PATCH v9 12/27] gdbstub: Implement read memory (m pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 8dc2e1d507..daa602edc3 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1710,6 +1710,30 @@ static void handle_write_mem(GdbCmdContext *gdb_ctx,= void *user_ctx) put_packet(gdb_ctx->s, "OK"); } =20 +static void handle_read_mem(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (gdb_ctx->num_params < 2) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + /* memtohex() doubles the required space */ + if (gdb_ctx->params[1].val_ull > MAX_PACKET_LENGTH / 2) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + if (target_memory_rw_debug(gdb_ctx->s->g_cpu, gdb_ctx->params[0].val_u= ll, + gdb_ctx->mem_buf, + gdb_ctx->params[1].val_ull, false)) { + put_packet(gdb_ctx->s, "E14"); + return; + } + + memtohex(gdb_ctx->str_buf, gdb_ctx->mem_buf, gdb_ctx->params[1].val_ul= l); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1899,22 +1923,14 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) put_packet(s, "OK"); break; case 'm': - addr =3D strtoull(p, (char **)&p, 16); - if (*p =3D=3D ',') - p++; - len =3D strtoull(p, NULL, 16); - - /* memtohex() doubles the required space */ - if (len > MAX_PACKET_LENGTH / 2) { - put_packet (s, "E22"); - break; - } - - if (target_memory_rw_debug(s->g_cpu, addr, mem_buf, len, false) != =3D 0) { - put_packet (s, "E14"); - } else { - memtohex(buf, mem_buf, len); - put_packet(s, buf); + { + static const GdbCmdParseEntry read_mem_cmd_desc =3D { + .handler =3D handle_read_mem, + .cmd =3D "m", + .cmd_startswith =3D 1, + .schema =3D "L,L0" + }; + cmd_parser =3D &read_mem_cmd_desc; } break; case 'M': --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785972; cv=none; d=zoho.com; s=zohoarc; b=Ny6h6lkyN59qAsub1Hek4qU0Uz+s++L5DorPTxXL6SP8I/wbNOEhS679mbF6rP8KlneWv2HdptQbDdWkHr5X4sDArtagCoOqerr0bnIWmnVmiZGbXLkbmP0rxauKSk/o07IVQXpfRUpwSSAJCkMnXK1tD4s8mfNCkdB/qEAxE74= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785972; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=brvpFyYDw1Z1o2sLMNd/sMXNZo4TYemLFYCJt79OgBg=; b=jy1MHTXWm5YH1fyzKtEmr1IKC4iOGggXtNIV0Ul61dbMSsNbXbpVBlmkk6eQ39bfE+8vrskwu4xCcZF/cPLjs9whjQf2q4B3Z443PB9FrcKE90zF/KDqqLMIuIhM5RhqclpnmsanK5ztt8QYPcdgOLHXwC7B60ZMIqZpaEMbXBw= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785972648823.5235724783856; Thu, 2 May 2019 01:32:52 -0700 (PDT) Received: from localhost ([127.0.0.1]:47417 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM78y-00010J-Dt for importer@patchew.org; Thu, 02 May 2019 04:32:40 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42813) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6tg-0003YA-WE for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6te-00083W-Cz for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:33068) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6ta-0007Ul-C7 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:48 -0400 Received: by mail-wr1-x442.google.com with SMTP id e28so2044715wra.0 for ; Thu, 02 May 2019 01:16:29 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=brvpFyYDw1Z1o2sLMNd/sMXNZo4TYemLFYCJt79OgBg=; b=YEK7mRApxN1jtYp79yHPw85pTuFYiKOvF1Nm8h+vaxhBKpCqb1RbIcRRgV6sQ8GfHq W/JrEUH/Ui3wM0fxnUIIbFIruanOJm6KovDEL7MlY9ay3Z5YVchkDmbzJfXCUlid/0BO nVJaY1MJifLxxOc1WbssZ89wxQJb4SKTlscHuIpvN0fOLQ00TAWuE/Uhtm1gcTImiKaB jVw+TuGZ6XXKPRcB2GzWaYJE3p5ASVl8Dci2QVE10cITgw8lmfMtdLRfnB7ZiGmA3NXN elQxyiszMKi0WMyQhnSz+FaKCbRdTBDUCi6scgmNP+hqA5xT95JENTexfKwiLJgUqqbB obWQ== 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=brvpFyYDw1Z1o2sLMNd/sMXNZo4TYemLFYCJt79OgBg=; b=kl3r1JoB78ooZ6xoqaP+naZmDSARibu0W+KWlevkqGBs6Y0eHGjwdZETzzb7dDKdmw uryPj+UnhMHT12Hi80pVFb/WOrDvAnSCX2mM9iXBGaLhN8EnF9CIzUxs6rAnAqhXmrFy FIDhCT/gjjyuttqr8SEKqlHaSviIP+RcFt4AlgWHQQCrA2pAdHJMvWQN1RO4T2VxR+qw cELSr9IvydSSwzcx3K8vY6Um9APaX4H1F3WQinhurQvAW8CTKNykPlY4oMccp8FKn7wJ e7q/If97IsZannB8I6p86BBGZDa6IdHNdY3eBXo4GqJ7NV9VC+Z9gX08lFK062+GyArm xtWQ== X-Gm-Message-State: APjAAAXZ/0N/NcENlSZqwz3wXLO9jc74R7FWdq33Qqhj9LO++e0+3rYI SxtLYZZ4IrknfD5w8aC+yoRaacVT X-Google-Smtp-Source: APXvYqzYj1+moPN5Co8qqVcDuJeD0DW/R7cGBK49qXpm1oL2+q4fWB2q+ngy9Plzj2G8G1zuTeiutA== X-Received: by 2002:a5d:6189:: with SMTP id j9mr1680256wru.176.1556784988002; Thu, 02 May 2019 01:16:28 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:40 +0300 Message-Id: <20190502081554.5521-14-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v9 13/27] gdbstub: Implement write all registers (G pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index daa602edc3..adfe39b3a3 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1734,6 +1734,29 @@ static void handle_read_mem(GdbCmdContext *gdb_ctx, = void *user_ctx) put_packet(gdb_ctx->s, gdb_ctx->str_buf); } =20 +static void handle_write_all_regs(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + target_ulong addr, len; + uint8_t *registers; + int reg_size; + + if (!gdb_ctx->num_params) { + return; + } + + cpu_synchronize_state(gdb_ctx->s->g_cpu); + registers =3D gdb_ctx->mem_buf; + len =3D strlen(gdb_ctx->params[0].data) / 2; + hextomem(registers, gdb_ctx->params[0].data, len); + for (addr =3D 0; addr < gdb_ctx->s->g_cpu->gdb_num_g_regs && len > 0; + addr++) { + reg_size =3D gdb_write_register(gdb_ctx->s->g_cpu, registers, addr= ); + len -=3D reg_size; + registers +=3D reg_size; + } + put_packet(gdb_ctx->s, "OK"); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1745,7 +1768,6 @@ static int gdb_handle_packet(GDBState *s, const char = *line_buf) uint8_t mem_buf[MAX_PACKET_LENGTH]; char buf[sizeof(mem_buf) + 1 /* trailing NUL */]; char thread_id[16]; - uint8_t *registers; target_ulong addr, len; const GdbCmdParseEntry *cmd_parser =3D NULL; =20 @@ -1911,16 +1933,15 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) put_packet(s, buf); break; case 'G': - cpu_synchronize_state(s->g_cpu); - registers =3D mem_buf; - len =3D strlen(p) / 2; - hextomem((uint8_t *)registers, p, len); - for (addr =3D 0; addr < s->g_cpu->gdb_num_g_regs && len > 0; addr+= +) { - reg_size =3D gdb_write_register(s->g_cpu, registers, addr); - len -=3D reg_size; - registers +=3D reg_size; + { + static const GdbCmdParseEntry write_all_regs_cmd_desc =3D { + .handler =3D handle_write_all_regs, + .cmd =3D "G", + .cmd_startswith =3D 1, + .schema =3D "s0" + }; + cmd_parser =3D &write_all_regs_cmd_desc; } - put_packet(s, "OK"); break; case 'm': { --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785472; cv=none; d=zoho.com; s=zohoarc; b=G8dhxEHfvrFOul+S4i6vLMrdW9ASU7m/bUg8xLEGRhNjFBbvJNhsJ46A85nyI5r/ye0Dmsp5l3+pXT7/iGgPrMrXZ+wRyQeifcpSOxUi8aowtwu4aJFAJfT52qJ6/jE7wi6jtkFzXybiZrqzaSG9Z5ILpv+2OWFqcpToOo7c9J0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785472; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=b1bpFqGwMibMAfq1pbDbHkF4Xk3yQKA0SG1CtWad0g4=; b=LiVVeR0Yiv6M+vjfW2K+Edukm0vGpamsoT5nAy/dpBQMoBvXbpnw79vMoamnnqka2vRB2kK/FyeeyJwZ/RFVjYgM4B5fXnnoEoWyHUOwoEmTwsLWMQzO9WfbN8Atnm7psg/thg+tKC6+SxsB9Cw6WM3LzqZ18UkEysrYxKMQFwc= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785472842919.3923528039387; Thu, 2 May 2019 01:24:32 -0700 (PDT) Received: from localhost ([127.0.0.1]:47274 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM710-00016b-OA for importer@patchew.org; Thu, 02 May 2019 04:24:26 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42636) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6ta-0003Rb-B3 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6tY-0007pH-Av for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:37765) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tU-0007WC-NN for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:42 -0400 Received: by mail-wm1-x342.google.com with SMTP id y5so1399354wma.2 for ; Thu, 02 May 2019 01:16:30 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.28 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=b1bpFqGwMibMAfq1pbDbHkF4Xk3yQKA0SG1CtWad0g4=; b=dIYQvcIFgvmcsw6yS0NoxDKlnxkdCaYJLAtxlrs0fnSUmECAqdGEsQVWL2LoW3nPuT ZE2wbNyodTgCFi+Mzqp54+YcZOEZeyJHR0De7abVtsUz0bn7X2hCyS1vsyyIz20965xZ 82/FJV/qTaFId36/z53MsAGe4vfvXGCsU0yT0rjA7SJ0Ld4PjRnbF0TBeEprweQCKuSw yoD8PRRGr9qLhdrmaxHIEajVuDmZnJX4FYWvSDDGht8Jss8Fv7nGuw1Q9nHj4BIZAOBW k3gi8NLm4XcnbLoY+1yOM3HF6gOm2pfyXTY8gCcecyEm/GB7Xw8VfQNZf0RC162sw/Qh pHFA== 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=b1bpFqGwMibMAfq1pbDbHkF4Xk3yQKA0SG1CtWad0g4=; b=J68/XEJ4OhwBCkseJQI2odcHCdJXveJDZMNQBBQHI9kxjpmszmFQcsZg+qjx9T4nR9 n1PZZj32iHnlOUxjWjqkFWuuV5L9+CcWntlsWVunI9O5/HhH012/miXXx04A5mo+X5oA J4+Z0jtCg6uyo1jmV54p5/rjEcda9Z+mhTLDiQlsnz6IPVADtPNGjXA6g3i2d/0He05f 9zHekONUyHrd5YLorsTHFUqG/LmCiJq3Kmx4zGGctk/5NWlGGLwJCec4LWq8g4Q+m6lL Bpg8dHbFyzLpFtBAlT2UOju4ObK8VvpeSxjeyI++rzWE5c+5oCZ/3e/G+IyNXnwJecr1 4KmA== X-Gm-Message-State: APjAAAXgFB3Gw4l5zbdT9xvb7B6Yn+f8YnuT7VoGxDohzdgJ0xbAbyys 0/1IVZ1KjnrTnWdEYWfaZppxfNGF X-Google-Smtp-Source: APXvYqx8Dsf6BIhimBTuq6TL3aEZYgOdxV4ULDmc8y7AcPCkcF9K73gGY5FjlDCXGVY/Nop0jE1CzQ== X-Received: by 2002:a1c:4302:: with SMTP id q2mr1374324wma.28.1556784989304; Thu, 02 May 2019 01:16:29 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:41 +0300 Message-Id: <20190502081554.5521-15-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::342 Subject: [Qemu-devel] [PATCH v9 14/27] gdbstub: Implement read all registers (g pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index adfe39b3a3..3478ac778d 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1757,6 +1757,21 @@ static void handle_write_all_regs(GdbCmdContext *gdb= _ctx, void *user_ctx) put_packet(gdb_ctx->s, "OK"); } =20 +static void handle_read_all_regs(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + target_ulong addr, len; + + cpu_synchronize_state(gdb_ctx->s->g_cpu); + len =3D 0; + for (addr =3D 0; addr < gdb_ctx->s->g_cpu->gdb_num_g_regs; addr++) { + len +=3D gdb_read_register(gdb_ctx->s->g_cpu, gdb_ctx->mem_buf + l= en, + addr); + } + + memtohex(gdb_ctx->str_buf, gdb_ctx->mem_buf, len); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1764,7 +1779,7 @@ static int gdb_handle_packet(GDBState *s, const char = *line_buf) CPUClass *cc; const char *p; uint32_t pid, tid; - int ch, reg_size, type, res; + int ch, type, res; uint8_t mem_buf[MAX_PACKET_LENGTH]; char buf[sizeof(mem_buf) + 1 /* trailing NUL */]; char thread_id[16]; @@ -1923,14 +1938,14 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) } break; case 'g': - cpu_synchronize_state(s->g_cpu); - len =3D 0; - for (addr =3D 0; addr < s->g_cpu->gdb_num_g_regs; addr++) { - reg_size =3D gdb_read_register(s->g_cpu, mem_buf + len, addr); - len +=3D reg_size; + { + static const GdbCmdParseEntry read_all_regs_cmd_desc =3D { + .handler =3D handle_read_all_regs, + .cmd =3D "g", + .cmd_startswith =3D 1 + }; + cmd_parser =3D &read_all_regs_cmd_desc; } - memtohex(buf, mem_buf, len); - put_packet(s, buf); break; case 'G': { --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785862; cv=none; d=zoho.com; s=zohoarc; b=fqRtnzm2v5cxJW+QHcJ0fy+lpEu7fhQprUpdeSpCxRa6YU4xGBstYpbeKMNyhq74RGR/y6t0cnz1r8XI5jJ9GD3MiN3sEAIhcvdf/L7nJ5mxejarqjU1xdTPrrkOR4BBJSHGx+yRyp383IUQeaudoLhLbh7F5MlW+EeeMEHirOY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785862; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=/kC4Ra5FAbXCGpLaIRgx76fPd1eNM+Za2+9T+4B8JSs=; b=CHuXFMKptAuRYOPP1PVaqFP3BC+dQwEfkZtztXHkQepEQ1DmaI+bz+Zu0UIkTN4Y6Hh05WfPJ6RAbiIeJBHtn25hUsKqQiNztNFJMwNOVnbIwIhI0Ccf/ur2bF3tju/mlDjgEUWfUgmcFbgHrXj2M9vzoEcBc/Y1Nv8SM3lATz4= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15567858629101018.1539019205217; Thu, 2 May 2019 01:31:02 -0700 (PDT) Received: from localhost ([127.0.0.1]:47397 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM77I-000851-Sf for importer@patchew.org; Thu, 02 May 2019 04:30:56 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42977) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6tk-0003cX-RO for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6th-0008OM-A6 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:56 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:34196) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tg-0007Ww-Vp for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:53 -0400 Received: by mail-wr1-x442.google.com with SMTP id e9so2033576wrc.1 for ; Thu, 02 May 2019 01:16:31 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/kC4Ra5FAbXCGpLaIRgx76fPd1eNM+Za2+9T+4B8JSs=; b=PepwTe7hStnTonZBcIzfB1nRJqu+OsGlAh9Ytf1s++5xl6bDau96T5sxQOkswuGF/S Tjexj5tqfuSfAgs5KdvxFlu8wH0Ii0MuHkJYPTpL7xY1hkkib797DP67F94wV1eUdlVc r4/0EhIC5MEcL6aGSzktKwkWA87JB2GWpd3TtlTzejy0xWgNsHaC96cP9nZSwXB1nPrG oIjtRwJ/mU6caogoh3PRCpbah+zFqZlEng1BaRu3RWhhPhPERkCZbPrEVGZnBvlFlVHV jbem4Y2WaBINlTS9pqWheoGYrZQJMIp1fbKVYFDHpbhqqOT1QXdPAoFoFLHMYCBMljgH LeLA== 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=/kC4Ra5FAbXCGpLaIRgx76fPd1eNM+Za2+9T+4B8JSs=; b=fjOCw5xalsBYs1zLsEx0GNQKI8iBL1gVScNcBwQ+ZFcYkngJACJAloMrUiTH5TxVzV Lb8lXysyjnBnNMYZIEA065aKpk1ZuiKSuyqnHlqZfAFzwqA/BzTY+MTfKZWiadmMrai3 SlWfZ3KzoTR2qfP/KJiJSCX6252LZDEjIc9uMAqYzR+9CZFxavW/v0ggsna74ywGzuxb oaMthnTlHgVEBXXwnKL8MECFtJeCyZtxYK7MSm3020tp13DBAhPnn9MTYhZgbdlNURVw LdasYFHXp3r+Z3v7uYCOyIpHdQdJMm2w/gzGM0Dkf6NSqBNiidiaAzB5mMhg4BrVPgpo oeTw== X-Gm-Message-State: APjAAAXoIQ6PjChZKH7c3hM83g7LoaYnWjScKkR/jotNRqXnase/ij4p EdjPTT09Bj6VMzJFmIEQvS2wlHao X-Google-Smtp-Source: APXvYqxSN3+joOhM7XNbgNiUGTOc0WTN9dG72C/4ml0YKnkNvOAyHIC2sHbykct2AQ3dfDR1JwSqDw== X-Received: by 2002:adf:eb03:: with SMTP id s3mr878251wrn.170.1556784990882; Thu, 02 May 2019 01:16:30 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:42 +0300 Message-Id: <20190502081554.5521-16-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v9 15/27] gdbstub: Implement file io (F pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 62 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 3478ac778d..9fe130f30d 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1772,6 +1772,39 @@ static void handle_read_all_regs(GdbCmdContext *gdb_= ctx, void *user_ctx) put_packet(gdb_ctx->s, gdb_ctx->str_buf); } =20 +static void handle_file_io(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + int num_syscall_params; + GdbCmdVariant syscall_params[3] =3D {}; + + if (!gdb_ctx->num_params) { + return; + } + + if (cmd_parse_params(gdb_ctx->params[0].data, "L,L,o0", syscall_params, + &num_syscall_params)) { + return; + } + + if (!num_syscall_params) { + return; + } + + if (gdb_ctx->s->current_syscall_cb) { + gdb_ctx->s->current_syscall_cb(gdb_ctx->s->c_cpu, + (target_ulong)syscall_params[0].val= _ull, + (target_ulong)syscall_params[1].val= _ull); + gdb_ctx->s->current_syscall_cb =3D NULL; + } + + if (syscall_params[2].opcode =3D=3D (uint8_t)'C') { + put_packet(gdb_ctx->s, "T02"); + return; + } + + gdb_continue(gdb_ctx->s); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1913,28 +1946,13 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) return RS_IDLE; case 'F': { - target_ulong ret; - target_ulong err; - - ret =3D strtoull(p, (char **)&p, 16); - if (*p =3D=3D ',') { - p++; - err =3D strtoull(p, (char **)&p, 16); - } else { - err =3D 0; - } - if (*p =3D=3D ',') - p++; - type =3D *p; - if (s->current_syscall_cb) { - s->current_syscall_cb(s->c_cpu, ret, err); - s->current_syscall_cb =3D NULL; - } - if (type =3D=3D 'C') { - put_packet(s, "T02"); - } else { - gdb_continue(s); - } + static const GdbCmdParseEntry file_io_cmd_desc =3D { + .handler =3D handle_file_io, + .cmd =3D "F", + .cmd_startswith =3D 1, + .schema =3D "s0" + }; + cmd_parser =3D &file_io_cmd_desc; } break; case 'g': --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785480; cv=none; d=zoho.com; s=zohoarc; b=fkSZ803s8ZI1xVM4M2R29p8toEwfIGLKOCw8rzzT48nolLTHQO0Rq8f4JbwlkCAbOrQGa8YJ+qtCU7ln40/3ceyYdK+yTVFtVeDhwF/YQqAz2jDM/FMDqa0Sn1pc3gl3wQitzXaShEieQ7u4AzI/QVFqFFQOKEe4KbHG2nvGtpc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785480; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=EShIhnyclfVo57FnSdW5zX6W2mQ/1wfNmEis7PfWfkY=; b=cVcIKSYERQ/7edzCYvWTVRApBjvkHQdadcia76LCNlf19ghdUf49riOhRdWqh4v5GGAR/2VUStr1hDQflX221jfHOfJEOpIz7EAj8UVI6VeKhXUbhshglM0vbwKpZC2zY3kNADfCYDJADK54VHSNafoRPMuyMT0eT68wC9VlHi0= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15567854804425.71144554506202; Thu, 2 May 2019 01:24:40 -0700 (PDT) Received: from localhost ([127.0.0.1]:47276 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM718-0001Ea-KB for importer@patchew.org; Thu, 02 May 2019 04:24:34 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42816) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6th-0003YC-0f for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6te-00085U-NA for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:38447) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6te-0007YJ-DK for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:50 -0400 Received: by mail-wr1-x442.google.com with SMTP id k16so2003032wrn.5 for ; Thu, 02 May 2019 01:16:34 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EShIhnyclfVo57FnSdW5zX6W2mQ/1wfNmEis7PfWfkY=; b=t9GKjeCMehyP0OgaBi1osrSMjK4uwBNkRZnRfwW424vTdd7tjMa3fsZws4H1FJ2VDK AL8G6qpp7SFryQfeSlgDba6+S4069N0WOlJLZELGwO6vZUD5B2FTdVRyA3zaHfT8aakY HvVvlIAFY9+RxkbzLlQAagn8mpc+OYEPQzR7vwMGZapycnK6PDCU3/1euV/fx3h6jFtb YyWI99D8gEsoJ1Xakq06dJyxOlRk6TnoyFA1/RK0SRCxKuRauPr0HtQqPjxsQSn8p+Ox j6SJRc4H/3UdJfPfBY9Hs7VsfHhDAlSAKhj1g5mcLpPiDDEpCfVkiDUVtwNi65A9aXDk VpWQ== 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=EShIhnyclfVo57FnSdW5zX6W2mQ/1wfNmEis7PfWfkY=; b=HBKUMsL2/fIuNQ6PQ7OzAhlnnXi7RlbeKSP/yRhQFHKsjC2jnLcUYtpZp+bgAln0Ye vZ8DP6AJargDp3cKJChgsRC+SrOQh1dd4YivgX84fW9HXJat77Ji6B3zjsgYMLsb6i3D DiuK+Vv+fN7xKCnmTPkfFO+07+x5m1kiSdbux1uA8yk/2GHCbMpup1jf/+DZKCwyi2RG pWODXKNn4m10wnRwBHLZlE4ifTIm5gV0gD3uz+Sk7p9MRLGzIMR8xIR64+snpIKYT/ep EDZH+ZNHa24W6mYrzMYkJjTwIeLRAcJh8dW7LXNblS1b+f65QdGT6ryahAtTsuHLp5Of 0szg== X-Gm-Message-State: APjAAAUHFd+sS7d+tvzhlvgA2fbLSa/awInTQ9USYjL6D3u1XlEDT8Ws 2jLqfTVuv/VY/ET9WjyNn3vVXrZB X-Google-Smtp-Source: APXvYqxgrSOhA7AlF9OAMKlnjyB4gdEl2ANwG0OYBiCRptNLPMXChTn+K4jcKAXpi0cDPYDtWTVrfw== X-Received: by 2002:adf:cd90:: with SMTP id q16mr1669186wrj.75.1556784993176; Thu, 02 May 2019 01:16:33 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:43 +0300 Message-Id: <20190502081554.5521-17-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v9 16/27] gdbstub: Implement step (s pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 9fe130f30d..9b0556f8be 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1805,6 +1805,16 @@ static void handle_file_io(GdbCmdContext *gdb_ctx, v= oid *user_ctx) gdb_continue(gdb_ctx->s); } =20 +static void handle_step(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (gdb_ctx->num_params) { + gdb_set_cpu_pc(gdb_ctx->s, (target_ulong)gdb_ctx->params[0].val_ul= l); + } + + cpu_single_step(gdb_ctx->s->c_cpu, sstep_flags); + gdb_continue(gdb_ctx->s); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1937,13 +1947,16 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) } break; case 's': - if (*p !=3D '\0') { - addr =3D strtoull(p, (char **)&p, 16); - gdb_set_cpu_pc(s, addr); + { + static const GdbCmdParseEntry step_cmd_desc =3D { + .handler =3D handle_step, + .cmd =3D "s", + .cmd_startswith =3D 1, + .schema =3D "L0" + }; + cmd_parser =3D &step_cmd_desc; } - cpu_single_step(s->c_cpu, sstep_flags); - gdb_continue(s); - return RS_IDLE; + break; case 'F': { static const GdbCmdParseEntry file_io_cmd_desc =3D { --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785464; cv=none; d=zoho.com; s=zohoarc; b=KDTehO6qFOU1VRBQ9eki8JfJnPdMlnJPPHmhYIdOPmCe0LIBLOlNK8swIuzmiqMxdLqkpFF6m9e90zIBamFdVaIHCgez0sF7mr0xTr5j+nhgpGF5w2+MXIOHvv+ogtQL4/9A2/w1NyVPFNlxcs1OKCWtNgIw2kK8Fr+pJ5PYB64= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785464; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=kKebEya2GiWvJfCSlb0vx4oLqKZ12SF6Am+XqCA7M8o=; b=Sfu5EA/LXKG8+tu/InRBoxhzKG1/S9JT84NgXexneJspv7KHKuoHF6GULtXC7ydFNTVA9FgQdr8ZDOhkCerfYbjGbzPsetAe/fNAFvJXE5U7OE9kBmhnLeU1MvPk52y/lTcSf/wjImIyyghVqV5mHNxMcvpa9zRcYYYr2yvH24o= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785464066133.28415568445587; Thu, 2 May 2019 01:24:24 -0700 (PDT) Received: from localhost ([127.0.0.1]:47269 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM70w-00012N-Tb for importer@patchew.org; Thu, 02 May 2019 04:24:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42635) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6ta-0003Ra-Aj for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6tY-0007q0-DN for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:33069) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tW-0007aB-Bw for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:44 -0400 Received: by mail-wr1-x442.google.com with SMTP id e28so2045153wra.0 for ; Thu, 02 May 2019 01:16:35 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.33 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kKebEya2GiWvJfCSlb0vx4oLqKZ12SF6Am+XqCA7M8o=; b=AkwgYepcWyF+IP6sX5GVDp12NdIFVHm0MkiB/GX/YRnlKRQkcKxErlP0n+Py8PXIbU noV2VtCpss9IIxKo16uIrx9ZKaxaD3mv5zFqwlFNnYs0uJ8b4/Sq7Ft37seHXCY3y0LV HG9Lx/kK09IcE+6M3Nme1pmqRAjPXrY+cAPu5c72L1QFQm5fLgHXnC71D4OUA0Jqlb+t 8SlVjOGLeyXNWbEKXioA2T97ME/nAiJFIH1W1YyNeYV4kdiGS1MpGwsQhoDvMOPbrD3X +1zvy45WUcIvMhNz6VYkFV4nM51bMPE/0XfwhFTM42cZ/bEXSzFHxpTaMvrf/svBsEdv 7zwA== 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=kKebEya2GiWvJfCSlb0vx4oLqKZ12SF6Am+XqCA7M8o=; b=CaTokYBU4lW3IpkqNdSn16I7pYTSB8KwBKjEvi0RGaLhkpdnFnnnjL3Kfs+KBZ0xqo MQKuT5vcpfRvcgyngas5lwCZWU6bNUTqH8FeOhUIDZAAvqlh543hlv1CV9Vtq7HsS2pd G/JLPoqPfcAtDrPD52NDLqIfIec76GRqkts+InZD9ZXCAmGcLwXJoKM2HJ/W60qGTFlj 7fZgc5E7fxeYat3f23ue6Idq6DCYVUx6cuUbodyHYwZjPNyixS9x6FBUhnvponsIgy2u 2KoPZT6YBvhTzAZ8RE5tW3CQd8S7lnZ02VLHuRMFi27UIOpVGwXpE1K7elICvzhdefy1 xE6A== X-Gm-Message-State: APjAAAUCuYEkuJ0YNUFOJNSNLulP84S3OM0nCH/sxxLypxWKOGbM+u6u 8GshMFAoEzK7su8Ap1AO6vxyj7J5 X-Google-Smtp-Source: APXvYqxcGpbOCSeSu5ekA5KsQg/dFwpDRDn/QoykW+5As9gaPAnVsWGNCLao2Y5C0lBh8AOyLj1qhg== X-Received: by 2002:a5d:6b48:: with SMTP id x8mr1613377wrw.266.1556784994630; Thu, 02 May 2019 01:16:34 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:44 +0300 Message-Id: <20190502081554.5521-18-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v9 17/27] gdbstub: Implement v commands with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 170 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 110 insertions(+), 60 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 9b0556f8be..d56d0fd235 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1815,6 +1815,106 @@ static void handle_step(GdbCmdContext *gdb_ctx, voi= d *user_ctx) gdb_continue(gdb_ctx->s); } =20 +static void handle_v_cont_query(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + put_packet(gdb_ctx->s, "vCont;c;C;s;S"); +} + +static void handle_v_cont(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + int res; + + if (!gdb_ctx->num_params) { + return; + } + + res =3D gdb_handle_vcont(gdb_ctx->s, gdb_ctx->params[0].data); + if ((res =3D=3D -EINVAL) || (res =3D=3D -ERANGE)) { + put_packet(gdb_ctx->s, "E22"); + } else if (res) { + put_packet(gdb_ctx->s, "\0"); + } +} + +static void handle_v_attach(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + GDBProcess *process; + CPUState *cpu; + char thread_id[16]; + + strcpy(gdb_ctx->str_buf, "E22"); + if (!gdb_ctx->num_params) { + goto cleanup; + } + + process =3D gdb_get_process(gdb_ctx->s, gdb_ctx->params[0].val_ul); + if (!process) { + goto cleanup; + } + + cpu =3D get_first_cpu_in_process(gdb_ctx->s, process); + if (!cpu) { + goto cleanup; + } + + process->attached =3D true; + gdb_ctx->s->g_cpu =3D cpu; + gdb_ctx->s->c_cpu =3D cpu; + + gdb_fmt_thread_id(gdb_ctx->s, cpu, thread_id, sizeof(thread_id)); + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "T%02xthread:%s;", + GDB_SIGNAL_TRAP, thread_id); +cleanup: + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + +static void handle_v_kill(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + /* Kill the target */ + put_packet(gdb_ctx->s, "OK"); + error_report("QEMU: Terminated via GDBstub"); + exit(0); +} + +static GdbCmdParseEntry gdb_v_commands_table[] =3D { + /* Order is important if has same prefix */ + { + .handler =3D handle_v_cont_query, + .cmd =3D "Cont?", + .cmd_startswith =3D 1 + }, + { + .handler =3D handle_v_cont, + .cmd =3D "Cont", + .cmd_startswith =3D 1, + .schema =3D "s0" + }, + { + .handler =3D handle_v_attach, + .cmd =3D "Attach;", + .cmd_startswith =3D 1, + .schema =3D "l0" + }, + { + .handler =3D handle_v_kill, + .cmd =3D "Kill;", + .cmd_startswith =3D 1 + }, +}; + +static void handle_v_commands(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (!gdb_ctx->num_params) { + return; + } + + if (process_string_cmd(gdb_ctx->s, NULL, gdb_ctx->params[0].data, + gdb_v_commands_table, + ARRAY_SIZE(gdb_v_commands_table))) { + put_packet(gdb_ctx->s, ""); + } +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -1822,7 +1922,7 @@ static int gdb_handle_packet(GDBState *s, const char = *line_buf) CPUClass *cc; const char *p; uint32_t pid, tid; - int ch, type, res; + int ch, type; uint8_t mem_buf[MAX_PACKET_LENGTH]; char buf[sizeof(mem_buf) + 1 /* trailing NUL */]; char thread_id[16]; @@ -1871,66 +1971,16 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) } break; case 'v': - if (strncmp(p, "Cont", 4) =3D=3D 0) { - p +=3D 4; - if (*p =3D=3D '?') { - put_packet(s, "vCont;c;C;s;S"); - break; - } - - res =3D gdb_handle_vcont(s, p); - - if (res) { - if ((res =3D=3D -EINVAL) || (res =3D=3D -ERANGE)) { - put_packet(s, "E22"); - break; - } - goto unknown_command; - } - break; - } else if (strncmp(p, "Attach;", 7) =3D=3D 0) { - unsigned long pid; - - p +=3D 7; - - if (qemu_strtoul(p, &p, 16, &pid)) { - put_packet(s, "E22"); - break; - } - - process =3D gdb_get_process(s, pid); - - if (process =3D=3D NULL) { - put_packet(s, "E22"); - break; - } - - cpu =3D get_first_cpu_in_process(s, process); - - if (cpu =3D=3D NULL) { - /* Refuse to attach an empty process */ - put_packet(s, "E22"); - break; - } - - process->attached =3D true; - - s->g_cpu =3D cpu; - s->c_cpu =3D cpu; - - snprintf(buf, sizeof(buf), "T%02xthread:%s;", GDB_SIGNAL_TRAP, - gdb_fmt_thread_id(s, cpu, thread_id, sizeof(thread_id= ))); - - put_packet(s, buf); - break; - } else if (strncmp(p, "Kill;", 5) =3D=3D 0) { - /* Kill the target */ - put_packet(s, "OK"); - error_report("QEMU: Terminated via GDBstub"); - exit(0); - } else { - goto unknown_command; + { + static const GdbCmdParseEntry v_cmd_desc =3D { + .handler =3D handle_v_commands, + .cmd =3D "v", + .cmd_startswith =3D 1, + .schema =3D "s0" + }; + cmd_parser =3D &v_cmd_desc; } + break; case 'k': /* Kill the target */ error_report("QEMU: Terminated via GDBstub"); --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785966; cv=none; d=zoho.com; s=zohoarc; b=NShp+NCPZb4JBalLuDLyEcG5JrzXvT6B9dq0kgHBlz3a0si2dF5gIiWi50IDsB6kkKED4/GFTgiB3b6NyEiirN4wk2WeQErIMJ0/uNKLtCTHbb0M89EgAJpxhCnA890G6ZXnNxMVEWvuXa+Xcti2aMoDafRIRin9zdEOMma7UhM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785966; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=6XppYMRruE5laPQu4tuOEJD3R2TgHj9UJ0kj9FF2Z0o=; b=AfphxcoZm2sCqZYrq1m3FZKGw9PAcAtIXrbSeiZSg3eZM3/puUTki/2/0P13C9reQYH3OUO4m8Md42MQSTkJson0uBXa84/pk0ctczKzsDtjcxDJgX2ktX+FdCo4xZ+jSQBVjW4SMxyhyXiVF96Xfzij+5qaicz/nFOqUIEbOXs= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785966829574.6574895539904; Thu, 2 May 2019 01:32:46 -0700 (PDT) Received: from localhost ([127.0.0.1]:47419 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM791-00012p-WB for importer@patchew.org; Thu, 02 May 2019 04:32:44 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42697) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6te-0003Uy-Aq for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6ta-0007zF-D4 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:48 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:51695) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tY-0007ay-Dq for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: by mail-wm1-x343.google.com with SMTP id t76so1485709wmt.1 for ; Thu, 02 May 2019 01:16:37 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6XppYMRruE5laPQu4tuOEJD3R2TgHj9UJ0kj9FF2Z0o=; b=g7rweuhQ02WGqqpLl3LfGFc8M8PAHVu8jQ0b1SQEBBEwp0fMqm6ajS3Mcsa9DP4TY2 fvKPN8lA8YRBso40lUF2I2CZGx17GpSZPVd5bbFFJeWjPAN76nbnKYN8tHMWxqV1lJh6 gmUOjT3haCTuIGp+I6VycaG3H2x+SNkAvArxf8ZD+AbdrfEWj8WuT+FsQfiygmLIYCXf PlvCseUHCRnzafDoHwnb4jJid54IxEUu6U5J/V50en5xxQHCb66mJ2LTenUsQKpPST8p 76HuYgWDzSQBVFoZs2idvEuq+h6GTW3xRE6uT5GwlDF1NG51RYp3JI/5lhnvmL8wqmg/ 98cQ== 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=6XppYMRruE5laPQu4tuOEJD3R2TgHj9UJ0kj9FF2Z0o=; b=oPZNHMtmtaS2H0RiA8QrOH/oeWalL7A+Dsgg31dm/0sD0F92F1sWHWbuuAWLWt1jbN tB0Wbxpsgf+FOKpbscCGt9k+Tde+AHmYKhzupr0zKD43O4JmhHbQn10okXXpZbb2Ywnw S8+f2UBrAE2gEFY2sd3cQ/qat/Ip8woN1WvV8AWlOSw7Bz4G4fp5PFOekQPDm4r+US6r e7khno2WP2jVjLh2Q9qiJP9giCCV5CSVujd8x72tPnbD794E2OprL3umjrCBLyPGkUkC K6mnHlO0rjWFMjgtV6KyE3M5+2v/ec61LOou1A3ESKyR9tsexzkcu1ghdsfZ+GNFjq9d JUSg== X-Gm-Message-State: APjAAAX9oui5LET+UBU50SkvIIWpVJ+RveuJgIyez/niBiDNdjiQve/o S+Jb9DBiiSp3wqJc1JHpxM6gkTT8 X-Google-Smtp-Source: APXvYqyTQ8y7jwgvskmmJOSkyGztugXNVraM649dBe2fZVaBTEv8wime0EYcjm1JYDCBzxOE9DtKLA== X-Received: by 2002:a1c:a00f:: with SMTP id j15mr1307511wme.148.1556784996071; Thu, 02 May 2019 01:16:36 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:45 +0300 Message-Id: <20190502081554.5521-19-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::343 Subject: [Qemu-devel] [PATCH v9 18/27] gdbstub: Implement generic query (q pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 327 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 327 insertions(+) diff --git a/gdbstub.c b/gdbstub.c index d56d0fd235..83ae8738cc 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1915,6 +1915,323 @@ static void handle_v_commands(GdbCmdContext *gdb_ct= x, void *user_ctx) } } =20 +static void handle_query_qemu_sstepbits(GdbCmdContext *gdb_ctx, void *user= _ctx) +{ + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), + "ENABLE=3D%x,NOIRQ=3D%x,NOTIMER=3D%x", SSTEP_ENABLE, + SSTEP_NOIRQ, SSTEP_NOTIMER); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + +static void handle_set_qemu_sstep(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (!gdb_ctx->num_params) { + return; + } + + sstep_flags =3D gdb_ctx->params[0].val_ul; + put_packet(gdb_ctx->s, "OK"); +} + +static void handle_query_qemu_sstep(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "0x%x", sstep_fla= gs); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + +static void handle_query_curr_tid(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + CPUState *cpu; + GDBProcess *process; + char thread_id[16]; + + /* + * "Current thread" remains vague in the spec, so always return + * the first thread of the current process (gdb returns the + * first thread). + */ + process =3D gdb_get_cpu_process(gdb_ctx->s, gdb_ctx->s->g_cpu); + cpu =3D get_first_cpu_in_process(gdb_ctx->s, process); + gdb_fmt_thread_id(gdb_ctx->s, cpu, thread_id, sizeof(thread_id)); + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "QC%s", thread_id= ); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + +static void handle_query_threads(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + char thread_id[16]; + + if (!gdb_ctx->s->query_cpu) { + put_packet(gdb_ctx->s, "l"); + return; + } + + gdb_fmt_thread_id(gdb_ctx->s, gdb_ctx->s->query_cpu, thread_id, + sizeof(thread_id)); + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "m%s", thread_id); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); + gdb_ctx->s->query_cpu =3D + gdb_next_attached_cpu(gdb_ctx->s, gdb_ctx->s->query_cpu); +} + +static void handle_query_first_threads(GdbCmdContext *gdb_ctx, void *user_= ctx) +{ + gdb_ctx->s->query_cpu =3D gdb_first_attached_cpu(gdb_ctx->s); + handle_query_threads(gdb_ctx, user_ctx); +} + +static void handle_query_thread_extra(GdbCmdContext *gdb_ctx, void *user_c= tx) +{ + CPUState *cpu; + int len; + + if (!gdb_ctx->num_params || + gdb_ctx->params[0].thread_id.kind =3D=3D GDB_READ_THREAD_ERR) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + cpu =3D gdb_get_cpu(gdb_ctx->s, gdb_ctx->params[0].thread_id.pid, + gdb_ctx->params[0].thread_id.tid); + if (!cpu) { + return; + } + + cpu_synchronize_state(cpu); + + if (gdb_ctx->s->multiprocess && (gdb_ctx->s->process_num > 1)) { + /* Print the CPU model and name in multiprocess mode */ + ObjectClass *oc =3D object_get_class(OBJECT(cpu)); + const char *cpu_model =3D object_class_get_name(oc); + char *cpu_name =3D object_get_canonical_path_component(OBJECT(cpu)= ); + len =3D snprintf((char *)gdb_ctx->mem_buf, sizeof(gdb_ctx->str_buf= ) / 2, + "%s %s [%s]", cpu_model, cpu_name, + cpu->halted ? "halted " : "running"); + g_free(cpu_name); + } else { + /* memtohex() doubles the required space */ + len =3D snprintf((char *)gdb_ctx->mem_buf, sizeof(gdb_ctx->str_buf= ) / 2, + "CPU#%d [%s]", cpu->cpu_index, + cpu->halted ? "halted " : "running"); + } + trace_gdbstub_op_extra_info((char *)gdb_ctx->mem_buf); + memtohex(gdb_ctx->str_buf, gdb_ctx->mem_buf, len); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + +#ifdef CONFIG_USER_ONLY +static void handle_query_offsets(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + TaskState *ts; + + ts =3D gdb_ctx->s->c_cpu->opaque; + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), + "Text=3D" TARGET_ABI_FMT_lx ";Data=3D" TARGET_ABI_FMT_lx + ";Bss=3D" TARGET_ABI_FMT_lx, + ts->info->code_offset, + ts->info->data_offset, + ts->info->data_offset); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} +#else +static void handle_query_rcmd(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + int len; + + if (!gdb_ctx->num_params) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + len =3D strlen(gdb_ctx->params[0].data); + if (len % 2) { + put_packet(gdb_ctx->s, "E01"); + return; + } + + len =3D len / 2; + hextomem(gdb_ctx->mem_buf, gdb_ctx->params[0].data, len); + gdb_ctx->mem_buf[len++] =3D 0; + qemu_chr_be_write(gdb_ctx->s->mon_chr, gdb_ctx->mem_buf, len); + put_packet(gdb_ctx->s, "OK"); + +} +#endif + +static void handle_query_supported(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + CPUClass *cc; + + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "PacketSize=3D%x", + MAX_PACKET_LENGTH); + cc =3D CPU_GET_CLASS(first_cpu); + if (cc->gdb_core_xml_file) { + pstrcat(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), + ";qXfer:features:read+"); + } + + if (gdb_ctx->num_params && + strstr(gdb_ctx->params[0].data, "multiprocess+")) { + gdb_ctx->s->multiprocess =3D true; + } + + pstrcat(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), ";multiprocess+"); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + +static void handle_query_xfer_features(GdbCmdContext *gdb_ctx, void *user_= ctx) +{ + GDBProcess *process; + CPUClass *cc; + unsigned long len, total_len, addr; + const char *xml; + const char *p; + + if (gdb_ctx->num_params < 3) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + process =3D gdb_get_cpu_process(gdb_ctx->s, gdb_ctx->s->g_cpu); + cc =3D CPU_GET_CLASS(gdb_ctx->s->g_cpu); + if (!cc->gdb_core_xml_file) { + put_packet(gdb_ctx->s, ""); + return; + } + + gdb_has_xml =3D true; + p =3D gdb_ctx->params[0].data; + xml =3D get_feature_xml(gdb_ctx->s, p, &p, process); + if (!xml) { + put_packet(gdb_ctx->s, "E00"); + return; + } + + addr =3D gdb_ctx->params[1].val_ul; + len =3D gdb_ctx->params[2].val_ul; + total_len =3D strlen(xml); + if (addr > total_len) { + put_packet(gdb_ctx->s, "E00"); + return; + } + + if (len > (MAX_PACKET_LENGTH - 5) / 2) { + len =3D (MAX_PACKET_LENGTH - 5) / 2; + } + + if (len < total_len - addr) { + gdb_ctx->str_buf[0] =3D 'm'; + len =3D memtox(gdb_ctx->str_buf + 1, xml + addr, len); + } else { + gdb_ctx->str_buf[0] =3D 'l'; + len =3D memtox(gdb_ctx->str_buf + 1, xml + addr, total_len - addr); + } + + put_packet_binary(gdb_ctx->s, gdb_ctx->str_buf, len + 1, true); +} + +static void handle_query_attached(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + put_packet(gdb_ctx->s, GDB_ATTACHED); +} + +static GdbCmdParseEntry gdb_gen_query_set_common_table[] =3D { + /* Order is important if has same prefix */ + { + .handler =3D handle_query_qemu_sstepbits, + .cmd =3D "qemu.sstepbits", + }, + { + .handler =3D handle_query_qemu_sstep, + .cmd =3D "qemu.sstep", + }, + { + .handler =3D handle_set_qemu_sstep, + .cmd =3D "qemu.sstep=3D", + .cmd_startswith =3D 1, + .schema =3D "l0" + }, +}; + +static GdbCmdParseEntry gdb_gen_query_table[] =3D { + { + .handler =3D handle_query_curr_tid, + .cmd =3D "C", + }, + { + .handler =3D handle_query_threads, + .cmd =3D "sThreadInfo", + }, + { + .handler =3D handle_query_first_threads, + .cmd =3D "fThreadInfo", + }, + { + .handler =3D handle_query_thread_extra, + .cmd =3D "ThreadExtraInfo,", + .cmd_startswith =3D 1, + .schema =3D "t0" + }, +#ifdef CONFIG_USER_ONLY + { + .handler =3D handle_query_offsets, + .cmd =3D "Offsets", + }, +#else + { + .handler =3D handle_query_rcmd, + .cmd =3D "Rcmd,", + .cmd_startswith =3D 1, + .schema =3D "s0" + }, +#endif + { + .handler =3D handle_query_supported, + .cmd =3D "Supported:", + .cmd_startswith =3D 1, + .schema =3D "s0" + }, + { + .handler =3D handle_query_supported, + .cmd =3D "Supported", + .schema =3D "s0" + }, + { + .handler =3D handle_query_xfer_features, + .cmd =3D "Xfer:features:read:", + .cmd_startswith =3D 1, + .schema =3D "s:l,l0" + }, + { + .handler =3D handle_query_attached, + .cmd =3D "Attached:", + .cmd_startswith =3D 1 + }, + { + .handler =3D handle_query_attached, + .cmd =3D "Attached", + }, +}; + +static void handle_gen_query(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (!gdb_ctx->num_params) { + return; + } + + if (!process_string_cmd(gdb_ctx->s, NULL, gdb_ctx->params[0].data, + gdb_gen_query_set_common_table, + ARRAY_SIZE(gdb_gen_query_set_common_table))) { + return; + } + + if (process_string_cmd(gdb_ctx->s, NULL, gdb_ctx->params[0].data, + gdb_gen_query_table, + ARRAY_SIZE(gdb_gen_query_table))) { + put_packet(gdb_ctx->s, ""); + } +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { CPUState *cpu; @@ -2128,6 +2445,16 @@ static int gdb_handle_packet(GDBState *s, const char= *line_buf) } break; case 'q': + { + static const GdbCmdParseEntry gen_query_cmd_desc =3D { + .handler =3D handle_gen_query, + .cmd =3D "q", + .cmd_startswith =3D 1, + .schema =3D "s0" + }; + cmd_parser =3D &gen_query_cmd_desc; + } + break; case 'Q': /* parse any 'q' packets here */ if (!strcmp(p,"qemu.sstepbits")) { --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556786465; cv=none; d=zoho.com; s=zohoarc; b=ja7BIcv4yBgUF24enV2gI7dehjYbQ9SEknoRmh66CLPR+PV9H2KCmO/C8Rp4a5BKpEjGhpHgKCgpQWrBO9aZUjgscF3I59Nc4wsNKJdwy6pqvvlCBXc/ZeMMuoUiJK1R7NHSNZBHERDtZDlEgNs79/ZfdBth/n3Dn/p4S3nDbhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556786465; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=9rzWu4duvgFxDEBnKAIuNQA/7quDWlJb65aR2J7JxiI=; b=P/QwYjXTn5RkFLrkoOC4KEggw5neWaMwa0u289GRTKi6lvOwfTjrjJIJyGFDRFIaAvppHE/odgLaf7qAqDZUHrXXm5Y8xPvQN0JC/GekMeV3nDF3OvzF2eMkN708OEbZ9DgR2KIwzgocQ2jioq7f9TWyS/IIkWYtkGNgUfp6tDo= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556786465861703.9230735818087; Thu, 2 May 2019 01:41:05 -0700 (PDT) Received: from localhost ([127.0.0.1]:47577 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM7H1-00088B-OQ for importer@patchew.org; Thu, 02 May 2019 04:40:59 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42966) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6tk-0003bZ-8L for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6th-0008Nd-6V for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:55 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:34197) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6te-0007dd-Uh for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: by mail-wr1-x442.google.com with SMTP id e9so2033954wrc.1 for ; Thu, 02 May 2019 01:16:38 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.36 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9rzWu4duvgFxDEBnKAIuNQA/7quDWlJb65aR2J7JxiI=; b=A4jux+ENCuhtWTSrnCh5ENhh5ZnFcFlzyVcE61x4X8LetUQlEcBnnJBBPbaQ63sMGm /tANAiA/REQ1N/uxjQo/uHH9b+etHDkyIaNFflL3Q5sQfkYBQu0zhzDnR3Kwuf6Ad22M IxbJINqrCnGIYlcbDPB3UiFKS0zrZvaf5FgGKCJf+dea1bipz56Sx0Pfvc4G3q4KxqxH JdbeEIY/GACflhQXLUdW2ZImrIRW3WGdDZ7iHDcI3AaJl2czIJAkF0l9TsYz0EZPUpxV JAMYoBrAKlEv5aEXBrhGzXAhVIL9PTchmhN165luG/djAT8i459XuEssDT4ITigZEEMX s4Bg== 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=9rzWu4duvgFxDEBnKAIuNQA/7quDWlJb65aR2J7JxiI=; b=nmWgqodjY1GuLqp7mUNpDcl9qrhn15iVM78eHXwVEP/3CFgJxiBqWRrq+Necu66A+4 d/i94tvs/QH3Vm+KZjZApza9WwExDGBC/fFJkV8Tp+IEXHQpSRrbiZ377rpxuetzaNiQ yswNEYYniVx2rrYKsCoRm3a4Anw/LBxU1THEnpAFyK7A2ekJpi97axpnlNHdmIBMChCO e7vCgF/7dFzlbLNjo24YfznCvg29dbuIfNRmAU3MFDYk0edDH3LOqt+WgLqlhZLCyxEe wvcuodpYPf0qbuJMig+PFezyWkXqWrQrs8IZ7E6oDsR4dmlAvAcr9YeENMTHThrcNRw4 TfRA== X-Gm-Message-State: APjAAAXIFReIbwJNR8veRdwu0z/UZ4xIzl9xLEBn55mM3e2Q2QBxrm+o i6Z7w1CfHDMIxIRx7KCD371Ma6LD X-Google-Smtp-Source: APXvYqx32IlAsUvmrU6tQ1611x1T79nzAWtGjpzkSpuw/uN11tg1HGLlmERgqUYy6rQZU8KzbctsWQ== X-Received: by 2002:adf:df04:: with SMTP id y4mr1847896wrl.100.1556784997481; Thu, 02 May 2019 01:16:37 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:46 +0300 Message-Id: <20190502081554.5521-20-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v9 19/27] gdbstub: Implement generic set (Q pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 213 +++++++----------------------------------------------- 1 file changed, 25 insertions(+), 188 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 83ae8738cc..2fd0d66f4d 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1130,14 +1130,6 @@ static GDBThreadIdKind read_thread_id(const char *bu= f, const char **end_buf, return GDB_ONE_THREAD; } =20 -static int is_query_packet(const char *p, const char *query, char separato= r) -{ - unsigned int query_len =3D strlen(query); - - return strncmp(p, query, query_len) =3D=3D 0 && - (p[query_len] =3D=3D '\0' || p[query_len] =3D=3D separator); -} - /** * gdb_handle_vcont - Parses and handles a vCont packet. * returns -ENOTSUP if a command is unsupported, -EINVAL or -ERANGE if the= re is @@ -2232,18 +2224,28 @@ static void handle_gen_query(GdbCmdContext *gdb_ctx= , void *user_ctx) } } =20 +static void handle_gen_set(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + if (!gdb_ctx->num_params) { + return; + } + + if (!process_string_cmd(gdb_ctx->s, NULL, gdb_ctx->params[0].data, + gdb_gen_query_set_common_table, + ARRAY_SIZE(gdb_gen_query_set_common_table))) { + return; + } + + put_packet(gdb_ctx->s, ""); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { - CPUState *cpu; - GDBProcess *process; - CPUClass *cc; const char *p; - uint32_t pid, tid; - int ch, type; + int ch; uint8_t mem_buf[MAX_PACKET_LENGTH]; char buf[sizeof(mem_buf) + 1 /* trailing NUL */]; char thread_id[16]; - target_ulong addr, len; const GdbCmdParseEntry *cmd_parser =3D NULL; =20 trace_gdbstub_io_command(line_buf); @@ -2456,182 +2458,17 @@ static int gdb_handle_packet(GDBState *s, const ch= ar *line_buf) } break; case 'Q': - /* parse any 'q' packets here */ - if (!strcmp(p,"qemu.sstepbits")) { - /* Query Breakpoint bit definitions */ - snprintf(buf, sizeof(buf), "ENABLE=3D%x,NOIRQ=3D%x,NOTIMER=3D%= x", - SSTEP_ENABLE, - SSTEP_NOIRQ, - SSTEP_NOTIMER); - put_packet(s, buf); - break; - } else if (is_query_packet(p, "qemu.sstep", '=3D')) { - /* Display or change the sstep_flags */ - p +=3D 10; - if (*p !=3D '=3D') { - /* Display current setting */ - snprintf(buf, sizeof(buf), "0x%x", sstep_flags); - put_packet(s, buf); - break; - } - p++; - type =3D strtoul(p, (char **)&p, 16); - sstep_flags =3D type; - put_packet(s, "OK"); - break; - } else if (strcmp(p,"C") =3D=3D 0) { - /* - * "Current thread" remains vague in the spec, so always return - * the first thread of the current process (gdb returns the - * first thread). - */ - cpu =3D get_first_cpu_in_process(s, gdb_get_cpu_process(s, s->= g_cpu)); - snprintf(buf, sizeof(buf), "QC%s", - gdb_fmt_thread_id(s, cpu, thread_id, sizeof(thread_id= ))); - put_packet(s, buf); - break; - } else if (strcmp(p,"fThreadInfo") =3D=3D 0) { - s->query_cpu =3D gdb_first_attached_cpu(s); - goto report_cpuinfo; - } else if (strcmp(p,"sThreadInfo") =3D=3D 0) { - report_cpuinfo: - if (s->query_cpu) { - snprintf(buf, sizeof(buf), "m%s", - gdb_fmt_thread_id(s, s->query_cpu, - thread_id, sizeof(thread_id))); - put_packet(s, buf); - s->query_cpu =3D gdb_next_attached_cpu(s, s->query_cpu); - } else - put_packet(s, "l"); - break; - } else if (strncmp(p,"ThreadExtraInfo,", 16) =3D=3D 0) { - if (read_thread_id(p + 16, &p, &pid, &tid) =3D=3D GDB_READ_THR= EAD_ERR) { - put_packet(s, "E22"); - break; - } - cpu =3D gdb_get_cpu(s, pid, tid); - if (cpu !=3D NULL) { - cpu_synchronize_state(cpu); - - if (s->multiprocess && (s->process_num > 1)) { - /* Print the CPU model and name in multiprocess mode */ - ObjectClass *oc =3D object_get_class(OBJECT(cpu)); - const char *cpu_model =3D object_class_get_name(oc); - char *cpu_name =3D - object_get_canonical_path_component(OBJECT(cpu)); - len =3D snprintf((char *)mem_buf, sizeof(buf) / 2, - "%s %s [%s]", cpu_model, cpu_name, - cpu->halted ? "halted " : "running"); - g_free(cpu_name); - } else { - /* memtohex() doubles the required space */ - len =3D snprintf((char *)mem_buf, sizeof(buf) / 2, - "CPU#%d [%s]", cpu->cpu_index, - cpu->halted ? "halted " : "running"); - } - trace_gdbstub_op_extra_info((char *)mem_buf); - memtohex(buf, mem_buf, len); - put_packet(s, buf); - } - break; - } -#ifdef CONFIG_USER_ONLY - else if (strcmp(p, "Offsets") =3D=3D 0) { - TaskState *ts =3D s->c_cpu->opaque; - - snprintf(buf, sizeof(buf), - "Text=3D" TARGET_ABI_FMT_lx ";Data=3D" TARGET_ABI_FMT= _lx - ";Bss=3D" TARGET_ABI_FMT_lx, - ts->info->code_offset, - ts->info->data_offset, - ts->info->data_offset); - put_packet(s, buf); - break; - } -#else /* !CONFIG_USER_ONLY */ - else if (strncmp(p, "Rcmd,", 5) =3D=3D 0) { - int len =3D strlen(p + 5); - - if ((len % 2) !=3D 0) { - put_packet(s, "E01"); - break; - } - len =3D len / 2; - hextomem(mem_buf, p + 5, len); - mem_buf[len++] =3D 0; - qemu_chr_be_write(s->mon_chr, mem_buf, len); - put_packet(s, "OK"); - break; - } -#endif /* !CONFIG_USER_ONLY */ - if (is_query_packet(p, "Supported", ':')) { - snprintf(buf, sizeof(buf), "PacketSize=3D%x", MAX_PACKET_LENGT= H); - cc =3D CPU_GET_CLASS(first_cpu); - if (cc->gdb_core_xml_file !=3D NULL) { - pstrcat(buf, sizeof(buf), ";qXfer:features:read+"); - } - - if (strstr(p, "multiprocess+")) { - s->multiprocess =3D true; - } - pstrcat(buf, sizeof(buf), ";multiprocess+"); - - put_packet(s, buf); - break; - } - if (strncmp(p, "Xfer:features:read:", 19) =3D=3D 0) { - const char *xml; - target_ulong total_len; - - process =3D gdb_get_cpu_process(s, s->g_cpu); - cc =3D CPU_GET_CLASS(s->g_cpu); - if (cc->gdb_core_xml_file =3D=3D NULL) { - goto unknown_command; - } - - gdb_has_xml =3D true; - p +=3D 19; - xml =3D get_feature_xml(s, p, &p, process); - if (!xml) { - snprintf(buf, sizeof(buf), "E00"); - put_packet(s, buf); - break; - } - - if (*p =3D=3D ':') - p++; - addr =3D strtoul(p, (char **)&p, 16); - if (*p =3D=3D ',') - p++; - len =3D strtoul(p, (char **)&p, 16); - - total_len =3D strlen(xml); - if (addr > total_len) { - snprintf(buf, sizeof(buf), "E00"); - put_packet(s, buf); - break; - } - if (len > (MAX_PACKET_LENGTH - 5) / 2) - len =3D (MAX_PACKET_LENGTH - 5) / 2; - if (len < total_len - addr) { - buf[0] =3D 'm'; - len =3D memtox(buf + 1, xml + addr, len); - } else { - buf[0] =3D 'l'; - len =3D memtox(buf + 1, xml + addr, total_len - addr); - } - put_packet_binary(s, buf, len + 1, true); - break; - } - if (is_query_packet(p, "Attached", ':')) { - put_packet(s, GDB_ATTACHED); - break; + { + static const GdbCmdParseEntry gen_set_cmd_desc =3D { + .handler =3D handle_gen_set, + .cmd =3D "Q", + .cmd_startswith =3D 1, + .schema =3D "s0" + }; + cmd_parser =3D &gen_set_cmd_desc; } - /* Unrecognised 'q' command. */ - goto unknown_command; - + break; default: - unknown_command: /* put empty packet */ buf[0] =3D '\0'; put_packet(s, buf); --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785789; cv=none; d=zoho.com; s=zohoarc; b=bvU4i/wD5ghG/aZ+UzaEG/mLHj8wOCAq2fHyX/UFZWUg1vlYSIiNyr+Q9b0LoP3LFAW1cmBa3enUVhVJFGn2ZmcwgtqqiKSKUQ6H3Lw73MA8dC6KxBHwI0VZ84j73rlznfDjxaKACPeyi/+EDl7FhZ5AhXJPlkhpIeJTafMLsIE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785789; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=NvRXYl/vjqrIbJL0BHzsmEe5eGi5MjJ6JeUBkCbtEUs=; b=Jd7GOVIlcT5XAJMb/CoJ0Qy7GK+Z1EK9VmnBYlIVgpGQHhxsSjl8dvx4uvOrMptwGbo79pRCXxz0nqnkKoQbUzj0yuT6dKbi10GTE+DaMIUKA/o/ng8zfrGnm7BFsiV/UZr1x74nBBbUSBB9V35dKYc4wYtPCzneohCOP6KeAEA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785789169681.7023874232252; Thu, 2 May 2019 01:29:49 -0700 (PDT) Received: from localhost ([127.0.0.1]:47364 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM76A-0006yr-4H for importer@patchew.org; Thu, 02 May 2019 04:29:46 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42700) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6te-0003V1-BB for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6ta-0007yj-B5 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:48 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:53881) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tY-0007gt-BO for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: by mail-wm1-x341.google.com with SMTP id q15so1477341wmf.3 for ; Thu, 02 May 2019 01:16:39 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.37 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NvRXYl/vjqrIbJL0BHzsmEe5eGi5MjJ6JeUBkCbtEUs=; b=hGAW++dNphmEM4sCUbSRvIoH0u+r41+sd7nmMYfGM1e370ZX4TfZPly+IIi6ha6Ti9 uHkoDIeaHGclEdiJfF+0VJp0A+YsTKvV5OT4/i2LSDcE8Ggl3n0WtyHPngBnY48L5Yxz H2qUyG5fl+LV01TX3CiPrZMJz/rsEEXTfaft1p7FDPEg7xAybCEpc2bvcSLZN5P0D0Wv kvsMYcnR+CElDBFlIXs63GO9qjWgNpkQo9zvrMpSMzuSeHTKxO/+vNqj7nGlGwwHxzGE JLRzv2CGg1fFiA3PqLt2hglbZePwNQNG+jwfxO+aFsqAuoS24P0fAmgjjyfskEpF5ZOg HaAQ== 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=NvRXYl/vjqrIbJL0BHzsmEe5eGi5MjJ6JeUBkCbtEUs=; b=thRieGEYUemvY5StpcQUcerpJ5sR7ltryyXMnzb4jx0xvhQEYzjHT2TL8wSZgWIFus erDmZ788MO3jPUurjoukpubZExeWvLh+5xK5FqBctx3LTcATuuBJMY9loVpE3m/eBI4A U47ThCRjOyxetS8jQwhnImKt7sLDLsXPI7v5iSJsEmwqycZg2p2/KoaPfEe5gr9F2St8 ZhCA7Ez2BZPdWs9kude5YNBVbuBZkN3Pg8XDBT6bBTDxS9DQJKKFQ4ud0rTX9YYLGQyX SxxdjewuEE+ooddxy8q+MrK9NSyprOeeb6Du/x4ezlzGiq9Z5GSpsBwB+yEvIgBzbWj4 unKQ== X-Gm-Message-State: APjAAAVDcsDpEEUIhIjkAKiiQTbMrsf4UHCLPASfGCGd+n4nAPGhDMMJ KgqlvPDvOgsP2Aim8NIlU+QFuydD X-Google-Smtp-Source: APXvYqzsb7UfgQXuITPyezrterGBVaGwZjxVx8+4IhCutl9KfMIE4RmBklg+eCntDHTRsuQReJszZg== X-Received: by 2002:a1c:4c09:: with SMTP id z9mr1309991wmf.87.1556784998784; Thu, 02 May 2019 01:16:38 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:47 +0300 Message-Id: <20190502081554.5521-21-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::341 Subject: [Qemu-devel] [PATCH v9 20/27] gdbstub: Implement target halted (? pkt) with new infra 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- gdbstub.c | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 2fd0d66f4d..d678191705 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2239,13 +2239,30 @@ static void handle_gen_set(GdbCmdContext *gdb_ctx, = void *user_ctx) put_packet(gdb_ctx->s, ""); } =20 +static void handle_target_halt(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + char thread_id[16]; + + /* TODO: Make this return the correct value for user-mode. */ + gdb_fmt_thread_id(gdb_ctx->s, gdb_ctx->s->c_cpu, thread_id, + sizeof(thread_id)); + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "T%02xthread:%s;", + GDB_SIGNAL_TRAP, thread_id); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); + /* + * Remove all the breakpoints when this query is issued, + * because gdb is doing and initial connect and the state + * should be cleaned up. + */ + gdb_breakpoint_remove_all(); +} + static int gdb_handle_packet(GDBState *s, const char *line_buf) { const char *p; int ch; uint8_t mem_buf[MAX_PACKET_LENGTH]; char buf[sizeof(mem_buf) + 1 /* trailing NUL */]; - char thread_id[16]; const GdbCmdParseEntry *cmd_parser =3D NULL; =20 trace_gdbstub_io_command(line_buf); @@ -2257,15 +2274,14 @@ static int gdb_handle_packet(GDBState *s, const cha= r *line_buf) put_packet(s, "OK"); break; case '?': - /* TODO: Make this return the correct value for user-mode. */ - snprintf(buf, sizeof(buf), "T%02xthread:%s;", GDB_SIGNAL_TRAP, - gdb_fmt_thread_id(s, s->c_cpu, thread_id, sizeof(thread_i= d))); - put_packet(s, buf); - /* Remove all the breakpoints when this query is issued, - * because gdb is doing and initial connect and the state - * should be cleaned up. - */ - gdb_breakpoint_remove_all(); + { + static const GdbCmdParseEntry target_halted_cmd_desc =3D { + .handler =3D handle_target_halt, + .cmd =3D "?", + .cmd_startswith =3D 1 + }; + cmd_parser =3D &target_halted_cmd_desc; + } break; case 'c': { --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556786174; cv=none; d=zoho.com; s=zohoarc; b=X3+Xp96DapQ+jQ+ZQbgaRCYLml7p4mUh/6ZJD/xl1AYcMHMERga0axq7/zHr2OJPPmDaSKPGh6FZ9OXDUZSTTRlIcYmYXENlNJP4OvFqHpPHwrBgZyHbs6ONlhGxLDPu1lRhCoMznfOquJjk8tJr+JVewocXPZ7pjGPQYgQOXqs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556786174; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=PH0hXIwENcqo6TbPIzo2Qw9MFujZWmL0zJ/Tm+4JKGw=; b=k/+WT8aEdSJhjBswMjWwlM3w9QKL6xM2xpciD5iT+5E/ykdvwXHuL/uPYce4szxVWr8VAtypJwnLCYB2nYDYI8cDDgVmYG9pN/PbqrMua9YLqtPc/r1rh9WxqwAjFADS3HiNqPqV9+Yg/B2CX/xvE2gXNqZDTASv9sGhc9zV+aQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556786174308858.1027257046102; Thu, 2 May 2019 01:36:14 -0700 (PDT) Received: from localhost ([127.0.0.1]:47507 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM7CL-0004Cu-9D for importer@patchew.org; Thu, 02 May 2019 04:36:09 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42965) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6tk-0003bX-7j for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6th-0008OW-Ce for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:55 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:50256) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6th-0007k4-1V for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:53 -0400 Received: by mail-wm1-x342.google.com with SMTP id p21so1486781wmc.0 for ; Thu, 02 May 2019 01:16:41 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.38 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PH0hXIwENcqo6TbPIzo2Qw9MFujZWmL0zJ/Tm+4JKGw=; b=Ocjw+b600EID3SmwmdlKFoILn6PyqIdLOu17mVLYrTPfq6e7z77r8FpScYh0F5vNpA 9NLH55MR3terbSYIQbynHQaGzCBT9nseDqeI8D7mzKYLnUDja8RqJCTxwKY66chdB0T6 9fZAxxK8YSJLxWmdD7S4+kNVyN6F9A2j5rfQNV/Yv+4sM02SpgulaHRRprHUMaiJqDnH FnrGAVM3QeHBg9VN4cSV8yTbW6hkvw+CktbPsJQDbV+FMl5z4RSSssvx6nw/6dloR/B7 UlGaqDTc3Q5P5OjxLNS1g8P/NES1AKgNn8RxvIjtvloKI382szoZFp7NyZ3nE53vW0/t RW7w== 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=PH0hXIwENcqo6TbPIzo2Qw9MFujZWmL0zJ/Tm+4JKGw=; b=OeRkGd8pRQtt0rjg1m6v8uAkJSlNXQ//VFaM5GDHoU+Y3X1lTcO987uVtQWHusWMrW QGih18oNTDK1kq2FBVr73w226HtLouN07FBziwppIEJsmg5VuFclE9DXC1ZylYvBHYSN MSyG8B1UptdO+feCB1gO7+RKQEe+N+XUk/YI67z4my0q3+1+kmVuOE374as4K6tOFF8l S4v65gTAhJBUn2xcnRWAJFKF5JoUf9zea1OKR3QJ16MvUwMYWhrtuHTAKIy+5FRUKAfE TP8MB09nqDmoOyodhB6e/zCInFAvXecZhq6przKkwSIH4Nt4zcqZrV9QL5vCMAxPtD0S cuIw== X-Gm-Message-State: APjAAAVzCd/SX1lCoI+gBUucxvQWkimHEGZD67whDLGGWXEPPnkvI9+w /c3Jg/Da/pxqM3RA/qPy2m9ynqGO X-Google-Smtp-Source: APXvYqwSNcbUr8dZAwuoXmAaQY+UGrayJvVJ264Bbn9tw26Vwq59Ur7Iz6w87iEicoufUevluyK6yw== X-Received: by 2002:a1c:4302:: with SMTP id q2mr1374998wma.28.1556785000126; Thu, 02 May 2019 01:16:40 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:48 +0300 Message-Id: <20190502081554.5521-22-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::342 Subject: [Qemu-devel] [PATCH v9 21/27] gdbstub: Clear unused variables in gdb_handle_packet 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index d678191705..8bdfae4b29 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2259,17 +2259,11 @@ static void handle_target_halt(GdbCmdContext *gdb_c= tx, void *user_ctx) =20 static int gdb_handle_packet(GDBState *s, const char *line_buf) { - const char *p; - int ch; - uint8_t mem_buf[MAX_PACKET_LENGTH]; - char buf[sizeof(mem_buf) + 1 /* trailing NUL */]; const GdbCmdParseEntry *cmd_parser =3D NULL; =20 trace_gdbstub_io_command(line_buf); =20 - p =3D line_buf; - ch =3D *p++; - switch(ch) { + switch (line_buf[0]) { case '!': put_packet(s, "OK"); break; @@ -2486,8 +2480,7 @@ static int gdb_handle_packet(GDBState *s, const char = *line_buf) break; default: /* put empty packet */ - buf[0] =3D '\0'; - put_packet(s, buf); + put_packet(s, ""); break; } =20 --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785636; cv=none; d=zoho.com; s=zohoarc; b=lPc4Q9M5wwnQxzeT2BweihDmvHB/OjJCAy0PDtoh6wH/AC9lk8t/Q/iWMy6z/dwCF30YNvyrRc54Hwcq7h86Y/OwyQMUVpOzbQOX9c3mlvt8h+C+jriu7UCmeBn07WKWUHR4omUULPePIzezHFucQK0Jww7pYEOUl84MpJfZTGo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785636; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=0s6me8TS+YJwMJaLYgFa/gUYh4mdTLo/usW+gDFwuc4=; b=EQ9xM3k+D7LhuuaAkWEiya/mPRnzq2vFpoEqTA6LGeeTghEeyRpqfZ89PYk1yLCANd76gpvuXSu+t7/0/Vru8D0CawqriEVJqhSxP/ymQx7XvPC/MdWYyydze57qmd5pR0iUWv1jgyJGrh+Dk87qvAP2HRV9r+lVISQR5oJPtnU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785636379653.0311307340834; Thu, 2 May 2019 01:27:16 -0700 (PDT) Received: from localhost ([127.0.0.1]:47336 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM73X-0004Rl-7y for importer@patchew.org; Thu, 02 May 2019 04:27:03 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42699) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6te-0003V0-At for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6ta-0007z6-Cv for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:48 -0400 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]:36600) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tY-0007mD-Ej for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:46 -0400 Received: by mail-wr1-x444.google.com with SMTP id o4so2024719wra.3 for ; Thu, 02 May 2019 01:16:42 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.40 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0s6me8TS+YJwMJaLYgFa/gUYh4mdTLo/usW+gDFwuc4=; b=KXgsuRQdQojeqMmAJ6wkiSC1QotI7q+wigaTorSC8jpfYuHHwqAV+Zt1FW8eH1EL6i 37IqjBZ5MIz1ZJzgBOkkei8ZcL7H9Aw4ny3KFBsLKpvgSvRzRDCxjMl+cWJJ3skCzEA7 ptOj+hzkoPPIZM9e8GSaOgEVaW2uIKU2fhYUAsQ165WfsUJmMfz2HGDR2DuDU3S907nL tzo0XNFSHpRX7qByTS9QFT4qKHjfcXlOyuH4r9mbNxGpX3ol5GobmthfLZaR1JIiZCRg KplbRXGHIfsVsvgJ3F+nEmgdk0fvHVKb52eUT/yc39JfXPPqy4JQGhLUDISFYTVML+CF 4neQ== 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=0s6me8TS+YJwMJaLYgFa/gUYh4mdTLo/usW+gDFwuc4=; b=KA3e/J4ZKYj4cEm7LnjlFFGe6TLCkSm7yKLrwQCpPwOgWGxHpoxwD0Q7fETRqEwnHJ RtKRvQ3F/NckCgnzZFAOGhe9/weLPi7JooUClh39OB9t5t78lYxzW+vVi3e3ovoMujAQ eADToCp1yPh5RouL7uXV0lykE8mcpBFZdKashVCKuAUMqQXJEfYaJIEULFeZKIaTGw/F YOp5/xEPuvu4C4Eqz7E0wMfz2qGvYaxe2Rq5W4jPpln24ndQIGf4Ht5mzwy6ipTqM4bD aVofnA2/Rq6CDrtVIjFuYZm8uXxFCcnj4vVvGfGLSmGv3qugXRuMkw9TiXJbtxncr8hu E+LQ== X-Gm-Message-State: APjAAAUdbnfEVXrZR3pmvn/6+HEYxx1UeujU58oSTMX+f8ELzPr7kKQl aS2Bhvuv6GSK7Jopv6vA6WIrA+E+ X-Google-Smtp-Source: APXvYqxM7OIbbHRws0Pgz7QBsaiKNDV7LkYNLWY/tYmKUOge3EhNmy/mkMhCf9wl9YV4HQ8QDQbtiw== X-Received: by 2002:adf:f7cd:: with SMTP id a13mr1793293wrq.289.1556785001590; Thu, 02 May 2019 01:16:41 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:49 +0300 Message-Id: <20190502081554.5521-23-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::444 Subject: [Qemu-devel] [PATCH v9 22/27] gdbstub: Implement generic query qemu.Supported 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" qemu.Supported query reply back with the supported qemu query/set commands (commands are seperated with a semicolon from each other). gdb> maint packet qqemu.Supported Signed-off-by: Jon Doron --- gdbstub.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gdbstub.c b/gdbstub.c index 8bdfae4b29..00c07d6ec0 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2127,6 +2127,11 @@ static void handle_query_attached(GdbCmdContext *gdb= _ctx, void *user_ctx) put_packet(gdb_ctx->s, GDB_ATTACHED); } =20 +static void handle_query_qemu_supported(GdbCmdContext *gdb_ctx, void *user= _ctx) +{ + put_packet(gdb_ctx->s, "sstepbits;sstep"); +} + static GdbCmdParseEntry gdb_gen_query_set_common_table[] =3D { /* Order is important if has same prefix */ { @@ -2203,6 +2208,10 @@ static GdbCmdParseEntry gdb_gen_query_table[] =3D { .handler =3D handle_query_attached, .cmd =3D "Attached", }, + { + .handler =3D handle_query_qemu_supported, + .cmd =3D "qemu.Supported", + }, }; =20 static void handle_gen_query(GdbCmdContext *gdb_ctx, void *user_ctx) --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556785864; cv=none; d=zoho.com; s=zohoarc; b=OpNK7hmI+h2HmYx6P4/nAsUBOkeWlhYQiF4PvsmBzC8WpzqoRePyUusRS23ZbPWBy9nAFdByUbyKIrTUbirgzZnE6SJspd2iFs/TtnYzbHDDTc/KPMQLYQRq2iuK3pc4EwjTJOnzWjGsxlP7Eldg6H58cyj6g/eBKxfV00NkSNA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556785864; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=DkxdB1SSP3ygac21G5Sl2UZoz/G9CYkw1Wrg+VlI4Ww=; b=caioxJXbEvLsAjuCkDqKc4KhFLsc/ts0P3vlI4WpOQWWE7JQ9b2zQYDpds5kHrADNiy4xi3rgWYB8NNH7W9Tve6qzkg37wExx5dyvE3w8N2JP2X4uQiZkmkN/xHgCSsm/bvg/M3NGT4CZ55jj+FFW7pY3N9A+Y9t5HrmqDLEHaI= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556785864774809.656267610451; Thu, 2 May 2019 01:31:04 -0700 (PDT) Received: from localhost ([127.0.0.1]:47401 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM77P-0008A8-NV for importer@patchew.org; Thu, 02 May 2019 04:31:03 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42829) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6th-0003YP-6G for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6te-00085x-O9 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:53 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:40660) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6te-0007ot-F5 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:50 -0400 Received: by mail-wm1-x343.google.com with SMTP id h11so1376514wmb.5 for ; Thu, 02 May 2019 01:16:44 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.41 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DkxdB1SSP3ygac21G5Sl2UZoz/G9CYkw1Wrg+VlI4Ww=; b=Irxp139ZMKljG8THkEBhszOYzo3QX5Z7Y75xFX6M6UqhpBw04QkKvd6jKr8qEn4fpD Ochl4S5GDn1rA3mCphbXAETmJ64sCerkERiZKl71tTGnwTxwvIPfQ33LUjjP9wObzJVa gKsCvzj6r0jils+fbcUTPGgRb8CE2P+jAikp9U6j1Nv7/98FCBpbaC405cIbaOgpbApz Yukn70e1zx7vNUhDDKNiExUx3eMISHGmnDBFpHFtudP7ENVQJkFeRrb836YUUvTOjr9L J8LDR9Wx0Qhd0viY+qJck4DpnPMT9lWyfduFIQGVtS5zh6EYmBWGzwEop9sGEc3NFg+U +wWg== 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=DkxdB1SSP3ygac21G5Sl2UZoz/G9CYkw1Wrg+VlI4Ww=; b=eJo0SyX/hD+zXe27a+FW384bpmhNjfXfK74Yln+g9N9pvlzWQ/c3FdlXhyqLHkwOSB t/qduYKZ027677lQqYDhIl7uUysKgMfRKyI4+MxY7621ODk7Olq4EycSkinhDxuqHysZ voptm9iKmFle+V1fKmSsTsi6fGtix4nZRli3N8efZ22n4v2o7789qnGNcRbQWcfXKR2f tAzGFxSu4jc9CFMewhDJetOTwwPPzZdBafaXDMJ0MVINy1Wzp0EwEtYygAnNCz9Q+s5Q JGKxCKEC9yn+ZSUaLzGgDiMoBbqHBnMi6TLcSKQhIIccsMFl6vciKzhuOi56BnERPRpd Wf+Q== X-Gm-Message-State: APjAAAVpXPkXIefnl6f5y2xAwIhUrBvSEc1q6AZGWvVOZASa7Ea22qCj xZcU/vDKSXYz7d0xdRmYm6SXuJup X-Google-Smtp-Source: APXvYqww2nVnlKoSjNaZp0o8YMmbUNXoDxJroOI04BLexpfBg+24La05NLr35TpssCL0A365sUVC+Q== X-Received: by 2002:a1c:67c1:: with SMTP id b184mr1344235wmc.12.1556785003232; Thu, 02 May 2019 01:16:43 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:50 +0300 Message-Id: <20190502081554.5521-24-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::343 Subject: [Qemu-devel] [PATCH v9 23/27] gdbstub: Implement qemu physical memory mode 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Add a new query/set which changes the memory GDB sees to physical memory only. gdb> maint packet qqemu.PhyMemMode will reply the current phy_mem_mode state (1 for enabled, 0 for disabled) gdb> maint packet Qqemu.PhyMemMode:1 Will make GDB read/write only to physical memory, set to 0 to disable Signed-off-by: Jon Doron --- gdbstub.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 00c07d6ec0..88ff6224e6 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -46,11 +46,23 @@ #define GDB_ATTACHED "1" #endif =20 +static int phy_memory_mode; + static inline int target_memory_rw_debug(CPUState *cpu, target_ulong addr, uint8_t *buf, int len, bool is_wr= ite) { - CPUClass *cc =3D CPU_GET_CLASS(cpu); + CPUClass *cc; =20 + if (phy_memory_mode) { + if (is_write) { + cpu_physical_memory_write(addr, buf, len); + } else { + cpu_physical_memory_read(addr, buf, len); + } + return 0; + } + + cc =3D CPU_GET_CLASS(cpu); if (cc->memory_rw_debug) { return cc->memory_rw_debug(cpu, addr, buf, len, is_write); } @@ -2129,7 +2141,29 @@ static void handle_query_attached(GdbCmdContext *gdb= _ctx, void *user_ctx) =20 static void handle_query_qemu_supported(GdbCmdContext *gdb_ctx, void *user= _ctx) { - put_packet(gdb_ctx->s, "sstepbits;sstep"); + put_packet(gdb_ctx->s, "sstepbits;sstep;PhyMemMode"); +} + +static void handle_query_qemu_phy_mem_mode(GdbCmdContext *gdb_ctx, + void *user_ctx) +{ + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "%d", phy_memory_= mode); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + +static void handle_set_qemu_phy_mem_mode(GdbCmdContext *gdb_ctx, void *use= r_ctx) +{ + if (!gdb_ctx->num_params) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + if (!gdb_ctx->params[0].val_ul) { + phy_memory_mode =3D 0; + } else { + phy_memory_mode =3D 1; + } + put_packet(gdb_ctx->s, "OK"); } =20 static GdbCmdParseEntry gdb_gen_query_set_common_table[] =3D { @@ -2212,6 +2246,20 @@ static GdbCmdParseEntry gdb_gen_query_table[] =3D { .handler =3D handle_query_qemu_supported, .cmd =3D "qemu.Supported", }, + { + .handler =3D handle_query_qemu_phy_mem_mode, + .cmd =3D "qemu.PhyMemMode", + }, +}; + +static GdbCmdParseEntry gdb_gen_set_table[] =3D { + /* Order is important if has same prefix */ + { + .handler =3D handle_set_qemu_phy_mem_mode, + .cmd =3D "qemu.PhyMemMode:", + .cmd_startswith =3D 1, + .schema =3D "l0" + }, }; =20 static void handle_gen_query(GdbCmdContext *gdb_ctx, void *user_ctx) @@ -2245,7 +2293,11 @@ static void handle_gen_set(GdbCmdContext *gdb_ctx, v= oid *user_ctx) return; } =20 - put_packet(gdb_ctx->s, ""); + if (process_string_cmd(gdb_ctx->s, NULL, gdb_ctx->params[0].data, + gdb_gen_set_table, + ARRAY_SIZE(gdb_gen_set_table))) { + put_packet(gdb_ctx->s, ""); + } } =20 static void handle_target_halt(GdbCmdContext *gdb_ctx, void *user_ctx) --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556786117; cv=none; d=zoho.com; s=zohoarc; b=GK5+c2zYOGggAD8oyAvFDl+NOH9B3If1k/X+KIk3st40h7w6ys07uzSOYY4/91KhVelXtwtug82Au/l5op3g8Efe//PqD2iHw+5wx64H9naiEj/sDdglCYMDFA9VBq0F5CCisJmoXiqPUIbXGfprKos/A2njcmPwi5FnEkZwTpI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556786117; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=AI2gF6CcF107YLL+Yoq5vMjKHAR9DjS56SI4WgjZi0M=; b=oeZ2lnJCGTDGLDE46AIkEw2zUXhflomAKgdD12ZUhrykh48CQ5Mgkj3M7PuNqwzJuXxwJg4AgvrIRhpTT9FDFTO2oAkZItUVgU4PoCswtjiYoNrA9O6YFBUI+2+iFIMCHkmcGDIFI0NI7hIkNCEeI9m+FoPGFdi7MbHznaCf8TU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556786117871365.1434579058173; Thu, 2 May 2019 01:35:17 -0700 (PDT) Received: from localhost ([127.0.0.1]:47452 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM7BU-0003Fg-T9 for importer@patchew.org; Thu, 02 May 2019 04:35:16 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42878) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6ti-0003ZJ-2Y for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6th-0008Mo-2T for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:54 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:45388) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6te-0007vw-Uv for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: by mail-wr1-x442.google.com with SMTP id s15so1967051wra.12 for ; Thu, 02 May 2019 01:16:45 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AI2gF6CcF107YLL+Yoq5vMjKHAR9DjS56SI4WgjZi0M=; b=piynL98KoF2lYG2pnxpAFEV884EF7MppJxl1Y7dVEezW5SS50WPdjaK7XdXXkwMWnl UVA/Sd1PEZKl3i0nsIJp5FAdZ28PZG6Ekd/S7vqkKBYyzqnzD5EonhncOV7Bg2ztIle7 2m5m/4OmycAWbyDIHMm8fLJToty5h+mNa+lHSk8O629TyR0Gi5FpiVxI2rQtPDX2mKDr PLf2qKJ766iFOP0wjuznRCFEq4UnjASbkbMVAxI3t8OSjR1FkATBZ6UkEjOdtLToxQ3V Bu1jWhl4mq99EQl91OYoUnoWTxXVKBAEXocaDMuV/2TeddVkgEA8UgbrdIaw3F5bYEXU E6Jg== 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=AI2gF6CcF107YLL+Yoq5vMjKHAR9DjS56SI4WgjZi0M=; b=YmnpXKDmZ7P6IUaR2cuSjQRcoQASl0+8Pz/GkD66MYRnysrJ8QYGK34a+L/4IMIDew ow3wpbfY9IkZvi0bZFTL9B7vFpQ/8RZcBuEJ3rNuzu73CxEZ0IGNVTQvUOuh52N4zYJC hP44Sk7kPPfw82edhs87aIL45NZmHXiI4vEuvU6SlwI//6LTwAeNN6cKrBxbXckCxAo6 EdbtawJRGBNjdfwYNPKI3MJIOc2f85LPvPT+NoQUexji6tDEXPINnPaJCEUybmGQehnP 68gu4A7O27NCbt8SHuhoCFoQEWS8xsFGON7MASV8pCbGMxgFD8u8KlBv7iIngvJuxwJy jK1g== X-Gm-Message-State: APjAAAVhZJFZCwlGtw1We0PK6QZtksjU6P1mEbhdqY7oSw05PC21H2ui awVxr6V9zCnCTdOAi4gKEzbbG3dh X-Google-Smtp-Source: APXvYqw38V7g47CQb4Wj5hbDYky7H0vByjEcEoKYEzUx7GrvdHiaH7/y0z4E9wszCshi/1kCE/z7Kg== X-Received: by 2002:a5d:4acc:: with SMTP id y12mr1756570wrs.234.1556785004744; Thu, 02 May 2019 01:16:44 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:51 +0300 Message-Id: <20190502081554.5521-25-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v9 24/27] gdbstub: Add another handler for setting qemu.sstep 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Follow GDB general query/set packet conventions, qemu.sstep can now be set with the following command as well: gdb> maint packet Qqemu.sstep:Value Signed-off-by: Jon Doron --- gdbstub.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gdbstub.c b/gdbstub.c index 88ff6224e6..34da10260d 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2260,6 +2260,12 @@ static GdbCmdParseEntry gdb_gen_set_table[] =3D { .cmd_startswith =3D 1, .schema =3D "l0" }, + { + .handler =3D handle_set_qemu_sstep, + .cmd =3D "qemu.sstep:", + .cmd_startswith =3D 1, + .schema =3D "l0" + }, }; =20 static void handle_gen_query(GdbCmdContext *gdb_ctx, void *user_ctx) --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556786046; cv=none; d=zoho.com; s=zohoarc; b=bGo89jCHtVbVa3U7wbEODuWQZGq6VWp7wE5hgdtdxUUMutXIm0sQS23jTCtbj/r+alIWrnoZgWdWT2P1izjmyClpKSK57hV4nal5eXcYIhgIhUym5jafOCQNtaFJmsjQwF6NMe332Uor5RWZrH1z7h/9BBkymMohMJ441YWLm/w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556786046; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=Fq+y9Y8taPmtsyd8oOc7f9ZWDD3UWEkWOvqVLG/Lt40=; b=hx8v4wlvCFYq60GyaWR+tassmxdtisJ9F4DFVVrkweQUlyvHpLCoxgL0idF2Ee5ZCwIoxSCaDp9nNf7fGLWpPBc5FZEhKdW9pYYC6mLGBJEG2hP1xpmNqoBqo0A2WuKrWnSCkukVzIbCG1pyTpaKr0Yi93pAs1DZYadOlJbAEnU= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556786046259736.0597792502595; Thu, 2 May 2019 01:34:06 -0700 (PDT) Received: from localhost ([127.0.0.1]:47427 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM7AD-0002AV-TL for importer@patchew.org; Thu, 02 May 2019 04:33:57 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42973) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6tk-0003cU-PN for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6th-0008OG-9j for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:56 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:38474) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6tg-000805-Vm for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:53 -0400 Received: by mail-wm1-x341.google.com with SMTP id w15so1392460wmc.3 for ; Thu, 02 May 2019 01:16:47 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.44 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Fq+y9Y8taPmtsyd8oOc7f9ZWDD3UWEkWOvqVLG/Lt40=; b=grpkV6nsRirFoFebYjC6MxNOtEAlrmjk4xmZdRENo8+NFdj8E4YmUbEy6w8x5uWIiB fVeL1722iLSrmD/gRUaJ5BijubBeonzVXGiFZ615e8QWTxuyLCgFhaoY1xR8BwdFGJvB tUOo5pFcTXd5grPFqmLkpM3kK1fHcJIxRvFt77VgPYN8ecwBrmH4k09VmX2jCI/6MjXh g2zjnN3HMcFroQGQoZy316iUxDJdzfU1OMPxTrYWByWK5DqVh1UYR+/BzD0+hDX0+i6S G5a7/FMKtcnmMGUURDoKSJAiQwAByr4wHgmlKnlDWmfRkQGWK64RqVs9PCheLVUNQoRJ 9ssw== 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=Fq+y9Y8taPmtsyd8oOc7f9ZWDD3UWEkWOvqVLG/Lt40=; b=TwEisCo3gIihh+PT0UpkoPcLBgMzy8xGc+MeSp7NvetJ/EV1jcJC1/4q76TxbnZykG dQU6TWmAt6V6h/k1bIlcaRiikYYtHf9Mp7axiMY6DJMwSF6aWeqBjkWg99P6aVtYFmWE G3KKPVW3aMObeo3+AyLhxSM2wH1J3BY5x+8cooAq5L/R107am7r9tnnoJ6ZciyFdGZ2T Lqwl7hcklAjKEsu5RBWw+2Vp18cnBcy24ZPwxpCBOOVYN8TDi14iKFFdDrxWpZr2B4RB akmQERONzcMIGxSJRwWZkPjn7FFgp/XqO2pIJSaP+yqXovgM2qN/9XqdbPU0cMUB3He/ HRsQ== X-Gm-Message-State: APjAAAXdtYfWPpOcU05KsnDq4lL2HEEWllupkytt19jxPAZnLZSlpZVf ICy12wukU5Q/iQR3m6F864pYDk83 X-Google-Smtp-Source: APXvYqxai+JM1yRaeKDe8Ko1NKXeAr/fb9HVj9Du0pq7EoYCTb3hrMeRJqOs2kgT5p7pp/5UpJw9gg== X-Received: by 2002:a1c:a00f:: with SMTP id j15mr1308089wme.148.1556785006192; Thu, 02 May 2019 01:16:46 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:52 +0300 Message-Id: <20190502081554.5521-26-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::341 Subject: [Qemu-devel] [PATCH v9 25/27] kvm: Add API to read/write a CPU MSR value 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Jon Doron --- accel/kvm/kvm-all.c | 39 +++++++++++++++++++++++++++++++++++++++ include/sysemu/kvm.h | 2 ++ 2 files changed, 41 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 524c4ddfbd..35207d910b 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -2444,6 +2444,45 @@ void kvm_remove_all_breakpoints(CPUState *cpu) } #endif /* !KVM_CAP_SET_GUEST_DEBUG */ =20 +int kvm_arch_read_msr(CPUState *cpu, uint32_t index, uint64_t *value) +{ + struct { + struct kvm_msrs info; + struct kvm_msr_entry entries[1]; + } msr_data; + int ret; + + msr_data.info.nmsrs =3D 1; + msr_data.entries[0].index =3D index; + ret =3D kvm_vcpu_ioctl(cpu, KVM_GET_MSRS, &msr_data); + if (ret < 0) { + return ret; + } + + *value =3D msr_data.entries[0].data; + return 0; +} + +int kvm_arch_write_msr(CPUState *cpu, uint32_t index, uint64_t value) +{ + struct { + struct kvm_msrs info; + struct kvm_msr_entry entries[1]; + } msr_data; + int ret; + + msr_data.info.nmsrs =3D 1; + msr_data.entries[0].index =3D index; + msr_data.entries[0].reserved =3D 0; + msr_data.entries[0].data =3D value; + ret =3D kvm_vcpu_ioctl(cpu, KVM_SET_MSRS, &msr_data); + if (ret < 0) { + return ret; + } + + return 0; +} + static int kvm_set_signal_mask(CPUState *cpu, const sigset_t *sigset) { KVMState *s =3D kvm_state; diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index a6d1cd190f..409b1a5444 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -462,6 +462,8 @@ int kvm_vm_check_extension(KVMState *s, unsigned int ex= tension); uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function, uint32_t index, int reg); uint32_t kvm_arch_get_supported_msr_feature(KVMState *s, uint32_t index); +int kvm_arch_read_msr(CPUState *cpu, uint32_t index, uint64_t *value); +int kvm_arch_write_msr(CPUState *cpu, uint32_t index, uint64_t value); =20 =20 void kvm_set_sigmask_len(KVMState *s, unsigned int sigmask_len); --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556786365; cv=none; d=zoho.com; s=zohoarc; b=DwO88K8rnRM4vXHpz5wopU1AJoDPBsVwcXyQa3cirC/5AshZogW9rLmOg3ji3yLEuDQoGxs71TxsAxL7OCkyaTmtnKONMiQZqGSxxyYarWxOYvhtJdvhgnGuj50G67+9/g68js8olE8oR1X1T9WdcmV0vYXk/mrlJ56Vt6J/Rgs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556786365; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=V970oHIFnq0Kvqk/KuBLurpV9POQpj8H67OjZYl9GKE=; b=blMVsTY7LOFB8Ull7z6KGHXeml6PLjgQKTLi4hVroj5i315KrR4JB8tAiI3vwALJ84fhCCq0J7Xt3sK4mGkc5jrAWVmHLFqBYcMHP4qVBkN7TiYbmWzJplwe87l6SdPG/CjaREciuLdtuhdL2QPwAksBa0Q0UrwxEJqYbC4e3Mg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1556786365586239.91567735146543; Thu, 2 May 2019 01:39:25 -0700 (PDT) Received: from localhost ([127.0.0.1]:47535 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM7FN-0006n3-K6 for importer@patchew.org; Thu, 02 May 2019 04:39:17 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42831) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6th-0003YR-7K for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6te-00087a-WB for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:52 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:53885) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6te-000814-O4 for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:50 -0400 Received: by mail-wm1-x344.google.com with SMTP id q15so1477857wmf.3 for ; Thu, 02 May 2019 01:16:48 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.46 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=V970oHIFnq0Kvqk/KuBLurpV9POQpj8H67OjZYl9GKE=; b=JVE+MA8uHJmdGb0pXW0ZWcTkiPz76nlcXxZIt9B+wQJeN34fekZRHrB43J6t3ylSeE pl02kidL0wG8+1LjihpdMv02f+lxBXcw9VljMWUnASITh3bnGsKdN6KX0jH13c3XSWyF lultsoYIQV5LWtZDmiVYMa5n2QAIWJwF2z6PBp5hD9j4/NHWGXGPTHrSxmvXJSqEZpH8 Soy84b5RL5v5EgdnK8pYENjnG8dg9vURT4Q/D0h6R/MJ9UEuo5m2pmVf8COvFpG5zwRG w5mkSNN8Fc2tSKKtV0zdLfbrhXFjclG3daDnrJUMIfdds5n8p8yVmEiFdWOW4fN79cKb vcPA== 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=V970oHIFnq0Kvqk/KuBLurpV9POQpj8H67OjZYl9GKE=; b=E2yTDhGt6PtWGbC3Vn+/BSpkQ7fSYqOwK73GksZWv0zHqr0h8PvIqtMR4dc0bL2CAA TcqmXsXzLBXoZz+FPT70TKkCyfT9GHl7HG5feUQNzt3NIb7czLs8tooF7UeHXhEXFUUH EBEUsAFbRFDx9lTX5jYb8djpJusTkmwNRIQvxS9NjIFwZf+mLInPQa08rMpmghlUsDFa iGIhnf66YzK02RzSvJgZmgmZjLnM8CG6JlcpDCTqJeeeGmRPnQDD30msMuaS+Rrt6U+f a8MipxuNCh49vmWm+TyzN4w1c0F1wU4PusGLaM2nS7NFKSh7f2gJptv85wHF3EshmnWf ZVow== X-Gm-Message-State: APjAAAWL5t1xaazwpsNhh9QUdFaiIOZBYtYJM/dcyiylse951Ze1w3nq ao1njnugbNeQQKbzbRS0yyA9H4Ya X-Google-Smtp-Source: APXvYqy90wpaXB9zz/QH11hiJ4+j4LK3wJ8/RuPYRKEjsGL8vnxtEwz6bQj6vU/REiXLUU3kYzof6A== X-Received: by 2002:a7b:c00e:: with SMTP id c14mr1318197wmb.110.1556785007725; Thu, 02 May 2019 01:16:47 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:53 +0300 Message-Id: <20190502081554.5521-27-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::344 Subject: [Qemu-devel] [PATCH v9 26/27] gdbstub: Add support to read a MSR for KVM target 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" gdb> maint packet qqemu.kvm.Rdmsr:MsrIndex Signed-off-by: Jon Doron --- gdbstub.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/gdbstub.c b/gdbstub.c index 34da10260d..f48c3a2b5f 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2141,7 +2141,14 @@ static void handle_query_attached(GdbCmdContext *gdb= _ctx, void *user_ctx) =20 static void handle_query_qemu_supported(GdbCmdContext *gdb_ctx, void *user= _ctx) { - put_packet(gdb_ctx->s, "sstepbits;sstep;PhyMemMode"); + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), + "sstepbits;sstep;PhyMemMode"); + + if (kvm_enabled()) { + pstrcat(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), ";kvm.Rdmsr"); + } + + put_packet(gdb_ctx->s, gdb_ctx->str_buf); } =20 static void handle_query_qemu_phy_mem_mode(GdbCmdContext *gdb_ctx, @@ -2166,6 +2173,29 @@ static void handle_set_qemu_phy_mem_mode(GdbCmdConte= xt *gdb_ctx, void *user_ctx) put_packet(gdb_ctx->s, "OK"); } =20 +static void handle_query_kvm_read_msr(GdbCmdContext *gdb_ctx, void *user_c= tx) +{ + uint64_t msr_val; + + if (!kvm_enabled()) { + return; + } + + if (!gdb_ctx->num_params) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + if (kvm_arch_read_msr(gdbserver_state->c_cpu, gdb_ctx->params[0].val_u= l, + &msr_val)) { + put_packet(gdb_ctx->s, "E00"); + return; + } + + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "0x%" PRIx64, msr= _val); + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + static GdbCmdParseEntry gdb_gen_query_set_common_table[] =3D { /* Order is important if has same prefix */ { @@ -2250,6 +2280,12 @@ static GdbCmdParseEntry gdb_gen_query_table[] =3D { .handler =3D handle_query_qemu_phy_mem_mode, .cmd =3D "qemu.PhyMemMode", }, + { + .handler =3D handle_query_kvm_read_msr, + .cmd =3D "qemu.kvm.Rdmsr:", + .cmd_startswith =3D 1, + .schema =3D "l0" + }, }; =20 static GdbCmdParseEntry gdb_gen_set_table[] =3D { --=20 2.20.1 From nobody Thu May 16 20:58:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1556786562; cv=none; d=zoho.com; s=zohoarc; b=HhlxQLtcd/k40siDqVdrc9cjDT5J94+wbHIRbdsI5oq+/bksR1UfQnOZebroJstb7OZm09W6HVAc8iUXUG7me5jaHzEcG/IzFtcRO8ATWZVeGm7njZyLMn0OwieKMcxdvD6zuK8wTguVQF14wg1kGflltoicjFXzVU4KBhchUqE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1556786562; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=IQ+Z9R6NydncJMKRI0TwB1Gcuq7KLY744W/ZlSezhlU=; b=XrB2k9DSstje1Y3zoFQQgLrjpd1TtKIyU21apCrtZ6U4UKkcyz4OSabbwJKuVOsHFaR8bDzk4kTj4NC+dwKoJyqHx7vsQQNMdvXB8lay2D9CvJJ9EDeb7WYegE6EHOvS5AEmHtGwscK8dEKoosbs5HOf/uIi3O8Uu6IelSh0gkg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 155678656289162.60718015876739; Thu, 2 May 2019 01:42:42 -0700 (PDT) Received: from localhost ([127.0.0.1]:47593 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM7Ia-0001Dp-Ta for importer@patchew.org; Thu, 02 May 2019 04:42:36 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42978) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hM6tk-0003cY-Rb for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hM6th-0008Oo-Du for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:56 -0400 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:35259) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hM6th-0008EY-1X for qemu-devel@nongnu.org; Thu, 02 May 2019 04:16:53 -0400 Received: by mail-wr1-x441.google.com with SMTP id f7so2034714wrs.2 for ; Thu, 02 May 2019 01:16:52 -0700 (PDT) Received: from localhost.localdomain ([176.230.64.186]) by smtp.gmail.com with ESMTPSA id d16sm44698367wra.54.2019.05.02.01.16.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 02 May 2019 01:16:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IQ+Z9R6NydncJMKRI0TwB1Gcuq7KLY744W/ZlSezhlU=; b=gHWAX6VNFtWqbR/rCkEIGTs4FXbsFANrgE0ZljIZf4DSTjutF2IQsA2zA/17uDVPG+ NA2q/6Cg5bKcv42S6eDJZ8kcgnS+W9jLOcYdazQgw4tTQhZkqWmS6Mz2X1cylDVV8pTR Z9SXKFkI28fHudGv4DZSy+sAvVPSv/uq7BQN1/r6/DFjRq+9FtdE1ms+VrfNE2bltqOL VqVMJ5ygkTFOP7dT91o/+WLuWLDmLlEHWiXRhO2bUr3j5a/YKf5fLwZXA45NHWFkqODD kyD/MEi0fJuJZaVJRL96/0fEQc4h4/s54ID4W6Ym9riIWRuwEFs6SNDml1VWmgwWymkh EI7A== 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=IQ+Z9R6NydncJMKRI0TwB1Gcuq7KLY744W/ZlSezhlU=; b=QC1ukT1k1DEK6NJRk00T8zLR/mSkXHw+Av1S06BS7oPA5coxWV9gOoFhsxqB+ElREu t9NUK6lOH+ZldFaUPlRE3jwq8kJxCoSzecjasbB+GS6eSK2KYbjOyoKVQSmL7jLm4/Qd y4bLNtP47/U1ZYeTxIg7bWimuAQyjdpARMHVkhYn+twlXkeyYbYEY30umZAcbgMFNqh8 Hws4mArXzWWmi/70mv4f8QQ7r5pgy/4ghzNAqIdBf7OadSSRgiJX4Dww1iN/XriZ3fiU EkArblD/Itj9k9Jk4K1aJuiziuAyZ1mnGo/FTlMRHXC3SRpb4uhYCGff/4AJwYJVhoP6 8Yew== X-Gm-Message-State: APjAAAXXzN38hCX4/67BmvnMQXMM+a/JVyWP0U679Vk3IFwoG7TPJ1S+ Vp4atDXT1qp22K0rKnd4diov0quU X-Google-Smtp-Source: APXvYqytfjUxf8Z1vZ0yv0EDziDtIlPnFjJOJPPleMUewruz/fwDuSv7KxIk9ilBAF9aDVl0bCFgYA== X-Received: by 2002:a5d:4dc1:: with SMTP id f1mr1753355wru.300.1556785010899; Thu, 02 May 2019 01:16:50 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Thu, 2 May 2019 11:15:54 +0300 Message-Id: <20190502081554.5521-28-arilou@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190502081554.5521-1-arilou@gmail.com> References: <20190502081554.5521-1-arilou@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::441 Subject: [Qemu-devel] [PATCH v9 27/27] gdbstub: Add support to write a MSR for KVM target 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: alex.bennee@linaro.org, Jon Doron Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" gdb> maint packet Qqemu.kvm.Wrmsr:MsrIndex,Value Signed-off-by: Jon Doron --- gdbstub.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/gdbstub.c b/gdbstub.c index f48c3a2b5f..a434a3749e 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2145,7 +2145,8 @@ static void handle_query_qemu_supported(GdbCmdContext= *gdb_ctx, void *user_ctx) "sstepbits;sstep;PhyMemMode"); =20 if (kvm_enabled()) { - pstrcat(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), ";kvm.Rdmsr"); + pstrcat(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), + ";kvm.Rdmsr;kvm.Wrmsr"); } =20 put_packet(gdb_ctx->s, gdb_ctx->str_buf); @@ -2196,6 +2197,26 @@ static void handle_query_kvm_read_msr(GdbCmdContext = *gdb_ctx, void *user_ctx) put_packet(gdb_ctx->s, gdb_ctx->str_buf); } =20 +static void handle_set_kvm_write_msr(GdbCmdContext *gdb_ctx, void *user_ct= x) +{ + if (!kvm_enabled()) { + return; + } + + if (gdb_ctx->num_params < 2) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + if (kvm_arch_write_msr(gdbserver_state->c_cpu, gdb_ctx->params[0].val_= ul, + gdb_ctx->params[1].val_ull)) { + put_packet(gdb_ctx->s, "E00"); + return; + } + + put_packet(gdb_ctx->s, "OK"); +} + static GdbCmdParseEntry gdb_gen_query_set_common_table[] =3D { /* Order is important if has same prefix */ { @@ -2302,6 +2323,12 @@ static GdbCmdParseEntry gdb_gen_set_table[] =3D { .cmd_startswith =3D 1, .schema =3D "l0" }, + { + .handler =3D handle_set_kvm_write_msr, + .cmd =3D "qemu.kvm.Wrmsr:", + .cmd_startswith =3D 1, + .schema =3D "l,L0" + }, }; =20 static void handle_gen_query(GdbCmdContext *gdb_ctx, void *user_ctx) --=20 2.20.1