aboutsummaryrefslogtreecommitdiff
path: root/gdb/block.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/block.c')
-rw-r--r--gdb/block.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/gdb/block.c b/gdb/block.c
index 5c6faa8..ca4dc22 100644
--- a/gdb/block.c
+++ b/gdb/block.c
@@ -65,25 +65,28 @@ block_gdbarch (const struct block *block)
return get_objfile_arch (block_objfile (block));
}
-/* Return Nonzero if block a is lexically nested within block b,
- or if a and b have the same pc range.
- Return zero otherwise. */
+/* See block.h. */
-int
-contained_in (const struct block *a, const struct block *b)
+bool
+contained_in (const struct block *a, const struct block *b,
+ bool allow_nested)
{
if (!a || !b)
- return 0;
+ return false;
do
{
if (a == b)
- return 1;
+ return true;
+ /* If A is a function block, then A cannot be contained in B,
+ except if A was inlined. */
+ if (!allow_nested && BLOCK_FUNCTION (a) != NULL && !block_inlined_p (a))
+ return false;
a = BLOCK_SUPERBLOCK (a);
}
while (a != NULL);
- return 0;
+ return true;
}