From patchwork Mon Mar 14 04:17:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604889 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=P/FawBe8; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3DX23kwz9sG2 for ; Mon, 14 Mar 2022 15:18:04 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3DX0dMCz30HZ for ; Mon, 14 Mar 2022 15:18:04 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=P/FawBe8; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::534; helo=mail-pg1-x534.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=P/FawBe8; dkim-atps=neutral Received: from mail-pg1-x534.google.com (mail-pg1-x534.google.com [IPv6:2607:f8b0:4864:20::534]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DF4d9Rz303H for ; Mon, 14 Mar 2022 15:17:47 +1100 (AEDT) Received: by mail-pg1-x534.google.com with SMTP id t187so12700372pgb.1 for ; Sun, 13 Mar 2022 21:17:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=b1Q53NeNU0zjYZWNhFHufQKkqWRB66gA4zzsadL2dV0=; b=P/FawBe8biWnd8edDsDu28BJJ7BSvthIawtfQH9EI8j692xqfetcysIoU9i+9Obequ 8xSQItRIAz5GXYaheTRLVeBAKNi8n44FgU9eTq/yQ9NzPKv4GaigbY3JX06KvbGLZHwq wGjIc5d/qK4b5MT89Dc+/6wrTGAVHWqSgK0jmLEQwviO0/JoU5B9KV1gMv6FMn6QDx8v gqyTyzbhxl340ZFFv4++w16ECNkDZ/4F3XZWXOTlH81+Aiqv8N7C821FLbky+o+qaLgd MzXfPSwKFL/G6rKqS0Wh6CvmZRBUv/pGvOR3ekxyRt12mQ6+JhtGOLzeMRk87wkAdczY IFgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=b1Q53NeNU0zjYZWNhFHufQKkqWRB66gA4zzsadL2dV0=; b=cwJI5EM6ZDkkWg1QvTVf5X5x+5EB7TfWz7N1S0iPSCE9URpeH6R/z7svyxI4WlO8aj VsL0pMv2SsSpntVWIXn4Jo4lBCs1h7Rm9vg6VZviWLnyMl2D1H7XYf5+BC0DNDHV+qWQ xtAsOwhnrG8tivb2Qiazj/zlYGWHpH3m+Te6H3r29KAynLDmvBV6le2AN4k936sX/RtL wFnFyfjwWsAIC++OjmN8b3fzHbniyPbvRebS6/jfSHKlaN3GEjdR+x7dR2ES90Pnak4e wbuOZ/9wag7gtD9uv8Ix8RCB5HtyyLT+uOK0PEI17OTRnzlPaLEzHDO9sJnyx8uY4Fy6 XajQ== X-Gm-Message-State: AOAM530jpxu8LG7vImY6vIOaPiSNyTy8BPZj9oX/9UCLEkeKGNSB5+9l 7o8IIizZfOBgl4YnkbMlgqRH/njzToI= X-Google-Smtp-Source: ABdhPJysJbF/6so4BE3PCg33EiJfgQeyFbF3VlzgcgjgAwmbGNEuEkWN5U8mldIH6swa0/EcZu8v6g== X-Received: by 2002:a63:4186:0:b0:378:b438:c7ac with SMTP id o128-20020a634186000000b00378b438c7acmr18176809pga.291.1647231465031; Sun, 13 Mar 2022 21:17:45 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.17.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:17:44 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:21 +1000 Message-Id: <20220314041735.542867-2-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 01/14] gdbserver: update gdb_parser_precompile.c, rename detach command X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" gdb_parser_precompile.c had not been updated since adding support for the detach command, resulting in client error messages like this: Detaching from program: /home/npiggin/images/vmlinux, process 42000 Remote doesn't know how to detach The command handler should not be named disconnect, because that is a different concept in gdb (disconnect leaves the target in the same state, detach ends the debugging session). Signed-off-by: Nicholas Piggin --- src/gdb_parser.rl | 4 +- src/gdb_parser_precompile.c | 231 ++++++++++++++++++------------------ src/pdbgproxy.c | 6 +- src/pdbgproxy.h | 2 +- 4 files changed, 124 insertions(+), 119 deletions(-) diff --git a/src/gdb_parser.rl b/src/gdb_parser.rl index 6259b96..93213e4 100644 --- a/src/gdb_parser.rl +++ b/src/gdb_parser.rl @@ -76,7 +76,7 @@ set_thread = ('H' any* @{cmd = SET_THREAD;}); - disconnect = ('D' @{cmd = DISCONNECT;} + detach = ('D' @{cmd = DETACH;} xdigit+ $hex_digit %push); # TODO: We don't actually listen to what's supported @@ -94,7 +94,7 @@ commands = (get_mem | get_gprs | get_spr | stop_reason | set_thread | q_attached | q_C | q_supported | qf_threadinfo | q_C | - v_contq | v_contc | v_conts | put_mem | disconnect ); + v_contq | v_contc | v_conts | put_mem | detach ); cmd = ((commands & ^'#'*) | ^'#'*) $crc ('#' xdigit{2} $hex_digit @end); diff --git a/src/gdb_parser_precompile.c b/src/gdb_parser_precompile.c index 715cdd7..cee2fd0 100644 --- a/src/gdb_parser_precompile.c +++ b/src/gdb_parser_precompile.c @@ -5,10 +5,10 @@ #include #include -#include "pdbgproxy.h" +#include "src/pdbgproxy.h" -#line 105 "src/gdb_parser.rl" +#line 108 "src/gdb_parser.rl" static enum gdb_command cmd = NONE; @@ -29,56 +29,56 @@ static const char _gdb_actions[] = { 1, 2, 9, 1, 2, 10, 1, 2, 11, 1, 2, 12, 1, 2, 13, 1, 2, 14, 1, 2, 15, 1, 2, 16, - 1, 2, 17, 1, 2, 18, 0, 3, - 1, 18, 0, 3, 6, 2, 1, 3, - 6, 3, 1 + 1, 2, 17, 1, 2, 18, 1, 2, + 19, 0, 3, 1, 19, 0, 3, 6, + 2, 1, 3, 6, 3, 1 }; -static const char _gdb_key_offsets[] = { - 0, 0, 2, 13, 14, 20, 26, 29, - 37, 45, 46, 53, 61, 68, 77, 84, - 92, 99, 107, 114, 121, 126, 128, 130, - 132, 134, 136, 138, 140, 142, 149, 151, - 153, 155, 157, 159, 161, 163, 165, 167, - 168, 170, 172, 174, 176, 178, 180, 182, - 184, 186, 188, 190, 192, 194, 196, 199, - 202, 203, 204, 206 +static const unsigned char _gdb_key_offsets[] = { + 0, 0, 2, 14, 15, 21, 27, 30, + 38, 46, 53, 60, 61, 68, 76, 83, + 92, 99, 107, 114, 122, 127, 129, 131, + 133, 135, 137, 139, 141, 143, 150, 152, + 154, 156, 158, 160, 162, 164, 166, 168, + 169, 171, 173, 175, 177, 179, 181, 183, + 185, 187, 189, 191, 193, 195, 197, 200, + 203, 204, 205, 207 }; static const char _gdb_trans_keys[] = { - 3, 36, 35, 43, 45, 63, 72, 77, - 103, 109, 112, 113, 118, 35, 48, 57, - 65, 70, 97, 102, 48, 57, 65, 70, - 97, 102, 3, 35, 36, 3, 36, 48, - 57, 65, 70, 97, 102, 3, 36, 48, - 57, 65, 70, 97, 102, 35, 35, 48, - 57, 65, 70, 97, 102, 35, 44, 48, - 57, 65, 70, 97, 102, 35, 48, 57, - 65, 70, 97, 102, 35, 44, 58, 48, + 3, 36, 35, 43, 45, 63, 68, 72, + 77, 103, 109, 112, 113, 118, 35, 48, + 57, 65, 70, 97, 102, 48, 57, 65, + 70, 97, 102, 3, 35, 36, 3, 36, + 48, 57, 65, 70, 97, 102, 3, 36, + 48, 57, 65, 70, 97, 102, 35, 48, 57, 65, 70, 97, 102, 35, 48, 57, + 65, 70, 97, 102, 35, 35, 48, 57, 65, 70, 97, 102, 35, 44, 48, 57, 65, 70, 97, 102, 35, 48, 57, 65, + 70, 97, 102, 35, 44, 58, 48, 57, + 65, 70, 97, 102, 35, 48, 57, 65, 70, 97, 102, 35, 44, 48, 57, 65, 70, 97, 102, 35, 48, 57, 65, 70, - 97, 102, 35, 48, 57, 65, 70, 97, - 102, 35, 65, 67, 83, 102, 35, 116, - 35, 116, 35, 97, 35, 99, 35, 104, - 35, 101, 35, 100, 35, 58, 35, 48, - 57, 65, 70, 97, 102, 35, 117, 35, - 112, 35, 112, 35, 111, 35, 114, 35, - 116, 35, 101, 35, 100, 35, 58, 35, - 35, 84, 35, 104, 35, 114, 35, 101, - 35, 97, 35, 100, 35, 73, 35, 110, - 35, 102, 35, 111, 35, 67, 35, 111, - 35, 110, 35, 116, 35, 59, 63, 35, - 99, 115, 35, 35, 3, 36, 3, 35, - 36, 0 + 97, 102, 35, 44, 48, 57, 65, 70, + 97, 102, 35, 65, 67, 83, 102, 35, + 116, 35, 116, 35, 97, 35, 99, 35, + 104, 35, 101, 35, 100, 35, 58, 35, + 48, 57, 65, 70, 97, 102, 35, 117, + 35, 112, 35, 112, 35, 111, 35, 114, + 35, 116, 35, 101, 35, 100, 35, 58, + 35, 35, 84, 35, 104, 35, 114, 35, + 101, 35, 97, 35, 100, 35, 73, 35, + 110, 35, 102, 35, 111, 35, 67, 35, + 111, 35, 110, 35, 116, 35, 59, 63, + 35, 99, 115, 35, 35, 3, 36, 3, + 35, 36, 0 }; static const char _gdb_single_lengths[] = { - 0, 2, 11, 1, 0, 0, 3, 2, - 2, 1, 1, 2, 1, 3, 1, 2, - 1, 2, 1, 1, 5, 2, 2, 2, + 0, 2, 12, 1, 0, 0, 3, 2, + 2, 1, 1, 1, 1, 2, 1, 3, + 1, 2, 1, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, @@ -88,7 +88,7 @@ static const char _gdb_single_lengths[] = { static const char _gdb_range_lengths[] = { 0, 0, 0, 0, 3, 3, 0, 3, - 3, 0, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -98,71 +98,72 @@ static const char _gdb_range_lengths[] = { }; static const short _gdb_index_offsets[] = { - 0, 0, 3, 15, 17, 21, 25, 29, - 35, 41, 43, 48, 54, 59, 66, 71, - 77, 82, 88, 93, 98, 104, 107, 110, - 113, 116, 119, 122, 125, 128, 133, 136, - 139, 142, 145, 148, 151, 154, 157, 160, - 162, 165, 168, 171, 174, 177, 180, 183, - 186, 189, 192, 195, 198, 201, 204, 208, - 212, 214, 216, 219 + 0, 0, 3, 16, 18, 22, 26, 30, + 36, 42, 47, 52, 54, 59, 65, 70, + 77, 82, 88, 93, 99, 105, 108, 111, + 114, 117, 120, 123, 126, 129, 134, 137, + 140, 143, 146, 149, 152, 155, 158, 161, + 163, 166, 169, 172, 175, 178, 181, 184, + 187, 190, 193, 196, 199, 202, 205, 209, + 213, 215, 217, 220 }; static const char _gdb_indicies[] = { 1, 2, 0, 4, 5, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 3, 4, - 3, 14, 14, 14, 15, 16, 16, 16, - 15, 18, 19, 20, 17, 1, 2, 21, - 21, 21, 0, 1, 2, 16, 16, 16, - 0, 4, 22, 4, 24, 24, 24, 23, - 4, 25, 24, 24, 24, 23, 4, 26, - 26, 26, 23, 4, 25, 27, 26, 26, - 26, 23, 4, 28, 28, 28, 23, 29, - 25, 28, 28, 28, 23, 4, 30, 30, - 30, 3, 4, 31, 30, 30, 30, 3, - 4, 32, 32, 32, 3, 29, 32, 32, - 32, 3, 4, 33, 34, 35, 36, 3, - 4, 37, 3, 4, 38, 3, 4, 39, - 3, 4, 40, 3, 4, 41, 3, 4, - 42, 3, 4, 43, 3, 4, 44, 3, - 4, 45, 45, 45, 3, 4, 46, 3, - 4, 47, 3, 4, 48, 3, 4, 49, - 3, 4, 50, 3, 4, 51, 3, 4, - 52, 3, 4, 53, 3, 4, 54, 3, - 4, 55, 4, 56, 3, 4, 57, 3, - 4, 58, 3, 4, 59, 3, 4, 60, - 3, 4, 61, 3, 4, 62, 3, 4, - 63, 3, 4, 64, 3, 4, 65, 3, - 4, 66, 3, 4, 67, 3, 4, 68, - 3, 4, 69, 3, 4, 70, 71, 3, - 4, 72, 73, 3, 4, 74, 4, 75, - 1, 2, 0, 18, 19, 20, 17, 0 + 8, 9, 10, 11, 12, 13, 14, 3, + 4, 3, 15, 15, 15, 16, 17, 17, + 17, 16, 19, 20, 21, 18, 1, 2, + 22, 22, 22, 0, 1, 2, 17, 17, + 17, 0, 4, 23, 23, 23, 3, 24, + 23, 23, 23, 3, 4, 25, 4, 27, + 27, 27, 26, 4, 28, 27, 27, 27, + 26, 4, 29, 29, 29, 26, 4, 28, + 30, 29, 29, 29, 26, 4, 31, 31, + 31, 26, 24, 28, 31, 31, 31, 26, + 4, 32, 32, 32, 3, 4, 33, 32, + 32, 32, 3, 4, 34, 35, 36, 37, + 3, 4, 38, 3, 4, 39, 3, 4, + 40, 3, 4, 41, 3, 4, 42, 3, + 4, 43, 3, 4, 44, 3, 4, 45, + 3, 4, 46, 46, 46, 3, 4, 47, + 3, 4, 48, 3, 4, 49, 3, 4, + 50, 3, 4, 51, 3, 4, 52, 3, + 4, 53, 3, 4, 54, 3, 4, 55, + 3, 4, 56, 4, 57, 3, 4, 58, + 3, 4, 59, 3, 4, 60, 3, 4, + 61, 3, 4, 62, 3, 4, 63, 3, + 4, 64, 3, 4, 65, 3, 4, 66, + 3, 4, 67, 3, 4, 68, 3, 4, + 69, 3, 4, 70, 3, 4, 71, 72, + 3, 4, 73, 74, 3, 4, 75, 4, + 76, 1, 2, 0, 19, 20, 21, 18, + 0 }; static const char _gdb_trans_targs[] = { 1, 2, 2, 3, 4, 59, 3, 9, - 10, 3, 16, 18, 20, 50, 5, 0, - 58, 6, 2, 7, 2, 8, 9, 10, - 11, 12, 13, 14, 15, 4, 17, 18, - 19, 21, 3, 30, 40, 22, 23, 24, - 25, 26, 27, 28, 29, 29, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 39, - 41, 42, 43, 44, 45, 46, 47, 48, - 49, 3, 51, 52, 53, 54, 55, 3, - 56, 57, 56, 57 + 11, 12, 3, 18, 9, 20, 50, 5, + 0, 58, 6, 2, 7, 2, 8, 10, + 4, 11, 12, 13, 14, 15, 16, 17, + 19, 9, 21, 3, 30, 40, 22, 23, + 24, 25, 26, 27, 28, 29, 29, 31, + 32, 33, 34, 35, 36, 37, 38, 39, + 39, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 3, 51, 52, 53, 54, 55, + 3, 56, 57, 56, 57 }; static const char _gdb_trans_actions[] = { - 0, 60, 1, 3, 0, 3, 33, 3, - 3, 27, 21, 30, 3, 3, 7, 0, - 18, 3, 63, 0, 9, 7, 36, 24, - 71, 67, 71, 67, 71, 5, 15, 12, - 15, 3, 42, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 39, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 45, + 0, 63, 1, 3, 0, 3, 33, 39, + 3, 3, 27, 21, 30, 3, 3, 7, + 0, 18, 3, 66, 0, 9, 7, 15, + 5, 36, 24, 74, 70, 74, 70, 74, + 15, 12, 3, 45, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 42, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 48, 3, 3, 3, 3, 3, 51, - 3, 3, 54, 57 + 48, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 51, 3, 3, 3, 3, 3, + 54, 3, 3, 57, 60 }; static const int gdb_start = 58; @@ -172,17 +173,17 @@ static const int gdb_error = 0; static const int gdb_en_main = 58; -#line 116 "src/gdb_parser.rl" +#line 119 "src/gdb_parser.rl" void parser_init(command_cb *callbacks) { -#line 181 "src/gdb_parser.c" +#line 182 "src/gdb_parser.c" { cs = gdb_start; } -#line 120 "src/gdb_parser.rl" +#line 123 "src/gdb_parser.rl" command_callbacks = callbacks; } @@ -193,7 +194,7 @@ int parse_buffer(char *buf, size_t len, void *priv) char *pe = p + len + 1; -#line 197 "src/gdb_parser.c" +#line 198 "src/gdb_parser.c" { int _klen; unsigned int _trans; @@ -349,38 +350,42 @@ _match: {cmd = SET_THREAD;} break; case 11: -#line 80 "src/gdb_parser.rl" - {rsp = "1";} +#line 79 "src/gdb_parser.rl" + {cmd = DETACH;} break; case 12: -#line 81 "src/gdb_parser.rl" - {rsp = "QC1";} +#line 83 "src/gdb_parser.rl" + {rsp = "1";} break; case 13: -#line 82 "src/gdb_parser.rl" - {rsp = "multiprocess+;vContSupported+";} +#line 84 "src/gdb_parser.rl" + {rsp = "QC1";} break; case 14: -#line 83 "src/gdb_parser.rl" - {rsp = "m1l";} +#line 85 "src/gdb_parser.rl" + {rsp = "multiprocess+;vContSupported+";} break; case 15: #line 86 "src/gdb_parser.rl" - {rsp = "vCont;c;C;s;S";} + {rsp = "m1l";} break; case 16: -#line 87 "src/gdb_parser.rl" - {cmd = V_CONTC;} +#line 89 "src/gdb_parser.rl" + {rsp = "vCont;c;C;s;S";} break; case 17: -#line 88 "src/gdb_parser.rl" - {cmd = V_CONTS;} +#line 90 "src/gdb_parser.rl" + {cmd = V_CONTC;} break; case 18: -#line 90 "src/gdb_parser.rl" +#line 91 "src/gdb_parser.rl" + {cmd = V_CONTS;} + break; + case 19: +#line 93 "src/gdb_parser.rl" {command_callbacks[INTERRUPT](stack, priv);} break; -#line 384 "src/gdb_parser.c" +#line 389 "src/gdb_parser.c" } } @@ -393,7 +398,7 @@ _again: _out: {} } -#line 130 "src/gdb_parser.rl" +#line 133 "src/gdb_parser.rl" return 0; } diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index bb7c7b3..3e27ba0 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -95,9 +95,9 @@ static void stop_reason(uint64_t *stack, void *priv) send_response(fd, TRAP); } -static void disconnect(uint64_t *stack, void *priv) +static void detach(uint64_t *stack, void *priv) { - PR_INFO("Terminating connection with client. pid %16" PRIi64 "\n", stack[0]); + PR_INFO("Detach debug session with client. pid %16" PRIi64 "\n", stack[0]); send_response(fd, OK); } @@ -416,7 +416,7 @@ command_cb callbacks[LAST_CMD + 1] = { v_conts, put_mem, interrupt, - disconnect, + detach, NULL}; int gdbserver_start(struct pdbg_target *thread, struct pdbg_target *adu, uint16_t port) diff --git a/src/pdbgproxy.h b/src/pdbgproxy.h index 1fe67f2..1910fdb 100644 --- a/src/pdbgproxy.h +++ b/src/pdbgproxy.h @@ -3,7 +3,7 @@ enum gdb_command {NONE, GET_GPRS, GET_SPR, GET_MEM, STOP_REASON, SET_THREAD, V_CONTC, V_CONTS, - PUT_MEM, INTERRUPT, DISCONNECT, LAST_CMD}; + PUT_MEM, INTERRUPT, DETACH, LAST_CMD}; typedef void (*command_cb)(uint64_t *stack, void *priv); void parser_init(command_cb *callbacks); From patchwork Mon Mar 14 04:17:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604887 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=m4guo/w6; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3DW0SKpz9sG2 for ; Mon, 14 Mar 2022 15:18:02 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3DR6sXmz30Jm for ; Mon, 14 Mar 2022 15:17:59 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=m4guo/w6; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::436; helo=mail-pf1-x436.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=m4guo/w6; dkim-atps=neutral Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DF4sBlz306R for ; Mon, 14 Mar 2022 15:17:49 +1100 (AEDT) Received: by mail-pf1-x436.google.com with SMTP id l8so2699337pfu.1 for ; Sun, 13 Mar 2022 21:17:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=V+AjWHd3x/R6GgDUI9i5WXiBYJ0VlSxaFjJp8n7w5GM=; b=m4guo/w6rHBGUuXHi9zmH5mSBmxIC/kUSRqhFOvcD5tpmggPAIW0ZxvKXZ56EXHHGL lr8Zrup09aZgfUC2ki8ekO60CoCUu54BHvqmOxzWyv6Tc0kYa8d/pqsxViFYKJ22b2al dRtMuTaY3zrOB48U9G1ejCiNwUEcuaEpFVcTdGVxdgg9W92bQtf+Ls4jXbf/NjR+wARW JiAmwRricarHmHyTT/VDHdOwrRFezXckgYM47u8jqh4xjd0Jo33NvmNDOwXeojMPzA+i MDf/3zKoFUEfTu8bXZkrqRA02y4ukDua8MrZzAZaQEPRg4A46JoUorWkBnWb+wtQnv7x 7Xvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=V+AjWHd3x/R6GgDUI9i5WXiBYJ0VlSxaFjJp8n7w5GM=; b=F0PYyUWzjUl79oSzPgjLikBHh2ZojIWpKoxb4+5UFc6MUunlKNP2Jr2AgEPxrPl9v3 hfZCQ4F7Ui3UwN3LcICdjpW1hmgiAPMxPn5v6OsLrU+WGl6V3QpsooEBH+eoEX1y+tJN F38bwXcnE4rQxkRuFPsfGp7r5DxyFoqzKOZL2lR3Et5EL4JbZ87sddGJpJ9Nymq9da12 9V4QSCMhnp87jCpfKXiFc4k8d8jtHOOPqdO+TGRc8dyh4JTrwakKWnAhtTHnk4UYGOio 59vuX2M2/f+SOx6iiQC3LgX0h9WSQxUveYbrAaR40AlVGdGaGUyzzyFDr4Ubv3VRDfoj jOgQ== X-Gm-Message-State: AOAM530wz7dADEX2N9GCLJggGQl2kD9wpugYb+8/2jHbs9YZXWDKmdjK v5436wibOkYNG9akyFJ0ElzkhfviPs0= X-Google-Smtp-Source: ABdhPJwfoy267QvftFoZDcNhKKyrLBI1x5bIYkgdO2ZERr/qAExAcIneTB0PW+H027DNW44Ke5zHjg== X-Received: by 2002:a63:1113:0:b0:378:deae:5840 with SMTP id g19-20020a631113000000b00378deae5840mr18613660pgl.87.1647231466875; Sun, 13 Mar 2022 21:17:46 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.17.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:17:46 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:22 +1000 Message-Id: <20220314041735.542867-3-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 02/14] gdbserver: include argument in command line help text X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Include argument in command line help text. Signed-off-by: Nicholas Piggin Reviewed-by: Joel Stanley --- src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index 3da15cc..7d4ce7a 100644 --- a/src/main.c +++ b/src/main.c @@ -118,7 +118,7 @@ static struct action actions[] = { { "threadstatus", "", "Print the status of a thread" }, { "sreset", "", "Reset" }, { "regs", "[--backtrace]", "State (optionally display backtrace)" }, - { "gdbserver", "", "Start a gdb server" }, + { "gdbserver ", "", "Start a gdb server listening on " }, { "istep", " |0", "Execute istep on SBE" }, { "geti2c", " ", "Read n bytes from i2c device" }, { "puti2c", " ", "Write a value to i2c device" }, From patchwork Mon Mar 14 04:17:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604890 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=WluAuvTb; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=112.213.38.117; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dc2chjz9sG2 for ; Mon, 14 Mar 2022 15:18:08 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Db2FMjz30KL for ; Mon, 14 Mar 2022 15:18:07 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=WluAuvTb; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::42b; helo=mail-pf1-x42b.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=WluAuvTb; dkim-atps=neutral Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DH00lYz303H for ; Mon, 14 Mar 2022 15:17:50 +1100 (AEDT) Received: by mail-pf1-x42b.google.com with SMTP id t5so13188943pfg.4 for ; Sun, 13 Mar 2022 21:17:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wRVLl+/l6ZXs5FcOhBj7CBOZKbB46ydv7W/ZQvZinsI=; b=WluAuvTbX1/HWGdF59FK11125+YhXEj8QFmTB55xRg07rc7pNuMNr1gEvDzU8ymq2N WZm38ERHZ6XB+NKRtqTPQ7R+pUH4v+M4aEskCBLpu8qiMjSgNjCq+hjnz7ZMmdifyYv+ 4GRJKd4V4XBZ3mZAVvhzZNmtJUDKeY+rzjPMtW0kIyA03K/If31KMIpKkhXyQkU73HGY kRHOO4oa+gEG9NDYDV4RyKJaIlxzPTBZ5/tnxjaMMqrhVhYUtGc9TD4vx8MfHYSHH6nl J9SiR4OLdmdEA5bwTfUkn1K/awNGVIIP/D5f/xYHZkSjMK76vvXMMiwJfYGhhDBN2OxQ 1CFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wRVLl+/l6ZXs5FcOhBj7CBOZKbB46ydv7W/ZQvZinsI=; b=S97vER7059tupi3bBjNxPloeiESE9qn1rrYG38uOekPpZkUtSW1RJSdcTBMLHdkjJl LriDn0bLrl8nfnZAiCDpA7/YDWFc462n+K8EqTId6Q88HlzgztUgsJgoOT5UH/o1M15R PDm60H7SGO7cf+MkbVLSj73RCIKQrm/H9MbWzK6fUc9cwbz+A5WCnlW1ITtkn5TSgveI p/BP+fHrxh+49o8PAWv63uspfFVbuSjIf2sO67J4f4UBe5Orw6le1eSRZXPVob3bWMiX WDH5G24v2J7YmDHqhMAyBH8kWlt5v4t8J4S7jG981uHbQ/dh/dYsgiO8IgylR2syXrRi OEKg== X-Gm-Message-State: AOAM532ZxUanWQjTDYL/wXjSOMhM42prEgmUC5jRWXdpa9uVsWfEBvM8 kck17VPch7UEOuD59+N1LULdQohRHv4= X-Google-Smtp-Source: ABdhPJxO2Bz82pOP+fFC9x1mCxsOwm0rZFVJTO8ZHtzPyzmdrtFeCZo86RLN+vlx3J5H4wlPaS7eXA== X-Received: by 2002:a65:5501:0:b0:380:c32f:23eb with SMTP id f1-20020a655501000000b00380c32f23ebmr18350029pgr.307.1647231468744; Sun, 13 Mar 2022 21:17:48 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.17.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:17:48 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:23 +1000 Message-Id: <20220314041735.542867-4-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 03/14] gdbserver: print some client/server info X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Rather than silently listening this gives some idea things are working. Signed-off-by: Nicholas Piggin Reviewed-by: Joel Stanley --- src/pdbgproxy.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index 3e27ba0..e32f518 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -448,6 +448,8 @@ int gdbserver_start(struct pdbg_target *thread, struct pdbg_target *adu, uint16_ return -1; } + printf("gdbserver: listening on port %d\n", port); + FD_ZERO(&active_fd_set); FD_SET(sock, &active_fd_set); @@ -463,17 +465,29 @@ int gdbserver_start(struct pdbg_target *thread, struct pdbg_target *adu, uint16_ for (i = 0; i < FD_SETSIZE; i++) { if (FD_ISSET(i, &read_fd_set)) { if (i == sock) { + char host[NI_MAXHOST]; + struct sockaddr saddr; + socklen_t slen; int new; - new = accept(sock, NULL, NULL); + + new = accept(sock, &saddr, &slen); if (new < 0) { perror(__FUNCTION__); return -1; } - if (fd > 0) + if (getnameinfo(&saddr, slen, + host, sizeof(host), + NULL, 0, + NI_NUMERICHOST) == 0) { + printf("gdbserver: connection from gdb client %s\n", host); + } + + if (fd > 0) { /* It only makes sense to accept a single client */ + printf("gdbserver: another client already connected\n"); close(new); - else { + } else { create_client(new); FD_SET(new, &active_fd_set); } @@ -481,6 +495,7 @@ int gdbserver_start(struct pdbg_target *thread, struct pdbg_target *adu, uint16_ if (read_from_client(i) < 0) { destroy_client(i); FD_CLR(i, &active_fd_set); + printf("gdbserver: ended connection with gdb client\n"); } } } From patchwork Mon Mar 14 04:17:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604891 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Ce+uWC+3; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=112.213.38.117; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dc2v7Qz9sGN for ; Mon, 14 Mar 2022 15:18:08 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dc1P4Bz30HX for ; Mon, 14 Mar 2022 15:18:08 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Ce+uWC+3; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::52d; helo=mail-pg1-x52d.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Ce+uWC+3; dkim-atps=neutral Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DJ6khJz303H for ; Mon, 14 Mar 2022 15:17:52 +1100 (AEDT) Received: by mail-pg1-x52d.google.com with SMTP id bc27so12689991pgb.4 for ; Sun, 13 Mar 2022 21:17:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+ZIXsujvzCD470l/nVoPLWyhs6kP+VU1Nbb1zAo00vg=; b=Ce+uWC+3fv0xn30C5le5XV1oA+pjTl2hCPjesyjs/LnE5Ue0h83DZwt2tBG2LBWF66 YF99a7juG4m76v7XfWMq2Nk8As8PZ+4SYjQVPNyW65bXptCFo0E8GG8B5rni4RLw9n4p EMg+NBpRITvnFSoCUix6ZKwGAtRMAvwe6+61OiLRj8hUmesmPFeEZm7u/b1RdDd1I93x RuuMNRezl9Xb+to0kE98BeoKnIPuKzCMQXRrjTBVc1PeGgVQwLBzOPO0fpCKpFMp2FDV AIhUUpXGIM2CGn6nX11st7Itj1kIIvrmvCkJFUQHlvvPIyc3romUTiqOO93EpO9+JkL4 CvrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+ZIXsujvzCD470l/nVoPLWyhs6kP+VU1Nbb1zAo00vg=; b=EpvjF1LRw3WEyUsTlgyxIrLKk1q+s+bNkAzO4gjIcBEN6YWhgIJzd0+2Va7eKQqJ4e QH0SU7rguDy/oFWKhYRVPIUUoUISjECwK9sMi1fz53DDlvYEICWtfFZVPrAzd90+Xhx7 J+MfwbuILweVcF4dWnaACrjg8y6o00uVnT9B8D5KIpYxeMcKTPgM7R4eMD7UzfNEXWv4 3HBQqcsaBMkMCQdBIqiXRwIqQckV445GzDzoTzucmW8pQ8X15WEi/l/0HTv/J+WQ+bzQ xvFkBlLhpOFEHgPzEb00goXx6OVehbAqmmWD8KuIdBCUbWpWvV7xedK8NQtfQ5YWdBwq PCnQ== X-Gm-Message-State: AOAM5330W3/zvtzZ0pQROZZLE9em1bOjimDiDPkTOaPa+vPZ2zNvsPzx r5MK8wm4MzbMyOgEgeGizulktss8PM0= X-Google-Smtp-Source: ABdhPJyLTLhuX8TVt9+2eY14dnGhFrjzmRsBy2YvQKEfFMgFzc4QvsTCOUxLXFeF2Jsml1vs+GEb4w== X-Received: by 2002:a63:540b:0:b0:380:a069:c53c with SMTP id i11-20020a63540b000000b00380a069c53cmr18834531pgb.31.1647231470750; Sun, 13 Mar 2022 21:17:50 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.17.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:17:50 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:24 +1000 Message-Id: <20220314041735.542867-5-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 04/14] gdbserver: Make command static X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" The command array is local, make it static. Signed-off-by: Nicholas Piggin Reviewed-by: Joel Stanley --- src/pdbgproxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index e32f518..5a8b5f9 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -405,7 +405,7 @@ static int read_from_client(int fd) return 0; } -command_cb callbacks[LAST_CMD + 1] = { +static command_cb callbacks[LAST_CMD + 1] = { cmd_default, get_gprs, get_spr, From patchwork Mon Mar 14 04:17:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604892 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=jtuhzMSA; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dd1fYqz9sG2 for ; Mon, 14 Mar 2022 15:18:09 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dd0Zztz30NB for ; Mon, 14 Mar 2022 15:18:09 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=jtuhzMSA; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::434; helo=mail-pf1-x434.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=jtuhzMSA; dkim-atps=neutral Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DL6GPpz2xY3 for ; Mon, 14 Mar 2022 15:17:54 +1100 (AEDT) Received: by mail-pf1-x434.google.com with SMTP id h2so9186001pfh.6 for ; Sun, 13 Mar 2022 21:17:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oTu8Ykfg8kYPZz0Emy5+Ntw4elstj3qe1ojulAnWhgg=; b=jtuhzMSAoYYk7V+xn7OaP61vxoqynWQrLPCj2ggWfo8ZdykHpVrE6hsQo4H4k9ddRT 9H34Ckpk9QCDMpvyYuscZsvaPP5G79RXHm9+rxCFN/IkJTT+/orlA00MbHHjS3ijzX8x 8PuwPLdwIBHsh8kboQjg8Q90zybTmqbqCSb31zdYojjFyXQwnI9E86ZYSdOQPRze+aeV 7F/+zOmmRFdO4f1AU6UMovHxqrPL0Fp0UiIb7VuAjyv9cpfhvO8AQYTcEskwchPOTujo b4e3B8+VRieBI0CQNT6dj8YPKeAVPgRg5vbT/i9XlGCf5OMuDD/N6H+uTWm7jPHS/0UD xghQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oTu8Ykfg8kYPZz0Emy5+Ntw4elstj3qe1ojulAnWhgg=; b=aFDf32DTb4u10d9Mc3MJISBsiwOVbVC8UyRMlm5l1akXFho7afvHYNM3No6RoNaHRw EEUiGJKk4aAHqfhQ3Kc+H/QgBmCszJ0htpxFrDJ4Hc1DymuT9eDhLTSHa1unhqfXz7O2 39E2Lixp805h7+czfpErFKJuoEo2iz1WPDI5U8LDrjGKlkwUnIHB69MKfBXt91QeDEOY lF0kdJzpuQ7zAp8zF7OykAa0/usO3ICU7nA2JvHaCNLg/J5APXXZfcUHUAHG9M7j6lXw jxb4PgLgnZKUoILCUQR98N70Zij7Wvput/RFGs1cyNL2YBAmNhqLuRG0v4Bpoj8Dk291 MNAA== X-Gm-Message-State: AOAM531npsLmN7yjAMF9DA0nTn8k/u28adXI/CPwr0Qr4fL7Qj/SocK3 /DyR+aRVxFBxfiCYcBNkIr6pfEEJiso= X-Google-Smtp-Source: ABdhPJyZTkH4lJtqDFda8hTaly2X8aRSeE+f1TjS+VKCsxBeyeQL1zm3LKCGpbawpSbr0vpwnRExwQ== X-Received: by 2002:a65:654f:0:b0:378:b8f6:ebe4 with SMTP id a15-20020a65654f000000b00378b8f6ebe4mr18272406pgw.399.1647231472711; Sun, 13 Mar 2022 21:17:52 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.17.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:17:52 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:25 +1000 Message-Id: <20220314041735.542867-6-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 05/14] gdbclient: use standard compatibility test calls X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Signed-off-by: Nicholas Piggin --- src/pdbgproxy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index 5a8b5f9..906ed2f 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -532,8 +532,8 @@ static int gdbserver(uint16_t port) // // Temporary until I can get this working a bit smoother on p9 - if (strcmp(thread->compatible, "ibm,power8-thread")) { - PR_ERROR("GDBSERVER is only tested on POWER8\n"); + if (!pdbg_target_compatible(thread, "ibm,power8-thread")) { + PR_ERROR("GDBSERVER is only available on POWER8\n"); return -1; } From patchwork Mon Mar 14 04:17:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604894 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=YCY/7+Tr; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Df5KHtz9sGN for ; Mon, 14 Mar 2022 15:18:10 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Df4Hq6z30HY for ; Mon, 14 Mar 2022 15:18:10 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=YCY/7+Tr; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::42d; helo=mail-pf1-x42d.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=YCY/7+Tr; dkim-atps=neutral Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DQ4Qwfz2yb9 for ; Mon, 14 Mar 2022 15:17:58 +1100 (AEDT) Received: by mail-pf1-x42d.google.com with SMTP id s11so13145128pfu.13 for ; Sun, 13 Mar 2022 21:17:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3D6heo1U0ptpz8JQCRUjCDPm7PjwXsx1VsuzAomYQ2M=; b=YCY/7+TrP5+kQjffdHkT0onSodxfemAiel/lG2IgX+zN2J6u7bX1EomtapRyMtki2E 5iC5U0CAJ0qLMcl0+4SYM/DHqYtkIy3XsRTuayq0y85bG7hYAal6ldH5uN51QYC5YZTH xIAbO0bfig5jx3IHe4qF5cQE84DBgqLhyn+QjqKxELmUkY5VQadOCywRJi57c4lB1arI MVmZwbdvKWeKGYovLzZqm5CH2u4/uK+UioedqSiYyCGIS5ELflAOEJEWZQhl6CPdKir2 Td40aOgUzwbrVnJB83gls+V54YN3bhcDazdny3+HzEvaYrWuq0+8BwTidmECG+l1BOiK S4nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3D6heo1U0ptpz8JQCRUjCDPm7PjwXsx1VsuzAomYQ2M=; b=iP4r4S77Ak51ttzNZ/y49rTadw71GFqr79I+POhcJJ9OD416bo1roSV9E9ZHH4xhcb v0GfXw7uez29WYTNc85SBA3VbDIYpy/zXoX0mvEkdS+T+dM7DKr6AnWiweXT3+FrZZZb 5bXAE5k5xS67yehLvNa6bGv5fHYFHSBF5S6cYcInQtvejMSFm2cQmBsLiIHHoaD5Sili RcSsK/uDADigVn3akd0jko/4Fk4qmPyWuSf6XqPbB+Kg8z/UC+YPeCvR7d6MjfzbfNtj x1qH6vcfxk6cv5atQamq4LAFWu5EBamFoCNZ1bGILDC0ayJuPQhPhfgOvJPXnYU+u/yY t30A== X-Gm-Message-State: AOAM531gGw9CW4aa/2HR8EzXyN9IwXAjuqrsDMafrIDp6JlUquPBtKKt fmFqyfDwggYl3XfIbL9hoTIh3MIrAVY= X-Google-Smtp-Source: ABdhPJy8qbbsvwDGhLRb2uvsE7xqqZnFscDEReEMxzk1MG6LHnmWwqDF0X8+djGBArZZ6RegCRGXCw== X-Received: by 2002:a65:6c16:0:b0:380:f45b:f1b2 with SMTP id y22-20020a656c16000000b00380f45bf1b2mr15821713pgu.65.1647231476458; Sun, 13 Mar 2022 21:17:56 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.17.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:17:56 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:27 +1000 Message-Id: <20220314041735.542867-8-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 06/14] gdbserver: fix read buffer overflow X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" buffer gets NUL terminated so read must return max of size-1. Signed-off-by: Nicholas Piggin Reviewed-by: Joel Stanley --- src/pdbgproxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index 906ed2f..78b1236 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -388,7 +388,7 @@ static int read_from_client(int fd) char buffer[BUFFER_SIZE + 1]; int nbytes; - nbytes = read(fd, buffer, sizeof(buffer)); + nbytes = read(fd, buffer, sizeof(buffer) - 1); if (nbytes < 0) { perror(__FUNCTION__); return -1; From patchwork Mon Mar 14 04:17:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604895 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=QSHXiKi/; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dg2PL6z9sG2 for ; Mon, 14 Mar 2022 15:18:11 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dg1gt8z30Lp for ; Mon, 14 Mar 2022 15:18:11 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=QSHXiKi/; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::431; helo=mail-pf1-x431.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=QSHXiKi/; dkim-atps=neutral Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com [IPv6:2607:f8b0:4864:20::431]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DS3rl8z30HJ for ; Mon, 14 Mar 2022 15:18:00 +1100 (AEDT) Received: by mail-pf1-x431.google.com with SMTP id z16so13194286pfh.3 for ; Sun, 13 Mar 2022 21:18:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=B9SHa583BEZRGeBXevpOLzGwaOOgfirJSsRAQpSODSk=; b=QSHXiKi/RHrLxCCDKDCfhl8lXd+PXcaOc206m6wdXpiHmHpA6la2VFLbxT4s4/tW8/ xkdrV9p4ZoWHXlfvlLm2yGZVcn37G2oI9+HLvyGn0fQYvZwVjruZU4idX9JFaaFEsSPC ZtqKru16eV0FnRjHxVV+37Wgt0VFc1wZDyGU7SYVP+yx/CvC/fL1yLQiO7lgaalwUOHU WLMFM5JbrBxp1tOoZ8886RWlkPnTFkbq0HfSeAxoK2l4sHXVVufc2BR6nP/+6MzOAdgJ JnodIinnrozJZmbFh77ZflJOqOlImQ0qk9/mEyYpB4arSNfTE8SqmcGymFgPm92QifmY 0KvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=B9SHa583BEZRGeBXevpOLzGwaOOgfirJSsRAQpSODSk=; b=hqC2Q/sS+yJIboBlcEhl32PGw2h1SNzx7fA1hZSTyNPqDTnt0bwCkpDxoP2dsqAjQH 1DllGdN2X2vbqooK3mUED224JVJwc/rJ3Wno3nP32x+J8aBPTzNAEOVIPu1J4KWquT2I rycp+ZZpbzpi0tZi656lDNi6u/gsHjAXFnM0jbo96CGNjPsaE8jT8dLLGBcCiYm8Y2zj AZ+a2O8AY3XpyAUmb1LQvhZmHEl9HnKT61wki3yqTIJiSUcmBVHrrLwb88wBuoLLeh4T CGh3dFZKRUsFWb5WtsNm7VSpl8ekWHWar9zVUUm0k+edQSK5nAajUYC8S4QutPhxsluJ o22A== X-Gm-Message-State: AOAM531dAQNeVBgm3yavrZvDjP/7PcuMnlFa3orw0bUQWuMBS4mtlNMa I+6pMA8TMNTM119eKyT73GKGY4K0S7U= X-Google-Smtp-Source: ABdhPJxkkeDIeUrK3xJ7qi7/hykGcjWhgu+SS6598ByAK4ljWV+kJyYqVNgXVlDJ50dNffftJJA3cg== X-Received: by 2002:a65:4c47:0:b0:37d:5eea:232d with SMTP id l7-20020a654c47000000b0037d5eea232dmr18797082pgr.536.1647231478363; Sun, 13 Mar 2022 21:17:58 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.17.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:17:58 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:28 +1000 Message-Id: <20220314041735.542867-9-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 07/14] gdbserver: fix interrupt double response X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Interrupt should not send a TRAP response, that should only be sent when the thread is stopped, which is what the main loop does after the interrupt performs the thread stop. Removing this prevents two TRAP responses being sent to the client after an interrupt. Signed-off-by: Nicholas Piggin --- src/pdbgproxy.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index 78b1236..ce52e9d 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -320,11 +320,8 @@ static void v_contc(uint64_t *stack, void *priv) static void interrupt(uint64_t *stack, void *priv) { - PR_INFO("Interrupt\n"); + PR_INFO("Interrupt from gdb client\n"); thread_stop(thread_target); - send_response(fd, TRAP); - - return; } static void poll(void) From patchwork Mon Mar 14 04:17:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604896 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=f+bBrlUW; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dg6gxvz9sG2 for ; Mon, 14 Mar 2022 15:18:11 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dg5w1Kz30Gk for ; Mon, 14 Mar 2022 15:18:11 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=f+bBrlUW; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::1032; helo=mail-pj1-x1032.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=f+bBrlUW; dkim-atps=neutral Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DV35qJz2yb9 for ; Mon, 14 Mar 2022 15:18:02 +1100 (AEDT) Received: by mail-pj1-x1032.google.com with SMTP id b8so13335301pjb.4 for ; Sun, 13 Mar 2022 21:18:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=f/3ukqQO/LSJnygcSs8p1KISonirWpRlG/nvdfFpk3g=; b=f+bBrlUWowjPpUu1cbUyNtWnAZEfwLhMnvagiBlCeCEf+BYT2wLQg4WnXWcq6WoKmi FTajo4EbKDv4oDdC7Vfx43mGf7tL0Ciwc4m3H7tkHiKvtZU++lxjkuYDRnXd/FrUzAxI PEFSZx5wcYCTH5fL6em4Y/QXYEBbRrTKS4Unz7UHeVGtwPSAZKVhpy8jEsaGteL3oehf KqRppHkcTAJE8SoL2tlhSF0vgdN2T4CK5n6Xj3aAXEFTffFkPIQjgfrX+q7Q85Nlszdp ENkdK8ON4rRCirS9CFASxNhFl0tB96jxwt93WRv6YuGoh0Nqnsu8axs+2C5tKaBgY7sL rzbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=f/3ukqQO/LSJnygcSs8p1KISonirWpRlG/nvdfFpk3g=; b=sNlAwuDhiNCsByXXyKwf9u6hO73kkeFXEuc1FKll6Apy65GBoVew06hrXvJ1rjmpiH HHT4YJZrHicZcXBpMAwVVjrTNIvjVK/hpwadFSHEhngaR1OBlMNefp3nOuivZsvnipKs YtK/mzJ+t1YXg6M+9ob95VIW/Ao5ZI1ictFJf1ehG1QOq8z8HQmI6dmeCxvZRL55m/Er pUlm/0wlVbko0Ao/7tB6pY1X7O7gtEmrwigd0JWGcis6FV5DFb62DYbnn2JMj6OaSZVC Z6QV/P8mhTJMXP/o7GVUzK8V1FUq0iLvUj16ykLnxaAr/s+JiRpsWzrJH3znhsY/aTLd HpvA== X-Gm-Message-State: AOAM530HBwp1tU0+CZPKC+uO5j1szLw+FgLy94hDOwqBB5E+wN++jJyK UJ/y/ZD1N9HGIf9XOJwGAOVZxxOIAHM= X-Google-Smtp-Source: ABdhPJz0dupmk6pDC8rMfisl2eeHv4E+GVbwg+4VQF/XO5+4HfCSAQzPEsF/bCcPZCE5HKrlJ0a+Og== X-Received: by 2002:a17:902:e890:b0:151:e9c1:6386 with SMTP id w16-20020a170902e89000b00151e9c16386mr21586886plg.40.1647231480232; Sun, 13 Mar 2022 21:18:00 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.17.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:18:00 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:29 +1000 Message-Id: <20220314041735.542867-10-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 08/14] libpdbg: thread_regs don't print regs X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" The gdbserver uses thread_getregs to send data to the client, printing to console is noisy. Push the printing into callers that want it. Signed-off-by: Nicholas Piggin Reviewed-by: Joel Stanley --- libpdbg/chip.c | 2 -- libpdbg/thread.c | 7 +------ src/thread.c | 2 ++ 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/libpdbg/chip.c b/libpdbg/chip.c index 79aeb35..6cbf48b 100644 --- a/libpdbg/chip.c +++ b/libpdbg/chip.c @@ -380,8 +380,6 @@ int ram_getregs(struct thread *thread, struct thread_regs *regs) CHECK_ERR(thread->ram_destroy(thread)); - thread_print_regs(regs); - return 0; } diff --git a/libpdbg/thread.c b/libpdbg/thread.c index 4a7523c..78a59b8 100644 --- a/libpdbg/thread.c +++ b/libpdbg/thread.c @@ -371,7 +371,6 @@ void thread_print_regs(struct thread_regs *regs) int thread_getregs(struct pdbg_target *target, struct thread_regs *regs) { struct thread *thread; - int err; assert(pdbg_target_is_class(target, "thread")); @@ -385,11 +384,7 @@ int thread_getregs(struct pdbg_target *target, struct thread_regs *regs) return -1; } - err = thread->getregs(thread, regs); - if (!err) - thread_print_regs(regs); - - return err; + return thread->getregs(thread, regs); } int thread_getgpr(struct pdbg_target *target, int gpr, uint64_t *value) diff --git a/src/thread.c b/src/thread.c index 8ddf4ae..76909d6 100644 --- a/src/thread.c +++ b/src/thread.c @@ -362,6 +362,8 @@ static int thread_regs_print(struct reg_flags flags) if (thread_getregs(thread, ®s)) continue; + thread_print_regs(®s); + if (flags.do_backtrace) { struct pdbg_target *adu; From patchwork Mon Mar 14 04:17:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604897 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=K8lkzpyM; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dh4j6Jz9sG2 for ; Mon, 14 Mar 2022 15:18:12 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dh3sfTz30MH for ; Mon, 14 Mar 2022 15:18:12 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=K8lkzpyM; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::629; helo=mail-pl1-x629.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=K8lkzpyM; dkim-atps=neutral Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DX5pgCz30KB for ; Mon, 14 Mar 2022 15:18:04 +1100 (AEDT) Received: by mail-pl1-x629.google.com with SMTP id z3so12478241plg.8 for ; Sun, 13 Mar 2022 21:18:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=faQCydlzL9/nx948RVjxwSWzDF8bLt4CntCyep4Hxog=; b=K8lkzpyMUiDTz7+FJZGD/ZG0HvANQ9BSfw/VFKWdNn3dLdfpOgmWB9rAKgXwz2zojc WoBpcZ/iWBET81fyqwEaj+NhxLG3zZqdutNsW6bw+obxLxSkYvttw7IkwvJkGyP+zQdF +x/+z3SWpaDgEJ+IyEM7+B7LqFiAaNWFWWWoMJJ6I56lS58GuX4aO2y5Bd0ZhV1z2PkG DE0xv935oINv8l7aKZfZKc4s8ATIgac47UoOCwfJKundRoJ1oGyb+PDQNwVxz6zJiqC8 X/5dfWdilHxCl+TtLNIiVGDK/iIKWsqyx6TtyzZkLKEC0aey5UQ0lt3ZjvbJ62Kgrc7T AiUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=faQCydlzL9/nx948RVjxwSWzDF8bLt4CntCyep4Hxog=; b=GcaQp7/Mg24Z6jtSFBRAJEOYUgWNehUoyySlXF20G1EaeQcVc7gy1Et8VyLlp3nIOA paoJc275bmDO11/VONwzQIBuQm7ajD3LvSstxfdmVSixEvRaysoi01qmEaXRosr+insX l57cEGOhVE26Y6myACQsjA3Tm6KLLSZG3z/LttOCg76k8+2ZzTbKsms9LFoyl8Lx/TAd DW5bXCnNeK4vDSHPqM1CLNi0sx6m/tAILn8ij2UjCzeDhIK5kVeMhmx9bG9cPOTK+nCS dUZyB7xh+aCz5dFS+vjWIXqq5zCNOzHhgtvB7P3kJVs/a5sMh4wNaAml/M/wk2UEJw2w w1Eg== X-Gm-Message-State: AOAM533LA4tGvzYi2Ebc9zErb0sNUem7TgwoV6kIRGeXnFjlTAYcC2Ka 1g0QmcU2/+F7Zcn1hEAsXeZD5kIA0D8= X-Google-Smtp-Source: ABdhPJw+ikrhFrdr2Ucyq6z0+3cYNNsKJGbQ5V2KFZCymSxcQTkydlUJ8b1HGW3RUTdGavWq1o7kZg== X-Received: by 2002:a17:902:d1c2:b0:153:4eac:edc6 with SMTP id g2-20020a170902d1c200b001534eacedc6mr7494930plb.138.1647231482254; Sun, 13 Mar 2022 21:18:02 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.18.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:18:02 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:30 +1000 Message-Id: <20220314041735.542867-11-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 09/14] gdbserver: lexer fixes X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" The lexer is coded in a funny way that ignores all packets that don't match a command or interrupt to start with, and then expects a command or ack/nack following an interrupt. This results in leading ack/nack not being matched as such which is fine because they're ignored but makes things confusing. But it also results in command errors for the command following an interrupt. All this complexity and problems seems to have arisen because the trailing NUL termination is passed in to the buffer which has made everything more complicated. Fix this by not passing in the trailing NUL, and rewriting the lexer so it always matches one of a command, interrupt, ack, or nack at the high level. Command / crc reset is done at entry to the command state. Some additional checks and debugging messages are added. Signed-off-by: Nicholas Piggin --- src/gdb_parser.rl | 64 +++++--- src/gdb_parser_precompile.c | 318 +++++++++++++++++++----------------- 2 files changed, 216 insertions(+), 166 deletions(-) diff --git a/src/gdb_parser.rl b/src/gdb_parser.rl index 93213e4..daa4167 100644 --- a/src/gdb_parser.rl +++ b/src/gdb_parser.rl @@ -1,9 +1,11 @@ -#include +#include #include +#include #include #include #include "src/pdbgproxy.h" +#include "debug.h" %%{ machine gdb; @@ -14,6 +16,7 @@ data = stack; memset(stack, 0, sizeof(stack)); crc = 0; + PR_INFO("RAGEL: CRC reset\n"); } action crc { @@ -39,10 +42,10 @@ action end { /* *data should point to the CRC */ if (crc != *data) { - printf("CRC error\n"); + printf("CRC error cmd %d\n", cmd); send_nack(priv); } else { - printf("Cmd %d\n", cmd); + PR_INFO("Cmd %d\n", cmd); send_ack(priv); /* Push the response onto the stack */ @@ -51,7 +54,8 @@ else *data = 0; - command_callbacks[cmd](stack, priv); + if (command_callbacks) + command_callbacks[cmd](stack, priv); } } @@ -60,7 +64,7 @@ ',' xdigit+ $hex_digit %push); - put_mem = ('M' any* @{cmd = PUT_MEM;} + put_mem = ('M' (any & ^'#')* @{cmd = PUT_MEM;} xdigit+ $hex_digit %push ',' xdigit+ $hex_digit %push @@ -74,7 +78,7 @@ stop_reason = ('?' @{cmd = STOP_REASON;}); - set_thread = ('H' any* @{cmd = SET_THREAD;}); + set_thread = ('H' (any & ^'#')* @{cmd = SET_THREAD;}); detach = ('D' @{cmd = DETACH;} xdigit+ $hex_digit %push); @@ -82,28 +86,29 @@ # TODO: We don't actually listen to what's supported q_attached = ('qAttached:' xdigit* @{rsp = "1";}); q_C = ('qC' @{rsp = "QC1";}); - q_supported = ('qSupported:' any* @{rsp = "multiprocess+;vContSupported+";}); + q_supported = ('qSupported:' (any & ^'#')* >{rsp = "multiprocess+;vContSupported+";}); qf_threadinfo = ('qfThreadInfo' @{rsp = "m1l";}); # vCont packet parsing v_contq = ('vCont?' @{rsp = "vCont;c;C;s;S";}); - v_contc = ('vCont;c' any* @{cmd = V_CONTC;}); - v_conts = ('vCont;s' any* @{cmd = V_CONTS;}); + v_contc = ('vCont;c' (any & ^'#')* @{cmd = V_CONTC;}); + v_conts = ('vCont;s' (any & ^'#')* @{cmd = V_CONTS;}); + unknown = ((any & ^'#')*); - interrupt = (3 @{command_callbacks[INTERRUPT](stack, priv);}); + interrupt = (3 @{ if (command_callbacks) command_callbacks[INTERRUPT](stack, priv); PR_INFO("RAGEL:interrupt\n");}); commands = (get_mem | get_gprs | get_spr | stop_reason | set_thread | q_attached | q_C | q_supported | qf_threadinfo | q_C | - v_contq | v_contc | v_conts | put_mem | detach ); + v_contq | v_contc | v_conts | put_mem | detach | unknown ); - cmd = ((commands & ^'#'*) | ^'#'*) $crc - ('#' xdigit{2} $hex_digit @end); + cmd = (('$' ((commands & ^'#'*) >reset $crc) + ('#' xdigit{2} $hex_digit @end)) >{PR_INFO("RAGEL:cmd\n");}); # We ignore ACK/NACK for the moment - ack = ('+'); - nack = ('-'); + ack = ('+' >{PR_INFO("RAGEL:ack\n");}); + nack = ('-' >{PR_INFO("RAGEL:nack\n");}); - main := (( ^('$' | interrupt)*('$' | interrupt) @reset) (cmd | ack | nack))*; + main := (cmd | interrupt | ack | nack)*; }%% @@ -113,7 +118,7 @@ static char *rsp; static uint8_t crc; static int cs; -command_cb *command_callbacks; +static command_cb *command_callbacks; %%write data; @@ -127,20 +132,39 @@ void parser_init(command_cb *callbacks) int parse_buffer(char *buf, size_t len, void *priv) { char *p = buf; - char *pe = p + len + 1; + char *pe = p + len; %%write exec; + if (cs == gdb_error) { + printf("parse error\n"); + return -1; + } + return 0; } #if 0 +void send_nack(void *priv) +{ + printf("Send: -\n"); +} + +void send_ack(void *priv) +{ + printf("Send: +\n"); +} + int main(int argc, char **argv) { parser_init(NULL); - if (argc > 1) - parse_buffer(argv[1], strlen(argv[1]), NULL); + if (argc > 1) { + int i; + for (i = 1; i < argc; i++) + parse_buffer(argv[i], strlen(argv[i]), NULL); + } + return 0; } #endif diff --git a/src/gdb_parser_precompile.c b/src/gdb_parser_precompile.c index cee2fd0..b8cdbc1 100644 --- a/src/gdb_parser_precompile.c +++ b/src/gdb_parser_precompile.c @@ -1,14 +1,16 @@ #line 1 "src/gdb_parser.rl" -#include +#include #include +#include #include #include #include "src/pdbgproxy.h" +#include "debug.h" -#line 108 "src/gdb_parser.rl" +#line 113 "src/gdb_parser.rl" static enum gdb_command cmd = NONE; @@ -17,173 +19,164 @@ static char *rsp; static uint8_t crc; static int cs; -command_cb *command_callbacks; +static command_cb *command_callbacks; -#line 24 "src/gdb_parser.c" +#line 26 "src/gdb_parser.c" static const char _gdb_actions[] = { 0, 1, 0, 1, 1, 1, 2, 1, - 3, 2, 1, 0, 2, 2, 1, 2, - 3, 1, 2, 3, 4, 2, 5, 1, - 2, 6, 1, 2, 7, 1, 2, 8, - 1, 2, 9, 1, 2, 10, 1, 2, - 11, 1, 2, 12, 1, 2, 13, 1, - 2, 14, 1, 2, 15, 1, 2, 16, - 1, 2, 17, 1, 2, 18, 1, 2, - 19, 0, 3, 1, 19, 0, 3, 6, + 3, 1, 14, 1, 19, 1, 20, 1, + 21, 1, 22, 2, 0, 1, 2, 2, + 1, 2, 3, 1, 2, 3, 4, 2, + 6, 1, 2, 10, 1, 2, 12, 1, + 2, 13, 1, 2, 14, 1, 2, 15, + 1, 2, 16, 1, 2, 17, 1, 2, + 18, 1, 3, 0, 5, 1, 3, 0, + 7, 1, 3, 0, 8, 1, 3, 0, + 9, 1, 3, 0, 11, 1, 3, 6, 2, 1, 3, 6, 3, 1 }; static const unsigned char _gdb_key_offsets[] = { - 0, 0, 2, 14, 15, 21, 27, 30, - 38, 46, 53, 60, 61, 68, 76, 83, - 92, 99, 107, 114, 122, 127, 129, 131, - 133, 135, 137, 139, 141, 143, 150, 152, + 0, 0, 10, 11, 17, 23, 30, 37, + 38, 45, 53, 60, 69, 76, 84, 91, + 99, 104, 106, 108, 110, 112, 114, 116, + 118, 120, 127, 129, 131, 133, 135, 137, + 139, 141, 143, 145, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, - 169, 171, 173, 175, 177, 179, 181, 183, - 185, 187, 189, 191, 193, 195, 197, 200, - 203, 204, 205, 207 + 170, 172, 174, 177, 180, 181, 182 }; static const char _gdb_trans_keys[] = { - 3, 36, 35, 43, 45, 63, 68, 72, - 77, 103, 109, 112, 113, 118, 35, 48, - 57, 65, 70, 97, 102, 48, 57, 65, - 70, 97, 102, 3, 35, 36, 3, 36, - 48, 57, 65, 70, 97, 102, 3, 36, + 35, 63, 68, 72, 77, 103, 109, 112, + 113, 118, 35, 48, 57, 65, 70, 97, + 102, 48, 57, 65, 70, 97, 102, 35, 48, 57, 65, 70, 97, 102, 35, 48, + 57, 65, 70, 97, 102, 35, 35, 48, + 57, 65, 70, 97, 102, 35, 44, 48, + 57, 65, 70, 97, 102, 35, 48, 57, + 65, 70, 97, 102, 35, 44, 58, 48, 57, 65, 70, 97, 102, 35, 48, 57, - 65, 70, 97, 102, 35, 35, 48, 57, 65, 70, 97, 102, 35, 44, 48, 57, 65, 70, 97, 102, 35, 48, 57, 65, - 70, 97, 102, 35, 44, 58, 48, 57, - 65, 70, 97, 102, 35, 48, 57, 65, 70, 97, 102, 35, 44, 48, 57, 65, - 70, 97, 102, 35, 48, 57, 65, 70, - 97, 102, 35, 44, 48, 57, 65, 70, - 97, 102, 35, 65, 67, 83, 102, 35, - 116, 35, 116, 35, 97, 35, 99, 35, - 104, 35, 101, 35, 100, 35, 58, 35, - 48, 57, 65, 70, 97, 102, 35, 117, - 35, 112, 35, 112, 35, 111, 35, 114, - 35, 116, 35, 101, 35, 100, 35, 58, - 35, 35, 84, 35, 104, 35, 114, 35, - 101, 35, 97, 35, 100, 35, 73, 35, - 110, 35, 102, 35, 111, 35, 67, 35, - 111, 35, 110, 35, 116, 35, 59, 63, - 35, 99, 115, 35, 35, 3, 36, 3, - 35, 36, 0 + 70, 97, 102, 35, 65, 67, 83, 102, + 35, 116, 35, 116, 35, 97, 35, 99, + 35, 104, 35, 101, 35, 100, 35, 58, + 35, 48, 57, 65, 70, 97, 102, 35, + 117, 35, 112, 35, 112, 35, 111, 35, + 114, 35, 116, 35, 101, 35, 100, 35, + 58, 35, 35, 84, 35, 104, 35, 114, + 35, 101, 35, 97, 35, 100, 35, 73, + 35, 110, 35, 102, 35, 111, 35, 67, + 35, 111, 35, 110, 35, 116, 35, 59, + 63, 35, 99, 115, 35, 35, 3, 36, + 43, 45, 0 }; static const char _gdb_single_lengths[] = { - 0, 2, 12, 1, 0, 0, 3, 2, - 2, 1, 1, 1, 1, 2, 1, 3, - 1, 2, 1, 2, 5, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, + 0, 10, 1, 0, 0, 1, 1, 1, + 1, 2, 1, 3, 1, 2, 1, 2, + 5, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 3, - 1, 1, 2, 3 + 2, 2, 3, 3, 1, 1, 4 }; static const char _gdb_range_lengths[] = { - 0, 0, 0, 0, 3, 3, 0, 3, - 3, 3, 3, 0, 3, 3, 3, 3, - 3, 3, 3, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 3, 3, 3, 3, 0, + 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0 }; -static const short _gdb_index_offsets[] = { - 0, 0, 3, 16, 18, 22, 26, 30, - 36, 42, 47, 52, 54, 59, 65, 70, - 77, 82, 88, 93, 99, 105, 108, 111, - 114, 117, 120, 123, 126, 129, 134, 137, - 140, 143, 146, 149, 152, 155, 158, 161, - 163, 166, 169, 172, 175, 178, 181, 184, - 187, 190, 193, 196, 199, 202, 205, 209, - 213, 215, 217, 220 +static const unsigned char _gdb_index_offsets[] = { + 0, 0, 11, 13, 17, 21, 26, 31, + 33, 38, 44, 49, 56, 61, 67, 72, + 78, 84, 87, 90, 93, 96, 99, 102, + 105, 108, 113, 116, 119, 122, 125, 128, + 131, 134, 137, 140, 142, 145, 148, 151, + 154, 157, 160, 163, 166, 169, 172, 175, + 178, 181, 184, 188, 192, 194, 196 }; static const char _gdb_indicies[] = { - 1, 2, 0, 4, 5, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 3, - 4, 3, 15, 15, 15, 16, 17, 17, - 17, 16, 19, 20, 21, 18, 1, 2, - 22, 22, 22, 0, 1, 2, 17, 17, - 17, 0, 4, 23, 23, 23, 3, 24, - 23, 23, 23, 3, 4, 25, 4, 27, - 27, 27, 26, 4, 28, 27, 27, 27, - 26, 4, 29, 29, 29, 26, 4, 28, - 30, 29, 29, 29, 26, 4, 31, 31, - 31, 26, 24, 28, 31, 31, 31, 26, - 4, 32, 32, 32, 3, 4, 33, 32, - 32, 32, 3, 4, 34, 35, 36, 37, - 3, 4, 38, 3, 4, 39, 3, 4, - 40, 3, 4, 41, 3, 4, 42, 3, - 4, 43, 3, 4, 44, 3, 4, 45, - 3, 4, 46, 46, 46, 3, 4, 47, - 3, 4, 48, 3, 4, 49, 3, 4, - 50, 3, 4, 51, 3, 4, 52, 3, - 4, 53, 3, 4, 54, 3, 4, 55, - 3, 4, 56, 4, 57, 3, 4, 58, - 3, 4, 59, 3, 4, 60, 3, 4, - 61, 3, 4, 62, 3, 4, 63, 3, - 4, 64, 3, 4, 65, 3, 4, 66, - 3, 4, 67, 3, 4, 68, 3, 4, - 69, 3, 4, 70, 3, 4, 71, 72, - 3, 4, 73, 74, 3, 4, 75, 4, - 76, 1, 2, 0, 19, 20, 21, 18, - 0 + 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 0, 12, 11, 13, 13, 13, + 14, 15, 15, 15, 14, 12, 16, 16, + 16, 11, 17, 16, 16, 16, 11, 12, + 18, 12, 20, 20, 20, 19, 12, 21, + 20, 20, 20, 19, 12, 22, 22, 22, + 19, 12, 21, 23, 22, 22, 22, 19, + 12, 24, 24, 24, 19, 17, 21, 24, + 24, 24, 19, 12, 25, 25, 25, 11, + 12, 26, 25, 25, 25, 11, 12, 27, + 28, 29, 30, 11, 12, 31, 11, 12, + 32, 11, 12, 33, 11, 12, 34, 11, + 12, 35, 11, 12, 36, 11, 12, 37, + 11, 12, 38, 11, 12, 39, 39, 39, + 11, 12, 40, 11, 12, 41, 11, 12, + 42, 11, 12, 43, 11, 12, 44, 11, + 12, 45, 11, 12, 46, 11, 12, 47, + 11, 12, 48, 11, 50, 49, 12, 51, + 11, 12, 52, 11, 12, 53, 11, 12, + 54, 11, 12, 55, 11, 12, 56, 11, + 12, 57, 11, 12, 58, 11, 12, 59, + 11, 12, 60, 11, 12, 61, 11, 12, + 62, 11, 12, 63, 11, 12, 64, 11, + 12, 65, 66, 11, 12, 67, 68, 11, + 12, 69, 12, 70, 71, 72, 73, 74, + 14, 0 }; static const char _gdb_trans_targs[] = { - 1, 2, 2, 3, 4, 59, 3, 9, - 11, 12, 3, 18, 9, 20, 50, 5, - 0, 58, 6, 2, 7, 2, 8, 10, - 4, 11, 12, 13, 14, 15, 16, 17, - 19, 9, 21, 3, 30, 40, 22, 23, - 24, 25, 26, 27, 28, 29, 29, 31, - 32, 33, 34, 35, 36, 37, 38, 39, - 39, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 3, 51, 52, 53, 54, 55, - 3, 56, 57, 56, 57 + 2, 3, 2, 5, 7, 8, 2, 14, + 5, 16, 46, 2, 3, 4, 0, 54, + 6, 3, 7, 8, 9, 10, 11, 12, + 13, 15, 5, 17, 2, 26, 36, 18, + 19, 20, 21, 22, 23, 24, 25, 25, + 27, 28, 29, 30, 31, 32, 33, 34, + 35, 2, 3, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 2, 47, 48, 49, + 50, 51, 2, 52, 53, 52, 53, 54, + 1, 54, 54 }; static const char _gdb_trans_actions[] = { - 0, 63, 1, 3, 0, 3, 33, 39, - 3, 3, 27, 21, 30, 3, 3, 7, - 0, 18, 3, 66, 0, 9, 7, 15, - 5, 36, 24, 74, 70, 74, 70, 74, - 15, 12, 3, 45, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 42, 3, + 19, 1, 70, 74, 19, 19, 62, 58, + 66, 19, 19, 3, 0, 7, 0, 28, + 25, 5, 34, 31, 82, 78, 82, 78, + 82, 25, 22, 3, 40, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 37, 3, 3, 3, 3, 3, 3, 3, 3, - 48, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 51, 3, 3, 3, 3, 3, - 54, 3, 3, 57, 60 + 3, 43, 9, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 46, 3, 3, 3, + 3, 3, 49, 3, 3, 52, 55, 11, + 13, 15, 17 }; -static const int gdb_start = 58; -static const int gdb_first_final = 58; +static const int gdb_start = 54; +static const int gdb_first_final = 54; static const int gdb_error = 0; -static const int gdb_en_main = 58; +static const int gdb_en_main = 54; -#line 119 "src/gdb_parser.rl" +#line 124 "src/gdb_parser.rl" void parser_init(command_cb *callbacks) { -#line 182 "src/gdb_parser.c" +#line 175 "src/gdb_parser.c" { cs = gdb_start; } -#line 123 "src/gdb_parser.rl" +#line 128 "src/gdb_parser.rl" command_callbacks = callbacks; } @@ -191,10 +184,10 @@ void parser_init(command_cb *callbacks) int parse_buffer(char *buf, size_t len, void *priv) { char *p = buf; - char *pe = p + len + 1; + char *pe = p + len; -#line 198 "src/gdb_parser.c" +#line 191 "src/gdb_parser.c" { int _klen; unsigned int _trans; @@ -269,30 +262,31 @@ _match: switch ( *_acts++ ) { case 0: -#line 11 "src/gdb_parser.rl" +#line 13 "src/gdb_parser.rl" { cmd = 0; rsp = NULL; data = stack; memset(stack, 0, sizeof(stack)); crc = 0; + PR_INFO("RAGEL: CRC reset\n"); } break; case 1: -#line 19 "src/gdb_parser.rl" +#line 22 "src/gdb_parser.rl" { crc += *p; } break; case 2: -#line 23 "src/gdb_parser.rl" +#line 26 "src/gdb_parser.rl" { data++; assert(data < &stack[10]); } break; case 3: -#line 28 "src/gdb_parser.rl" +#line 31 "src/gdb_parser.rl" { *data *= 16; @@ -305,14 +299,14 @@ _match: } break; case 4: -#line 39 "src/gdb_parser.rl" +#line 42 "src/gdb_parser.rl" { /* *data should point to the CRC */ if (crc != *data) { - printf("CRC error\n"); + printf("CRC error cmd %d\n", cmd); send_nack(priv); } else { - printf("Cmd %d\n", cmd); + PR_INFO("Cmd %d\n", cmd); send_ack(priv); /* Push the response onto the stack */ @@ -321,71 +315,84 @@ _match: else *data = 0; - command_callbacks[cmd](stack, priv); + if (command_callbacks) + command_callbacks[cmd](stack, priv); } } break; case 5: -#line 58 "src/gdb_parser.rl" +#line 62 "src/gdb_parser.rl" {cmd = GET_MEM;} break; case 6: -#line 63 "src/gdb_parser.rl" +#line 67 "src/gdb_parser.rl" {cmd = PUT_MEM;} break; case 7: -#line 70 "src/gdb_parser.rl" +#line 74 "src/gdb_parser.rl" {cmd = GET_GPRS;} break; case 8: -#line 72 "src/gdb_parser.rl" +#line 76 "src/gdb_parser.rl" {cmd = GET_SPR;} break; case 9: -#line 75 "src/gdb_parser.rl" +#line 79 "src/gdb_parser.rl" {cmd = STOP_REASON;} break; case 10: -#line 77 "src/gdb_parser.rl" +#line 81 "src/gdb_parser.rl" {cmd = SET_THREAD;} break; case 11: -#line 79 "src/gdb_parser.rl" +#line 83 "src/gdb_parser.rl" {cmd = DETACH;} break; case 12: -#line 83 "src/gdb_parser.rl" +#line 87 "src/gdb_parser.rl" {rsp = "1";} break; case 13: -#line 84 "src/gdb_parser.rl" +#line 88 "src/gdb_parser.rl" {rsp = "QC1";} break; case 14: -#line 85 "src/gdb_parser.rl" +#line 89 "src/gdb_parser.rl" {rsp = "multiprocess+;vContSupported+";} break; case 15: -#line 86 "src/gdb_parser.rl" +#line 90 "src/gdb_parser.rl" {rsp = "m1l";} break; case 16: -#line 89 "src/gdb_parser.rl" +#line 93 "src/gdb_parser.rl" {rsp = "vCont;c;C;s;S";} break; case 17: -#line 90 "src/gdb_parser.rl" +#line 94 "src/gdb_parser.rl" {cmd = V_CONTC;} break; case 18: -#line 91 "src/gdb_parser.rl" +#line 95 "src/gdb_parser.rl" {cmd = V_CONTS;} break; case 19: -#line 93 "src/gdb_parser.rl" - {command_callbacks[INTERRUPT](stack, priv);} +#line 98 "src/gdb_parser.rl" + { if (command_callbacks) command_callbacks[INTERRUPT](stack, priv); PR_INFO("RAGEL:interrupt\n");} + break; + case 20: +#line 105 "src/gdb_parser.rl" + {PR_INFO("RAGEL:cmd\n");} + break; + case 21: +#line 108 "src/gdb_parser.rl" + {PR_INFO("RAGEL:ack\n");} break; -#line 389 "src/gdb_parser.c" + case 22: +#line 109 "src/gdb_parser.rl" + {PR_INFO("RAGEL:nack\n");} + break; +#line 396 "src/gdb_parser.c" } } @@ -398,18 +405,37 @@ _again: _out: {} } -#line 133 "src/gdb_parser.rl" +#line 138 "src/gdb_parser.rl" + + if (cs == gdb_error) { + printf("parse error\n"); + return -1; + } return 0; } #if 0 +void send_nack(void *priv) +{ + printf("Send: -\n"); +} + +void send_ack(void *priv) +{ + printf("Send: +\n"); +} + int main(int argc, char **argv) { parser_init(NULL); - if (argc > 1) - parse_buffer(argv[1], strlen(argv[1]), NULL); + if (argc > 1) { + int i; + for (i = 1; i < argc; i++) + parse_buffer(argv[i], strlen(argv[i]), NULL); + } + return 0; } #endif From patchwork Mon Mar 14 04:17:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604898 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Lr+WLol+; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dj5yhSz9sG2 for ; Mon, 14 Mar 2022 15:18:13 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dj4mm4z30QD for ; Mon, 14 Mar 2022 15:18:13 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Lr+WLol+; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::62b; helo=mail-pl1-x62b.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Lr+WLol+; dkim-atps=neutral Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3DZ4Tmjz30F8 for ; Mon, 14 Mar 2022 15:18:06 +1100 (AEDT) Received: by mail-pl1-x62b.google.com with SMTP id z3so12478274plg.8 for ; Sun, 13 Mar 2022 21:18:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=h+tUkhvRcrzU4YQhkpco/g71Ma8phKpmvLhCp+zwhFQ=; b=Lr+WLol+7tdCH1udY/hCpzd3AopHJV/QjhTHNhqeO78QJoo7d+JNWLD3gbbPqFScGb 5+LYnYPacBZv+Zlc6EHFkh1mMe3Wld3A/iXhh4CbVF/ZQstoVsvFvRHvXgMe3LEvWVLi EgFIhy0Jyfm+Yux+nC0P7QCgLQQ5yIRfgLEJXqwR7fH9W1UL1YGiggQ1/dx0wDZ4zm4K NOWAlw2pGQXzTQe8W/GupUYNQDyqIT28C/lTbyqupw7q52tEFDyJhBW0HLPaFtKU/efF wxfIYoik6bM3+MsL/oZe7niJBMTzcnkgBOO5fxmWcIZGjKqcbXSAMdSSjALygNR9vdVv SoDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=h+tUkhvRcrzU4YQhkpco/g71Ma8phKpmvLhCp+zwhFQ=; b=3X/xgIUhDM3qxA5WIQPWu7v0W6qusULSjzF6sX5uowsuBmPs4uElwNnfi9+4Oz6x4r OSVgpSnW9Pj4uO8lIPmo9fbiD57WLMB+BkIWTtAw/WakZHYd3iWHvn2dDd322dXtmlg+ Ek3gkZPHAD1Rtv9yR54fecwlgVxHtOMfcfYfBJJOY5Gh3Ry/XPFiQQUJyfEkA+DrUCRD 6RC8gBPzwBU9R4h60IYHscMQ/igGDqiaMF81ZDnMY+BdefOY64kFYwq1NFARc1WYYFzr 3aM3zlMy4y7cVQtSZ3rb+n7VX63eNKHpyrgBD1qq+xAXC6FqLjDBuALlj8zU5i+5G6yZ 28EA== X-Gm-Message-State: AOAM530DgoUPAsBjNUPtDXczqZYv8h6za1hIUmPDS93X++lcDyanogcB h4HuxGwPWnx8iMLcdXqc8jJki6pdbhM= X-Google-Smtp-Source: ABdhPJxVIPsioXpjPGXGQwec9OFgvcIMakyaIAB7+cbe0jqTpud9pvbSh2ugsJGlMII0AgmJplzLYg== X-Received: by 2002:a17:90b:3503:b0:1bc:5d68:e7a2 with SMTP id ls3-20020a17090b350300b001bc5d68e7a2mr23049316pjb.29.1647231484177; Sun, 13 Mar 2022 21:18:04 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.18.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:18:03 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:31 +1000 Message-Id: <20220314041735.542867-12-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 10/14] gdbserver: implement NoAckMode X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" This removes a bunch of synchronous round-trips and makes things significantly faster when attached to a high latency link. Signed-off-by: Nicholas Piggin Reviewed-by: Joel Stanley --- src/gdb_parser.rl | 14 +- src/gdb_parser_precompile.c | 291 ++++++++++++++++++++---------------- 2 files changed, 170 insertions(+), 135 deletions(-) diff --git a/src/gdb_parser.rl b/src/gdb_parser.rl index daa4167..f7f9a54 100644 --- a/src/gdb_parser.rl +++ b/src/gdb_parser.rl @@ -43,10 +43,12 @@ /* *data should point to the CRC */ if (crc != *data) { printf("CRC error cmd %d\n", cmd); - send_nack(priv); + if (ack_mode) + send_nack(priv); } else { PR_INFO("Cmd %d\n", cmd); - send_ack(priv); + if (ack_mode) + send_ack(priv); /* Push the response onto the stack */ if (rsp) @@ -86,8 +88,9 @@ # TODO: We don't actually listen to what's supported q_attached = ('qAttached:' xdigit* @{rsp = "1";}); q_C = ('qC' @{rsp = "QC1";}); - q_supported = ('qSupported:' (any & ^'#')* >{rsp = "multiprocess+;vContSupported+";}); + q_supported = ('qSupported:' (any & ^'#')* >{rsp = "multiprocess+;vContSupported+;QStartNoAckMode+";}); qf_threadinfo = ('qfThreadInfo' @{rsp = "m1l";}); + q_start_noack = ('QStartNoAckMode' @{rsp = "OK"; send_ack(priv); ack_mode = false;}); # vCont packet parsing v_contq = ('vCont?' @{rsp = "vCont;c;C;s;S";}); @@ -99,7 +102,8 @@ commands = (get_mem | get_gprs | get_spr | stop_reason | set_thread | q_attached | q_C | q_supported | qf_threadinfo | q_C | - v_contq | v_contc | v_conts | put_mem | detach | unknown ); + q_start_noack | v_contq | v_contc | v_conts | put_mem | + detach | unknown ); cmd = (('$' ((commands & ^'#'*) >reset $crc) ('#' xdigit{2} $hex_digit @end)) >{PR_INFO("RAGEL:cmd\n");}); @@ -120,6 +124,8 @@ static int cs; static command_cb *command_callbacks; +static bool ack_mode = true; + %%write data; void parser_init(command_cb *callbacks) diff --git a/src/gdb_parser_precompile.c b/src/gdb_parser_precompile.c index b8cdbc1..b02ebf0 100644 --- a/src/gdb_parser_precompile.c +++ b/src/gdb_parser_precompile.c @@ -10,7 +10,7 @@ #include "debug.h" -#line 113 "src/gdb_parser.rl" +#line 117 "src/gdb_parser.rl" static enum gdb_command cmd = NONE; @@ -21,162 +21,185 @@ static int cs; static command_cb *command_callbacks; +static bool ack_mode = true; + -#line 26 "src/gdb_parser.c" +#line 28 "src/gdb_parser.c" static const char _gdb_actions[] = { 0, 1, 0, 1, 1, 1, 2, 1, - 3, 1, 14, 1, 19, 1, 20, 1, - 21, 1, 22, 2, 0, 1, 2, 2, + 3, 1, 14, 1, 20, 1, 21, 1, + 22, 1, 23, 2, 0, 1, 2, 2, 1, 2, 3, 1, 2, 3, 4, 2, 6, 1, 2, 10, 1, 2, 12, 1, 2, 13, 1, 2, 14, 1, 2, 15, 1, 2, 16, 1, 2, 17, 1, 2, - 18, 1, 3, 0, 5, 1, 3, 0, - 7, 1, 3, 0, 8, 1, 3, 0, - 9, 1, 3, 0, 11, 1, 3, 6, - 2, 1, 3, 6, 3, 1 + 18, 1, 2, 19, 1, 3, 0, 5, + 1, 3, 0, 7, 1, 3, 0, 8, + 1, 3, 0, 9, 1, 3, 0, 11, + 1, 3, 6, 2, 1, 3, 6, 3, + 1 }; static const unsigned char _gdb_key_offsets[] = { - 0, 0, 10, 11, 17, 23, 30, 37, - 38, 45, 53, 60, 69, 76, 84, 91, - 99, 104, 106, 108, 110, 112, 114, 116, - 118, 120, 127, 129, 131, 133, 135, 137, - 139, 141, 143, 145, 146, 148, 150, 152, - 154, 156, 158, 160, 162, 164, 166, 168, - 170, 172, 174, 177, 180, 181, 182 + 0, 0, 11, 12, 18, 24, 31, 38, + 39, 46, 54, 61, 70, 77, 85, 87, + 89, 91, 93, 95, 97, 99, 101, 103, + 105, 107, 109, 111, 113, 120, 128, 133, + 135, 137, 139, 141, 143, 145, 147, 149, + 156, 158, 160, 162, 164, 166, 168, 170, + 172, 174, 175, 177, 179, 181, 183, 185, + 187, 189, 191, 193, 195, 197, 199, 201, + 203, 206, 209, 210, 211 }; static const char _gdb_trans_keys[] = { - 35, 63, 68, 72, 77, 103, 109, 112, - 113, 118, 35, 48, 57, 65, 70, 97, - 102, 48, 57, 65, 70, 97, 102, 35, + 35, 63, 68, 72, 77, 81, 103, 109, + 112, 113, 118, 35, 48, 57, 65, 70, + 97, 102, 48, 57, 65, 70, 97, 102, + 35, 48, 57, 65, 70, 97, 102, 35, + 48, 57, 65, 70, 97, 102, 35, 35, + 48, 57, 65, 70, 97, 102, 35, 44, + 48, 57, 65, 70, 97, 102, 35, 48, + 57, 65, 70, 97, 102, 35, 44, 58, 48, 57, 65, 70, 97, 102, 35, 48, - 57, 65, 70, 97, 102, 35, 35, 48, 57, 65, 70, 97, 102, 35, 44, 48, - 57, 65, 70, 97, 102, 35, 48, 57, - 65, 70, 97, 102, 35, 44, 58, 48, - 57, 65, 70, 97, 102, 35, 48, 57, - 65, 70, 97, 102, 35, 44, 48, 57, - 65, 70, 97, 102, 35, 48, 57, 65, - 70, 97, 102, 35, 44, 48, 57, 65, - 70, 97, 102, 35, 65, 67, 83, 102, - 35, 116, 35, 116, 35, 97, 35, 99, - 35, 104, 35, 101, 35, 100, 35, 58, - 35, 48, 57, 65, 70, 97, 102, 35, - 117, 35, 112, 35, 112, 35, 111, 35, - 114, 35, 116, 35, 101, 35, 100, 35, - 58, 35, 35, 84, 35, 104, 35, 114, - 35, 101, 35, 97, 35, 100, 35, 73, - 35, 110, 35, 102, 35, 111, 35, 67, - 35, 111, 35, 110, 35, 116, 35, 59, - 63, 35, 99, 115, 35, 35, 3, 36, - 43, 45, 0 + 57, 65, 70, 97, 102, 35, 83, 35, + 116, 35, 97, 35, 114, 35, 116, 35, + 78, 35, 111, 35, 65, 35, 99, 35, + 107, 35, 77, 35, 111, 35, 100, 35, + 101, 35, 48, 57, 65, 70, 97, 102, + 35, 44, 48, 57, 65, 70, 97, 102, + 35, 65, 67, 83, 102, 35, 116, 35, + 116, 35, 97, 35, 99, 35, 104, 35, + 101, 35, 100, 35, 58, 35, 48, 57, + 65, 70, 97, 102, 35, 117, 35, 112, + 35, 112, 35, 111, 35, 114, 35, 116, + 35, 101, 35, 100, 35, 58, 35, 35, + 84, 35, 104, 35, 114, 35, 101, 35, + 97, 35, 100, 35, 73, 35, 110, 35, + 102, 35, 111, 35, 67, 35, 111, 35, + 110, 35, 116, 35, 59, 63, 35, 99, + 115, 35, 35, 3, 36, 43, 45, 0 }; static const char _gdb_single_lengths[] = { - 0, 10, 1, 0, 0, 1, 1, 1, - 1, 2, 1, 3, 1, 2, 1, 2, - 5, 2, 2, 2, 2, 2, 2, 2, + 0, 11, 1, 0, 0, 1, 1, 1, + 1, 2, 1, 3, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 5, 2, + 2, 2, 2, 2, 2, 2, 2, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 1, 1, 4 + 3, 3, 1, 1, 4 }; static const char _gdb_range_lengths[] = { 0, 0, 0, 3, 3, 3, 3, 0, - 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0 }; -static const unsigned char _gdb_index_offsets[] = { - 0, 0, 11, 13, 17, 21, 26, 31, - 33, 38, 44, 49, 56, 61, 67, 72, - 78, 84, 87, 90, 93, 96, 99, 102, - 105, 108, 113, 116, 119, 122, 125, 128, - 131, 134, 137, 140, 142, 145, 148, 151, - 154, 157, 160, 163, 166, 169, 172, 175, - 178, 181, 184, 188, 192, 194, 196 +static const short _gdb_index_offsets[] = { + 0, 0, 12, 14, 18, 22, 27, 32, + 34, 39, 45, 50, 57, 62, 68, 71, + 74, 77, 80, 83, 86, 89, 92, 95, + 98, 101, 104, 107, 110, 115, 121, 127, + 130, 133, 136, 139, 142, 145, 148, 151, + 156, 159, 162, 165, 168, 171, 174, 177, + 180, 183, 185, 188, 191, 194, 197, 200, + 203, 206, 209, 212, 215, 218, 221, 224, + 227, 231, 235, 237, 239 }; static const char _gdb_indicies[] = { 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 0, 12, 11, 13, 13, 13, - 14, 15, 15, 15, 14, 12, 16, 16, - 16, 11, 17, 16, 16, 16, 11, 12, - 18, 12, 20, 20, 20, 19, 12, 21, - 20, 20, 20, 19, 12, 22, 22, 22, - 19, 12, 21, 23, 22, 22, 22, 19, - 12, 24, 24, 24, 19, 17, 21, 24, - 24, 24, 19, 12, 25, 25, 25, 11, - 12, 26, 25, 25, 25, 11, 12, 27, - 28, 29, 30, 11, 12, 31, 11, 12, - 32, 11, 12, 33, 11, 12, 34, 11, - 12, 35, 11, 12, 36, 11, 12, 37, - 11, 12, 38, 11, 12, 39, 39, 39, - 11, 12, 40, 11, 12, 41, 11, 12, - 42, 11, 12, 43, 11, 12, 44, 11, - 12, 45, 11, 12, 46, 11, 12, 47, - 11, 12, 48, 11, 50, 49, 12, 51, - 11, 12, 52, 11, 12, 53, 11, 12, - 54, 11, 12, 55, 11, 12, 56, 11, - 12, 57, 11, 12, 58, 11, 12, 59, - 11, 12, 60, 11, 12, 61, 11, 12, - 62, 11, 12, 63, 11, 12, 64, 11, - 12, 65, 66, 11, 12, 67, 68, 11, - 12, 69, 12, 70, 71, 72, 73, 74, - 14, 0 + 9, 10, 11, 0, 13, 12, 14, 14, + 14, 15, 16, 16, 16, 15, 13, 17, + 17, 17, 12, 18, 17, 17, 17, 12, + 13, 19, 13, 21, 21, 21, 20, 13, + 22, 21, 21, 21, 20, 13, 23, 23, + 23, 20, 13, 22, 24, 23, 23, 23, + 20, 13, 25, 25, 25, 20, 18, 22, + 25, 25, 25, 20, 13, 26, 12, 13, + 27, 12, 13, 28, 12, 13, 29, 12, + 13, 30, 12, 13, 31, 12, 13, 32, + 12, 13, 33, 12, 13, 34, 12, 13, + 35, 12, 13, 36, 12, 13, 37, 12, + 13, 38, 12, 13, 39, 12, 13, 40, + 40, 40, 12, 13, 41, 40, 40, 40, + 12, 13, 42, 43, 44, 45, 12, 13, + 46, 12, 13, 47, 12, 13, 48, 12, + 13, 49, 12, 13, 50, 12, 13, 51, + 12, 13, 52, 12, 13, 53, 12, 13, + 54, 54, 54, 12, 13, 55, 12, 13, + 56, 12, 13, 57, 12, 13, 58, 12, + 13, 59, 12, 13, 60, 12, 13, 61, + 12, 13, 62, 12, 13, 63, 12, 65, + 64, 13, 66, 12, 13, 67, 12, 13, + 68, 12, 13, 69, 12, 13, 70, 12, + 13, 71, 12, 13, 72, 12, 13, 73, + 12, 13, 74, 12, 13, 75, 12, 13, + 76, 12, 13, 77, 12, 13, 78, 12, + 13, 79, 12, 13, 80, 81, 12, 13, + 82, 83, 12, 13, 84, 13, 85, 86, + 87, 88, 89, 15, 0 }; static const char _gdb_trans_targs[] = { - 2, 3, 2, 5, 7, 8, 2, 14, - 5, 16, 46, 2, 3, 4, 0, 54, - 6, 3, 7, 8, 9, 10, 11, 12, - 13, 15, 5, 17, 2, 26, 36, 18, - 19, 20, 21, 22, 23, 24, 25, 25, - 27, 28, 29, 30, 31, 32, 33, 34, - 35, 2, 3, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 2, 47, 48, 49, - 50, 51, 2, 52, 53, 52, 53, 54, - 1, 54, 54 + 2, 3, 2, 5, 7, 8, 14, 2, + 28, 5, 30, 60, 2, 3, 4, 0, + 68, 6, 3, 7, 8, 9, 10, 11, + 12, 13, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 2, + 29, 5, 31, 2, 40, 50, 32, 33, + 34, 35, 36, 37, 38, 39, 39, 41, + 42, 43, 44, 45, 46, 47, 48, 49, + 2, 3, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 2, 61, 62, 63, 64, + 65, 2, 66, 67, 66, 67, 68, 1, + 68, 68 }; static const char _gdb_trans_actions[] = { - 19, 1, 70, 74, 19, 19, 62, 58, - 66, 19, 19, 3, 0, 7, 0, 28, - 25, 5, 34, 31, 82, 78, 82, 78, - 82, 25, 22, 3, 40, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 37, + 19, 1, 73, 77, 19, 19, 19, 65, + 61, 69, 19, 19, 3, 0, 7, 0, + 28, 25, 5, 34, 31, 85, 81, 85, + 81, 85, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 49, + 25, 22, 3, 40, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 37, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 43, 9, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 46, 3, 3, 3, - 3, 3, 49, 3, 3, 52, 55, 11, - 13, 15, 17 + 43, 9, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 46, 3, 3, 3, 3, + 3, 52, 3, 3, 55, 58, 11, 13, + 15, 17 }; -static const int gdb_start = 54; -static const int gdb_first_final = 54; +static const int gdb_start = 68; +static const int gdb_first_final = 68; static const int gdb_error = 0; -static const int gdb_en_main = 54; +static const int gdb_en_main = 68; -#line 124 "src/gdb_parser.rl" +#line 130 "src/gdb_parser.rl" void parser_init(command_cb *callbacks) { -#line 175 "src/gdb_parser.c" +#line 198 "src/gdb_parser.c" { cs = gdb_start; } -#line 128 "src/gdb_parser.rl" +#line 134 "src/gdb_parser.rl" command_callbacks = callbacks; } @@ -187,7 +210,7 @@ int parse_buffer(char *buf, size_t len, void *priv) char *pe = p + len; -#line 191 "src/gdb_parser.c" +#line 214 "src/gdb_parser.c" { int _klen; unsigned int _trans; @@ -304,10 +327,12 @@ _match: /* *data should point to the CRC */ if (crc != *data) { printf("CRC error cmd %d\n", cmd); - send_nack(priv); + if (ack_mode) + send_nack(priv); } else { PR_INFO("Cmd %d\n", cmd); - send_ack(priv); + if (ack_mode) + send_ack(priv); /* Push the response onto the stack */ if (rsp) @@ -321,78 +346,82 @@ _match: } break; case 5: -#line 62 "src/gdb_parser.rl" +#line 64 "src/gdb_parser.rl" {cmd = GET_MEM;} break; case 6: -#line 67 "src/gdb_parser.rl" +#line 69 "src/gdb_parser.rl" {cmd = PUT_MEM;} break; case 7: -#line 74 "src/gdb_parser.rl" +#line 76 "src/gdb_parser.rl" {cmd = GET_GPRS;} break; case 8: -#line 76 "src/gdb_parser.rl" +#line 78 "src/gdb_parser.rl" {cmd = GET_SPR;} break; case 9: -#line 79 "src/gdb_parser.rl" +#line 81 "src/gdb_parser.rl" {cmd = STOP_REASON;} break; case 10: -#line 81 "src/gdb_parser.rl" +#line 83 "src/gdb_parser.rl" {cmd = SET_THREAD;} break; case 11: -#line 83 "src/gdb_parser.rl" +#line 85 "src/gdb_parser.rl" {cmd = DETACH;} break; case 12: -#line 87 "src/gdb_parser.rl" +#line 89 "src/gdb_parser.rl" {rsp = "1";} break; case 13: -#line 88 "src/gdb_parser.rl" +#line 90 "src/gdb_parser.rl" {rsp = "QC1";} break; case 14: -#line 89 "src/gdb_parser.rl" - {rsp = "multiprocess+;vContSupported+";} +#line 91 "src/gdb_parser.rl" + {rsp = "multiprocess+;vContSupported+;QStartNoAckMode+";} break; case 15: -#line 90 "src/gdb_parser.rl" +#line 92 "src/gdb_parser.rl" {rsp = "m1l";} break; case 16: #line 93 "src/gdb_parser.rl" - {rsp = "vCont;c;C;s;S";} + {rsp = "OK"; send_ack(priv); ack_mode = false;} break; case 17: -#line 94 "src/gdb_parser.rl" - {cmd = V_CONTC;} +#line 96 "src/gdb_parser.rl" + {rsp = "vCont;c;C;s;S";} break; case 18: -#line 95 "src/gdb_parser.rl" - {cmd = V_CONTS;} +#line 97 "src/gdb_parser.rl" + {cmd = V_CONTC;} break; case 19: #line 98 "src/gdb_parser.rl" - { if (command_callbacks) command_callbacks[INTERRUPT](stack, priv); PR_INFO("RAGEL:interrupt\n");} + {cmd = V_CONTS;} break; case 20: -#line 105 "src/gdb_parser.rl" - {PR_INFO("RAGEL:cmd\n");} +#line 101 "src/gdb_parser.rl" + { if (command_callbacks) command_callbacks[INTERRUPT](stack, priv); PR_INFO("RAGEL:interrupt\n");} break; case 21: -#line 108 "src/gdb_parser.rl" - {PR_INFO("RAGEL:ack\n");} +#line 109 "src/gdb_parser.rl" + {PR_INFO("RAGEL:cmd\n");} break; case 22: -#line 109 "src/gdb_parser.rl" +#line 112 "src/gdb_parser.rl" + {PR_INFO("RAGEL:ack\n");} + break; + case 23: +#line 113 "src/gdb_parser.rl" {PR_INFO("RAGEL:nack\n");} break; -#line 396 "src/gdb_parser.c" +#line 425 "src/gdb_parser.c" } } @@ -405,7 +434,7 @@ _again: _out: {} } -#line 138 "src/gdb_parser.rl" +#line 144 "src/gdb_parser.rl" if (cs == gdb_error) { printf("parse error\n"); From patchwork Mon Mar 14 04:17:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604899 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=C1F5bksX; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dk4FQ6z9sG2 for ; Mon, 14 Mar 2022 15:18:14 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dk3Cw1z306R for ; Mon, 14 Mar 2022 15:18:14 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=C1F5bksX; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::635; helo=mail-pl1-x635.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=C1F5bksX; dkim-atps=neutral Received: from mail-pl1-x635.google.com (mail-pl1-x635.google.com [IPv6:2607:f8b0:4864:20::635]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3Dc1mvtz30Ld for ; Mon, 14 Mar 2022 15:18:08 +1100 (AEDT) Received: by mail-pl1-x635.google.com with SMTP id w4so12454247ply.13 for ; Sun, 13 Mar 2022 21:18:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UzcWBa7CnY1nazz/Cfaob/Kv6mivQd1kscHC61xO3/I=; b=C1F5bksXa8xgROyDRt511Or7VqFmQ30sclRxV4F0l2HZeg9FyoXZ5D9SA9Bo/oDbI/ H5TFk3PPgBWH9MwZ+f/K/K4SnClxkYr3zuOxN6699FPZhIqY8RXCVeqvS0oPRx+XHQdV 2zFX2h7EWLT4SDyxpDoatFTWQVLVTSsW0QBHAIoxMVkOUWxvAaAerWhwIZKpijuOUr0I eXm9gFg+3A7yY5j0D+uOV08y6zd37w+220ECebABr0HlGmX+tihfV9VEJNED7cdCYks4 3huHdOKoLuVUf1SJEtdfwQSdnnZB2dpkooyBzu8sHEgGX0pu1AKCa17lAtOe1ugPU/dB gnXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UzcWBa7CnY1nazz/Cfaob/Kv6mivQd1kscHC61xO3/I=; b=lBQthbmBXuiTAKW6jCUGAyGFv9DUVkb76GpSBbo9e2R1RkkSi2JdFzjzdGR63lUeiF UPVNRG7POUZ7Jse4DsNj2uApVARiXHlFX19FPQCClSYNlDV5PH7elrDhQGEFZwmLvAVf bVBHlR6OAXYW88bWSidiNHUSDB0hR15Ce32CUrmaJDCv/3RPNcD/otFbduE7hXR72+3j 7HzotW+kuNPT/zoKLrj1fWRgPTmot373N3D1MCBu7DLK1AQgrQRb1LyCXaXHfle3NdaC VsD3g6nLDEb/LpLZlmYQMmZNi3QDsGjBSk1UzEs7xxG4nUg/LNTSGBA4vX5fhYgRRfQt 3fEg== X-Gm-Message-State: AOAM531Jvye5QDHMZYaA4+TDK5dN7mOY6UZNpx8b0LKYRQNK1x8qdWK4 XRD9VlQV9ktbASHonvKYeqqm8sC3hZA= X-Google-Smtp-Source: ABdhPJzFaAFS6b2w0Y7ZmpaRqlvYkEB6Gwn19xpEC29/J36t4RGkqt/qkxBtDaZq3c0BbmQ80cl1Xw== X-Received: by 2002:a17:90b:4c8f:b0:1bc:a64b:805 with SMTP id my15-20020a17090b4c8f00b001bca64b0805mr23121888pjb.156.1647231486024; Sun, 13 Mar 2022 21:18:06 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.18.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:18:05 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:32 +1000 Message-Id: <20220314041735.542867-13-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 11/14] libpdbg: Remove enable_attn target command X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" enable_attn is only used by gdbserver and it can be implemented with existing target register access. Move it to gdbserver. Signed-off-by: Nicholas Piggin --- libpdbg/hwunit.h | 1 - libpdbg/p8chip.c | 31 ------------------------------- src/pdbgproxy.c | 38 +++++++++++++++++++++++++++++++++++--- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/libpdbg/hwunit.h b/libpdbg/hwunit.h index 4662aec..2ce41db 100644 --- a/libpdbg/hwunit.h +++ b/libpdbg/hwunit.h @@ -155,7 +155,6 @@ struct thread { int (*ram_setup)(struct thread *); int (*ram_instruction)(struct thread *, uint64_t opcode, uint64_t *scratch); int (*ram_destroy)(struct thread *); - int (*enable_attn)(struct thread *); int (*getmem)(struct thread *, uint64_t, uint64_t *); int (*getregs)(struct thread *, struct thread_regs *regs); diff --git a/libpdbg/p8chip.c b/libpdbg/p8chip.c index 92e18cc..5b2a90a 100644 --- a/libpdbg/p8chip.c +++ b/libpdbg/p8chip.c @@ -611,36 +611,6 @@ static int p8_get_hid0(struct pdbg_target *chip, uint64_t *value) return 0; } -static int p8_put_hid0(struct pdbg_target *chip, uint64_t value) -{ - CHECK_ERR(pib_write(chip, HID0_REG, value)); - return 0; -} - -static int p8_enable_attn(struct thread *thread) -{ - struct pdbg_target *core; - uint64_t hid0; - - core = pdbg_target_require_parent("core", &thread->target); - - /* Need to enable the attn instruction in HID0 */ - if (p8_get_hid0(core, &hid0)) { - PR_ERROR("Unable to get HID0\n"); - return 1; - } - PR_INFO("HID0 was 0x%"PRIx64 " \n", hid0); - - hid0 |= EN_ATTN; - - PR_INFO("writing 0x%"PRIx64 " to HID0\n", hid0); - if (p8_put_hid0(core, hid0)) { - PR_ERROR("Unable to set HID0\n"); - return 1; - } - return 0; -} - static struct thread p8_thread = { .target = { .name = "POWER8 Thread", @@ -657,7 +627,6 @@ static struct thread p8_thread = { .ram_setup = p8_ram_setup, .ram_instruction = p8_ram_instruction, .ram_destroy = p8_ram_destroy, - .enable_attn = p8_enable_attn, .getmem = ram_getmem, .getregs = ram_getregs, .getgpr = ram_getgpr, diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index ce52e9d..75e14b7 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -24,6 +24,7 @@ #include "optcmd.h" #include "debug.h" #include "path.h" +#include "sprs.h" #ifndef DISABLE_GDBSERVER @@ -101,6 +102,35 @@ static void detach(uint64_t *stack, void *priv) send_response(fd, OK); } +#define POWER8_HID_ENABLE_ATTN PPC_BIT(31) + +static int set_attn(bool enable) +{ + uint64_t hid; + + if (thread_getspr(thread_target, SPR_HID, &hid)) + return -1; + + if (pdbg_target_compatible(thread_target, "ibm,power8-thread")) { + if (enable) { + if (hid & POWER8_HID_ENABLE_ATTN) + return 0; + hid |= POWER8_HID_ENABLE_ATTN; + } else { + if (!(hid & POWER8_HID_ENABLE_ATTN)) + return 0; + hid &= ~POWER8_HID_ENABLE_ATTN; + } + } else { + return -1; + } + + if (thread_putspr(thread_target, SPR_HID, hid)) + return -1; + + return 0; +} + /* 32 registers represented as 16 char hex numbers with null-termination */ #define REG_DATA_SIZE (32*16+1) static void get_gprs(uint64_t *stack, void *priv) @@ -254,7 +284,6 @@ static void put_mem(uint64_t *stack, void *priv) uint8_t *data; uint8_t attn_opcode[] = {0x00, 0x00, 0x02, 0x00}; int err = 0; - struct thread *thread = target_to_thread(thread_target); if (littleendian) { attn_opcode[1] = 0x02; @@ -285,10 +314,13 @@ static void put_mem(uint64_t *stack, void *priv) data = attn_opcode; /* Need to enable the attn instruction in HID0 */ - if (thread->enable_attn(thread)) + if (set_attn(true)) { + err = 2; goto out; - } else + } + } else { stack[2] = __builtin_bswap64(stack[2]) >> 32; + } PR_INFO("put_mem 0x%016" PRIx64 " = 0x%016" PRIx64 "\n", addr, stack[2]); From patchwork Mon Mar 14 04:17:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604900 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=QWWK2L3N; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=112.213.38.117; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dl2p5Kz9sG2 for ; Mon, 14 Mar 2022 15:18:15 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dl2KZ7z30Km for ; Mon, 14 Mar 2022 15:18:15 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=QWWK2L3N; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::102b; helo=mail-pj1-x102b.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=QWWK2L3N; dkim-atps=neutral Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3Dd71Kkz30L7 for ; Mon, 14 Mar 2022 15:18:09 +1100 (AEDT) Received: by mail-pj1-x102b.google.com with SMTP id m22so13392308pja.0 for ; Sun, 13 Mar 2022 21:18:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4B+EVQhFwb1jJAbEwBvzXysuvryhmWT1geAtEE46L6Q=; b=QWWK2L3NyEXD4WEBfuMGigF5MWvpzjWeSMnuWFF5FPW+IQs6Q8argMiYHRe1mmdolu qrbYnf/E75bNZfTm918IEehp0yqTlLj72CXwWZYX0GpQs5rcKfAL9Erb8DehaE/NtReh AAy/pP0VgiLl0GguFSKgI2k0K5gvzMmraYWFCssltr/gdQzPGZvnRNMib5/uv+kPQt2h vvACSy1pcSACfEMRw85d9mhRNIXPD3KnEDx604S/eIlGrPROsRBG4x0BfeJ5v/bXZJog 5wi6cYoVnH4tNEa9pZdFVOkDL7K7mRF/VulZwfC1bman2e6guKfcOGWNvBWW8vjYhixG L5OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4B+EVQhFwb1jJAbEwBvzXysuvryhmWT1geAtEE46L6Q=; b=VycVjd3F7cBmx6MmPD+wb7u1gTn9DLO29qNQmirAefh4GqUZisUc9xxN1iWMdtxGXy /bXEyvNIsGvxpt8hjsQ4mNFwl0kSJoyZ4S5SJmqoDx5vNTtV2zZhSmGaHuMa4AmZQRcM Q6wO/7kH5cN/obvQUs0ljTGiyYxtTYfa4iQFlskTg7gFTuy4MoQ8loNbh+VLBoYZ//KM htcz6PqM86jXSp7ddyeylyTxqAQxofDmq3vty/gNjHIAvGxiBIaZrXZwcnj+0BCYuL2T 3VcnHEZZ0vwBXnkLGeTcaoxDjvu2ey0HxNqhKhRIJzEcO4hnMaCNv0AZMsLOKhFay2nE 3+fA== X-Gm-Message-State: AOAM530U79K+3uzo6wnrTSYOfjqiUuNp17XatUXdC+DlEtL1ByheZVlQ xG4ypOKNgXTmhzJooiZmMpZmVI9jcQw= X-Google-Smtp-Source: ABdhPJyHO5quzIlHj+zx2GRhuXT65fEZLe+Nj7l76lZT+HJ8/RGNTZsmDvF2zd6gHVrIdIjmngspXQ== X-Received: by 2002:a17:90b:f8a:b0:1be:dccd:e4f7 with SMTP id ft10-20020a17090b0f8a00b001bedccde4f7mr23113449pjb.92.1647231487880; Sun, 13 Mar 2022 21:18:07 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.18.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:18:07 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:33 +1000 Message-Id: <20220314041735.542867-14-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 12/14] gdbserver: disable attn after breaking X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Rather than leave attn enabled, disable it when breaking to idle state if it was enabled. Signed-off-by: Nicholas Piggin --- src/pdbgproxy.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index 75e14b7..a37e997 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -372,6 +372,8 @@ static void poll(void) if (!(status.quiesced)) break; + set_attn(false); + state = IDLE; poll_interval = VCONT_POLL_DELAY; if (!(status.active)) { From patchwork Mon Mar 14 04:17:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604901 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Rt0hi9J3; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dm4lttz9sG2 for ; Mon, 14 Mar 2022 15:18:16 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dm3bj5z30Gj for ; Mon, 14 Mar 2022 15:18:16 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Rt0hi9J3; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::434; helo=mail-pf1-x434.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Rt0hi9J3; dkim-atps=neutral Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3Dg376cz30Qv for ; Mon, 14 Mar 2022 15:18:11 +1100 (AEDT) Received: by mail-pf1-x434.google.com with SMTP id z16so13194589pfh.3 for ; Sun, 13 Mar 2022 21:18:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WE+5Oy8LnUjLfotIHlQ4RbVXzmfromG3EyS5MCfQ+Yc=; b=Rt0hi9J3EYAySWOzrkRz1jUoVI+CqmPso4ralFTl1Zx2hRE7iN+jzF7tcWHo5m6owH 41G7KOYUzxBJyjUd+99PqOI/rGII+ZhrBSgw4HBcJ4XMsupoMTjDYq3dUoqQIXlo1SPP 9dHY5HpAftlie0rMua9tnytYwjIuZVPN7cjjAO6925Sd4lVOTcXlwNQ4eBXWAYM+3B6t iBUpV9eT5V6GjpL/pmn+TFmDk26UO8HHxftRRMuCFsEFus3LV6R6KLhMR+4A7rjPdQfZ ZgAiaOLn1xO5/NIdDjqaRUzG7Pc7CG6flB0ryimksNZuz4lPtEN+8vnVQaNL8DGC2tQA SPSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WE+5Oy8LnUjLfotIHlQ4RbVXzmfromG3EyS5MCfQ+Yc=; b=3v+t4BT72HOP4lQBc/VQ31hVmuxMXTtNwWOX0Lg4pLirD7YlG3rLg7vupNAjkxeuqC F4FV8UwfdOvULHmlYwcrIkeY2+t+Z3Rd9gJqm/FSApFuY9gcFlC+Iu9/VabCAd/d8oJ5 vHPhWN0BI8SY136G2EHwQVmSHbGX2/tUM9hDX3pMoDxcSW0id8hh7W1842KXBjgSqDsX ckQbIR5p7Ze7yP7K1S81LMb84t6zaDF1llhWsOQYx23fHUB6aDOBirMeCwQocqzUpaIF q3BbsXxbbszui577RC8hCHNBkiCTsyQXO23E+IjAoOZwTxUz4f+0cHMsoRT0KwV9LkFO Yxrg== X-Gm-Message-State: AOAM530q4sMyEWelwgxLt34qYiztRy5Ww41I0friR3wh1TQzmvYNeGrz mu00LbQKPfUqGMzUDWzik1N6fD9AKys= X-Google-Smtp-Source: ABdhPJwy+Isgv/HgiXGiU6UV+TrZWMhhizQ8BmKMs75xiPIEXP7d5fIDCPWCqsCU4hoLogE+C+EUcw== X-Received: by 2002:a63:1c8:0:b0:380:189b:1e66 with SMTP id 191-20020a6301c8000000b00380189b1e66mr18143266pgb.71.1647231489734; Sun, 13 Mar 2022 21:18:09 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.18.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:18:09 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:34 +1000 Message-Id: <20220314041735.542867-15-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 13/14] gdbserver: use read-modify-write for put_mem that is not 8-byte aligned X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Not all targets have memory access that can support arbitrary byte writes. Use RMW for put_mem commands that are not 8-byte aligned. This should really either be done in the target accessor, or at least an alignment capability should be exposed to the caller. But for now this will allow sbefifo mem ops to work to set breakpoints (4-byte writes). Signed-off-by: Nicholas Piggin --- src/pdbgproxy.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index a37e997..e8aab70 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -281,15 +282,15 @@ out: static void put_mem(uint64_t *stack, void *priv) { uint64_t addr, len; + uint64_t start_addr, end_addr; + uint64_t align = 8; + uint32_t *insn; uint8_t *data; + uint8_t *buf; uint8_t attn_opcode[] = {0x00, 0x00, 0x02, 0x00}; + uint8_t gdb_break_opcode[] = {0x7d, 0x82, 0x10, 0x08}; int err = 0; - if (littleendian) { - attn_opcode[1] = 0x02; - attn_opcode[2] = 0x00; - } - addr = stack[0]; len = stack[1]; data = (uint8_t *) &stack[2]; @@ -301,8 +302,7 @@ static void put_mem(uint64_t *stack, void *priv) goto out; } - - if (len == 4 && stack[2] == 0x0810827d) { + if (len == 4 && !memcmp(data, gdb_break_opcode, 4)) { /* According to linux-ppc-low.c gdb only uses this * op-code for sw break points so we replace it with * the correct attn opcode which is what we need for @@ -318,17 +318,27 @@ static void put_mem(uint64_t *stack, void *priv) err = 2; goto out; } - } else { - stack[2] = __builtin_bswap64(stack[2]) >> 32; } - PR_INFO("put_mem 0x%016" PRIx64 " = 0x%016" PRIx64 "\n", addr, stack[2]); + if (len == 4 && littleendian) { + insn = (uint32_t *)data; + *insn = bswap_32(*insn); + } - if (mem_write(adu_target, addr, data, len, 0, false)) { + start_addr = addr & ~(align - 1); + end_addr = (addr + len + (align - 1)) & ~(align - 1); + if (addr != start_addr || (addr + len) != end_addr) { + buf = malloc(end_addr - start_addr); + mem_read(adu_target, start_addr, buf, end_addr - start_addr, 0, false); + memcpy(buf + (addr - start_addr), data, len); + } else { + buf = data; + } + + if (mem_write(adu_target, start_addr, buf, end_addr - start_addr, 0, false)) { PR_ERROR("Unable to write memory\n"); err = 3; } - out: if (err) send_response(fd, ERROR(EPERM)); From patchwork Mon Mar 14 04:17:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1604902 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=hy81rd2D; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KH3Dn64stz9sG2 for ; Mon, 14 Mar 2022 15:18:17 +1100 (AEDT) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4KH3Dn5Dhdz30F2 for ; Mon, 14 Mar 2022 15:18:17 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=hy81rd2D; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::435; helo=mail-pf1-x435.google.com; envelope-from=npiggin@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=hy81rd2D; dkim-atps=neutral Received: from mail-pf1-x435.google.com (mail-pf1-x435.google.com [IPv6:2607:f8b0:4864:20::435]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4KH3Dj5R3Cz30QX for ; Mon, 14 Mar 2022 15:18:13 +1100 (AEDT) Received: by mail-pf1-x435.google.com with SMTP id f8so13183437pfj.5 for ; Sun, 13 Mar 2022 21:18:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lp/Zcr58RdWXt+Ld6xTn+Irdopmzre244W6Ci3SBK7g=; b=hy81rd2DJV2idrd3TQ+lME7/au17hqWBszPk/dMxqcYuuuESnvyMuER/Hvo7CoVTRO MDp/F5D06NHfNiioIYyIz11xQrf+pWwQJhWQVMoeGxGA72g5lHPjiFvNADOGHt6azu9t tkG+jgn/Cy1ozL9+QZTPvwrmxD+EinulWp5EHMKokGEo64T42M0906+7cC60pg7bbHl2 DnBEiWCMHiAwh0gxypDsf2kSw4iBKhHQ7oc2DBJlgQYwPAHYANDy9yoZiWETuIdhf41w krnJgDTXeke6UmznMrrB0cirnFVupSAm3Fs3zMNNSiSebKl3Ci15MuheSKvGNNZ6Fis5 rUcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lp/Zcr58RdWXt+Ld6xTn+Irdopmzre244W6Ci3SBK7g=; b=Q67/wnuDB+PeFF8bVKj2yEj/Ujm9C/gCqU5OI2PPug7xGecxHNdWoW96L0STB3R9RH lGv7asKhawMfJwJnG24EGq0Cf8nYFr2r0Z25+OUWPEBO832f/rI/h3ew7nODBpZWApnL o9PANQFDsq6kXifI450KNUqWoHIMjxDazwSKd+aYHuFSa2Dgcw2+ror9wcZEADXtqxh0 qEAZRvrDtA6+PmBDYbe/tbD3PpPVp50uabTJixIJg8rMvibcdDkuU9jgVHU9IfDTJI0U ZS9N3rT7k7R9bNFPl06MEoa1ca8mR6UGl26hScapK5QjdY8DSOZBBOXswbdfK94O3sUc FuhQ== X-Gm-Message-State: AOAM531K4sc5GB4jX4myrnDfhAs5y+W6vATyZ8lC4xMV+t4l2V739ksk VGdS1XRN144AIY9OoL+8bWNL66eiVzQ= X-Google-Smtp-Source: ABdhPJwpAaZUwxisNVzX0mQiZkxqrVf20ryPBGPkWVaSHQZJu4mvtLs+eZuKVw/l5ygmQc/e6EQ5tw== X-Received: by 2002:a65:6a4a:0:b0:380:fd52:1677 with SMTP id o10-20020a656a4a000000b00380fd521677mr14789247pgu.597.1647231491639; Sun, 13 Mar 2022 21:18:11 -0700 (PDT) Received: from bobo.ibm.com (110-175-148-108.static.tpgi.com.au. [110.175.148.108]) by smtp.gmail.com with ESMTPSA id d16-20020a056a00245000b004f771b48736sm14283018pfj.194.2022.03.13.21.18.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Mar 2022 21:18:11 -0700 (PDT) From: Nicholas Piggin To: pdbg@lists.ozlabs.org Date: Mon, 14 Mar 2022 14:17:35 +1000 Message-Id: <20220314041735.542867-16-npiggin@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220314041735.542867-1-npiggin@gmail.com> References: <20220314041735.542867-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 14/14] gdbserver: Add POWER10 support X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nicholas Piggin Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Signed-off-by: Nicholas Piggin Reviewed-by: Joel Stanley --- src/pdbgproxy.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index e8aab70..b44aea4 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -104,6 +104,8 @@ static void detach(uint64_t *stack, void *priv) } #define POWER8_HID_ENABLE_ATTN PPC_BIT(31) +#define POWER10_HID_ENABLE_ATTN PPC_BIT(3) +#define POWER10_HID_FLUSH_ICACHE PPC_BIT(2) static int set_attn(bool enable) { @@ -122,6 +124,17 @@ static int set_attn(bool enable) return 0; hid &= ~POWER8_HID_ENABLE_ATTN; } + } else if (pdbg_target_compatible(thread_target, "ibm,power10-thread")) { + if (enable) { + if (hid & POWER10_HID_ENABLE_ATTN) + return 0; + hid |= POWER10_HID_ENABLE_ATTN; + } else { + if (!(hid & POWER10_HID_ENABLE_ATTN)) + return 0; + hid &= ~POWER10_HID_ENABLE_ATTN; + } + hid |= POWER10_HID_FLUSH_ICACHE; } else { return -1; } @@ -572,9 +585,12 @@ static int gdbserver(uint16_t port) } // - // Temporary until I can get this working a bit smoother on p9 - if (!pdbg_target_compatible(thread, "ibm,power8-thread")) { - PR_ERROR("GDBSERVER is only available on POWER8\n"); + // POWER9 appears to have problems with PSI interrupts when hitting + // an attn intstruction. Could just disallow breakpoints on P9. + // + if (!pdbg_target_compatible(thread, "ibm,power8-thread") && + !pdbg_target_compatible(thread, "ibm,power10-thread")) { + PR_ERROR("GDBSERVER is only available on POWER8 and POWER10\n"); return -1; }