aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2023-01-20 07:46:51 -0700
committerTom Tromey <tom@tromey.com>2023-02-19 12:51:06 -0700
commit0d1912950e35ff6555d12c0baa983acc006c3cf0 (patch)
treeda40715cada37627b7c1d943cb251c30585a14fa /gdb
parentb32797e8b99b53d4cdd22a4e649792146b219adc (diff)
downloadgdb-0d1912950e35ff6555d12c0baa983acc006c3cf0.zip
gdb-0d1912950e35ff6555d12c0baa983acc006c3cf0.tar.gz
gdb-0d1912950e35ff6555d12c0baa983acc006c3cf0.tar.bz2
Convert contained_in to method
This converts contained_in to be a method of block.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/block.c7
-rw-r--r--gdb/block.h19
-rw-r--r--gdb/blockframe.c2
-rw-r--r--gdb/breakpoint.c2
-rw-r--r--gdb/frame.c2
-rw-r--r--gdb/inline-frame.c2
-rw-r--r--gdb/parse.c2
-rw-r--r--gdb/printcmd.c6
8 files changed, 20 insertions, 22 deletions
diff --git a/gdb/block.c b/gdb/block.c
index 334d818..4e40247 100644
--- a/gdb/block.c
+++ b/gdb/block.c
@@ -65,15 +65,14 @@ block::gdbarch () const
/* See block.h. */
bool
-contained_in (const struct block *a, const struct block *b,
- bool allow_nested)
+block::contains (const struct block *a, bool allow_nested) const
{
- if (!a || !b)
+ if (a == nullptr)
return false;
do
{
- if (a == b)
+ if (a == this)
return true;
/* If A is a function block, then A cannot be contained in B,
except if A was inlined. */
diff --git a/gdb/block.h b/gdb/block.h
index 32e3c9e..cdcee08 100644
--- a/gdb/block.h
+++ b/gdb/block.h
@@ -271,6 +271,15 @@ struct block : public allocate_on_obstack
struct dynamic_prop *static_link () const;
+ /* Return true if block A is lexically nested within this block, or
+ if A and this block have the same pc range. Return false
+ otherwise. If ALLOW_NESTED is true, then block A is considered
+ to be in this block if A is in a nested function in this block's
+ function. If ALLOW_NESTED is false (the default), then blocks in
+ nested functions are not considered to be contained. */
+
+ bool contains (const struct block *a, bool allow_nested = false) const;
+
private:
/* If the namespace_info is NULL, allocate it via OBSTACK and
@@ -400,16 +409,6 @@ private:
struct block *m_blocks[1];
};
-/* Return true if block A is lexically nested within block B, or if a
- and b have the same pc range. Return false otherwise. If
- ALLOW_NESTED is true, then block A is considered to be in block B
- if A is in a nested function in B's function. If ALLOW_NESTED is
- false (the default), then blocks in nested functions are not
- considered to be contained. */
-
-extern bool contained_in (const struct block *a, const struct block *b,
- bool allow_nested = false);
-
extern const struct blockvector *blockvector_for_pc (CORE_ADDR,
const struct block **);
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index 7c9faf4..633a967 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -469,7 +469,7 @@ block_innermost_frame (const struct block *block)
while (frame != NULL)
{
const struct block *frame_block = get_frame_block (frame, NULL);
- if (frame_block != NULL && contained_in (frame_block, block))
+ if (frame_block != NULL && block->contains (frame_block))
return frame;
frame = get_prev_frame (frame);
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index a2f1190..0db3ada 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -5149,7 +5149,7 @@ watchpoint_check (bpstat *bs)
function = get_frame_function (fr);
if (function == NULL
- || !contained_in (b->exp_valid_block, function->value_block ()))
+ || !function->value_block ()->contains (b->exp_valid_block))
within_current_scope = false;
}
diff --git a/gdb/frame.c b/gdb/frame.c
index 6629f44..9b867b6 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -895,7 +895,7 @@ frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r)
/* This will return true if LB and RB are the same block, or
if the block with the smaller depth lexically encloses the
block with the greater depth. */
- inner = contained_in (lb, rb);
+ inner = rb->contains (lb);
}
else
/* Only return non-zero when strictly inner than. Note that, per
diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c
index 21431a2..80765d5 100644
--- a/gdb/inline-frame.c
+++ b/gdb/inline-frame.c
@@ -293,7 +293,7 @@ block_starting_point_at (CORE_ADDR pc, const struct block *block)
if (new_block == NULL)
return 1;
- if (new_block == block || contained_in (new_block, block))
+ if (new_block == block || block->contains (new_block))
return 0;
/* The immediately preceding address belongs to a different block,
diff --git a/gdb/parse.c b/gdb/parse.c
index 4c20b91..f2917b3 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -86,7 +86,7 @@ innermost_block_tracker::update (const struct block *b,
{
if ((m_types & t) != 0
&& (m_innermost_block == NULL
- || contained_in (b, m_innermost_block)))
+ || m_innermost_block->contains (b)))
m_innermost_block = b;
}
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 8898469..0d3bc29 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -2139,8 +2139,8 @@ do_one_display (struct display *d)
if (d->block)
{
if (d->pspace == current_program_space)
- within_current_scope = contained_in (get_selected_block (0), d->block,
- true);
+ within_current_scope = d->block->contains (get_selected_block (0),
+ true);
else
within_current_scope = 0;
}
@@ -2298,7 +2298,7 @@ Num Enb Expression\n"));
else if (d->format.format)
gdb_printf ("/%c ", d->format.format);
gdb_puts (d->exp_string.c_str ());
- if (d->block && !contained_in (get_selected_block (0), d->block, true))
+ if (d->block && !d->block->contains (get_selected_block (0), true))
gdb_printf (_(" (cannot be evaluated in the current context)"));
gdb_printf ("\n");
}