aboutsummaryrefslogtreecommitdiff
path: root/gdb/breakpoint.c
diff options
context:
space:
mode:
authorPedro Alves <pedro@palves.net>2020-08-21 23:38:29 +0100
committerPedro Alves <pedro@palves.net>2020-08-22 00:26:58 +0100
commite4e53e546c76aa3ac386ad4816ee34069eddb54e (patch)
tree59c1ec1acec9f0a748d54b9e568cb230dd212c49 /gdb/breakpoint.c
parent33bf4c5c10d246543c7a9a8ba4bbbe173d7f3367 (diff)
downloadbinutils-e4e53e546c76aa3ac386ad4816ee34069eddb54e.zip
binutils-e4e53e546c76aa3ac386ad4816ee34069eddb54e.tar.gz
binutils-e4e53e546c76aa3ac386ad4816ee34069eddb54e.tar.bz2
Fix advance/until and inline frames (PR gdb/26523)
If you do "tbreak LINENO; c" to advance to an inlined function, GDB presents the stop at the inline frame instead of at the non-artificial stack frame: (gdb) list 21 18 static inline __attribute__ ((always_inline)) int 19 inline_func (int i) 20 { 21 return i + 1; 22 } (gdb) tbreak 21 Temporary breakpoint 3 at 0x55555555516f: advance.cc:21. (gdb) c Continuing. Temporary breakpoint 3, inline_func (i=0) at advance.cc:21 21 return i + 1; The logic for this is in stopped_by_user_bp_inline_frame: /* Loop over the stop chain and determine if execution stopped in an inlined frame because of a breakpoint with a user-specified location set at FRAME_BLOCK. */ static bool stopped_by_user_bp_inline_frame (const block *frame_block, bpstat stop_chain) If however, you do "advance LINENO" or "until LINENO" instead, GDB presents the stop at the non-artificial frame: (gdb) advance 21 main () at advance.cc:43 43 i = inline_func (i); (gdb) "advance" and "until" should really behave like user breakpoints here, since their location is also user-specified. As the comment in gdb.base/advance.exp says, "advance <location>" is really just syntactic sugar for "tbreak <location>; continue". Fix this by making stopped_by_user_bp_inline_frame also consider advance/until breakpoints. A testcase covering this will be included in the next patch. gdb/ChangeLog: PR gdb/26523 * inline-frame.c (stopped_by_user_bp_inline_frame): Also consider bp_until breakpoints user-specified locations. Update intro comment.
Diffstat (limited to 'gdb/breakpoint.c')
0 files changed, 0 insertions, 0 deletions