From nobody Thu May 2 12:05:39 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=1558714343; cv=none; d=zoho.com; s=zohoarc; b=I+1aO2zHTwvvu/cFtMfvXqCajoh0hHNGuJArw465UF/jp+5Ez71+vuQ7DlnqQ3HE4VUYVaMw79icv5hCMkufi3Cwm8NCoBr94MkLnMi66dUnEDBT01qWThFsHDKM3RHCQWkjcpupOAt4ZxuBqtPDTvKdxXios2F3l0vBo3FZVX4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714343; h=Content-Type: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=7u1KXDRCT1QNSYdCXZwUYyZhwAFQkk64IoLiLE7FVbs=; b=KCegY/L0fk6o3k1LCfF5fsClNqoQaon+yN7J61nyzPvUsoi/2Z97bq5CS7Mo30wEF0QvQhtV3aC079LBX6QVUYGFIZQv/ZzSEmnjBOjiharaOAy839Zt82XPCNBj1i7QLAjsLUzInf7r84WGI69XMMd+hC64ywDgg3F3MF4BTE0= 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 1558714343544219.73495864970755; Fri, 24 May 2019 09:12:23 -0700 (PDT) Received: from localhost ([127.0.0.1]:57029 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCnr-0004d0-Dr for importer@patchew.org; Fri, 24 May 2019 12:12:19 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37117) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdZ-00040o-Fb for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdX-0001yJ-GW for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:41 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:35337) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdT-0001sR-3M for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:37 -0400 Received: by mail-wm1-x341.google.com with SMTP id w9so3635943wmi.0 for ; Fri, 24 May 2019 09:01:31 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01:29 -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=7u1KXDRCT1QNSYdCXZwUYyZhwAFQkk64IoLiLE7FVbs=; b=K2wYATYDPQqqj7x+3oJH0HmzxHRXyTuk1WXCn7h/1KalW7EXj2Ps3dETkgwcjivuHE 27EcmDsmLrLVxS6pAIu1njCpSBPj1TZVq1bHp4lswxm898qUCrudiVsx3fpEeVI5UmKQ O83iqL9xnK2MhXE6PNoXEL96t544SGBn3JVHt2IKKxuRWtc6n7brLBVNRYUCrLKJsfkP IGgJrmTRfhQnrl43fs5PNWz1Q+WfLR6wM+BkF9wF4UoxdnwyU8rPOzEZGUWoxTqfWXM4 +sJN233nFFMathuaDKrtBRVfgU+Y8AL+Ppp75TqqYwGpNVUBVZQ49jQPMe3Q+rBguWC4 1g3A== 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=7u1KXDRCT1QNSYdCXZwUYyZhwAFQkk64IoLiLE7FVbs=; b=RFLhcqwXSKaubcv9NQw8PUUdfitY1YDfmlOsMt8n3dQgo4H/Mg1Xhd6r4rUdtkdOO+ xWRDkdmaeKT86mC2bcz2Axy+Bu2hVYbbHorpgdD9hro5cUp416N/qqPLuwZESP7V7rLX LhutntZaDyMknK0NVHT2hRrypW5tulnk1eJb8gYVckOjHcns+sjjhK3AOcROpfrDTAJ7 Zh/EFLUS95mftfrJimRWMi6eTYgXPdT1pzGlVhUgzBVEPEqlsMyQ0AVb7p7K8VI4LIVO A1oqs2mPBEZ3P0xGiGDsVHcgIoemswJS6I3mM/NxVZv/6+ArZBZh+qw3BH1WHw03yjcr HGHA== X-Gm-Message-State: APjAAAWpm/mz9qDHYTkf1bMgU8WBia0kQL23q+4L4fnCW8+kwmW8reUo UTrPD7tnNwbxY4AQ8rpoEbPYDCSb X-Google-Smtp-Source: APXvYqwT+xOK0ejCFZyQuhtnBqQX2zqIuNtO3C+g+LERbzDwx2fSI1bHvo2m/ci3JUd+jt7VZ0qL4Q== X-Received: by 2002:a1c:c016:: with SMTP id q22mr15814184wmf.6.1558713689980; Fri, 24 May 2019 09:01:29 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:00:59 +0300 Message-Id: <20190524160118.31134-2-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 01/20] 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) Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) diff --git a/gdbstub.c b/gdbstub.c index d54abd17cc..e6d895177b 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1268,6 +1268,201 @@ 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; + bool cmd_startswith; + 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.21.0 From nobody Thu May 2 12:05:39 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=1558714078; cv=none; d=zoho.com; s=zohoarc; b=OU4+uD6U82iftIFYWIoUmNouTox+rfMXW45OwXC93ELOQFrgDjyMBzLs012ofuQovPUslsd+bDctra+qTE23i3HcH3uADF5H4xLlttrlfZLMk85scAqNw7r7PZVC5fhcRb6YutuF8LAC1hUZW95RamRbxF28cYdn0jsP6a2KvkM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714078; 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=6XN5MsYgNBFqRM18LfTzbFvP6RUmyaslbyqEQV3oSuw=; b=lLBkUnN0txjmmLCCnHOo5/a8l3ksPB5TSyzLs9+krFYArvX+BqEq7K1wMo3kQTN9ec2IbA5It8Oz5Ev4lyKL7BA4hJg9s/C74PetHo4v2W3KUxLLbVilonuF4StYn28PfAhNAsDJIpHOwetwWU+Tv008Apr6ih/kzs7GlOOHhaM= 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 1558714078081193.1031663928079; Fri, 24 May 2019 09:07:58 -0700 (PDT) Received: from localhost ([127.0.0.1]:56952 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCjX-0008TV-U4 for importer@patchew.org; Fri, 24 May 2019 12:07:52 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37120) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdZ-00040r-GH for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdX-0001yW-GI for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:41 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:46924) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdT-0001tF-3J for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:37 -0400 Received: by mail-wr1-x442.google.com with SMTP id r7so10530157wrr.13 for ; Fri, 24 May 2019 09:01:32 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=6XN5MsYgNBFqRM18LfTzbFvP6RUmyaslbyqEQV3oSuw=; b=UQMqi7vrI/R0wgvqQVhuWgEdg4gPlcSVMLMD9JBI+hR/Cg0nFz8oewYT58B2oK8+qd pJFTDjeve8OtDWwUAlF2xWNhLk/l0S1jmZ+DAM9TZkJjBreyiy3ilWEvDID0bz0/cSU2 z9PHgXj9MSVr8zYY0eGrwW/0viY7+U+ZzThpGJ4uk2eDRUeK6mYZP9f64HsFWb/yLMNZ RMzg21KNCYRZnSAzeHU0AdJaR1tSbS76ojs4Otr01TIt8L77fTYLJG4c7zKP0kapkT+h DlyuLmpkeeEDz34GlF/wRwTF+fxan7olXO65pyLCeoQ4/E4ZasHmkhmMqAe/FMjhMhzy 5T7A== 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=6XN5MsYgNBFqRM18LfTzbFvP6RUmyaslbyqEQV3oSuw=; b=FhP0GMNYlVW8zFFGyUZ+1Kxe+dtrYjHqwy50I3QevGHG6/myvwjaUrodaeSIvqQecp +0lGsISkKJBcb1LANAs4uxltMXszFayLHolCOVl71lErFPJF7clGDtgg/in3lcII2Wzh kDI/TSg3vR4dt41jpiDBIz6+tfA6WSn1zOJthoYMkleaTy9f7VHNG9Q/SWZ9jATRKnsF x65SfQOmbsQDeTyWLyB6M0tAsfPtmrtRzjf5ht95RBV/ilQmP7DeWLHRz5/CWDc/oTgY Ry744vXUkoanUfa+mrZwkYbUtZUhRlWy4cEHrUE+CIKsGmCvecrKtzC5UwfNOjlC9RM3 p8Ug== X-Gm-Message-State: APjAAAWt2SdcNMpMKDYLNNrtWFhBtQ2/YnEFb8d1HdEcYwB4zBM5wgTu ea0RYiIpHDI9CamDsrBx6R6mai1U X-Google-Smtp-Source: APXvYqwBrnJ24odEsQt9aaPDKeEbqRd5DPZ83OXo7k8oT/MkLqOSzy/zzrKuFwZF3CDhPVt5PxEEcQ== X-Received: by 2002:adf:f988:: with SMTP id f8mr3234559wrr.254.1558713691221; Fri, 24 May 2019 09:01:31 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:00 +0300 Message-Id: <20190524160118.31134-3-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-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 v11 02/20] 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 Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 93 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 40 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index e6d895177b..307366b250 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1413,11 +1413,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) { @@ -1463,6 +1458,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; @@ -1477,6 +1507,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 @@ -1577,42 +1608,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') { @@ -1985,6 +1989,15 @@ static int gdb_handle_packet(GDBState *s, const char= *line_buf) put_packet(s, buf); break; } + + if (cmd_parser) { + /* helper will respond */ + process_string_cmd(s, NULL, line_buf, cmd_parser, 1); + } else { + /* unknown command, empty respone */ + put_packet(s, ""); + } + return RS_IDLE; } =20 --=20 2.21.0 From nobody Thu May 2 12:05:39 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=1558714503; cv=none; d=zoho.com; s=zohoarc; b=FXBmhGhPvfFhzMyTGuA3AnHU7tb4k0GwfjZDf5Whs9v4+EhxzxlEB/Ag6f1ENRbTDfP2WkyZB68dcUdxw0Ry7eP9U8Poz159/p4cYfokLw/xCojCSOFKM0QSW861krVnD0an9oL9F/LOnFTJLAqiba+9+fuZx/3bFf5sVoai6do= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714503; h=Content-Type: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=wh9EpBdoOlG51mER9CpfFoTYwVIIpWsaGH6DJuJrlR8=; b=TE0x/3P9+wqqQqL65sH6YKkY4ckVP7G3snANZkGx5UI8QVB/IW2ONFwh0vuLS+sKKfbBTXvmY2XY8rWH/s8xmHcJ5FeXI97fN4CvkgUt46hdxz/hLZhsPxWpWtlY0QlEcYIzOFb9eqjL8QduSPWKBbSLHyiJgsQBX4mKe/hpH/w= 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 1558714503533984.1794869861037; Fri, 24 May 2019 09:15:03 -0700 (PDT) Received: from localhost ([127.0.0.1]:57056 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCqU-0006xd-DW for importer@patchew.org; Fri, 24 May 2019 12:15:02 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37164) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdd-000442-BO for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdX-0001zG-T6 for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:43 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:36841) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdX-0001uU-FM for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:39 -0400 Received: by mail-wm1-x341.google.com with SMTP id v22so2498776wml.1 for ; Fri, 24 May 2019 09:01:34 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=wh9EpBdoOlG51mER9CpfFoTYwVIIpWsaGH6DJuJrlR8=; b=IpVstYaZK1HL36mbLGf9oGUIfmui1awanGFGAUmmwzUKGx/EDEgVKrWSxT3GdPJtt1 raWUtRU3XhhHKdCLp6x2CTOlRtnQEZV/OfmTX8NaUx3XF9fMi9Sxtj45pbmTeUK5FftX BOMT61NXy+F9oG9qQyIQLxLpO51H9Vr+h/4D9TEeg6sEJBvYZY0QN3D54O4uPFnPBU0B p0ys1Bph3XQikEAvhuMDIzvwCnOMNOtVdkucEqMitBI+jF/Wpv3iicxPbKv4LrOIXWnW K7qRwj/+ObGTlrPsBHgayHBwL8E1bB10ZVB0uLP6iNVs0XmTl0rRrkUaR4jYnaKeifoJ qK9A== 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=wh9EpBdoOlG51mER9CpfFoTYwVIIpWsaGH6DJuJrlR8=; b=o3BW2WlHpl5oYToysTd13q3mGLELZH9gLucp+TjDvfy+PKgG6zx+VSnme4o01F5tgn S03JKezP8MU3iVqFG+qb1hknbKnrnfQoeRX6hY2AHPYx0A6PN6pKvfPISC2oYRIBpiGD 2ejRrH6RJeZB0vaYNrr4qm1bf1rv6TmxubiTzwsFjYhM/hvqcJEGvK5K22+HGsQJ3rkq GHyuOy68AWFqBGLhRwwayhgjYu37T1fn+kV5OzMJMYS0wIUn/5Zl4c3c5X1uNST0061T 9Pp3sEWCTgYEdw+5DcH865CVDbU+LsRoqhKSxehyealNO30GW+xsukNzRmmbLjAItxW4 bsmg== X-Gm-Message-State: APjAAAUr6TshzlfY4gPULGZ1YZrcGAS6pVEAN5yMUr+prBArtS9AIuQL I3n4mEy82gszROp2ybdAtz4vILTJ X-Google-Smtp-Source: APXvYqxWu+1OHXngz7Ir6p+lmOMY8zOBjhOsPV8RZbPKCG7KT2D+Keo+W3ivce3iG5Rfz+yVIakdmA== X-Received: by 2002:a1c:9e92:: with SMTP id h140mr425471wme.82.1558713692750; Fri, 24 May 2019 09:01:32 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:01 +0300 Message-Id: <20190524160118.31134-4-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 03/20] 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) 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 307366b250..b4c4bd4b08 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1493,6 +1493,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; @@ -1793,17 +1817,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.21.0 From nobody Thu May 2 12:05:39 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=1558714011; cv=none; d=zoho.com; s=zohoarc; b=c3GJ6Bs2MS3gZ6HsMnrjWj9zIuor9jaCqxb5J3gBKd3QqwHgANvuFrM/V4lIIiT5Gpy0comPdtkQkHIhdD95SPO8dVF2zVbXT9Peg0XSeFLnBTjgdKITfEnk1iJHzsXiy+IZeQ775HmN+ADbDUDdqr1eiTf2SljTb4Gown7pAGM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714011; h=Content-Type: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=vmTeYL33TLNt5020gARU6brnGwd9Bi3fSBpfxMRZaXI=; b=AQB/2Modbwmz66pMyyOiyyz08GGtvRMkXvu57N6qC7V5ImMw7Qf5RnEGnUUzNfMpRcMfwhFJT40uVNUZa2yGlDjL08wMqLIojFxKHYRnoGiD9rhVu8cwaD6w9c0cPHDvxqX0a428RfmvKvc08w9awNRDF9VxBE4nqhe9u29ncIc= 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 1558714011684616.1896016559143; Fri, 24 May 2019 09:06:51 -0700 (PDT) Received: from localhost ([127.0.0.1]:56950 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCiQ-0007VR-Jw for importer@patchew.org; Fri, 24 May 2019 12:06:42 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdZ-00040p-Fq for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdX-0001yl-HZ for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:41 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:54840) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdV-0001vW-I1 for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:39 -0400 Received: by mail-wm1-x343.google.com with SMTP id i3so9912637wml.4 for ; Fri, 24 May 2019 09:01:35 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.32 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01:33 -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=vmTeYL33TLNt5020gARU6brnGwd9Bi3fSBpfxMRZaXI=; b=HZrUd2jQJUra0PGWVgqRE9CmwmmlZDe9qMrlLJTzOr8RUiJ2H+FYGflLt9FqvcDi0o OcGWSOWf3vr6o61FonnyEJcbOE0VAJ4zKnWcMK/ZKAS4qaBAGFDWRTTU31R/284EnxPg bCn449YiR72ZdorOnXmomtVp3gZ+ckC6i3xk75RlVU/5HMBvmJTNbZiRN+Ttkk08/KxF Q/tBM3aB7ccyVIpW5aVVlD95D6YgWl6Rfvh4pyZEh3jvR4oClHg9FJ2yf9GUAGDDMf6i WAgzixQOShggP4i9Uzjj1cmyS8uPG+YoERCj9v/lbPqRQCUI5Le+vdu0t4PZWse15rd9 kb3w== 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=vmTeYL33TLNt5020gARU6brnGwd9Bi3fSBpfxMRZaXI=; b=E/I26l4PVN6oMHr4wqkOzu1zTlxNYw/OU5Mpk2nhG8f3IqVZFnK5xLnfkvaGfL6ixq 2nIUKkq7KxcjF7rxPBg0K1XbgLpE22/DOjlQGRBvjciTgqfI2itd3rO6ipVuCVtViYzw 7rj/Nu01tHPh+zVlapCB1QZXzF2K038hCZ1aM7Ka0V9IxZ3aVVRC1k2Z67aDdtxFw7ot np0qcfcYrBtLVqlclEy/bwoa/nFYcW8V5M0qXTWNnRHI6zOmNTz8JMgesQlc3o7Im75a osQfLBrha9OKduOZ3GQSrd0H6yw9JA4kBf/CDgmxO5mUHjqPMdbevNn1Ic1HyBz9yQz1 YSXw== X-Gm-Message-State: APjAAAWC/R8Afp+zyILpNJDudcRy2W2+zpJdwlE3Rw/VMlK6RIpeCtta r6PMrBwqw9UqjdVPGEOsrbjSOwHk X-Google-Smtp-Source: APXvYqxV9hfD3Ccs7whvzsb7ErrMIl48j5g10VfzTL9yJHInX4EYBvA+e2l/EjboTng22EG6kj0FJg== X-Received: by 2002:a1c:ca19:: with SMTP id a25mr411555wmg.105.1558713694391; Fri, 24 May 2019 09:01:34 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:02 +0300 Message-Id: <20190524160118.31134-5-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 04/20] 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) 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 b4c4bd4b08..698d6f558a 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1517,6 +1517,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; @@ -1553,13 +1563,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.21.0 From nobody Thu May 2 12:05:39 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=1558714179; cv=none; d=zoho.com; s=zohoarc; b=SF4IUCdR33s3GEsCDgX1vcF4ySmQ1EtPJzax+JTHjbOXd5gqhOCC7tA/9ezQacPW+dFn1zbBU0vJxDoy/knyqs5fittV1Owf8NnNVV3XG0DiblGSgkK2yepolzazJDzGuYlxRUqK4bgXeNzfAb5/yftXCKyuLhd96j7OhouMv3o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714179; h=Content-Type: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=0rAsmcfCRQUIRVqrFl3XK6UCU5xZbeGLTSTV4MiBM08=; b=lSxfrD4ijK1cFJrfnu04wB/mlozo7QDcqM7GFytaL0lg7itMAHGizK7ixK3gwutpcn0z/VICIUzY8R9Um4pPSvx0PEGd2xm/ziQeqJO3VJMlcpuAqFYDgbRyxPU5yj2StgC3R0GM99KnqPz1g9V5+FtAOW1jYQoCiU8lIyGRiAg= 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 1558714179178111.98257184619115; Fri, 24 May 2019 09:09:39 -0700 (PDT) Received: from localhost ([127.0.0.1]:56974 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUClD-0001dR-4a for importer@patchew.org; Fri, 24 May 2019 12:09:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37121) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdZ-00040s-GF for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdX-0001zB-SK for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:41 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:35339) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdX-0001w5-FZ for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:39 -0400 Received: by mail-wm1-x343.google.com with SMTP id w9so3636249wmi.0 for ; Fri, 24 May 2019 09:01:36 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=0rAsmcfCRQUIRVqrFl3XK6UCU5xZbeGLTSTV4MiBM08=; b=SxAoaiBnypzF6qRc6TGkBi6oJMk6vNjPrApDbHvvnw0bo2o/KDKD6AnAujCajzqvCH CwVD8+iwrLQFKYB1GjiEMAeokTK/7t1xZOp8BBVAsGPaIWiJ0sAs7ZIwTc5uijTU9YE0 O9PLvIPq1FxYyYRRNHQNRcHJg0kvxtf7PimFmlSwxbf3ysWAhiwbY4Bqp3v4V7QvQMD8 X0QZnpmqy7dHtwnaRBQNCxLlts+Oq/p546mygKyzgd6gDLWWXaXb4AX/8KJpfh924BLM WiB19nyGaPcvV28YsJMnzZNvF3+749uDd+eTYuCkD2U3zQXE/OrvnWLivrfW07WWcwyK u+cg== 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=0rAsmcfCRQUIRVqrFl3XK6UCU5xZbeGLTSTV4MiBM08=; b=OlrvvRcpncsBgnagrpU8P7OFKa8XsHqby77ZiArCRRkIZksq0lWx92wpfkzRJ0qHPU RQVrWAiRKZHhOSimTP/dTiOwsRxIxwJ2C4wp9svDm8jA8+lTCoECChuLtGzRWtj5Lpk0 EFm9cWLCZN0ar4vExfvFkEnpPHluB4D7QlWyQBN8rCo1HfWNhGFDxOrHSgyLkKRRv8lP 8pQPD6HhfoLkURdKyqpQHNIWi4GvBU4PfF2sUglaWwJPHLGrXTycbQuZwTehoPiO+ITi NmVs1pKTl41/CSSvuLmhJkg60RoAYbqzaOIuo8RTNNVhT25883IBy8Pb6FPZfEK3K8AD DFsA== X-Gm-Message-State: APjAAAUvsIFE/W2CcW+ayuYMOiEqcAYp06YdHKwjhSJv+QhQdqaHX0q6 EkTNCuISjmdUoQdKhd7o7qKwZCrY X-Google-Smtp-Source: APXvYqwuwykIHtrd5UBbBwBh3BqT4nX86AGsy15Lr2YciSy8JMZ/OHMk6j0kaaAYefy7u9jmMCWseQ== X-Received: by 2002:a1c:e386:: with SMTP id a128mr391781wmh.69.1558713695429; Fri, 24 May 2019 09:01:35 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:03 +0300 Message-Id: <20190524160118.31134-6-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 05/20] 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) Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 698d6f558a..f74a30da03 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1527,6 +1527,25 @@ 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; + + /* + * Note: C sig;[addr] is currently unsupported and we simply + * omit the addr parameter + */ + 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; @@ -1574,11 +1593,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.21.0 From nobody Thu May 2 12:05:39 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=1558714257; cv=none; d=zoho.com; s=zohoarc; b=DMWswVtrHqh0Sdj9EDff21w1ivg7+JMjcAhXoeEc/KrE29KdmuC4QNt4Rc94xQLDHtOogehPIwfEX0lGmPKAdYI3NdQ7LidLtupx6Uf0MqK+VkWTNlMY85w23aSpQ/Boo4Wftp3ASGYTtcr8PvsyqwopwOguSqr21p9Ltf0/x5U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714257; h=Content-Type: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=BFsWi5CBOk/GZ+c1NR/rK6GiEU7F52KQ0WRdytQizHE=; b=h/2p9gjYrj8gUe4r757G/XAVZ7Omke1xX6fw0dSscMLKOwyVd+r4oUEUvNKYjDMn86d9RvmyzN+7Hpj6+D0dz1+PMJzF/WxrUC2qC4kAVu285cmTIReOtQpNCB4jABzf0wYPfu7wHKol3Ikd/xx3o9ZaQYjaYi3UxsmwSnhqu2E= 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 15587142573111010.3173607165077; Fri, 24 May 2019 09:10:57 -0700 (PDT) Received: from localhost ([127.0.0.1]:56999 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCmL-0002k8-4n for importer@patchew.org; Fri, 24 May 2019 12:10:45 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37122) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdZ-00040t-GN for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdX-0001z6-Rg for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:41 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:37715) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdX-0001x6-EX for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:39 -0400 Received: by mail-wm1-x343.google.com with SMTP id 7so9755789wmo.2 for ; Fri, 24 May 2019 09:01:38 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=BFsWi5CBOk/GZ+c1NR/rK6GiEU7F52KQ0WRdytQizHE=; b=RJ6r7ER2UvoXSdEePpYrlVaI+V37Tf8bAc5q/lIIN0zW7ozjdy6zFH+NAe4U+0JemU BIFmP+rHnp0aukH88Sq25es65FvtxO7ICReELSoEk+D05Eyvpk/8LhYSP5sF2t3ZXRZ7 cIyC7X167ETlW6s4/2rkgGfiQFE/r6J6kCHGqwpjgnVg+CMlC74djeqtvIoaZDjxMaIy TR14gPQvlz4faCGGVbSgQjLSVzFFxrMM9HQUuEeI5b+Ivxy2U9KVVjdGbBeNAT0zvzmy z/L6huFOjxv/u7brTgV0f0N3/IOvPgtGXT0bZ5MpYJ347VYYidZAE21eIUArrjbCv0Td Nnnw== 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=BFsWi5CBOk/GZ+c1NR/rK6GiEU7F52KQ0WRdytQizHE=; b=HcKQPHDIOAv+hlxI51sNrb2rD2XydjQbZwbKQR3hV5bkH5hzcAGiPZebcsfc7ENAXQ J9wVauXzY/MXc0phJQwrLJ0hkl7acWOzme8iHjNUpOPm+aFedC7PO7euWb4HotujtTsT 3tGeoIM4T5H5jfYmt6Cng2W+cUOBM4RtEyUOVeRmS3TuwL4CIyqo1ke8U2V91y84wZLe zVdjTC3OU4W7MVQr4gTmWbPLcyMtld8EkD+/FFV30YNX4oAtrInBMJSLlbzlFVYrZJLw jbuOwZ7LDr+DCE+UajQClITAjqxAkgFiyyg+/3X2Xw3PFXFyjtj0jXFE6CPlOxyVOmuj PJig== X-Gm-Message-State: APjAAAU+O/7M4oD0lseiYHZrGch/szyzN+kAn9YHcPL8yP2SDWxuwS+c mcqa0D/BaO+yQvOgXJc5m7bEIJSj X-Google-Smtp-Source: APXvYqwiA+Y4OAkrETuLPbXVGmPn8m1LbZd+WxsrWdshSW10Dka08FZtmUzqww8rNtaVi4EgfhwkmA== X-Received: by 2002:a7b:c40e:: with SMTP id k14mr447244wmi.114.1558713697046; Fri, 24 May 2019 09:01:37 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:04 +0300 Message-Id: <20190524160118.31134-7-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 06/20] 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) Signed-off-by: Jon Doron Reviewed-by: Alex Benn=C3=A9e --- gdbstub.c | 83 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 30 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index f74a30da03..129a47230f 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1546,6 +1546,51 @@ 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 !=3D 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; + } + + /* + * Note: This command is deprecated and modern gdb's will be using the + * vCont command instead. + */ + 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; @@ -1559,7 +1604,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); @@ -1822,35 +1866,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.21.0 From nobody Thu May 2 12:05:39 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=1558714409; cv=none; d=zoho.com; s=zohoarc; b=iSuu/OCtj5URAKstaoCBFbWCFXUKLbuvWB2WVxmIE9J/awEg6WaNksTR5vsz8quuHsQK9aFrx7oT6JOf8YDNtXo9uzhCaMOFEYKCijyTNwRsP225KJTkrNgiYWW7jakrCbNff19oZQa0iV3QlgnqvGb/DS1u7CTEoJVQqTFNTrI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714409; 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=JBP05yP+oKTHN0+qEMyIVDJm99TfFag3Xoa9AN/GQ0I=; b=jsllsgqwCHtJbgZh295vX5AgnrOI+SfqpHquWLc4kaf3BPo5dTStisAxTcIoCZw6OZpSUcXLx24t1m+JoykSu8NK/wPkNGzZxsEPrJ8zvlZc5/xsjSYYte8oPv9RAMbYD9sV9PHmOW7P8Yz0pOw2lv0MNo7UxUzKM8396mci6FE= 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 1558714409880561.663371719393; Fri, 24 May 2019 09:13:29 -0700 (PDT) Received: from localhost ([127.0.0.1]:57031 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCot-0005Xi-Mb for importer@patchew.org; Fri, 24 May 2019 12:13:23 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37180) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdf-00044D-F0 for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdd-00023p-BW for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:47 -0400 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:38538) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdZ-0001yD-DZ for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:43 -0400 Received: by mail-wr1-x441.google.com with SMTP id d18so10554791wrs.5 for ; Fri, 24 May 2019 09:01:39 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.37 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=JBP05yP+oKTHN0+qEMyIVDJm99TfFag3Xoa9AN/GQ0I=; b=hyu5AiS8P8ilchgmBBDPmsuzUdXoaGggst7Tc6w+9i05dR5pPwZ31oUvtnUTlrmcjN 8/K+iuGSjCui8px4fJ4yu01g6MwLwTgpsgubQ8s1pMhPM2YN0LBwlR6ZiBZXCYB9X/g1 bwxmszp1SHH93BhDYQsmLse6aDlVjussxoQHd6dPiRpZMIQHoBSkadjlbm/549cu5yaO e+uZe5b8YdRRtB0ibe7i0M5m03jxSl66GGVO7bSCglm1Es19IrXstqJmHLxEyJkwNitI bvyvDRalT0a/R1RTKMMVBXN2Mb34ZfE3O+p8aXHPw2X7hX6B5zm32Ec3YJMjQTyVqXF7 pnWw== 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=JBP05yP+oKTHN0+qEMyIVDJm99TfFag3Xoa9AN/GQ0I=; b=CJ3ggouOCJzGEHGK9gwYcIviRAule6Xoa2gW8hzKhoXj/jhPGRIZTjpOaKXBxx7MM7 Qb3sR+uJooW4OmjCHTQD6SnzV/OatpVVZWR6aihD3K2JegJWBdApEY6z7zCxNioDLyGB 1gIWcb95bVwxnQ6PCTtxC4DWMurmhKw0zOsHjD6JZU/rhuNNWXRaOS2B/V9gO3FIlPx4 hHSCSy24FXla0FvHPVSCpdIURt9KHnJiVPGXgvuQTsdYlGGuJjf5uejXok/5MDk8g5Qa Aqz+fwsS1eV4QrqhqXVToHysMuqYgjrjxoGmiZZ0mSECpa9P2VCPpuXMRmSofLWiz0GV 0KXg== X-Gm-Message-State: APjAAAWuxB5OToOTHftrOJfkKtL5vxkyI89/qQYqvIUJnBA0rg5+n4PA DqEFboZb5CR5qptgsdRSFxl5ZHVD X-Google-Smtp-Source: APXvYqzOkx+SKEglllALZox9DWJ4TlTEqqOmtJQjszgMQMtZiGFyoeqUH1GN4Qla+kwszZa0Ue1t5A== X-Received: by 2002:a5d:4fc1:: with SMTP id h1mr1926062wrw.323.1558713698528; Fri, 24 May 2019 09:01:38 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:05 +0300 Message-Id: <20190524160118.31134-8-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-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 v11 07/20] gdbstub: Implement breakpoint commands (Z/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 | 84 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 66 insertions(+), 18 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 129a47230f..c59a6765cd 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -950,7 +950,7 @@ static inline int xlat_gdb_type(CPUState *cpu, int gdbt= ype) } #endif =20 -static int gdb_breakpoint_insert(target_ulong addr, target_ulong len, int = type) +static int gdb_breakpoint_insert(int type, target_ulong addr, target_ulong= len) { CPUState *cpu; int err =3D 0; @@ -1591,6 +1591,52 @@ 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 !=3D 3) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + res =3D gdb_breakpoint_insert(gdb_ctx->params[0].val_ul, + gdb_ctx->params[1].val_ull, + gdb_ctx->params[2].val_ull); + 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 void handle_remove_bp(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + int res; + + if (gdb_ctx->num_params !=3D 3) { + put_packet(gdb_ctx->s, "E22"); + return; + } + + res =3D gdb_breakpoint_remove(gdb_ctx->params[0].val_ul, + gdb_ctx->params[1].val_ull, + gdb_ctx->params[2].val_ull); + 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; @@ -1846,24 +1892,26 @@ static int gdb_handle_packet(GDBState *s, const cha= r *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 ',') - 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.21.0 From nobody Thu May 2 12:05:39 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=1558713916; cv=none; d=zoho.com; s=zohoarc; b=S2je2CHxhssTp7v/7lxqC9IbkhKAMePpbE9wtYU8ixP40GP3q2HJtk1SVYGbeeZ4T7c5iriDrukGuIn5LAsCG5mJnoARZx+UBftE7cFk/PYrDkP0vvVSSzvuvzN0ebzoK+fisbbV8VP9RLLEQtV/4/v4YNn6ScDYXn8NNoOHMcM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558713916; 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=CctE0zTJnEU25JB3cn3PPMbvqOEdGic49XPgJHQGWnY=; b=a1D2iF5SvLgUTTVAoZj1D0h+PyrmPfmhp0PkLNXTvadcI1LmFNfrBs76+II8WAzBEUFSGTEA9+Jv/WPFykAGUFgSP+M6g/H48vlikT8ImTHji52NYgcZVF/tjOGib3LuYnhoHZx9IIHiy7jv/AC7TUCwiXh9F7VXu9c7dxzNChQ= 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 155871391600653.18955772424465; Fri, 24 May 2019 09:05:16 -0700 (PDT) Received: from localhost ([127.0.0.1]:56841 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCgo-0006A5-43 for importer@patchew.org; Fri, 24 May 2019 12:05:02 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37181) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdf-00044E-F3 for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdd-00023u-Bj for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:47 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:41121) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdZ-0001zT-F9 for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:43 -0400 Received: by mail-wr1-x442.google.com with SMTP id u16so6658527wrn.8 for ; Fri, 24 May 2019 09:01:40 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.38 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=CctE0zTJnEU25JB3cn3PPMbvqOEdGic49XPgJHQGWnY=; b=WCQSpA636wewpDaVqr6fC68Sek+DcX+4tdbx+1F6rhf0wCXBRHljhLm6nPjFEprxlW ZBB1NesnDBXmvcW8LOrLROetpLD2Tc3ml38Bz+379F7ys1PzYbxJowEJV6sTCwECVojU cKmZzGDj+VWBK2VRbvvk2x2i4hKcHHcgcOmQLOZmb59OSRvPLVcrBasbtCsZQNDGCtlc Fld4GXgaax0iy03brfJlcak5TSRNWyF7uHDquREUIez6jRUeCCDW6XUfbTxfDJ5DyWbj pq+kWoh8MQBw4I0S20ypq5EHVUa0i29Dy/wYA3J++JyDZ1A6dbudNyXaT7zogzKrq27U QOEg== 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=CctE0zTJnEU25JB3cn3PPMbvqOEdGic49XPgJHQGWnY=; b=aUkoegmUq7UOR+OEkHvcPxoUf32RXqydUM742DfMy5K5G6wEuH8nnEl7PtFLOI8ZQi saSmBY8ZrF/rwVkxfpB2Ci38jsaVcClAFMrBuFan35TWH234FVXYiGKC3wn0XA3IvWdU oUQA3ZQBbKROY+YzoI3uO1BKum1T7g3/5xcZgj9SDY+zfiIoa2hkzqghwl8TA9rFQkl9 Vu0E/EsUyfX7Lc3fI5YWWMTyjnQOBXfpxcVVbgVqs4AsWjx2pk86Gt4TDecyV+5MxYT9 QSpHcypLxb0sVLetF7YiMDT33DFaleSGvL6c0jhwXcTdGkzCuaEX4388of+qzFE+dVsD boug== X-Gm-Message-State: APjAAAUNZVzf7wGXnXHhwmR4T5g97OcDmvyzxNlBoLhR+RKjtHjZRn9S lWnVuaJPdl91GxBNXv6HdlBCSoZ2 X-Google-Smtp-Source: APXvYqxVVEJT0EaZL4U1sNZEtsyrEn4n4U05CSkrZQIht6RVo7NxZrtfC1b1qk1NxLZb2bv/hZhRtQ== X-Received: by 2002:adf:e352:: with SMTP id n18mr7841515wrj.82.1558713699713; Fri, 24 May 2019 09:01:39 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:06 +0300 Message-Id: <20190524160118.31134-9-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-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 v11 08/20] 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 c59a6765cd..1c210d671a 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1637,6 +1637,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, "E00"); + return; + } + + if (gdb_ctx->num_params !=3D 2) { + put_packet(gdb_ctx->s, "E22"); + 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; @@ -1881,15 +1902,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.21.0 From nobody Thu May 2 12:05:39 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=1558714088; cv=none; d=zoho.com; s=zohoarc; b=Vu6rCvKR00XHD1rFrAd+A+art8cTklEG1HVthWTmHXbcW+ZZiH6sRQsW2crJzKu3aXfFj2/+1h29aQUY0/nQJxQOFoQBeD0MHl4TUCby1Ws++00fWydRamvgSFdxWQE4LNwCmARxiXkM/G+yOzq7+LnBQ42vSr99Qpb7DGvV1uU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714088; 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=V1QVJ4HRbWCoEeLavvf/S+Qb9vILZOoid3DZnX3FkwE=; b=f+056JuOVdGja1Qvzsja6tShXXJkirs2bR+sj1jZbX+VV55AdQDae33qM2g4x/Eq2CwSl8lTZBp3NcSWPOo+2It64k/fpTTiJowYTH9RP+vlRrwweU5JLC6cEU56xrwAdvUK+r9I1R9XbXzno11YUdb5He8kmhGYFhxlI1lQL7A= 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 1558714088218670.7116509478802; Fri, 24 May 2019 09:08:08 -0700 (PDT) Received: from localhost ([127.0.0.1]:56956 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCje-0000CD-Un for importer@patchew.org; Fri, 24 May 2019 12:07:59 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37204) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdl-0004BF-OS for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdf-00027l-F4 for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:51 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:37576) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdd-00020y-GF for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:47 -0400 Received: by mail-wr1-x443.google.com with SMTP id e15so10568581wrs.4 for ; Fri, 24 May 2019 09:01:42 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=V1QVJ4HRbWCoEeLavvf/S+Qb9vILZOoid3DZnX3FkwE=; b=ZBX4tcJHGTry1Bu9qVmKJpuvDByKRheKsqPHCdmQvjj1P8mnnqET7KtPjxkV0nLElc og0sd0BlZJDi8bAi0outphE6d/gz7TuMjoSkzbIXPgdWqCwRDKogX4aLPjHPdbmFNhHn DqjtxBg+zZ6VmuhKXxBjOPaIrxJ2eBg47vQZxKkfMx3VxN5rWWGem6KAerAsKedPGP/s d1E7fL6wLuEzqyu811bixBY7kWeAsu4AKGfzHoJ7tRiY2F3JgeJQKn0b2xNc2L/TOYPY tUm4yrQDWUxuI5Pe17XDHioxDaD2YaU4xXKEwV+NrLwbcGkOPaJCt5RrznfCwSpDfBsl M7ZA== 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=V1QVJ4HRbWCoEeLavvf/S+Qb9vILZOoid3DZnX3FkwE=; b=RueEqRc3KJk5wSbq1jO+k6/rGFEs5lwdyCynBZIBlskJu11zfSnspwJFdomGlQjDnZ WrC1YRMVIegU92CL7o5zIj0heJNkJdLwd/2n32QbiWnU9nZP194Q1M9YxBU77sR09lUg jyzIUdl/jfL545g6g5vEgIOBS48K8yEKn1uHo0Q1mmKIqzs2nNvzlr/73An/devvy74n DTlCKyGBqP9djLMOmKJKhowV5nR1z8LiGVDOq0TocsXdmMeRRa6p3vIFvPxWVEYLGmmS BcUrQ9ArH16fU/IJhWgktnxtXzJNZgSyKh5HZThTRv71h/VyA9D+MMk6+8k/LsKlUhXB RECQ== X-Gm-Message-State: APjAAAVxgaJLO+jrXex0DF8afI5VAcNrhH9/2BRycPo4at3kfJ/nwU34 kJGzX2+f/GcbxC5xmAYcOZpeRn6w X-Google-Smtp-Source: APXvYqzLkTbyVvcULAjgs1kSo/ViyYQZxjmJAqArI1HLp0gtLXqqYlun63K15ghHhW/9z9eTPxqVfw== X-Received: by 2002:adf:eb89:: with SMTP id t9mr438118wrn.109.1558713700882; Fri, 24 May 2019 09:01:40 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:07 +0300 Message-Id: <20190524160118.31134-10-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-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 v11 09/20] 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 1c210d671a..3284b3e01d 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1658,6 +1658,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; @@ -1887,18 +1917,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.21.0 From nobody Thu May 2 12:05:39 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=1558714416; cv=none; d=zoho.com; s=zohoarc; b=lciNpArKfomSvWjqsxdoLi92apY7v8Gy96up8Mg/4tKnqapriZ2nrrLTx89buXtlIP4KWpNxlNbEueqzzQwYWO5izOWD5gq7TN580cuy+/IChS89PrgUwoRlEUdjkb/nyuxwvUnRpH1ioobwc2DNY6vWI8Vy0drUznRVAz8/0Lo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714416; h=Content-Type: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=+MQZmZOjKDB4jASk4WwHNgmMdTwnSXOjIf4N4zQ8Ens=; b=YnfI/ypV3ro2XkOuo/vzGup5P2VFc2MLd7AK6rxFu9Ahn6rIw6u5haekcg4UMiH0yOufkXi4irwA5r2CMkh1jMvts8vqLQhKZ9Vt5LMGzpHc/DoePNUMEMcDiW9RYCtJmYQJXi1HFRjAVkgdeMYd4+DYr1IC46aqDmAPd1c9Exk= 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 1558714416699117.8118380560444; Fri, 24 May 2019 09:13:36 -0700 (PDT) Received: from localhost ([127.0.0.1]:57033 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCox-0005ZF-GK for importer@patchew.org; Fri, 24 May 2019 12:13:27 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37248) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdn-0004D4-Ns for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdl-0002DV-Om for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:55 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:39719) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdf-00021R-GJ for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:51 -0400 Received: by mail-wm1-x344.google.com with SMTP id z23so5684988wma.4 for ; Fri, 24 May 2019 09:01:43 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.40 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01:41 -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=+MQZmZOjKDB4jASk4WwHNgmMdTwnSXOjIf4N4zQ8Ens=; b=CzskXrAASAUX7agFsSxUUDvXRg7DbwWQ7Q4xKdSRn5Csxb0c5D3F/AmnEMzgAWcIwI a4R3qDf+NHJe7SlzpCH9QngnmtOj53lrv/hz8ViKBrdi73P7SFbWQrXFMh9kqCORU2G3 8XqlvacXcphWDJqrvAAn9kvqY06AxTSJC5bTqDYpge4SyNi6OXeCbXG6QsYNuoEkpe+a kWinScwPeehd5AwigAbYJTOnuOUGwkcsqyFlkwoeL8cUHqmmeY9JciKcdKqxIzKhPEmJ HhS4/aqM4FLL1ZutKxbSdMuT68pdm0AqYqa+QH9tMuVW9OdSq35go5bDL5XTKOCzha1f a29g== 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=+MQZmZOjKDB4jASk4WwHNgmMdTwnSXOjIf4N4zQ8Ens=; b=IGZ59rOBILfot18n6dyjtMbFIsWbL4WMjsjmm+HWL8l7TlbnOOUMm7e1H9bagnXtcg GycMfBdzcXDPdnoV+v53i7mamwu+TuPhAhy7jWwdlzwd+WcZry4rQ9PBfPAT2tR4D9/7 iXeyWTX/bhod5V8CYgOLZzsuMHqzBA8PrWCaP6S2DE1SNmpPqAkXiEvqu+KgQQCq5IT2 wT2r/uOswGGirPPyy4pkzRVfSalsQRXGL7hvzyoi+CWoB7GCM8Jg0bDogvbLe/YjSMZh Q82aohID6uK+xMA6Z3ZhjDTzqM49UqUUQQz6J00rhNYfE3yLVAuzlBG56vP0G/j88vYy eadg== X-Gm-Message-State: APjAAAVnQKN3zlCEmrofj6FGbAfH9K/BNe5eNdtEDWo3/qKuUUM/yznB CQGUn6DsMqTmr8bwU6LP+gxk9dXt X-Google-Smtp-Source: APXvYqzGZrhqWHtmkneDDEAoRiMUjuLVKvyJe3hZfgceC9s7E+KgAFRfAROT47fEsuRvu8QaZAYMGA== X-Received: by 2002:a7b:ce8c:: with SMTP id q12mr434194wmj.34.1558713701982; Fri, 24 May 2019 09:01:41 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:08 +0300 Message-Id: <20190524160118.31134-11-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 10/20] 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) 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 3284b3e01d..c798d93e22 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1688,6 +1688,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 !=3D 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; @@ -1896,24 +1921,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.21.0 From nobody Thu May 2 12:05:39 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=1558714692; cv=none; d=zoho.com; s=zohoarc; b=eCd4j+3Sfygy37Pq53VOPA06GjGQEd6jamNLk1jlDXLvc+US6PUeC7YMt83xG9XKtVlVWsYQ1m3lzaCKsKeM82ro2SH/t3XXevj4MeCZjYsTezgXv+P8Px8g+rOYzJSjkKX9aPFR5bfgtOHNyjjmXK54EDFxEpRYDJoTrmqlo4o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714692; h=Content-Type: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=Iqrsskq+v4Yl7Dt6mWyZemV9b36J+YLnKtc5/VCxFeU=; b=geGHDOe8J6Sco+xDb1iHp8wY5G8DKAgICuGG9Qx34Qz+R9n1IT8GbwmvpLn7y+Ouae6LPpdhDT8cjUWRXLQ3RZsYUzv6NS8VQGW9h377TM5YTOG2VStAPa5U3RBm0R1yRbMfcv3+86lpIk8VH89IH6KszilwmNp8UIHzJ2Baly4= 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 1558714692899245.3354154576101; Fri, 24 May 2019 09:18:12 -0700 (PDT) Received: from localhost ([127.0.0.1]:57113 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCtR-00013C-NN for importer@patchew.org; Fri, 24 May 2019 12:18:05 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37245) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdn-0004D2-NN for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdl-0002Dp-RE for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:55 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:42917) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdf-00022D-F4 for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:51 -0400 Received: by mail-wr1-x442.google.com with SMTP id l2so10555729wrb.9 for ; Fri, 24 May 2019 09:01:44 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=Iqrsskq+v4Yl7Dt6mWyZemV9b36J+YLnKtc5/VCxFeU=; b=fLItQb6gDmGP2lj+8iW3ffAToBMQ0P0X3PAUBEJ7Lyy9WWBseyBcCGWqG2NGDxO761 6NEnTSAKph6gySYJuL8G2gLnLANxecZ8C4GRyINA4hnxVgrtghAdg1Z1fs4NCrJDtEcX NYEP/TIKBo8CR6twvgWeavbCRdV4NyX6ndwlOOxozLDUsvjEUT0h7YS148g9k44wijfr BuU0d1tzSDR0tLrHY7FDrn6HNDbtA7kalsP/tezDtnaF6SAZrmsUpMhRRHRHMof8b+jF GBWOYmF4Ar0emZdHJaOl/zli4Xx/tGiC9gqM096XcKMBGjAEPBBWyqIUOGaTR9WudtTW NfbQ== 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=Iqrsskq+v4Yl7Dt6mWyZemV9b36J+YLnKtc5/VCxFeU=; b=ZRALK3K6GWZmyCRgeKV/L8x3mqNmTxSpYOKroFdfR571RT4o5sjKBPRBv5uylaw7bI ADvypjPwlN8NLPq41Kwh1A+T5U9I96agjRpJ1np/v1OYKTVETWq9SgxVLA73LiKgY8bI VTQ3N+OfYPkBIFWSwt0hG9myIr8C535srwW2ebKdomW6FQx1OMJQSC3B8urGuRGY9wNK aDOG5ZWJteE8mUqTGnp1zrtXmoh0l+iMgMRVGkg00Pfo60TMrnP+RnxfyoeyrV6k/piK qL1J4InpH3DpkqyRWw+nQYvL0PMtwZeBvYx3Ix9Ya2iiHpgrGxGViA8NnaFCBCyTx7QY zRjw== X-Gm-Message-State: APjAAAWTpWZn9MtzroA6xohEtzEuTJwgrn/5/k63p1F4Gr8HjSd7DjRL U1go2j74W46UPM3qSx2vyQ0G0Ir8 X-Google-Smtp-Source: APXvYqwZj/RujIdDHaK+Hog1JVu0Qx59zozHnMvDnBodFbkZ0RwO1ON66tJFloPb0FMEMwSjvbAyKw== X-Received: by 2002:adf:db0b:: with SMTP id s11mr6562199wri.180.1558713703055; Fri, 24 May 2019 09:01:43 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:09 +0300 Message-Id: <20190524160118.31134-12-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 11/20] 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) 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 c798d93e22..c957b0d8a7 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1713,6 +1713,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 !=3D 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; @@ -1902,22 +1926,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.21.0 From nobody Thu May 2 12:05:39 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=1558714258; cv=none; d=zoho.com; s=zohoarc; b=lySU2xp82SR01tcS7ISkr00QweWA9BsmRLhE90hQFy3jhMmbOE3BWcc3n5BMoBimY8SaF8CES/7oV0Iy56Z8BGVTwwuXDsx/7HtD0H2L6L4EAUlPBuv/V4OJ4RW7C91Qp8n4b6CEvVr+4UHX5XeXG98MFoW6+70KJt08gCMVEz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714258; h=Content-Type: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=Ncrl9VSWo6UCV0ubddeVItS24WdTGzBLmyBoaUVBSyU=; b=TuvKddd2Fg1W6IHnACFi6N/NFEsSiT1M97VYsAcFwNFEXukKl9HPGYJaDffTXfRTFJOJq2j1TgxwYUQ2f5BEco19g+3NhEG9u5ZSVCpZlk0EEA3Ku2K8/xq7VCB9QIjn7FB6Q5QXc0irezGepKu5iHutHq5bOHubCkKYSiZE+W4= 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 1558714258778832.6878710189399; Fri, 24 May 2019 09:10:58 -0700 (PDT) Received: from localhost ([127.0.0.1]:57008 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCmO-0002oF-Mj for importer@patchew.org; Fri, 24 May 2019 12:10:48 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37244) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdn-0004D1-NB for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdl-0002DW-PH for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:55 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:37716) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdf-00023H-HS for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:51 -0400 Received: by mail-wm1-x343.google.com with SMTP id 7so9756263wmo.2 for ; Fri, 24 May 2019 09:01:45 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01:43 -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=Ncrl9VSWo6UCV0ubddeVItS24WdTGzBLmyBoaUVBSyU=; b=V4LAmB+BAgP9pIQRNIfBiyhZspTHT9SKxHS3/N49PXyCpAedLfOKxhFz4ldJjDrGNm ifeWMffHlmBLje7yLe5fslrq6HD8kXZFWtuzUZKfUNHbao9F+5Q08gSv8x/kABZOAXly mf3UGmrEQ9OJZnSmGfK3QQxVLwNVLgrNX3GeSf70CCS0NanH/PXwWAduExLAeKp82/K+ g/MWg2D28+HuPTuISq0EVWJ7XrBMB0r2iOoLrGNxvOseVvk0JIW77lUPvu5PkyQ6a5Xr z11UMJlj5XuuGwiEwhXA17CNUxIfHiEoawL0z7Gjkh+WM3yUG4WcOn41CMJayhcR71er OKTQ== 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=Ncrl9VSWo6UCV0ubddeVItS24WdTGzBLmyBoaUVBSyU=; b=qEDTffFEo4NloeKhXlVW0T/ifp+xbCOlLv4VBbRfkmDTGwQwd2N5DUej2ugvWaougX SSdjLamSfGM/Uu+t8eM5nGfb5n14O3JI3YCCoZMT0wHNcB/q1qoY8sKPIqJ35gISPrwR 8yxkSGbCQaNDpIqu11NFpXlZ9BQ6Tb33VgjjLhytpVtUPkcEmdZvY0wbcX4J3shP/22G RrHuhPf0ytW6eLFESdla6RYDLjtIDQ/q7jfGTeyMSd/RxnGkBSIaa9trf707zBKLNir2 BukgbnVa2C9Fhae8aaaMWvIM9uw0W0r1WTcZKiDl0b66Dy6IHpCtEEMhfYpPlpauzawS QNJQ== X-Gm-Message-State: APjAAAXkabVvlB2RhmHI6nVXTmz55Hj5SQ4mf9s9AWj2lvsAugOr3B+2 oUvl3upA4rBYU7vqSB9FiUO5id8T X-Google-Smtp-Source: APXvYqyzoyOLUc6fDb3P+5zdXj3cptf2jEGXhJFTQpWyOcacwwcEZrSDsppFyBndKcpr74F7w3vo0w== X-Received: by 2002:a1c:63d5:: with SMTP id x204mr429725wmb.3.1558713704026; Fri, 24 May 2019 09:01:44 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:10 +0300 Message-Id: <20190524160118.31134-13-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 12/20] 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) 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 c957b0d8a7..1afad31b49 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1737,6 +1737,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; @@ -1748,7 +1771,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 @@ -1914,16 +1936,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.21.0 From nobody Thu May 2 12:05:39 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=1558714601; cv=none; d=zoho.com; s=zohoarc; b=Esz7kh/ni/22aHixLCytGmVilwnZx0h/ZZLSOK2l6ZbZZs9kbjt/uT4DmIr8UuaBg6x6Z2+zi/RaZazCJaW+5w3Pk+6c09fIoUIqYQSLModyPerBdfQ1Sv1v0s7EE1wNrL7VLu5hMy3BJ39bEitKlqhnyPHcRRDcpp7U7LXC4G0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714601; h=Content-Type: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=0K6XJDL6BHpBdzcJvkw9ibcDs824edt12MdOLNnZMaI=; b=KkMiwEceoXogYhI/GC+RwLq5xN99ZlfQPp4wJ1l1l6izoG1gt0Yy5SAHPG5U+KQ0fsxFV/RG98HOv5A/nAJh/tMnplIoWBalOvJGjlWesIPIDwFL3LPTxMWpOqJhmEDWPsUMnPqhzOcKExaBNkIed6zMSZSN7sp2W4lxsiIKjiU= 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 155871460146978.45262879332176; Fri, 24 May 2019 09:16:41 -0700 (PDT) Received: from localhost ([127.0.0.1]:57091 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCrX-0007yw-92 for importer@patchew.org; Fri, 24 May 2019 12:16:07 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37246) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdn-0004D3-NX for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdl-0002Dj-Pe for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:55 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:40896) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdf-00024A-HH for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:51 -0400 Received: by mail-wm1-x341.google.com with SMTP id 15so9728731wmg.5 for ; Fri, 24 May 2019 09:01:46 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.44 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=0K6XJDL6BHpBdzcJvkw9ibcDs824edt12MdOLNnZMaI=; b=sqi7gUtstUuOrGxyZdWPlvRtpQ0YniOVr/ragnGrFcgQ5iXBWqPJj1kJHcocn5Ql9a fE0xCOXpYqtjGTvDY7nW4wL1nbQouZ+KlAenRfs1h+TXryyIHWwUhp8xs5reJv5Nt5ID O8A/DwO5bygT3SxffQutIOWD8x+t1rdBaYgfoNcJdxdq0FRIG8uZT2TRm3udQm4qJSGr OTiwa8gySkl9qyv7GuoeybytEHTEUnB5eX0ZnSUfqiOVRBSN2xlkReJCByLCUzhhU1iW B4HmgCdqoOBWIuewFSZ1TjVO+hd9+yTR6IAcw+FdGKJbRP62bhLOjzuOZH6lX/rkRmrc dNUA== 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=0K6XJDL6BHpBdzcJvkw9ibcDs824edt12MdOLNnZMaI=; b=LOi+W4x1QBBOYt1Qbu+AC946z23DCb7WjSxutpQDxcYE3TvycFEXFgFbGLBqTzzg80 uy9OiuB3frSzXtgIebbG0VAR0s1dqXUqkiMi+ZssNETK3Yh6iNR+tmcRFcXgMWAEiJ3R 92aToMVSxbYSXD0zDZmNT7FMZhUJoJNKMp4wHnlsN+lUVX8GQWKMoipXSHF0PrtVxqDs wwc3OfkMfDjP3KLELgjLu5OH0fyNsvl1HJmLL5LW1wECh86Sn62NNhhV5/QZEGRhtoVe dkf2LHJ9+HT8UD6eT5jCcQe26RJAjVyzE9vZhUEkNx9aWL2tiE3oPOfnkeDUk3HLfiJ/ ze3g== X-Gm-Message-State: APjAAAXL5I7u+0lIdCiKkFgfJapJ+hrxtjn6bPl2BkAHOfEiWujxNnCr 6AO8DcVzAQCCIVsJhNefyMUT/fy7 X-Google-Smtp-Source: APXvYqxyMjn/Hox80gl35AgKS1irbyjjZ8Z90f+3TXUH9F83pAsKP3PMjn1UhEgp6hOzwEPrxKXqAw== X-Received: by 2002:a05:600c:ca:: with SMTP id u10mr398443wmm.33.1558713705120; Fri, 24 May 2019 09:01:45 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:11 +0300 Message-Id: <20190524160118.31134-14-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 13/20] 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) 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 1afad31b49..781f5882ac 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1760,6 +1760,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; @@ -1767,7 +1782,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]; @@ -1926,14 +1941,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.21.0 From nobody Thu May 2 12:05:39 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=1558714770; cv=none; d=zoho.com; s=zohoarc; b=hP/VbLO3IQppz/2bLSBATOR9VHpO1xuZaVkWtcT8TPVRKtq9uxRMUQrS0y29Qp4YoemgrkzRUM6ywXQnvql9CWM9tbXG5RKtqq1c2S4/Z5Qu1WXe0cWWKEsrApDi4vnj9l2WS03frUGHk/AGa6jKYoq2awLKkrO3i9JoNhdpgPc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714770; 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=ni+e0LhW6YWUs24EBh3Q0RNwpZ46aTDH74CutNl7AtE=; b=me6RsGIRiAUr4T3Z4ccL6fy15G9I052GXjyMSpNoyao4l0d3RGDvnvKZVQ6x46L6R5zG6GSkFO1YvYTdhsFGR2kCmNWtfxRcc1iHEzle2h0ztFCJiMxeTfWArB7YG64FXiUSppvKCVUVRAS4BoAVB03KBiKRr56Nk3pzJLm0EEY= 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 1558714770917488.2794069088767; Fri, 24 May 2019 09:19:30 -0700 (PDT) Received: from localhost ([127.0.0.1]:57117 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCuk-00021I-Rh for importer@patchew.org; Fri, 24 May 2019 12:19:26 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37345) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdt-0004JJ-Vc for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdr-0002Kb-VW for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:01 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:37576) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdp-00027f-Ry for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:58 -0400 Received: by mail-wr1-x442.google.com with SMTP id e15so10568925wrs.4 for ; Fri, 24 May 2019 09:01:47 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01:46 -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=ni+e0LhW6YWUs24EBh3Q0RNwpZ46aTDH74CutNl7AtE=; b=pE5rdpaKqOR5Acs7ZSgEkGFaq2pAHBT/ugrZ47t+/7ac0dBOTEL8mNRbL4mr1qYOj9 TRbKAW8Sp1nyBCOvvnxnfPswK1Y/u1je+dL0KYzADbPGJBW7zpBJMA7K45FpeUQ//q1m Vs3E6faxdfIt37F7vEcK3l+Hkg6nZCHZ+8KVXSYu2QKq1SUGqSA+/klN2sm0lhqMMh6c dBhWVpwj+ZhD2wttecgmOIPOiUG5klrGnyXz9GmnIezMKpfnaEbZ46Rnl8pLG9OV3fOg +nWeKzX2OE+i/W623TED8JfauRLPQxK7Htmthbmj09tymkPuGFtnJtetjKIIXXI1uQzg 5hEg== 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=ni+e0LhW6YWUs24EBh3Q0RNwpZ46aTDH74CutNl7AtE=; b=Nd5Gwh2oCOOxfZ1F653hlILC/30KOMI5+uChe6r6OJoPseBC3ijaGoU7UVgmSY1J5k H2SrvaSBGlywsf0yTUxzmKDDrENbkZkhggIKEZxPzOfkJ1gXfHCNs7VrtpaGlVX5+NBq yDKpUa/PyAD/tSKrdnjlUrsIgs895sSwEL68GX5yV+AzbxHIyKZ2hCDpupYER7P3v/tG /s1L/Zm/lRUxsMCTy9qC49uF3LTVBJpzmdOcpXZDbQ9yf7NDFs7bC5v2+NCrK8QAMRDB Fdopj8RjNNA0poDPbU6yIkVsqlRxGIUGbExMvAIUTseMLUM6TieP8axxAEGD2tsP8Oc6 Fu5g== X-Gm-Message-State: APjAAAUKJXeMJ+UArDvqTbFObsy8rCD717axa/+v5SIsbSBM8Wb2d4Wa c4g76VG+Lz8Hn41od7eIzMrqcnbf X-Google-Smtp-Source: APXvYqzwlJ84LqaWNbnbyVmNlDeL/dIWksNtBTE/XYR1LRDP4x3loR5Yr2FJ6gtmtIvaXKZgNn6mBA== X-Received: by 2002:adf:edce:: with SMTP id v14mr59554670wro.94.1558713706693; Fri, 24 May 2019 09:01:46 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:12 +0300 Message-Id: <20190524160118.31134-15-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-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 v11 14/20] 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 | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 781f5882ac..b35acc679c 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1775,6 +1775,25 @@ 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) +{ + if (gdb_ctx->num_params >=3D 2 && gdb_ctx->s->current_syscall_cb) { + target_ulong ret, err; + + ret =3D (target_ulong)gdb_ctx->params[0].val_ull; + err =3D (target_ulong)gdb_ctx->params[1].val_ull; + gdb_ctx->s->current_syscall_cb(gdb_ctx->s->c_cpu, ret, err); + gdb_ctx->s->current_syscall_cb =3D NULL; + } + + if (gdb_ctx->num_params >=3D 3 && gdb_ctx->params[2].opcode =3D=3D (ui= nt8_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; @@ -1916,28 +1935,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 "L,L,o0" + }; + cmd_parser =3D &file_io_cmd_desc; } break; case 'g': --=20 2.21.0 From nobody Thu May 2 12:05:39 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=1558714419; cv=none; d=zoho.com; s=zohoarc; b=fWSFnE7Jj439X5fkOmfAoOoswgl2DbHpNwxPYt7PKRCRENgkHGJkrwdDqP22on2BHdF8UGEwM9eOQ7nqxq+ydw4gYbQhVbcKFp8xHR2jTl+9ZnPXVV/y4tpq1zBfyuSVtRUwjGZlbauNMcEg4r0/10Y5IwK4cMsqeu5fK/L+U+4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714419; h=Content-Type: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=9CqEJZQFyLkk/ZYymWcSznPDKfDfQZ0RNP4fPMiLpuM=; b=A4hQvPBHHbkUgVoMgHwOfLC8hhYWfyWbJsL07E4OAsXWzp2kqcnD3g9mjRDm+je1w3B0cpCP86HluJ8CpgBoy4lAr71+ojo4pxtVvJpaDzpLpaxKbYzzlow+CQLCIjzgfYl4YF2QHKnXruTnbQqSRLlHluAlXUTfwuVoQMkJj6Q= 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 1558714419232557.1696519895374; Fri, 24 May 2019 09:13:39 -0700 (PDT) Received: from localhost ([127.0.0.1]:57035 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCp1-0005dD-8S for importer@patchew.org; Fri, 24 May 2019 12:13:31 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCds-0004I4-2Q for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdp-0002Hf-Ux for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:59 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:38540) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdp-00029k-NJ for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:57 -0400 Received: by mail-wr1-x443.google.com with SMTP id d18so10555316wrs.5 for ; Fri, 24 May 2019 09:01:49 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.47 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=9CqEJZQFyLkk/ZYymWcSznPDKfDfQZ0RNP4fPMiLpuM=; b=DZtJYQU+kmsznDu3TgCCrliCLzd9rjW6uZ7fGnIQtJbAlh0snzOfq5jvyRK7qVXRgc yvvhzc/KGBFn3007KmydcB62ZqFLBWCoywaiOpc/H/9IOMXhKVldCdsyhWc6lt56mTBw XCpUh99kc5+HN8f9kc31Nmz2dSv36Ept3QWHSZGKD+uuA6Ya2ClJO6fKv9O0R+BP5kns uFAhvVHrEXm+tLUVh8HNlheKWQnyvunP8dZW6eevrzHCttmJTwsp9DnDMWSRvtC64DVi UV+sNwOD159M/Opgz5ra74VMxFP2XcaqSLaXifJPJtfw7N6f1IhBUqSt7gWDEkIa15Hz t+PA== 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=9CqEJZQFyLkk/ZYymWcSznPDKfDfQZ0RNP4fPMiLpuM=; b=B7KikNsSf35fSD0Bp+o8d51kDFn3P+Atprdyj+oeoR5NQyIIkmYAFaSZdEGZcXs1a5 ZSczj8nybYR5ylD1S87yS0u+tuBcOak0qwaM5jpIIqE6B9rgXiT3VJRSmwyFN0pNTEVe 6geaoB2aBZPQf6J7VdogUKgQFkDVtdQCB18BiXh4+uidjvd3kEwele0ZkOtQPDcffO1R I/izgSihbPhTLhN/Fmr4i15OumPqdDscXpuPItevg0mBNRsWQMdY2X6+7F6tphVrQh4m 97GfPBowKDzdpC3U5US4mcW54zrrp+f0/fWh13mCdtf7LDexwxFQvkuMrB3AZoAqS4Gt ntzQ== X-Gm-Message-State: APjAAAV0lvqgkLgWcV09n0rZARjwzcCqrUbItbIdt+v9JmIiBT8ILmHz m9DE2zyXeZM0ZbVev5HeNPfMxoJv X-Google-Smtp-Source: APXvYqyVfepDKIc1aZ0jlVMa1O95805/Cz4zxfjHEebZEKTRRPkq8K3GxRgQ+PHsIbPFhWbjVsw97w== X-Received: by 2002:adf:dd43:: with SMTP id u3mr4007wrm.313.1558713708144; Fri, 24 May 2019 09:01:48 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:13 +0300 Message-Id: <20190524160118.31134-16-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 15/20] 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) 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 b35acc679c..a8b81121c5 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1794,6 +1794,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; @@ -1926,13 +1936,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.21.0 From nobody Thu May 2 12:05:39 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=1558714583; cv=none; d=zoho.com; s=zohoarc; b=gn0jHogaHvHKsVglrF9x/eAni6aCE5GfsUhbpzcwyRG4KZvj9lOhft8i0DA5xMTMCXQOHCA2SA5LXblaHnMdc3t949wPwjkr5UBLkjpCy/spdoWNLPCfWNmwQKFDHCRnzb8dwj35cclydGmHDFjT1ZWKFjotrj79/IPimTDVzmc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714583; 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=N6fV9vFZuFUbts5NVK6xRLuUvhBBupBkozAmmE2Nj1U=; b=iYKsnuy3wMBJqdhkPB89w+DzSUyV4k0V6Zida4tf95HIt0unzgRv/jLPs6LAL/ef7HlMceDXCNmmcgllropsrcgejKPyDpJV1LKht6wYVew+tCKZ6mNc9azqfs/D9PJu+QpK7NEfg7SNqozNuhP3Jdl81VIJBvEK758Z5yOkJcM= 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 1558714583180636.9334088047185; Fri, 24 May 2019 09:16:23 -0700 (PDT) Received: from localhost ([127.0.0.1]:57093 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCrb-00082P-TW for importer@patchew.org; Fri, 24 May 2019 12:16:11 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37304) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCds-0004I6-2P for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdp-0002HC-N6 for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:59 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:40831) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdn-0002Bn-Kn for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:55 -0400 Received: by mail-wr1-x442.google.com with SMTP id t4so2278599wrx.7 for ; Fri, 24 May 2019 09:01:52 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01: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=N6fV9vFZuFUbts5NVK6xRLuUvhBBupBkozAmmE2Nj1U=; b=pxBAdde1xy/IMZ99IwNQzSwOKy6mSVQtGN344tnfFnI+MFOtne7mcV6UPQ8k7Xe8qb aKNk7bKU1KKYgpFjVxkNkXat/MGO5ICXUwnrtJe7zbGN6ZrfM/VXzqMtP9VetIRwmLFD OAZbpn4gTBzfYOe4mSwFEq1NfOe8K/UKyaZ2BwZGr4M/m+RIIAKelcQ4KqwtrMhgJt83 vo5mPxEXKHblEZcdNnEyvCcdEgY/fVEPKi1UwnuA42+6k+/5Z6vPfjPR8jOU4mwS1VP4 TvkUCVvUkPnYEtNDl7rEQluhPvk8enScs/D9lCZQSG6xHGxyg5Kojinef8Xi8hgY8pz6 MIgw== 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=N6fV9vFZuFUbts5NVK6xRLuUvhBBupBkozAmmE2Nj1U=; b=qgRNwBqh44rVtVM2nSuM40+8DdQpOhVfeiOSoSQixai5d7EY19xGJUCFXjEXJTAjUP jZoqGnQZi5+FZDsu5ZxKgj7mG/cFl9dYa6u4xFDQGNXRmL7JjSdrzKNmvUfBmnyg3XzW VFmL6MgZAKuKvpAPbPwgDuhO/3KFn06xMr1QIVxOe8tpE+IXPNMv5sEtmk0WhHIYvRwg cP4Ab2bBWu5OrF5d12xyBWNiaV9ldIh5ZCV1bijS9GeEil4n+Zew0iImzFlD1AB0VuYO /zWQzuyZTMSB/U5CZFb20GTIqCO/POQ3kc3BHNfmmTQRXbTjFH81HdlIEAqNxd22QPDG y60Q== X-Gm-Message-State: APjAAAUtkETrHBF3f0z20CUFg/iNXZGCbcg6yf6rkGNC1iJF2u3hGBKi m8WObcVq4QXyhmKC4qBi39HTcVOp X-Google-Smtp-Source: APXvYqybstn3EBOCSOwr+Y4oihcx3SvaKabyQXvfOExeZUcuOfb9zYnoFiKYH4OG1rntIrYGiCLakA== X-Received: by 2002:a05:6000:10b:: with SMTP id o11mr547774wrx.337.1558713710667; Fri, 24 May 2019 09:01:50 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:14 +0300 Message-Id: <20190524160118.31134-17-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-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 v11 16/20] 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 a8b81121c5..3773b23581 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1804,6 +1804,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, ""); + } +} + +static void handle_v_attach(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + GDBProcess *process; + CPUState *cpu; + char thread_id[16]; + + pstrcpy(gdb_ctx->str_buf, sizeof(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; @@ -1811,7 +1911,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]; @@ -1860,66 +1960,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.21.0 From nobody Thu May 2 12:05:39 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=1558714974; cv=none; d=zoho.com; s=zohoarc; b=Z5ZRM09x6vIKDkTucSuIWbRn9FI6sb3mwVwETgdbuiGvdCL8/RH2KozBw8TXHPlVMaKnEqQ1L6h10eec+dlUm9I8Hl440jFQ8xxLIWcU/fbiDcERn6aZpMf6zh7UcqgCU5byqhr52Q74kZw4PSc+x83dwsFLXJdGGyrd4U3YUHQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714974; 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=sP4d58yWNnupURYwoPvCriT7epyMrZ73O7L1x6qXUYA=; b=KLltNqRmrYQpk8q88mtNpxKXM1hMVrKgrtt4/SDE4avEeDN4JRYT8G/UeECvNYyxGrO+TqwEiocUJUt+dUofqC/Cf9zLxwGZxzN8cv17f5AIWdFdy7O/WrC23hsUJ2Yqo9qrL31mbudzy9i8er2+tUlaDPsd9qAVXlIdaxIPq/g= 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 1558714974310915.3804237428476; Fri, 24 May 2019 09:22:54 -0700 (PDT) Received: from localhost ([127.0.0.1]:57190 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCxt-0004il-1w for importer@patchew.org; Fri, 24 May 2019 12:22:41 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37344) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdt-0004JI-VS for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdp-0002HP-QS for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:01 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:39720) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdn-0002Cd-Q2 for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:57 -0400 Received: by mail-wm1-x343.google.com with SMTP id z23so5685701wma.4 for ; Fri, 24 May 2019 09:01:53 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.50 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01:51 -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=sP4d58yWNnupURYwoPvCriT7epyMrZ73O7L1x6qXUYA=; b=L7ICqso9KTm5a01MO5mn+Pfe5lmZdDVUytzXFa42e49SgUHPpHJpVNxRRhmJ/rH7BC fSaG8rYeVX/1PQNCRy7xIDexeTMHkjnCXAUW3//kBfjM/MOIf0JV4FfqFbAN5VIAlfLd LzOywUUQj88Uo89Mr4ZtNt9/H2yTyUsy/GcoqNbc3rJnIOyHY7nZ+ixUpZJNX5Q+7QZP h5PI+1FphXtxmtmQATTVXpxiL7C+mnrtHY+OsCspvMRRaBUensW35/IhmbxXLGrrkiyF GY7CiNL3Ab6Y+f1dq99zZw2Eu03JDSqsCkhEx0xb3Ky4Cgj8+SrtFybAju0lZk4ssWrN 7cFg== 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=sP4d58yWNnupURYwoPvCriT7epyMrZ73O7L1x6qXUYA=; b=OvuoydPx9UMUyZ9zVnjrNANN8F6vHN/RtXxlz8j4Xhguw/AWJ8FXJGk8JmG8y/06vY +Lyvvg5mleKjD1lZyR3UyZQFlIdaQrRAZj5ztvbmIOPDsMGtZIMcULtvmqKLr19dhMXY sWeQss86Z1WEHpXIJqhiiK7H7pY38WhY2m2Tb5AV/kMyXfWLZ9aYNQOHjoaEV2hnWGBv YOTHZzc423I3klxPUaaPLBVc3Qgb5FkmrKKB1kgycj9NPb0iw2c+vB6kU7dSjiCqQsv4 oPOMRAEVYMFbR1AOpy1TTCBxoN3uzr+TFRbH1kyb2pXSfRMgkTTsL4KyHsQ4uueH2CEZ VSZw== X-Gm-Message-State: APjAAAUscL7CPZ3IYAgMCfmInuIcBBDmPvpMpESh3ZRe4ffdawLF7vqG HfacyBVk/cKOFPIaLj91d6rcUswg X-Google-Smtp-Source: APXvYqyt1GuBoHZaFDT34cJnEZTjGTh2ZFFRzC8qsCOw1K4Z2b+uQfh4jJVCoM5OMtfwtcHpKTQ9UQ== X-Received: by 2002:a1c:7a0d:: with SMTP id v13mr448253wmc.44.1558713712056; Fri, 24 May 2019 09:01:52 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:15 +0300 Message-Id: <20190524160118.31134-18-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-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 v11 17/20] gdbstub: Implement generic set/query (Q/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" The generic set/query packets contains implementation for varioius sub-commands which are required for GDB and also additional commands which are QEMU specific. To see which QEMU specific commands are available use the command gdb> maintenance packet qqemu.Supported Currently the only implemented QEMU specific command is the command that sets the single step behavior. gdb> maintenance packet qqemu.sstepbits Will display the MASK bits used to control the single stepping. gdb> maintenance packet qqemu.sstep Will display the current value of the mask used when single stepping. gdb> maintenance packet Qqemu.sstep:HEX_VALUE Will change the single step mask. Signed-off-by: Jon Doron --- gdbstub.c | 559 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 373 insertions(+), 186 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 3773b23581..57a05fd6a4 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 @@ -1904,18 +1896,368 @@ static void handle_v_commands(GdbCmdContext *gdb_c= tx, void *user_ctx) } } =20 -static int gdb_handle_packet(GDBState *s, const char *line_buf) +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; - uint32_t pid, tid; - int ch, type; + + 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 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 */ + { + .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", + }, + { + .handler =3D handle_query_qemu_supported, + .cmd =3D "qemu.Supported", + }, +}; + +static GdbCmdParseEntry gdb_gen_set_table[] =3D { + /* Order is important if has same prefix */ + { + .handler =3D handle_set_qemu_sstep, + .cmd =3D "qemu.sstep:", + .cmd_startswith =3D 1, + .schema =3D "l0" + }, +}; + +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 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; + } + + 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, ""); + } +} + +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]; - target_ulong addr, len; const GdbCmdParseEntry *cmd_parser =3D NULL; =20 trace_gdbstub_io_command(line_buf); @@ -2117,183 +2459,28 @@ static int gdb_handle_packet(GDBState *s, const ch= ar *line_buf) } break; case 'q': - 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; + { + 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; } - if (is_query_packet(p, "Attached", ':')) { - put_packet(s, GDB_ATTACHED); - break; + break; + case 'Q': + { + 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.21.0 From nobody Thu May 2 12:05:39 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=1558714606; cv=none; d=zoho.com; s=zohoarc; b=AtWVKSA2dMCzAfZio6OaQVbwguguCosC2OAOUWNPOLb6GRCSMrCwZV1Vs4d+MDsd0zfP8XRLqVzKW6QXEIeOxSsIr4r7+JvAReY2TBBGTQeTmv3XlvO3RnTo4/wg1PCM61E7W+CMtPvPdnx8JbQNinSN3Fe2b2jfQ9BTO3JTxyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714606; 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=+NF9Yo7d6jp3qeQ6UNfGvcDfxpGOYkZyN8rNP8o5Qo8=; b=gbEZx9FYuEs+hootyU5W8l8ZeC/JT7DVmS0FOFyshctaYvH4CpYmXoGtCr431EH9Fwsi1exuwEUrYWm9DFybWPvQ8KwO6gG9Ixsr1TRTtKAAtKEXZEYiPruNd5/RG59SKbZH27QUxOvRgC8giZmK1bpGilI8UTnoGneh66pLiTc= 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 1558714606709714.1885308998772; Fri, 24 May 2019 09:16:46 -0700 (PDT) Received: from localhost ([127.0.0.1]:57089 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCrU-0007vG-8i for importer@patchew.org; Fri, 24 May 2019 12:16:04 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37300) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCds-0004I1-1C for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdq-0002Hu-2d for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:59 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:39721) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdp-0002DJ-RA for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:57 -0400 Received: by mail-wm1-x344.google.com with SMTP id z23so5685756wma.4 for ; Fri, 24 May 2019 09:01:54 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.52 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01:52 -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=+NF9Yo7d6jp3qeQ6UNfGvcDfxpGOYkZyN8rNP8o5Qo8=; b=Dgh72pA7oISYq7pA8dc4iwSQaKR1MkJiMuAOvEuDiFl12N70c8FVzOe/uowyB+k8H1 a/3OvDHFxMjMmdR5GTK3Tz/YQPsZEv4Q6RGsqZXlmJWPMivZdH6/usqIcDi1/ioTI/A+ hOkkHD1ByDpQ2n6TKTKUkDXBCanENaYzzq0v26zhR3xGKwYhOp0A8XHUke7P2+VyFIXN +VusM7iE3i6rT3olxG+B64oFuuHoYalPKYVqKZFukIdVrqG6uCL5G2cQfNG2uCrmk2aV tDS+mwMRRmM1Y2MyiUbdBY7egxSmoeuLAaZ5grMmdaw2iaiT6bGkAzY0Zhm0IT3ZBpbi Dd7g== 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=+NF9Yo7d6jp3qeQ6UNfGvcDfxpGOYkZyN8rNP8o5Qo8=; b=kRhd0aeDMB7EPuH3h7euLcpdgjraAcnHrNFJIjb6eA+038JOSGgpC3NPZecNe9DBqv stCGLXI3qKIegQ+oe0lDfffOqaW3PCe0RVAqCfqmy1NNpMOmBSxBfZm+HP3zyMXn1WSe ntOERnRbanmxvDY5IRWyDBhXtDb9X0WjEy2itWH5O82a9UBCZRWl5fIuhALuxES7k6Qw DL6mHo56C8nDTeu/P7EaxBHgNomZZG2AE+OiUP7htDox6f1VjWtKr/LRWDWQNMApg9oA XRbKqb4qBwD2qnlATLCuwRIyG94WSBCApo0YsejflPmNfSuExOEVOgWMkZRjX3x1+CHz ICNA== X-Gm-Message-State: APjAAAUVgk75qjfTHkQjOVJBxucZ43QE7BDgC0jwU6BQCCYKfeEfLjNX 9J8D74FkIOhIWDw6A5dcsKhpqd9B X-Google-Smtp-Source: APXvYqwcPlCCPZvVEPQpIo4dPs+YYXfSp7eORfiWC8pjxZKbXNW0Ke3HjqlFn5ArJ4lchXqCPafDCA== X-Received: by 2002:a1c:c016:: with SMTP id q22mr15816329wmf.6.1558713713214; Fri, 24 May 2019 09:01:53 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:16 +0300 Message-Id: <20190524160118.31134-19-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-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 v11 18/20] 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" Note: The user-mode thread-id has been correctly reported since bd88c780e6 Signed-off-by: Jon Doron --- gdbstub.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 57a05fd6a4..097b7d1231 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2251,13 +2251,29 @@ static void handle_gen_set(GdbCmdContext *gdb_ctx, = void *user_ctx) } } =20 +static void handle_target_halt(GdbCmdContext *gdb_ctx, void *user_ctx) +{ + char thread_id[16]; + + 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 an 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); @@ -2269,15 +2285,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.21.0 From nobody Thu May 2 12:05:39 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=1558714264; cv=none; d=zoho.com; s=zohoarc; b=VAW0/KKzFH+qbejcZuVuAvsqWZIo3K1ULE6tEvFlvHusQJvhNiewpdKiY+JtyF5PGU/1GCX2AUAGKCKBbYrxXWXp6D9H1pAwJowFdztZmTd4Wiv//kdMfhWLtgYoplxH8ISNYwhfqUDsyo1aLjHtKIlsRf5jxQh3s464QqkGTHA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714264; h=Content-Type: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=YsLm+sh0ogQXpVuCi/Ts5K2BgX2LI/eiSGa1dNH+IPU=; b=Kn5K2ClXeSBT3Qr/EwTsYClvqHlq5oNUyxih44z2uqvTQMyM0wKOjIM6NPcog1f639eVAvVNQ1gHcYT9cDegOj1+4LcAKQvoPehcIVuqp1mCTK6m4JQO3pJhkiHoiMKCMTARONth8xwjZMYrVWelGeV5M+rr4ArGcmusINGaVUE= 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 1558714264161666.5133020696192; Fri, 24 May 2019 09:11:04 -0700 (PDT) Received: from localhost ([127.0.0.1]:57010 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCmS-0002wn-2q for importer@patchew.org; Fri, 24 May 2019 12:10:52 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37303) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCds-0004I5-2M for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCdp-0002Hl-VV for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:59 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:36845) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdp-0002Fo-Ot for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:57 -0400 Received: by mail-wm1-x342.google.com with SMTP id v22so2500094wml.1 for ; Fri, 24 May 2019 09:01:56 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.53 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01:54 -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=YsLm+sh0ogQXpVuCi/Ts5K2BgX2LI/eiSGa1dNH+IPU=; b=nC73GDvjYDlRaR0hPVh2e/sAokG6TJY1lqZ67XpZXRRhxxaDGhID0oyUOutf+VQ0M8 T31ahb4SgWyT8Sp4F/0Ga3IDk5zceN04WnijWgL2Y2/uaaeVGARPLrQ1/2sR2tbEgtI/ Ehkx8KnvLZoxR7tu4ormojWMmzLqP/Hr8I6jI0deYPVZX0szhR/5QsPbukzE7S+xTwoE QlOz32sN5Sd200vncREP7N4kHLTlRMVkol8FEclZz96c4GA7GJ5idDHi9EIjzO2tjrxu g7ioNZRhajpY/86Xj4V6I3mDqhCmVDS+uhe8x++PmuTqhOvpELxoa9LMKQXRyr3nknik 0qbA== 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=YsLm+sh0ogQXpVuCi/Ts5K2BgX2LI/eiSGa1dNH+IPU=; b=N3d2i4KN/eZOCd1Tmyq6P7OEpB/VDI14fjXCJ8htbF/Hu5HwuSWqB8kKZxwZb03VP7 V3/ZTxl5LQeqP8MyMa30fwS8i0Qe5MqVwlX92/AKE/WCM8YZ+DIfjwNkPWfxVbacZ3eG K0Ya/snh8peLEk15xuvlMwF8lS8rYd+CYZWhyfOnajsREu1g/Swe/XDWrYZb9bVCoTNi p6cvgX/RhSVrl9KO9BFPG6YFQlqz7kjmdvBYuxZe2+s8ElKrhHVsDbbo0uUxRLEz1QY+ 10/K65cTlWV4BEgkfkx23s3r9Up+AWVqGlhX42Jc7Fb/+d2xu8Y90V26obgLfjzZhY6j ngSg== X-Gm-Message-State: APjAAAU72U3PcwL6jSRg4JEru7pP9s7sTXPYXmOZ9MOnz6k79aiJpd6b 0Oshjym7QKuDXaLZs1AmyAUqxs1E X-Google-Smtp-Source: APXvYqznP2rkEGcL/CofW7922FeYWEaDJbBYEwYXkUCQMhn1og3untgjuwWMA7NtAFZeN0zMPJlriQ== X-Received: by 2002:a1c:1bc4:: with SMTP id b187mr389463wmb.155.1558713714647; Fri, 24 May 2019 09:01:54 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:17 +0300 Message-Id: <20190524160118.31134-20-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-1-arilou@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 v11 19/20] 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) 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 097b7d1231..9dd934a079 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2270,17 +2270,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; @@ -2497,8 +2491,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.21.0 From nobody Thu May 2 12:05:39 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=1558714778; cv=none; d=zoho.com; s=zohoarc; b=cuESWohAGdOGSo889JvNJriDc0iw0sasTkQqUt2DK6SYV/i5TBYvqwXAPGs/7Jd+uLGZDq46vK+iKG1Zan4kFyaiU5kWLIcl8+CCKTV1baAfeuZCutI2qJH6v59myJgBs2vKZ+vezdHcp0d9i3Dn8SlYJvmjup3ffuD8k5BeH4Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1558714778; 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=3B88NpQFOs8DC+2595MWdyNpg+oQZ5roeXs0f+YNp/4=; b=KjkY87ZzWvQVHp7wuP41sewXPKjEp+CcUSWzCPPCLvLUzbJDWk7YslmoRhENROAfjSzTl2EBZznQh4nzMCKg8oE837H5DtKSUTEmDWmr1h6fOclI5fEJwZ8Ij7AWZ/Dxny9ScOZPHG/S80nTeY6ZTKXhZoIhWk7TmZPHPPCG4ww= 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 1558714778903283.60693005982523; Fri, 24 May 2019 09:19:38 -0700 (PDT) Received: from localhost ([127.0.0.1]:57119 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCup-00025e-Rs for importer@patchew.org; Fri, 24 May 2019 12:19:31 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37347) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hUCdt-0004JK-Vq for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hUCds-0002L1-3m for qemu-devel@nongnu.org; Fri, 24 May 2019 12:02:01 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:39722) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hUCdp-0002GS-Th for qemu-devel@nongnu.org; Fri, 24 May 2019 12:01:59 -0400 Received: by mail-wm1-x344.google.com with SMTP id z23so5685960wma.4 for ; Fri, 24 May 2019 09:01:57 -0700 (PDT) Received: from jondnuc.lan ([176.230.64.37]) by smtp.gmail.com with ESMTPSA id s11sm370863wro.17.2019.05.24.09.01.54 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 24 May 2019 09:01:55 -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=3B88NpQFOs8DC+2595MWdyNpg+oQZ5roeXs0f+YNp/4=; b=uR9XXGNSGYbTn8mGMFrR36oD8IXNHZBi5KHBd79lAyhR3D2MXLz1iR5TQ9AWBlUdl+ jsYZdS6AYujJFVtpHlYlK2/Y3aCyMUCaC0Ms25IWPe6WAIPsge4DDHnay0a9y3gSIbrE 51ubfCk9hPkZwUZUdZndGYDnbUOI9s3ka4JHw7jChshDFQPPjzEzQZqF+kcPnXzH+DkS iUAnb6QAcoFNSa7K3UWmJmaN0c0+DTzW1r+1Dc6vPKQpou2sPOLNdhqIERKVoGe23xCz mn0KkhNqV2m45w+pWkJpMmc6PxRg93e0sUyb3SaHfoEnPLM8tIDtaj5rxbNa/kFCTZPX 7OOA== 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=3B88NpQFOs8DC+2595MWdyNpg+oQZ5roeXs0f+YNp/4=; b=S38qqpuCGMn07G4InngpdvvSZO3sQ5HO2XF69gcz8iG2vu7pEHULamIB6CRdT3rID4 XP0MrEt4YJZ1LKz0tasHjBkmqedEJWrNMHO01KjkVdBgb/N6nBJf1VuFHxwP5D6PcSSy SIjt5avyO8ji4FZoelF32MCwsXkmiCZqc4M0DdkMYjI58U6s8R0Q2NqkPilWEuw74XlK 2qavaXugOS99Uqo/rFAoDcXfT1iVGKynxPWQqpHKOrRq9f+QPcAL/C7ZYlX4shRiuCq3 8K749exb4Lusx8KDfY3D9BzCjZF5FEYCVUCLew5xzJ0TioDAWcDahcHoUwXRwEMfuo9G gAIw== X-Gm-Message-State: APjAAAUny03P0Ze7k/LVdWp9Um/1xSoZ5H1s2mKweHs++qjEVec6Zl1P x/qBAIIr9CRxLs2x36H5ShH53AYk X-Google-Smtp-Source: APXvYqxz05oUm048sRpz5T+IkYj/IzMtKQle1hXiTssqPE31qa0TRKXLKSShIdqxCqrQt0cGONByfQ== X-Received: by 2002:a1c:ca19:: with SMTP id a25mr413533wmg.105.1558713715795; Fri, 24 May 2019 09:01:55 -0700 (PDT) From: Jon Doron To: qemu-devel@nongnu.org Date: Fri, 24 May 2019 19:01:18 +0300 Message-Id: <20190524160118.31134-21-arilou@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190524160118.31134-1-arilou@gmail.com> References: <20190524160118.31134-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 v11 20/20] 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 | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 9dd934a079..c9269319d8 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -46,11 +46,27 @@ #define GDB_ATTACHED "1" #endif =20 +#ifndef CONFIG_USER_ONLY +static int phy_memory_mode; +#endif + 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 +#ifndef CONFIG_USER_ONLY + if (phy_memory_mode) { + if (is_write) { + cpu_physical_memory_write(addr, buf, len); + } else { + cpu_physical_memory_read(addr, buf, len); + } + return 0; + } +#endif + + cc =3D CPU_GET_CLASS(cpu); if (cc->memory_rw_debug) { return cc->memory_rw_debug(cpu, addr, buf, len, is_write); } @@ -2118,8 +2134,36 @@ 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"); + snprintf(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), "sstepbits;sstep"= ); +#ifndef CONFIG_USER_ONLY + pstrcat(gdb_ctx->str_buf, sizeof(gdb_ctx->str_buf), ";PhyMemMode"); +#endif + put_packet(gdb_ctx->s, gdb_ctx->str_buf); +} + +#ifndef CONFIG_USER_ONLY +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"); } +#endif =20 static GdbCmdParseEntry gdb_gen_query_set_common_table[] =3D { /* Order is important if has same prefix */ @@ -2201,6 +2245,12 @@ static GdbCmdParseEntry gdb_gen_query_table[] =3D { .handler =3D handle_query_qemu_supported, .cmd =3D "qemu.Supported", }, +#ifndef CONFIG_USER_ONLY + { + .handler =3D handle_query_qemu_phy_mem_mode, + .cmd =3D "qemu.PhyMemMode", + }, +#endif }; =20 static GdbCmdParseEntry gdb_gen_set_table[] =3D { @@ -2211,6 +2261,14 @@ static GdbCmdParseEntry gdb_gen_set_table[] =3D { .cmd_startswith =3D 1, .schema =3D "l0" }, +#ifndef CONFIG_USER_ONLY + { + .handler =3D handle_set_qemu_phy_mem_mode, + .cmd =3D "qemu.PhyMemMode:", + .cmd_startswith =3D 1, + .schema =3D "l0" + }, +#endif }; =20 static void handle_gen_query(GdbCmdContext *gdb_ctx, void *user_ctx) --=20 2.21.0