| Index: gdb/blockframe.c
|
| diff --git a/gdb/blockframe.c b/gdb/blockframe.c
|
| index 38973667cd2aab43d8671ce25fe66bc188f72e21..ba755a1a7091915c6af8f483e17ca343bf85fdda 100644
|
| --- a/gdb/blockframe.c
|
| +++ b/gdb/blockframe.c
|
| @@ -159,7 +159,7 @@ find_pc_function (CORE_ADDR pc)
|
|
|
| static CORE_ADDR cache_pc_function_low = 0;
|
| static CORE_ADDR cache_pc_function_high = 0;
|
| -static char *cache_pc_function_name = 0;
|
| +static const char *cache_pc_function_name = 0;
|
| static struct obj_section *cache_pc_function_section = NULL;
|
| static int cache_pc_function_is_gnu_ifunc = 0;
|
|
|
| @@ -190,7 +190,7 @@ clear_pc_function_cache (void)
|
| /* Backward compatibility, no section argument. */
|
|
|
| int
|
| -find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, char **name,
|
| +find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, const char **name,
|
| CORE_ADDR *address, CORE_ADDR *endaddr,
|
| int *is_gnu_ifunc_p)
|
| {
|
| @@ -346,14 +346,15 @@ find_pc_partial_function_gnu_ifunc (CORE_ADDR pc, char **name,
|
| is omitted here for backward API compatibility. */
|
|
|
| int
|
| -find_pc_partial_function (CORE_ADDR pc, char **name, CORE_ADDR *address,
|
| +find_pc_partial_function (CORE_ADDR pc, const char **name, CORE_ADDR *address,
|
| CORE_ADDR *endaddr)
|
| {
|
| return find_pc_partial_function_gnu_ifunc (pc, name, address, endaddr, NULL);
|
| }
|
|
|
| -/* Return the innermost stack frame executing inside of BLOCK, or NULL
|
| - if there is no such frame. If BLOCK is NULL, just return NULL. */
|
| +/* Return the innermost stack frame that is executing inside of BLOCK and is
|
| + at least as old as the selected frame. Return NULL if there is no
|
| + such frame. If BLOCK is NULL, just return NULL. */
|
|
|
| struct frame_info *
|
| block_innermost_frame (const struct block *block)
|
| @@ -368,7 +369,9 @@ block_innermost_frame (const struct block *block)
|
| start = BLOCK_START (block);
|
| end = BLOCK_END (block);
|
|
|
| - frame = get_current_frame ();
|
| + frame = get_selected_frame_if_set ();
|
| + if (frame == NULL)
|
| + frame = get_current_frame ();
|
| while (frame != NULL)
|
| {
|
| struct block *frame_block = get_frame_block (frame, NULL);
|
|
|