From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id dqgTMIOSwmROsTAAWB0awg (envelope-from ) for ; Thu, 27 Jul 2023 11:51:31 -0400 Authentication-Results: simark.ca; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=spacemit.com header.i=@spacemit.com header.a=rsa-sha256 header.s=feishu2303021642 header.b=esOQ9pEr; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id B7A781E0C0; Thu, 27 Jul 2023 11:51:31 -0400 (EDT) Received: from server2.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 850C11E00F for ; Thu, 27 Jul 2023 11:51:28 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E2987385B53C for ; Thu, 27 Jul 2023 15:51:27 +0000 (GMT) Received: from t03.bc.larksuite.com (t03.bc.larksuite.com [209.127.231.38]) by sourceware.org (Postfix) with UTF8SMTPS id C703C385B53C for ; Thu, 27 Jul 2023 15:51:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C703C385B53C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=spacemit.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=spacemit.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=feishu2303021642; d=spacemit.com; t=1690473063; h=from:subject: mime-version:from:date:message-id:subject:to:cc:reply-to:content-type: mime-version:in-reply-to:message-id; bh=LVeVD2NZVzVYA/tg9A/qDBx+2UaO/VsRwdArHjMpe1E=; b=esOQ9pEruNWbUVJGTKNrov5sCRZWWEtmQHxQpCz0jiuBp7HZhHdSlZ/8/+TMVp/x6NDgFI hAhrK2jvzWsNLqLirI9K1RkaRocy729yhQ5ugaerq5f/vnNwBZklRW+8GAqKcGi9Fgttpx 1tKNnquq/GgqeMnmvlZacP3bGtI5Ntay3O/TMBSI9kOxZHKVveJ2uh8sU35GMRAmLl/3l3 fBoJWe3wc6oOFXqGxaykwoXgRVmXksfQHM9rLZx06dOaPu0i9+tb1bFneyovys9W29M21Z +NvnPsdvauAGP52p6F/5iKBmlzW3N+tcR7tbJbUcenumIuuignG/2Zjg2MbPzw== To: "Tom Tromey" Cc: "gdb" In-Reply-To: <87bkfyk636.fsf@tromey.com> From: =?utf-8?q?=E5=BA=84=E7=A7=8B=E5=BD=AC?= Mime-Version: 1.0 X-Lms-Return-Path: Date: Thu, 27 Jul 2023 23:51:02 +0800 Message-Id: <16c8bb4f69de36253945d0fb7891fb770dd49697.2fb804b7.2dde.4cea.a08c.33c09a7a4597@feishu.cn> Subject: =?UTF-8?q?Re:_why_gdb_try_to_read_address_0x0_when_I_set_$pc=EF=BC=8Chow_?= =?UTF-8?q?to_suppress_this_behavior=3F?= X-Spam-Status: No, score=1.4 required=5.0 tests=BAYES_50, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_LOTSOFHASH, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Level: * X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org Content-Type: text/plain; charset=UTF-8 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: , Errors-To: gdb-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb" Hi Tom, Thank you for your reply, I'm trying to debug it. I use qemu-riscv64 to run a program, then use riscv-gdb to debug it, riscv-= gdb show that it send package "$m0,2#fb" to qemu, the full log is: (riscv-gdb) target remote localhost:1235 Remote debugging using localhost:1235 warning: No executable has been specified and target does not support determining executable automatically.=C2=A0 Try using the "file" command. 0x0000000000010528 in ?? () (riscv-gdb) set debug remote 1 (riscv-gdb) set $pc=3D0x10528 [remote] Sending packet: $m0,2#fb [remote] Received Ack [remote] Packet received: E14 [remote] Sending packet: $g#67 [remote] Received Ack [remote] Packet received: 0000000000000000000000000000000090028000400000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 0000000000000 [16 bytes omitted] [remote] Sending packet: $m10528,4#cd [remote] Received Ack [remote] Packet received: ef00e002 [remote] Sending packet: $m10524,4#c9 [remote] Received Ack [remote] Packet received: f5b70000 [remote] Sending packet: $m0,2#fb [remote] Received Ack [remote] Packet received: E14 Then I use gdb(x86-gdb) to debug this riscv-gdb, the package "$m0,2#fb" com= es from some code about riscv frame, full log is: Thread 1 "riscv64-unknown" hit Breakpoint 2, remote_target::putpkt_binary (= this=3D0xf399d0, buf=3D, cnt=3D) =C2=A0=C2=A0=C2=A0 at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /remote.c:9602 9602 =C2=A0 =C2=A0 =C2=A0=C2=A0 /toolchain/riscv-gnu-toolchain/build_gcc12/= ../gdb/gdb/remote.c: No such file or directory. (gdb) bt #0=C2=A0 remote_target::putpkt_binary (this=3D0xf399d0, buf=3D, cnt=3D) at /toolchain/riscv-gnu-toolchain/build_gcc12/..= /gdb/gdb/remote.c:9602 #1=C2=A0 0x00000000006b7d38 in remote_target::putpkt (buf=3D0xfaeac0 "m0,2"= , this=3D0xf399d0) at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /remote.c:9516 #2=C2=A0 remote_target::putpkt (buf=3D..., this=3D0xf399d0) at /toolchain/r= iscv-gnu-toolchain/build_gcc12/../gdb/gdb/remote.c:907 #3=C2=A0 remote_target::remote_read_bytes_1 (this=3Dthis@entry=3D0xf399d0, = memaddr=3D, memaddr@entry=3D0, myaddr=3Dmyaddr@entry=3D0x7ff= fffffd968 "\204\036f", len_units=3Dlen_units@entry=3D2, =C2=A0=C2=A0=C2=A0 unit_size=3Dunit_size@entry=3D1, xfered_len_units=3Dxfer= ed_len_units@entry=3D0x7fffffffd8f8) at /toolchain/riscv-gnu-toolchain/buil= d_gcc12/../gdb/gdb/remote.c:9190 #4=C2=A0 0x00000000006b7f91 in remote_target::remote_read_bytes (this=3D0xf= 399d0, memaddr=3D0, myaddr=3D0x7fffffffd968 "\204\036f", len=3D2, unit_size= =3D1, xfered_len=3D0x7fffffffd8f8) =C2=A0=C2=A0=C2=A0 at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /remote.c:9315 #5=C2=A0 0x000000000072cbcf in raw_memory_xfer_partial (ops=3Dops@entry=3D0= xf399d0, readbuf=3Dreadbuf@entry=3D0x7fffffffd968 "\204\036f", writebuf=3Dw= ritebuf@entry=3D0x0, memaddr=3Dmemaddr@entry=3D0, len=3D2, =C2=A0=C2=A0=C2=A0 xfered_len=3Dxfered_len@entry=3D0x7fffffffd8f8) at /tool= chain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb/target.c:1514 #6=C2=A0 0x000000000072cd1f in memory_xfer_partial_1 (ops=3Dops@entry=3D0xf= 399d0, object=3Dobject@entry=3DTARGET_OBJECT_MEMORY, readbuf=3Dreadbuf@entr= y=3D0x7fffffffd968 "\204\036f", writebuf=3Dwritebuf@entry=3D0x0, =C2=A0=C2=A0=C2=A0 memaddr=3Dmemaddr@entry=3D0, len=3Dlen@entry=3D2, xfered= _len=3D0x7fffffffd8f8) at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb= /gdb/target.c:1645 #7=C2=A0 0x000000000072cf9a in memory_xfer_partial (xfered_len=3D0x7fffffff= d8f8, len=3D2, memaddr=3D0, writebuf=3D0x0, readbuf=3D0x7fffffffd968 "\204\= 036f", object=3DTARGET_OBJECT_MEMORY, ops=3D0xf399d0) =C2=A0=C2=A0=C2=A0 at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /target.c:1674 #8=C2=A0 target_xfer_partial (ops=3D0xf399d0, object=3DTARGET_OBJECT_MEMORY= , annex=3D0x0, readbuf=3D0x7fffffffd968 "\204\036f", writebuf=3D0x0, offset= =3D0, len=3D, xfered_len=3D0x7fffffffd8f8) =C2=A0=C2=A0=C2=A0 at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /target.c:1731 #9=C2=A0 0x000000000072d3a9 in target_read_partial (xfered_len=3D0x7fffffff= d8f8, len=3D2, offset=3D0, buf=3D0x7fffffffd968 "\204\036f", annex=3D0x0, o= bject=3DTARGET_OBJECT_MEMORY, ops=3D0xf399d0) =C2=A0=C2=A0=C2=A0 at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /target.c:2024 #10 target_read (ops=3D0xf399d0, object=3Dobject@entry=3DTARGET_OBJECT_MEMO= RY, annex=3Dannex@entry=3D0x0, buf=3Dbuf@entry=3D0x7fffffffd968 "\204\036f"= , offset=3Doffset@entry=3D0, len=3Dlen@entry=3D2) =C2=A0=C2=A0=C2=A0 at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /target.c:2024 #11 0x000000000072d416 in target_read_memory (memaddr=3Dmemaddr@entry=3D0, = myaddr=3Dmyaddr@entry=3D0x7fffffffd968 "\204\036f", len=3Dlen@entry=3D2) =C2=A0=C2=A0=C2=A0 at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /target.h:1394 #12 0x00000000006c0de8 in riscv_insn::fetch_instruction (gdbarch=3Dgdbarch@= entry=3D0xf83870, addr=3D0, len=3Dlen@entry=3D0x7fffffffd9e0) =C2=A0=C2=A0=C2=A0 at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /riscv-tdep.c:1664 #13 0x00000000006c0ee8 in riscv_insn::decode (this=3D0x7fffffffd9e0, gdbarc= h=3D0xf83870, pc=3D) at /toolchain/riscv-gnu-toolchain/build= _gcc12/../gdb/gdb/riscv-tdep.c:1693 #14 0x00000000006c187c in riscv_scan_prologue (gdbarch=3D0xf83870, start_pc= =3D, end_pc=3D100, cache=3D0xe9bd20) at /toolchain/riscv-gnu= -toolchain/build_gcc12/../gdb/gdb/riscv-tdep.c:1873 #15 0x00000000006c1fdc in riscv_frame_cache (this_frame=3D0xe9bc60, this_ca= che=3D) at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb= /gdb/riscv-tdep.c:3340 #16 0x00000000006c2139 in riscv_frame_this_id (this_frame=3D= , prologue_cache=3D, this_id=3D0xe9bcc0) =C2=A0=C2=A0=C2=A0 at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb= /riscv-tdep.c:3392 #17 0x00000000005bf142 in compute_frame_id (fi=3D0xe9bc60) at /toolchain/ri= scv-gnu-toolchain/build_gcc12/../gdb/gdb/frame.c:583 #18 0x00000000005bf3cf in get_frame_id (fi=3D0xe9bc60) at /toolchain/riscv-= gnu-toolchain/build_gcc12/../gdb/gdb/frame.c:626 #19 0x000000000078919a in value_assign (toval=3D0xf80340, fromval=3D0xf1889= 0) at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb/valops.c:1103 #20 0x000000000059e5fd in expression::evaluate (this=3D0xf8cf40, expect_typ= e=3D0x0, noside=3DEVAL_NORMAL) at /toolchain/riscv-gnu-toolchain/build_gcc1= 2/../gdb/gdb/eval.c:101 #21 0x0000000000678e98 in set_command (exp=3D, from_tty=3D) at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb/pri= ntcmd.c:1520 #22 0x00000000004eeba8 in cmd_func (cmd=3D, args=3D, from_tty=3D) at /toolchain/riscv-gnu-toolchain/build= _gcc12/../gdb/gdb/cli/cli-decode.c:2514 #23 0x00000000007486ae in execute_command (p=3D, p@entry=3D0= xe4c6f0 "set $pc=3D0x10528", from_tty=3D1) at /toolchain/riscv-gnu-toolchai= n/build_gcc12/../gdb/gdb/top.c:702 #24 0x00000000005a45bc in command_handler (command=3D0xe4c6f0 "set $pc=3D0x= 10528") at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb/event-top.= c:597 #25 0x00000000005a48bb in command_line_handler (rl=3D...) at /toolchain/ris= cv-gnu-toolchain/build_gcc12/../gdb/gdb/event-top.c:800 #26 0x00000000005a4ead in gdb_rl_callback_handler (rl=3D0xf887d0 "set $pc= =3D0x10528") at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb/event= -top.c:229 #27 0x000000000080f7a0 in rl_callback_read_char () at /toolchain/riscv-gnu-= toolchain/build_gcc12/../gdb/readline/readline/callback.c:281 #28 0x00000000005a39fe in gdb_rl_callback_read_char_wrapper_noexcept () at = /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb/event-top.c:187 #29 0x00000000005a4d9e in gdb_rl_callback_read_char_wrapper (client_data=3D= ) at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb/e= vent-top.c:203 #30 0x00000000005a3810 in stdin_event_handler (error=3D, cli= ent_data=3D0xe47f80) at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/g= db/event-top.c:524 #31 0x00000000008b5665 in gdb_wait_for_event (block=3Dblock@entry=3D1) at /= toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdbsupport/event-loop.cc:7= 00 #32 0x00000000008b573d in gdb_wait_for_event (block=3D1) at /toolchain/risc= v-gnu-toolchain/build_gcc12/../gdb/gdbsupport/event-loop.cc:596 #33 gdb_do_one_event () at /toolchain/riscv-gnu-toolchain/build_gcc12/../gd= b/gdbsupport/event-loop.cc:237 #34 0x000000000062c765 in start_event_loop () at /toolchain/riscv-gnu-toolc= hain/build_gcc12/../gdb/gdb/main.c:421 #35 captured_command_loop () at /toolchain/riscv-gnu-toolchain/build_gcc12/= ../gdb/gdb/main.c:481 #36 0x000000000062dcd5 in captured_main (data=3Ddata@entry=3D0x7fffffffe180= ) at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb/main.c:1351 #37 gdb_main (args=3Dargs@entry=3D0x7fffffffe1a0) at /toolchain/riscv-gnu-t= oolchain/build_gcc12/../gdb/gdb/main.c:1366 #38 0x000000000042f625 in main (argc=3D, argv=3D) at /toolchain/riscv-gnu-toolchain/build_gcc12/../gdb/gdb/gdb.c:32 I'm not familiar with gdb, so it will take some time to figure out exactly = what's going on. > From:"Tom Tromey" > Date:Thu, Jul 27, 2023, 00:09 > Subject:Re: why gdb try to read address 0x0 when I set $pc=EF=BC=8Chow to= suppress this behavior? > To:"=E5=BA=84=E7=A7=8B=E5=BD=AC" > Cc:"gdb@sourceware.org" > >>>>> =E5=BA=84=E7=A7=8B=E5=BD=AC=C2=A0 writes= : >=C2=A0 > Sorry about the delay on this. >=C2=A0 > > I use gdb with openocd to debug a riscv board, and found that when set > > $pc=3Dxxx(a non-zero value) in gdb, gdb would first read the address > > 0x0, which caused an error on this riscv device.=C2=A0 Is there any > > documentation or suggestions for reading the source code to solve this > > problem?=C2=A0 >=C2=A0 >=C2=A0 > I don't think so.=C2=A0 Reading 0x0 when trying to set $pc is unexpected = to > me at least.=C2=A0 I'd normally approach this by debugging gdb to try to > understand why it is happening. >=C2=A0 > Tom This message and any attachment are confidential and may be privileged or o= therwise protected from disclosure. If you are not an intended recipient of= this message, please delete it and any attachment from your system and not= ify the sender immediately by reply e-mail. Unintended recipients should no= t use, copy, disclose or take any action based on this message or any infor= mation contained in this message. Emails cannot be guaranteed to be secure = or error free as they can be intercepted, amended, lost or destroyed, and y= ou should take full responsibility for security checking.=20 =20 =E6=9C=AC=E9=82=AE=E4=BB=B6=E5=8F=8A=E5=85=B6=E4=BB=BB=E4=BD=95=E9=99=84=E4= =BB=B6=E5=85=B7=E6=9C=89=E4=BF=9D=E5=AF=86=E6=80=A7=E8=B4=A8=EF=BC=8C=E5=B9= =B6=E5=8F=AF=E8=83=BD=E5=8F=97=E5=85=B6=E4=BB=96=E4=BF=9D=E6=8A=A4=E6=88=96= =E4=B8=8D=E5=85=81=E8=AE=B8=E8=A2=AB=E6=8A=AB=E9=9C=B2=E7=BB=99=E7=AC=AC=E4= =B8=89=E6=96=B9=E3=80=82=E5=A6=82=E9=98=81=E4=B8=8B=E8=AF=AF=E6=94=B6=E5=88= =B0=E6=9C=AC=E9=82=AE=E4=BB=B6=EF=BC=8C=E6=95=AC=E8=AF=B7=E7=AB=8B=E5=8D=B3= =E4=BB=A5=E5=9B=9E=E5=A4=8D=E7=94=B5=E5=AD=90=E9=82=AE=E4=BB=B6=E7=9A=84=E6= =96=B9=E5=BC=8F=E9=80=9A=E7=9F=A5=E5=8F=91=E4=BB=B6=E4=BA=BA=EF=BC=8C=E5=B9= =B6=E5=B0=86=E6=9C=AC=E9=82=AE=E4=BB=B6=E5=8F=8A=E5=85=B6=E4=BB=BB=E4=BD=95= =E9=99=84=E4=BB=B6=E4=BB=8E=E9=98=81=E4=B8=8B=E7=B3=BB=E7=BB=9F=E4=B8=AD=E4= =BA=88=E4=BB=A5=E5=88=A0=E9=99=A4=E3=80=82=E5=A6=82=E9=98=81=E4=B8=8B=E5=B9= =B6=E9=9D=9E=E6=9C=AC=E9=82=AE=E4=BB=B6=E5=86=99=E6=98=8E=E4=B9=8B=E6=94=B6= =E4=BB=B6=E4=BA=BA=EF=BC=8C=E6=95=AC=E8=AF=B7=E5=88=87=E5=8B=BF=E4=BD=BF=E7= =94=A8=E3=80=81=E5=A4=8D=E5=88=B6=E3=80=81=E6=8A=AB=E9=9C=B2=E6=9C=AC=E9=82= =AE=E4=BB=B6=E6=88=96=E5=85=B6=E4=BB=BB=E4=BD=95=E5=86=85=E5=AE=B9=EF=BC=8C= =E4=BA=A6=E8=AF=B7=E5=88=87=E5=8B=BF=E4=BE=9D=E6=9C=AC=E9=82=AE=E4=BB=B6=E6= =88=96=E5=85=B6=E4=BB=BB=E4=BD=95=E5=86=85=E5=AE=B9=E8=80=8C=E9=87=87=E5=8F= =96=E4=BB=BB=E4=BD=95=E8=A1=8C=E5=8A=A8=E3=80=82=E7=94=B5=E5=AD=90=E9=82=AE= =E4=BB=B6=E6=97=A0=E6=B3=95=E4=BF=9D=E8=AF=81=E6=98=AF=E4=B8=80=E7=A7=8D=E5= =AE=89=E5=85=A8=E5=92=8C=E4=B8=8D=E4=BC=9A=E5=87=BA=E7=8E=B0=E4=BB=BB=E4=BD= =95=E5=B7=AE=E9=94=99=E7=9A=84=E9=80=9A=E4=BF=A1=E6=96=B9=E5=BC=8F=EF=BC=8C= =E5=8F=AF=E8=83=BD=E4=BC=9A=E8=A2=AB=E6=8B=A6=E6=88=AA=E3=80=81=E4=BF=AE=E6= =94=B9=E3=80=81=E4=B8=A2=E5=A4=B1=E6=88=96=E6=8D=9F=E5=9D=8F=EF=BC=8C=E6=94= =B6=E4=BB=B6=E4=BA=BA=E9=9C=80=E8=87=AA=E8=A1=8C=E8=B4=9F=E8=B4=A3=E5=81=9A= =E5=A5=BD=E5=AE=89=E5=85=A8=E6=A3=80=E6=9F=A5=E3=80=82