From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id kbjLFm/S7mJ38iEAWB0awg (envelope-from ) for ; Sat, 06 Aug 2022 16:43:27 -0400 Received: by simark.ca (Postfix, from userid 112) id 4D5A51EA05; Sat, 6 Aug 2022 16:43:27 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=d7lhQpG3; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (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 simark.ca (Postfix) with ESMTPS id 4406A1E9EB for ; Sat, 6 Aug 2022 16:43:26 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EB811385828F for ; Sat, 6 Aug 2022 20:43:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EB811385828F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1659818603; bh=k/ibBN+GAPuQhqq/8m4SvJHCiGVhDgsQbY+QgRx6U2I=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=d7lhQpG3QSB30y6TT2GPp4nTTrn42pR1I44Tx+NYWC7F+4gH45tBCy6RpF2TNZ+M4 xFsBZGbe+FDy4bs/D8KpcVTh7hl4TjcN+Ypj0tuvrX+MxkO3UjFH931MHMTFL/hkrc YQZGzfcvSkDGlEYkPkFRz4NdwCrpC9CN/dojPuZ0= Received: from lelv0143.ext.ti.com (lelv0143.ext.ti.com [198.47.23.248]) by sourceware.org (Postfix) with ESMTPS id 9A0673858D28 for ; Sat, 6 Aug 2022 20:42:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9A0673858D28 Received: from fllv0034.itg.ti.com ([10.64.40.246]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id 276KgtvS054601 for ; Sat, 6 Aug 2022 15:42:55 -0500 Received: from DFLE103.ent.ti.com (dfle103.ent.ti.com [10.64.6.24]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 276KgtOB048240 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Sat, 6 Aug 2022 15:42:55 -0500 Received: from DFLE104.ent.ti.com (10.64.6.25) by DFLE103.ent.ti.com (10.64.6.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.14; Sat, 6 Aug 2022 15:42:55 -0500 Received: from DFLE104.ent.ti.com ([fe80::44c:e883:6f6f:384d]) by DFLE104.ent.ti.com ([fe80::44c:e883:6f6f:384d%17]) with mapi id 15.01.2308.014; Sat, 6 Aug 2022 15:42:55 -0500 To: "gdb@sourceware.org" Subject: Confused by watchpoints on remote protocol Thread-Topic: Confused by watchpoints on remote protocol Thread-Index: Adip1GWVQGgzoEbbTR20UHUTp2psZA== Date: Sat, 6 Aug 2022 20:42:55 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.250.59.181] x-exclaimer-md-config: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gdb@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: "Denio, Mike via Gdb" Reply-To: "Denio, Mike" Errors-To: gdb-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb" In GDB 11.2 for RISCV, I am trying to support hardware watchpoints. I think= I'm close, but I have 2 questions: 1. I noticed that whether or not GDB will even attempt to use a hardware wa= tch point depends on the how the command it entered. For example: (gdb) watch *(uint32_t *)(0x80000018) Hardware watchpoint 1: *(uint32_t *)(0x80000018) (gdb) watch (uint32_t)ram_table Watchpoint 2: (uint32_t)ram_table (gdb) i b Num Type Disp Enb Address What 1 hw watchpoint keep y *(uint32_t *)(0x80000018) 2 watchpoint keep y (uint32_t)ram_table When I enter is as "watch *(uint32_t *)(0x80000018)", a hardware watchpoint= is used, but when I enter it as "watch (uint32_t)ram_table", a soft watchpoint is used. I don't understand this. How can I tell GDB to always use a hardware watchp= oint? Also, FYI, the order doesn't matter (it's not as if GDB assumes only 1 hard= ware watchpoint). Below we see GDB immediately uses a software watchpoint: (gdb) watch (uint32_t)ram_table Watchpoint 1: (uint32_t)ram_table (gdb) watch *(uint32_t *)(0x80000018) Hardware watchpoint 2: *(uint32_t *)(0x80000018) (gdb) i b Num Type Disp Enb Address What 1 watchpoint keep y (uint32_t)ram_table 2 hw watchpoint keep y *(uint32_t *)(0x80000018) Now that I think about it, how do I tell GDB how many hardware watchpoints = I support? 2. Also a second related question. I noticed that unlike breakpoints, GDB w= ill not remove, single step past, and then replace hardware watchpoints. Is= it always assumed that hardware watchpoints break AFTER the operation in q= uestion? It makes sense to break after the operation for writes since the u= ser wants to watch a value change, but it wasn't obvious to me for read and= access watchpoints. Should all of them break on the following instruction? Thanks in advance for any help. Please keep my e-mail on the reply as I am = not subscribed. Mike