aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2018-06-14 12:54:09 +0100
committerPedro Alves <palves@redhat.com>2018-06-14 12:54:09 +0100
commit7b045207d1b8980add1c87b643504e3ef987e7a2 (patch)
tree109bf76e0fdc424f205f8dc83d86f2af30625efc
parent11ae5818f76e0af4dcf7ee069e0756ccf6901ebe (diff)
downloadgdb-7b045207d1b8980add1c87b643504e3ef987e7a2.zip
gdb-7b045207d1b8980add1c87b643504e3ef987e7a2.tar.gz
gdb-7b045207d1b8980add1c87b643504e3ef987e7a2.tar.bz2
Revert accidental push of "Inline breakpoints" commit
-rw-r--r--gdb/inline-frame.c23
-rw-r--r--gdb/testsuite/gdb.opt/inline-break.c21
-rw-r--r--gdb/testsuite/gdb.opt/inline-break.exp17
3 files changed, 12 insertions, 49 deletions
diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c
index 3edd5b2..1ac5835 100644
--- a/gdb/inline-frame.c
+++ b/gdb/inline-frame.c
@@ -286,10 +286,11 @@ block_starting_point_at (CORE_ADDR pc, const struct block *block)
}
/* Loop over the stop chain and determine if execution stopped in an
- inlined frame because of a user breakpoint set at FRAME_BLOCK. */
+ inlined frame because of a user breakpoint. THIS_PC is the current
+ frame's PC. */
static bool
-stopped_by_user_bp_inline_frame (const block *frame_block, bpstat stop_chain)
+stopped_by_user_bp_inline_frame (CORE_ADDR this_pc, bpstat stop_chain)
{
for (bpstat s = stop_chain; s != NULL; s = s->next)
{
@@ -300,9 +301,9 @@ stopped_by_user_bp_inline_frame (const block *frame_block, bpstat stop_chain)
bp_location *loc = s->bp_location_at;
enum bp_loc_type t = loc->loc_type;
- if ((t == bp_loc_software_breakpoint
- || t == bp_loc_hardware_breakpoint)
- && frame_block == SYMBOL_BLOCK_VALUE (loc->symbol))
+ if (loc->address == this_pc
+ && (t == bp_loc_software_breakpoint
+ || t == bp_loc_hardware_breakpoint))
return true;
}
}
@@ -339,12 +340,12 @@ skip_inline_frames (ptid_t ptid, bpstat stop_chain)
{
/* Do not skip the inlined frame if execution
stopped in an inlined frame because of a user
- breakpoint for this inline function. */
- if (stopped_by_user_bp_inline_frame (cur_block, stop_chain))
- break;
-
- skip_count++;
- last_sym = BLOCK_FUNCTION (cur_block);
+ breakpoint. */
+ if (!stopped_by_user_bp_inline_frame (this_pc, stop_chain))
+ {
+ skip_count++;
+ last_sym = BLOCK_FUNCTION (cur_block);
+ }
}
else
break;
diff --git a/gdb/testsuite/gdb.opt/inline-break.c b/gdb/testsuite/gdb.opt/inline-break.c
index 351b983..922102d 100644
--- a/gdb/testsuite/gdb.opt/inline-break.c
+++ b/gdb/testsuite/gdb.opt/inline-break.c
@@ -176,25 +176,6 @@ not_inline_func3 (int x)
return y + inline_func3 (x);
}
-/* A static inlined function that is called by another static inlined
- function. */
-
-static inline ATTR int
-func_callee (int x)
-{
- return x * 23;
-}
-
-/* A static inlined function that calls another static inlined
- function. The body of the function is as simple as possible so
- that both functions are inlined to the same PC address. */
-
-static int
-func_caller (int x)
-{
- return func_callee (x);
-}
-
/* Entry point. */
int
@@ -224,7 +205,5 @@ main (int argc, char *argv[])
x = not_inline_func3 (-21);
- func_caller (1);
-
return x;
}
diff --git a/gdb/testsuite/gdb.opt/inline-break.exp b/gdb/testsuite/gdb.opt/inline-break.exp
index f1ab3d2..008ff1a 100644
--- a/gdb/testsuite/gdb.opt/inline-break.exp
+++ b/gdb/testsuite/gdb.opt/inline-break.exp
@@ -231,21 +231,4 @@ foreach_with_prefix cmd [list "break" "tbreak"] {
}
}
-# func_caller and func_callee are both inline functions, and one calls
-# the other. Test that setting a breakpoint on the caller reports the
-# stop at the caller, and that setting a breakpoint at the callee
-# reports a stop at the callee.
-foreach_with_prefix func {"func_callee" "func_caller"} {
- clean_restart $binfile
-
- if {![runto main]} {
- untested "could not run to main"
- continue
- }
-
- gdb_breakpoint $func
- gdb_test "continue" "Breakpoint .* $func .*at .*$srcfile.*" \
- "continue to inline function"
-}
-
unset -nocomplain results