diff options
author | Tom Tromey <tom@tromey.com> | 2023-01-16 17:48:19 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2023-02-19 12:51:06 -0700 |
commit | 99f3dfd0f94144d295885e79f4ff5a5f8119fb04 (patch) | |
tree | e8a7e0ee93664f7576560d9a5e39050d722f26b6 | |
parent | 3c9d050626d9ab8c28082af114b5e8246b57b7de (diff) | |
download | binutils-gdb-99f3dfd0f94144d295885e79f4ff5a5f8119fb04.tar.gz |
Convert block_containing_function to method
This converts block_containing_function to be a method. This was
mostly written by script.
-rw-r--r-- | gdb/block.c | 9 | ||||
-rw-r--r-- | gdb/block.h | 9 | ||||
-rw-r--r-- | gdb/blockframe.c | 2 | ||||
-rw-r--r-- | gdb/linespec.c | 2 |
4 files changed, 13 insertions, 9 deletions
diff --git a/gdb/block.c b/gdb/block.c index dca6ff36f3b..31916ce48dc 100644 --- a/gdb/block.c +++ b/gdb/block.c @@ -100,14 +100,13 @@ block::linkage_function () const return bl->function (); } -/* Return the symbol for the function which contains a specified - block, described by a struct block BL. The return value will be - the closest enclosing function, which might be an inline - function. */ +/* See block.h. */ struct symbol * -block_containing_function (const struct block *bl) +block::containing_function () const { + const block *bl = this; + while (bl->function () == NULL && bl->superblock () != NULL) bl = bl->superblock (); diff --git a/gdb/block.h b/gdb/block.h index d1f4409d863..9f1ba935abb 100644 --- a/gdb/block.h +++ b/gdb/block.h @@ -238,6 +238,13 @@ struct block struct symbol *linkage_function () const; + /* Return the symbol for the function which contains a specified + block, described by a struct block. The return value will be the + closest enclosing function, which might be an inline + function. */ + + struct symbol *containing_function () const; + /* Addresses in the executable code that are in this block. */ CORE_ADDR m_start; @@ -371,8 +378,6 @@ private: struct block *m_blocks[1]; }; -extern struct symbol *block_containing_function (const struct block *); - /* 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 diff --git a/gdb/blockframe.c b/gdb/blockframe.c index 65183b1946b..7c9faf487a7 100644 --- a/gdb/blockframe.c +++ b/gdb/blockframe.c @@ -162,7 +162,7 @@ find_pc_sect_containing_function (CORE_ADDR pc, struct obj_section *section) if (bl == nullptr) return nullptr; - return block_containing_function (bl); + return bl->containing_function (); } /* These variables are used to cache the most recent result of diff --git a/gdb/linespec.c b/gdb/linespec.c index 7761feff8d4..7edfee22ea7 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -2128,7 +2128,7 @@ create_sals_line_offset (struct linespec_state *self, if (filter[i]) { struct symbol *sym = (blocks[i] - ? block_containing_function (blocks[i]) + ? blocks[i]->containing_function () : NULL); if (self->funfirstline) |