From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 2A5FB3858C83; Fri, 14 Oct 2022 15:02:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2A5FB3858C83 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1665759745; bh=4DLfNDIVQewGC+AqnNCNbJLqMYs7gf3PrhR52QATpok=; h=From:To:Subject:Date:In-Reply-To:References:From; b=DL3Q2Gafd5rCDC9MvDzrdh8p+4+8HUOU6IFUFcCrlK5EW0vh8IS0ThCcGoB0BAELT +m0fzbnEzHB/lBKfPQtejjBajpX25P5PoErMFr0sp7khKTeMbBllSQ1flWqWteoMJL 0sFvEA6XARDjrT8qyVUXUmu38lmqbv1f4qtM3eFs= From: "tomas.vanek at fbl dot cz" To: gdb-prs@sourceware.org Subject: [Bug breakpoints/28683] advance/until commands do not handle SIGTRAMP_FRAME on ARM Cortex-M Date: Fri, 14 Oct 2022 15:02:13 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gdb X-Bugzilla-Component: breakpoints X-Bugzilla-Version: HEAD X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: tomas.vanek at fbl dot cz X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://sourceware.org/bugzilla/show_bug.cgi?id=3D28683 --- Comment #5 from tomas.vanek at fbl dot cz --- GNU gdb (GDB) 13.0.50.20221012-git has the same problem. The proposed patch depends on the lockup unwinder https://sourceware.org/bugzilla/attachment.cgi?id=3D13853 Without it the caller frame is missdetected as arm stub @ 0xfffffffe and gdb wants to set temporary breakpoint at that address. (gdb) adv main [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=3D0 [frame] get_prev_frame_raw: -> {level=3D1,type=3D,unwinder=3D,pc=3D,id=3D,func=3D} [frame] compute_frame_id: enter [frame] compute_frame_id: fi=3D1 [frame] frame_unwind_find_by_frame: enter [frame] frame_unwind_find_by_frame: this_frame=3D1 [frame] frame_unwind_arch: next_frame=3D0 -> armv7e-m [frame] frame_unwind_try_unwinder: trying unwinder "dummy" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 tailcall" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "inline" [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=3D0, regnum=3D15(pc) [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=3D0, regnum=3D14(lr) [frame] frame_id_p: l=3D{stack=3D,!code,special=3D0x0000000000000000} -> 1 [frame] frame_id_p: l=3D{stack=3D,!code,special=3D0x0000000000000000} -> 1 [frame] operator=3D=3D: l=3D{stack=3D,!code,special=3D0x0000000000000000}, r=3D{stack=3D,!code,special=3D0x0000000000000000} -> 1 [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=3D-1, regnum=3D14(lr) [frame] frame_unwind_register_value: -> register=3D14 bytes=3D[ffffffff] [frame] frame_unwind_register_value: exit [frame] frame_id_p: l=3D{stack=3D,!code,special=3D0x0000000000000000} -> 1 [frame] operator=3D=3D: l=3D{stack=3D,!code,special=3D0x0000000000000000}, r=3D{stack=3D,!code,special=3D0x0000000000000000} -> 1 [frame] get_prev_frame_always_1: enter [frame] get_prev_frame_always_1: this_frame=3D-1 [frame] get_prev_frame_always_1: -> {level=3D0,type=3DNORMAL_FRAME,unwinder=3D"arm prologue",pc=3D0x4e2,id=3D{stack=3D0x20010000,code=3D0x00000000000004e0,!sp= ecial},func=3D0x4e0} // cached [frame] get_prev_frame_always_1: exit [frame] value_fetch_lazy_register: (frame=3D0, regnum=3D14(lr), .= ..) -> register=3D14 bytes=3D[ffffffff] [frame] frame_unwind_register_value: -> register=3D14 bytes=3D[ffffffff] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: -> computed bytes=3D[fefffff= f] [frame] frame_unwind_register_value: exit [frame] frame_unwind_pc: this_frame=3D0 -> 0xfffffffe [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "jit" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "arm m exception" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "arm stub" [frame] frame_unwind_try_unwinder: yes [frame] frame_unwind_find_by_frame: exit [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=3D0, regnum=3D13(sp) [frame] frame_unwind_register_value: -> computed bytes=3D[00000120] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=3D0, regnum=3D91(msp) [frame] frame_unwind_register_value: -> computed bytes=3D[00000120] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=3D0, regnum=3D92(psp) [frame] frame_unwind_register_value: -> computed bytes=3D[00000000] [frame] frame_unwind_register_value: exit [frame] frame_unwind_register_value: enter [frame] frame_unwind_register_value: frame=3D0, regnum=3D13(sp) [frame] frame_unwind_register_value: -> computed bytes=3D[00000120] [frame] frame_unwind_register_value: exit [frame] frame_id_p: l=3D{stack=3D0x20010000,code=3D0x00000000fffffffe,!= special} -> 1 [frame] compute_frame_id: -> {stack=3D0x20010000,code=3D0x00000000fffffffe,!special} [frame] compute_frame_id: exit [frame] get_prev_frame_always_1: exit [frame] frame_id_p: l=3D{stack=3D0x20010000,code=3D0x00000000fffffffe,!spec= ial} -> 1 [frame] frame_id_p: l=3D{stack=3D0x20010000,code=3D0x00000000fffffffe,!spec= ial} -> 1 [frame] frame_id_p: l=3D{!stack,!code,!special} -> 0 [frame] frame_id_p: l=3D{!stack,!code,!special} -> 0 [frame] frame_id_p: l=3D{!stack,!code,!special} -> 0 [frame] frame_id_p: l=3D{!stack,!code,!special} -> 0 [frame] frame_id_p: l=3D{!stack,!code,!special} -> 0 [frame] frame_id_p: l=3D{!stack,!code,!special} -> 0 [frame] frame_id_p: l=3D{!stack,!code,!special} -> 0 [frame] frame_id_p: l=3D{!stack,!code,!special} -> 0 Note: automatically using hardware breakpoints for read-only addresses. [frame] frame_id_p: l=3D{!stack,!code,!special} -> 0 Warning: Cannot insert breakpoint 0. Cannot access memory at address 0xfffffffe Command aborted. --=20 You are receiving this mail because: You are on the CC list for the bug.=